ognl parser refinements

This commit is contained in:
Keith Donald
2007-10-29 23:51:03 +00:00
parent cdcc23d346
commit 24d0f1969e
7 changed files with 46 additions and 346 deletions

View File

@@ -29,7 +29,7 @@ public class OgnlExpressionParserTests extends TestCase {
private TestBean bean = new TestBean();
public void testParseSimpleDelimited() {
public void testParseSimple() {
String exp = "${flag}";
Expression e = parser.parseExpression(exp, null, null, null);
assertNotNull(e);
@@ -37,20 +37,6 @@ public class OgnlExpressionParserTests extends TestCase {
assertFalse(b.booleanValue());
}
public void testParseSimple() {
String exp = "flag";
Expression e = parser.parseExpression(exp, null, null, null);
assertNotNull(e);
Boolean b = (Boolean) e.getValue(bean);
assertFalse(b.booleanValue());
}
public void testParseNull() {
Expression e = parser.parseExpression(null, null, null, null);
assertNotNull(e);
assertNull(e.getValue(bean));
}
public void testParseEmpty() {
Expression e = parser.parseExpression("", null, null, null);
assertNotNull(e);

View File

@@ -28,7 +28,7 @@ public class RequiredMappingTests extends TestCase {
public void testRequired() {
MappingBuilder builder = new MappingBuilder(new OgnlExpressionParser());
Mapping mapping = builder.source("foo").target("bar").required().value();
Mapping mapping = builder.source("${foo}").target("${bar}").required().value();
HashMap source = new HashMap();
source.put("foo", "baz");
HashMap target = new HashMap();
@@ -38,7 +38,7 @@ public class RequiredMappingTests extends TestCase {
public void testRequiredExceptionOnNull() {
MappingBuilder builder = new MappingBuilder(new OgnlExpressionParser());
Mapping mapping = builder.source("foo").target("bar").required().value();
Mapping mapping = builder.source("${foo}").target("${bar}").required().value();
HashMap source = new HashMap();
source.put("foo", null);
HashMap target = new HashMap();
@@ -50,7 +50,7 @@ public class RequiredMappingTests extends TestCase {
public void testRequiredExceptionOnNoKey() {
MappingBuilder builder = new MappingBuilder(new OgnlExpressionParser());
Mapping mapping = builder.source("foo").target("bar").required().value();
Mapping mapping = builder.source("${foo}").target("${bar}").required().value();
HashMap source = new HashMap();
HashMap target = new HashMap();
try {

View File

@@ -1,138 +0,0 @@
/*
* Copyright 2004-2007 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.binding.method;
import junit.framework.TestCase;
import org.springframework.binding.convert.ConversionException;
import org.springframework.binding.convert.support.DefaultConversionService;
import org.springframework.binding.convert.support.TextToExpression;
import org.springframework.binding.expression.ognl.OgnlExpressionParser;
/**
* Test case for {@link TextToMethodSignature}.
*
* @author Erwin Vervaet
*/
public class TextToMethodSignatureTests extends TestCase {
private TextToMethodSignature converter;
protected void setUp() throws Exception {
DefaultConversionService conversionService = new DefaultConversionService();
conversionService.addConverter(new TextToExpression(new OgnlExpressionParser()));
converter = new TextToMethodSignature(conversionService);
}
public void testParseNoArguments() {
MethodSignature signature = (MethodSignature) converter.convert("foo");
assertEquals("foo", signature.getMethodName());
assertEquals(0, signature.getParameters().size());
signature = (MethodSignature) converter.convert("foo()");
assertEquals("foo", signature.getMethodName());
assertEquals(0, signature.getParameters().size());
}
public void testSingleArgument() {
MethodSignature signature = (MethodSignature) converter.convert("foo(${flowScope.bar})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertNull(signature.getParameters().getParameter(0).getType());
assertEquals("flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
signature = (MethodSignature) converter.convert("foo(${'Foo' + flowScope.bar})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertEquals("\"Foo\" + flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
}
public void testSingleArgumentWithType() {
MethodSignature signature = (MethodSignature) converter.convert("foo(java.lang.String ${flowScope.bar})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertEquals(String.class, signature.getParameters().getParameter(0).getType());
assertEquals("flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
signature = (MethodSignature) converter.convert("foo(long ${flowScope.bar})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertEquals(Long.class, signature.getParameters().getParameter(0).getType());
assertEquals("flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
}
public void testMultipleArguments() {
MethodSignature signature = (MethodSignature) converter
.convert("foo(${flowScope.bar}, ${externalContext.requestParameterMap.test})");
assertEquals("foo", signature.getMethodName());
assertEquals(2, signature.getParameters().size());
assertNull(signature.getParameters().getParameter(0).getType());
assertEquals("flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
assertNull(signature.getParameters().getParameter(1).getType());
assertEquals("externalContext.requestParameterMap.test", signature.getParameters().getParameter(1).getName()
.toString());
}
public void testMultipleArgumentsWithType() {
MethodSignature signature = (MethodSignature) converter
.convert("foo(long ${flowScope.bar}, java.lang.String ${externalContext.requestParameterMap.test})");
assertEquals("foo", signature.getMethodName());
assertEquals(2, signature.getParameters().size());
assertEquals(Long.class, signature.getParameters().getParameter(0).getType());
assertEquals("flowScope.bar", signature.getParameters().getParameter(0).getName().toString());
assertEquals(String.class, signature.getParameters().getParameter(1).getType());
assertEquals("externalContext.requestParameterMap.test", signature.getParameters().getParameter(1).getName()
.toString());
}
public void testCollectionConstructionSyntax() {
MethodSignature signature = (MethodSignature) converter.convert("foo({1, 2, 3})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertNull(signature.getParameters().getParameter(0).getType());
assertEquals("{ 1, 2, 3 }", signature.getParameters().getParameter(0).getName().toString());
}
public void testCollectionConstructionSyntaxWithType() {
MethodSignature signature = (MethodSignature) converter.convert("foo(java.util.List {1, 2, 3})");
assertEquals("foo", signature.getMethodName());
assertEquals(1, signature.getParameters().size());
assertEquals(java.util.List.class, signature.getParameters().getParameter(0).getType());
assertEquals("{ 1, 2, 3 }", signature.getParameters().getParameter(0).getName().toString());
signature = (MethodSignature) converter.convert("foo(a${b,#{1:2},e}f${g,#{3:4},j}k)");
}
public void testSyntaxErrors() {
try {
converter.convert("foo(");
fail();
} catch (ConversionException e) {
}
try {
converter.convert("foo(long 1, ${bar()}");
fail();
} catch (ConversionException e) {
}
try {
converter.convert("foo(long 1, {1, 2)");
fail();
} catch (ConversionException e) {
}
}
}