Author: nbelaevski
Date: 2009-12-16 10:51:57 -0500 (Wed, 16 Dec 2009)
New Revision: 16154
Added:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypesFactoryTest.java
Removed:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypeUtilsTest.java
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/java/define-object.ftl
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/Bean.java
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/ELParserTest.java
Log:
https://jira.jboss.org/jira/browse/RF-7732
Fixed NPE in CDK
Fixed CheckStyle errors in CDK
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd 2009-12-16
15:50:42 UTC (rev 16153)
+++
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/schema/cdk-template.xsd 2009-12-16
15:51:57 UTC (rev 16154)
@@ -139,6 +139,7 @@
<xs:attribute name="name" form="unqualified"
type="literalExpression" use="required" />
<xs:attribute name="value" form="unqualified" />
<xs:attribute name="type" form="unqualified" />
+ <xs:attribute name="type-arguments" form="unqualified" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Modified:
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/java/define-object.ftl
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/java/define-object.ftl 2009-12-16
15:50:42 UTC (rev 16153)
+++
root/cdk/trunk/plugins/generator/src/main/resources/META-INF/templates/java/define-object.ftl 2009-12-16
15:51:57 UTC (rev 16154)
@@ -1 +1 @@
-${modelItem.type} ${modelItem.name} <#if modelItem.initializationExpression.length()
!= 0> = ${modelItem.initializationExpression}</#if>;
\ No newline at end of file
+${modelItem.type.code} ${modelItem.name} <#if
modelItem.initializationExpression.length() != 0> =
${modelItem.initializationExpression}</#if>;
\ No newline at end of file
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/Bean.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/Bean.java 2009-12-16
15:50:42 UTC (rev 16153)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/Bean.java 2009-12-16
15:51:57 UTC (rev 16154)
@@ -102,10 +102,6 @@
this.readOnly = readOnly;
}
- public Object count(Object o) {
- return null;
- }
-
public Integer count(Integer i) {
return null;
}
Modified:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/ELParserTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/ELParserTest.java 2009-12-16
15:50:42 UTC (rev 16153)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/ELParserTest.java 2009-12-16
15:51:57 UTC (rev 16154)
@@ -27,7 +27,6 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -35,9 +34,10 @@
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.richfaces.cdk.parser.el.ELParserUtils;
import org.richfaces.cdk.parser.el.ELVisitor;
import org.richfaces.cdk.parser.el.ParsingException;
+import org.richfaces.cdk.parser.el.Type;
+import org.richfaces.cdk.parser.el.types.TypesFactory;
public class ELParserTest {
@@ -57,68 +57,68 @@
public void testNull() throws Exception {
parseExpression("#{null}");
assertEquals("null", visitor.getParsedExpression());
- assertTrue(ELParserUtils.isNullType(visitor.getVariableType()));
+ assertTrue(visitor.getVariableType().isNullType());
}
@Test
public void testTrue() throws Exception {
parseExpression("#{true}");
assertEquals("true", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testFalse() throws Exception {
parseExpression("#{false}");
assertEquals("false", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testFloat() throws Exception {
parseExpression("#{5.0}");
assertEquals("Double.valueOf(5.0)", visitor.getParsedExpression());
- assertEquals(Double.TYPE, visitor.getVariableType());
+ assertEquals(Double.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{5.012e+34}");
assertEquals("Double.valueOf(5.012e+34)",
visitor.getParsedExpression());
- assertEquals(Double.TYPE, visitor.getVariableType());
+ assertEquals(Double.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testNegative() throws Exception {
parseExpression("#{-5}");
assertEquals("-5", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testNegativeFloat() throws Exception {
parseExpression("#{-5.0}");
assertEquals("-Double.valueOf(5.0)", visitor.getParsedExpression());
- assertEquals(Double.TYPE, visitor.getVariableType());
+ assertEquals(Double.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testNotEqual() throws Exception {
parseExpression("#{1 ne 3}");
assertEquals("(1 != 3)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{2 != 3}");
assertEquals("(2 != 3)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testNot() throws Exception {
parseExpression("#{not test}");
assertEquals("(!test)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{!otherTest}");
assertEquals("(!otherTest)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
@@ -126,171 +126,171 @@
//TODO: tests involving double values
parseExpression("#{1+2}");
assertEquals("(1 + 2)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testMinus() throws Exception {
parseExpression("#{1-2}");
assertEquals("(1 - 2)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testDiv() throws Exception {
parseExpression("#{1/2}");
assertEquals("(1 / 2)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testMult() throws Exception {
parseExpression("#{1*2}");
assertEquals("(1 * 2)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testMod() throws Exception {
parseExpression("#{1%2}");
assertEquals("(1 % 2)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testAnd() throws Exception {
parseExpression("#{test and otherTest}");
assertEquals("(test && otherTest)",
visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{otherTest && test}");
assertEquals("(otherTest && test)",
visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testOr() throws Exception {
parseExpression("#{test or otherTest}");
assertEquals("(test || otherTest)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{otherTest || test}");
assertEquals("(otherTest || test)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testEquals() throws Exception {
parseExpression("#{1 eq 2}");
assertEquals("(1 == 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{3 == 2}");
assertEquals("(3 == 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testGreatThen() throws Exception {
parseExpression("#{1 gt 2}");
assertEquals("(1 > 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{3 > 2}");
assertEquals("(3 > 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testLessThen() throws Exception {
parseExpression("#{1 lt 2}");
assertEquals("(1 < 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{3 < 2}");
assertEquals("(3 < 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testLessThenEquals() throws Exception {
parseExpression("#{1 le 2}");
assertEquals("(1 <= 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{3 <= 2}");
assertEquals("(3 <= 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testGreatThenEquals() throws Exception {
parseExpression("#{1 ge 2}");
assertEquals("(1 >= 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{3 >= 2}");
assertEquals("(3 >= 2)", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testChoice() throws Exception {
parseExpression("#{test ? 2 : 3}");
assertEquals("(test ? 2 : 3)", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
parseExpression("#{test ? null : 'string'}");
assertEquals("(test ? null : \"string\")",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
public void testInteger() throws Exception {
parseExpression("#{152}");
assertEquals("152", visitor.getParsedExpression());
- assertEquals(Integer.TYPE, visitor.getVariableType());
+ assertEquals(Integer.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testString() throws Exception {
parseExpression("#{\"nabc\"}");
assertEquals("\"nabc\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("#{'nabc'}");
assertEquals("\"nabc\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("#{'\tabc'}");
assertEquals("\"\\tabc\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("#{'/nabc'}");
assertEquals("\"/nabc\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("#{'na\"bc'}");
assertEquals("\"na\\\"bc\"",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("#{'na\\\\bc'}");
assertEquals("\"na\\\\bc\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
public void testIdentifier() throws Exception {
parseExpression("#{clientId}");
assertEquals("clientId", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
public void testLiteral() throws Exception {
parseExpression("clientId");
assertEquals("\"clientId\"", visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
@@ -298,8 +298,8 @@
parseExpression("#{action.facets}");
assertEquals("action.getFacets()", visitor.getParsedExpression());
Type variableType = visitor.getVariableType();
- assertEquals(Map.class, ELParserUtils.getRawType(variableType));
- assertEquals(UIComponent.class,
ELParserUtils.getLastTypeArgument(variableType));
+ assertEquals(Map.class, variableType.getRawType());
+ assertEquals(UIComponent.class, variableType.getContainerType().getRawType());
parseExpression("#{action.rawMap}");
assertEquals("action.getRawMap()", visitor.getParsedExpression());
@@ -309,15 +309,15 @@
public void testMethodReturnMapElement() throws Exception {
parseExpression("#{action.getFacet('header')}");
assertEquals("action.getFacet(\"header\")",
visitor.getParsedExpression());
- assertEquals(UIComponent.class, visitor.getVariableType());
+ assertEquals(UIComponent.class, visitor.getVariableType().getRawType());
parseExpression("#{action.facets['header']}");
assertEquals("action.getFacets().get(\"header\")",
visitor.getParsedExpression());
- assertEquals(UIComponent.class, visitor.getVariableType());
+ assertEquals(UIComponent.class, visitor.getVariableType().getRawType());
parseExpression("#{action.rawMap['something']}");
assertEquals("action.getRawMap().get(\"something\")",
visitor.getParsedExpression());
- assertEquals(Object.class, visitor.getVariableType());
+ assertEquals(Object.class, visitor.getVariableType().getRawType());
}
// @Test
@@ -329,7 +329,7 @@
public void testMethodReturnMapElement2() throws Exception {
parseExpression("#{action.facets.toString()}");
assertEquals("action.getFacets().toString()",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
@@ -339,21 +339,21 @@
parseExpression("#{action.facets['header'].rendered}");
assertEquals("action.getFacets().get(\"header\").isRendered()",
visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testMethod() throws Exception {
parseExpression("#{action.readOnly}");
assertEquals("action.isReadOnly()", visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testNestedMethod() throws Exception {
parseExpression("#{action.testBean2.string}");
assertEquals("action.getTestBean2().getString()",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
@@ -361,36 +361,36 @@
parseExpression("#{action.components}");
assertEquals("action.getComponents()", visitor.getParsedExpression());
Type variableType = visitor.getVariableType();
- assertEquals(List.class, ELParserUtils.getRawType(variableType));
- assertEquals(UIComponent.class,
ELParserUtils.getLastTypeArgument(variableType));
+ assertEquals(List.class, variableType.getRawType());
+ assertEquals(UIComponent.class, variableType.getContainerType().getRawType());
}
@Test
public void testMethodReturnListElement() throws Exception {
parseExpression("#{action.components[0]}");
assertEquals("action.getComponents().get(0)",
visitor.getParsedExpression());
- assertEquals(UIComponent.class, visitor.getVariableType());
+ assertEquals(UIComponent.class, visitor.getVariableType().getRawType());
}
@Test
public void testMethodReturnListElement2() throws Exception {
parseExpression("#{action.components[0].rendered}");
assertEquals("action.getComponents().get(0).isRendered()",
visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
public void testMethodReturnArray() throws Exception {
parseExpression("#{action.array}");
assertEquals("action.getArray()", visitor.getParsedExpression());
- assertEquals(UIComponent[].class, visitor.getVariableType());
+ assertEquals(UIComponent[].class, visitor.getVariableType().getRawType());
}
@Test
public void testMethodReturnArrayElement() throws Exception {
parseExpression("#{action.array[0]}");
assertEquals("action.getArray()[0]", visitor.getParsedExpression());
- assertEquals(UIComponent.class, visitor.getVariableType());
+ assertEquals(UIComponent.class, visitor.getVariableType().getRawType());
}
@Test
@@ -403,18 +403,18 @@
parseExpression("#{action.count(123)}");
assertEquals("action.count(123)", visitor.getParsedExpression());
- assertEquals(Integer.class, visitor.getVariableType());
+ assertEquals(Integer.class, visitor.getVariableType().getRawType());
parseExpression("#{action.count(clientId)}");
assertEquals("action.count(clientId)", visitor.getParsedExpression());
- assertEquals(Object.class, visitor.getVariableType());
+ assertEquals(Object.class, visitor.getVariableType().getRawType());
}
@Test
public void testEmpty() throws Exception {
parseExpression("#{empty action.array}");
assertEquals("this.getUtils().isEmpty(action.getArray())",
visitor.getParsedExpression());
- assertEquals(Boolean.TYPE, visitor.getVariableType());
+ assertEquals(Boolean.TYPE, visitor.getVariableType().getRawType());
}
@Test
@@ -428,18 +428,18 @@
public void testLiteralWithDeferred() throws Exception {
parseExpression("#{1}#{2}");
assertEquals("convertToString(1) + convertToString(2)",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
parseExpression("abs #{getType()}");
assertEquals("\"abs \" + convertToString(this.getType())",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
public void testLiteralWithDeferred2() throws Exception {
parseExpression("#{getType()} abs ");
assertEquals("convertToString(this.getType()) + \" abs \"",
visitor.getParsedExpression());
- assertEquals(String.class, visitor.getVariableType());
+ assertEquals(String.class, visitor.getVariableType().getRawType());
}
@Test
@@ -463,7 +463,7 @@
public void testNonExistingMethod() throws Exception {
parseExpression("#{action.doSomething(clientId, 123)}");
assertEquals("action.doSomething(clientId,123)",
visitor.getParsedExpression());
- assertEquals(Object.class, visitor.getVariableType());
+ assertEquals(Object.class, visitor.getVariableType().getRawType());
}
@Test
@@ -481,18 +481,19 @@
public void testWrongExpression2() throws Exception {
parseExpression("#{action.property}");
assertEquals("action.getProperty()", visitor.getParsedExpression());
- assertEquals(Object.class, visitor.getVariableType());
+ assertEquals(Object.class, visitor.getVariableType().getRawType());
}
private void parseExpression(String expression) throws ParsingException {
Map<String, Type> contextMap = new HashMap<String, Type>();
- contextMap.put("action", org.richfaces.cdk.parser.el.test.Bean.class);
- contextMap.put("clientId", String.class);
- contextMap.put("test", boolean.class);
- contextMap.put("otherTest", boolean.class);
- contextMap.put("this", Object.class);
- contextMap.put("objectVar", Object.class);
+ contextMap.put("action",
TypesFactory.getType(org.richfaces.cdk.parser.el.test.Bean.class));
+ contextMap.put("clientId", TypesFactory.getType(String.class));
+ contextMap.put("test", TypesFactory.getType(boolean.class));
+ contextMap.put("otherTest", TypesFactory.getType(boolean.class));
+ contextMap.put("this", TypesFactory.getType(Object.class));
+ contextMap.put("super", TypesFactory.getType(Object.class));
+ contextMap.put("objectVar", TypesFactory.getType(Object.class));
visitor.parse(expression, contextMap);
}
Deleted:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypeUtilsTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypeUtilsTest.java 2009-12-16
15:50:42 UTC (rev 16153)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypeUtilsTest.java 2009-12-16
15:51:57 UTC (rev 16154)
@@ -1,128 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2009, Red Hat, Inc. and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.richfaces.cdk.parser.el.test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.richfaces.cdk.parser.el.ELParserUtils;
-
-/**
- * @author Nick Belaevski
- * @since 4.0
- */
-public class TypeUtilsTest {
-
- public static final class PropertyClass {
-
- public String getString() {
- return null;
- }
-
- public Integer[] getIntegerArray() {
- return null;
- }
-
- public Map<String, Object> getParameterizedMap() {
- return null;
- }
-
- public List<Float> getParameterizedList() {
- return null;
- }
-
- @SuppressWarnings("unchecked")
- public Map getRawMap() {
- return null;
- }
-
- @SuppressWarnings("unchecked")
- public List getRawList() {
- return null;
- }
- }
-
- private Type stringType;
-
- private Type integerArrayType;
-
- private Type parameterizedMapType;
-
- private Type parameterizedListType;
-
- private Type rawMapType;
-
- private Type rawListType;
-
- @Before
- public void setUp() throws Exception {
- stringType = PropertyClass.class.getMethod("getString")
- .getGenericReturnType();
- integerArrayType = PropertyClass.class.getMethod("getIntegerArray")
- .getGenericReturnType();
- parameterizedMapType = PropertyClass.class.getMethod(
- "getParameterizedMap").getGenericReturnType();
- parameterizedListType = PropertyClass.class.getMethod(
- "getParameterizedList").getGenericReturnType();
- rawMapType = PropertyClass.class.getMethod("getRawMap")
- .getGenericReturnType();
- rawListType = PropertyClass.class.getMethod("getRawList")
- .getGenericReturnType();
- }
-
- @After
- public void tearDown() {
- stringType = null;
- integerArrayType = null;
- parameterizedMapType = null;
- parameterizedListType = null;
- rawMapType = null;
- rawListType = null;
- }
-
- @Test
- public void testGetRawType() throws Exception {
- assertEquals(String.class, ELParserUtils.getRawType(stringType));
- assertEquals(Integer[].class, ELParserUtils.getRawType(integerArrayType));
- assertEquals(Map.class, ELParserUtils.getRawType(parameterizedMapType));
- assertEquals(List.class, ELParserUtils.getRawType(parameterizedListType));
- assertEquals(Map.class, ELParserUtils.getRawType(rawMapType));
- assertEquals(List.class, ELParserUtils.getRawType(rawListType));
- }
-
- @Test
- public void testGetActualTypeArguments() throws Exception {
- assertNull(ELParserUtils.getLastTypeArgument(stringType));
- assertNull(ELParserUtils.getLastTypeArgument(integerArrayType));
- assertEquals(Object.class, ELParserUtils.getLastTypeArgument(parameterizedMapType));
- assertEquals(Float.class, ELParserUtils.getLastTypeArgument(parameterizedListType));
- assertNull(ELParserUtils.getLastTypeArgument(rawMapType));
- assertNull(ELParserUtils.getLastTypeArgument(rawListType));
- }
-}
Added:
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypesFactoryTest.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypesFactoryTest.java
(rev 0)
+++
root/cdk/trunk/plugins/generator/src/test/java/org/richfaces/cdk/parser/el/test/TypesFactoryTest.java 2009-12-16
15:51:57 UTC (rev 16154)
@@ -0,0 +1,257 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.cdk.parser.el.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.io.Writer;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+import org.richfaces.cdk.parser.el.Type;
+import org.richfaces.cdk.parser.el.types.TypesFactory;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class TypesFactoryTest {
+
+ private static final class ParameterizedTypesHolder {
+
+ @SuppressWarnings("unused")
+ public Map<String, Object> getMap() {
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ public List<String>[] getArray() {
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ public List<? extends String> getWildcardList() {
+ return null;
+ }
+
+ @SuppressWarnings("unused")
+ public <Abc> Abc getTypeVariableList() {
+ return null;
+ }
+ }
+
+ private java.lang.reflect.Type getParameterizedMapType() throws Exception {
+ return
ParameterizedTypesHolder.class.getMethod("getMap").getGenericReturnType();
+ }
+
+ private java.lang.reflect.Type getParameterizedArrayType() throws Exception {
+ return
ParameterizedTypesHolder.class.getMethod("getArray").getGenericReturnType();
+ }
+
+ private java.lang.reflect.Type getWildcardType() throws Exception {
+ return
ParameterizedTypesHolder.class.getMethod("getWildcardList").getGenericReturnType();
+ }
+
+ private java.lang.reflect.Type getTypeVariableType() throws Exception {
+ return
ParameterizedTypesHolder.class.getMethod("getTypeVariableList").getGenericReturnType();
+ }
+
+ @Test
+ public void testGetNullType() throws Exception {
+ Type nullType = TypesFactory.getNullType();
+ assertNotNull(nullType);
+ assertTrue(nullType.isNullType());
+ }
+
+ @Test
+ public void testGetTypeFromReflectionType() throws Exception {
+ Type integerType = TypesFactory.getType(Integer.TYPE);
+ assertNotNull(integerType);
+ assertEquals(Integer.TYPE, integerType.getRawType());
+ assertNull(integerType.getTypeArguments());
+ assertFalse(integerType.isArray());
+ assertFalse(integerType.isNullType());
+
+ Type stringType = TypesFactory.getType(String.class);
+ assertNotNull(stringType);
+ assertEquals(String.class, stringType.getRawType());
+ assertNull(stringType.getTypeArguments());
+ assertFalse(stringType.isArray());
+ assertFalse(stringType.isNullType());
+
+ Type arrayType = TypesFactory.getType(String[].class);
+ assertNotNull(arrayType);
+ assertNull(arrayType.getTypeArguments());
+ assertTrue(arrayType.isArray());
+ assertEquals(String.class, arrayType.getContainerType().getRawType());
+ assertFalse(arrayType.isNullType());
+
+ Type multiDimArrayType = TypesFactory.getType(String[][][].class);
+ assertNotNull(multiDimArrayType);
+ assertNull(multiDimArrayType.getTypeArguments());
+ assertTrue(multiDimArrayType.isArray());
+ assertEquals(String[][].class,
multiDimArrayType.getContainerType().getRawType());
+ assertFalse(multiDimArrayType.isNullType());
+
+ Type parameterizedMapType = TypesFactory.getType(getParameterizedMapType());
+ assertNotNull(parameterizedMapType);
+ assertFalse(parameterizedMapType.isArray());
+ assertEquals(Map.class, parameterizedMapType.getRawType());
+
+ Type[] parameterizedMapTypeArguments = parameterizedMapType.getTypeArguments();
+ assertNotNull(parameterizedMapTypeArguments);
+ assertEquals(2, parameterizedMapTypeArguments.length);
+ assertEquals(String.class, parameterizedMapTypeArguments[0].getRawType());
+ assertEquals(Object.class, parameterizedMapTypeArguments[1].getRawType());
+
+ Type parameterizedArrayType = TypesFactory.getType(getParameterizedArrayType());
+ assertNotNull(parameterizedArrayType);
+ assertTrue(parameterizedArrayType.isArray());
+ assertEquals(List[].class, parameterizedArrayType.getRawType());
+
+ Type[] parameterizedArrayTypeArguments =
parameterizedArrayType.getTypeArguments();
+ assertNotNull(parameterizedArrayTypeArguments);
+ assertEquals(1, parameterizedArrayTypeArguments.length);
+ Type parameterizedArrayTypeArgument = parameterizedArrayTypeArguments[0];
+ assertEquals(String.class, parameterizedArrayTypeArgument.getRawType());
+ assertFalse(parameterizedArrayTypeArgument.isArray());
+
+ Type typeVariableType = TypesFactory.getType(getTypeVariableType());
+
+ assertNotNull(typeVariableType);
+ assertEquals("Abc", typeVariableType.getCode());
+
+ Type wildcardTypeHolder = TypesFactory.getType(getWildcardType());
+ assertNotNull(wildcardTypeHolder);
+ assertEquals(List.class, wildcardTypeHolder.getRawType());
+
+ Type[] wildcardTypeHolderArguments = wildcardTypeHolder.getTypeArguments();
+ assertNotNull(wildcardTypeHolderArguments);
+ assertEquals(1, wildcardTypeHolderArguments.length);
+ Type wildcardType = wildcardTypeHolderArguments[0];
+ assertEquals("? extends java.lang.String", wildcardType.getCode());
+ }
+
+ @Test
+ public void testGetTypeFromString() throws Exception {
+ ClassLoader classLoader = getClass().getClassLoader();
+
+ Type primitiveIntType = TypesFactory.getType("int", classLoader);
+ assertNotNull(primitiveIntType);
+ assertEquals(Integer.TYPE, primitiveIntType.getRawType());
+
+ Type guessedMapType = TypesFactory.getType("Map", classLoader);
+ assertNotNull(guessedMapType);
+ assertEquals(Map.class, guessedMapType.getRawType());
+ assertNull(guessedMapType.getTypeArguments());
+
+ Type writerType = TypesFactory.getType(java.io.Writer.class.getName(),
classLoader);
+ assertNotNull(writerType);
+ assertEquals(Writer.class, writerType.getRawType());
+ assertNull(writerType.getTypeArguments());
+
+ Type genericMapType = TypesFactory.getType("Map<String, Object>",
classLoader);
+ assertNotNull(genericMapType);
+
+ assertEquals(Map.class, genericMapType.getRawType());
+ Type[] genericMapTypeArguments = genericMapType.getTypeArguments();
+ assertNotNull(genericMapTypeArguments);
+ assertFalse(genericMapType.isArray());
+ assertEquals(2, genericMapTypeArguments.length);
+
+ Type genericMapTypeKeyArgument = genericMapTypeArguments[0];
+ assertEquals(String.class, genericMapTypeKeyArgument.getRawType());
+
+ Type genericMapTypeValueArgument = genericMapTypeArguments[1];
+ assertEquals(Object.class, genericMapTypeValueArgument.getRawType());
+
+ Type arrayType = TypesFactory.getType("String[]", classLoader);
+ assertNotNull(arrayType);
+ assertTrue(arrayType.isArray());
+ assertEquals(String[].class, arrayType.getRawType());
+
+ Type genericArrayType = TypesFactory.getType("List<String>[]",
classLoader);
+ assertNotNull(genericArrayType);
+ assertTrue(genericArrayType.isArray());
+ assertEquals(List[].class, genericArrayType.getRawType());
+
+ Type[] genericArrayTypeArguments = genericArrayType.getTypeArguments();
+ assertNotNull(genericArrayTypeArguments);
+ assertEquals(1, genericArrayTypeArguments.length);
+
+ Type genericArrayTypeArgument = genericArrayTypeArguments[0];
+ assertEquals(String.class, genericArrayTypeArgument.getRawType());
+ }
+
+ @Test
+ public void testCaching() throws Exception {
+ Type objectType = TypesFactory.getType(Object.class);
+ Type objectType2 = TypesFactory.getType(Object.class);
+
+ assertNotNull(objectType);
+ assertNotNull(objectType2);
+
+ assertSame(objectType, objectType2);
+
+ TypesFactory.clearCaches();
+
+ Type objectType3 = TypesFactory.getType(Object.class);
+ assertNotNull(objectType3);
+
+ assertNotSame(objectType, objectType3);
+ }
+
+ @Test
+ public void testReferencedType() throws Exception {
+ ClassLoader classLoader = getClass().getClassLoader();
+ String className = "some.not.available.Class";
+ Type plainReferencedType = TypesFactory.getType(className, classLoader);
+
+ assertNotNull(plainReferencedType);
+ assertEquals(className, plainReferencedType.getCode());
+
+ String arraySignature = className + "[]";
+ Type arrayReferencedType = TypesFactory.getType(arraySignature, classLoader);
+ assertNotNull(arrayReferencedType);
+ assertTrue(arrayReferencedType.isArray());
+ assertEquals(arraySignature, arrayReferencedType.getCode());
+
+ String genericSignature = className + "<String>";
+ Type genericReferenceType = TypesFactory.getType(genericSignature, classLoader);
+ assertNotNull(genericReferenceType);
+ assertEquals(genericSignature, genericReferenceType.getCode());
+
+ Type[] genericTypeArguments = genericReferenceType.getTypeArguments();
+ assertNotNull(genericTypeArguments);
+ assertEquals(1, genericTypeArguments.length);
+ Type genericTypeArgument = genericTypeArguments[0];
+ assertEquals(String.class, genericTypeArgument.getRawType());
+ }
+}