ognl parser refinements
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user