Author: swd847
Date: 2010-03-30 06:24:05 -0400 (Tue, 30 Mar 2010)
New Revision: 12324
Modified:
modules/xml/trunk/core/src/main/java/org/jboss/seam/xml/model/ModelBuilder.java
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypeInjectedClass.java
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypesTest.java
modules/xml/trunk/core/src/test/resources/org/jboss/seam/xml/test/types/types-test-beans.xml
Log:
override parameter injection point types using XML
Modified: modules/xml/trunk/core/src/main/java/org/jboss/seam/xml/model/ModelBuilder.java
===================================================================
---
modules/xml/trunk/core/src/main/java/org/jboss/seam/xml/model/ModelBuilder.java 2010-03-30
10:22:06 UTC (rev 12323)
+++
modules/xml/trunk/core/src/main/java/org/jboss/seam/xml/model/ModelBuilder.java 2010-03-30
10:24:05 UTC (rev 12324)
@@ -321,6 +321,22 @@
Annotation a = createAnnotation(pan);
type.addToMethodParameter(item.getMethod(), param, a);
}
+ List<TypeXmlItem> types = fi.getChildrenOfType(TypeXmlItem.class);
+ if (types.size() > 1)
+ {
+ throw new XmlConfigurationException("Only one <type> element
may be present on a parameter", rb.getDocument(), rb.getLineno());
+ }
+ if (!types.isEmpty())
+ {
+ Set<Type> fieldTypes = new HashSet<Type>();
+ List<ClassXmlItem> overridenTypes =
types.get(0).getChildrenOfType(ClassXmlItem.class);
+ if (overridenTypes.size() != 1)
+ {
+ throw new XmlConfigurationException("<type> must have a
single child element", rb.getDocument(), rb.getLineno());
+ }
+
+ type.overrideMethodParameterType(item.getMethod(),
overridenTypes.get(0).getJavaClass(), param);
+ }
}
}
@@ -342,6 +358,22 @@
Annotation a = createAnnotation(pan);
type.addToConstructorParameter((Constructor) c, param, a);
}
+ List<TypeXmlItem> types = fi.getChildrenOfType(TypeXmlItem.class);
+ if (types.size() > 1)
+ {
+ throw new XmlConfigurationException("Only one <type> element
may be present on a parameter", rb.getDocument(), rb.getLineno());
+ }
+ if (!types.isEmpty())
+ {
+ Set<Type> fieldTypes = new HashSet<Type>();
+ List<ClassXmlItem> overridenTypes =
types.get(0).getChildrenOfType(ClassXmlItem.class);
+ if (overridenTypes.size() != 1)
+ {
+ throw new XmlConfigurationException("<type> must have a
single child element", rb.getDocument(), rb.getLineno());
+ }
+
+ type.overrideConstructorParameterType(c,
overridenTypes.get(0).getJavaClass(), param);
+ }
}
}
return result;
Modified:
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypeInjectedClass.java
===================================================================
---
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypeInjectedClass.java 2010-03-30
10:22:06 UTC (rev 12323)
+++
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypeInjectedClass.java 2010-03-30
10:24:05 UTC (rev 12324)
@@ -1,6 +1,15 @@
package org.jboss.seam.xml.test.types;
+
public class TypeInjectedClass
{
+ SomeInterface createValue;
+
+ public void create(SomeInterface value)
+ {
+ this.createValue = value;
+ }
+
public SomeInterface value;
+
}
Modified:
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypesTest.java
===================================================================
---
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypesTest.java 2010-03-30
10:22:06 UTC (rev 12323)
+++
modules/xml/trunk/core/src/test/java/org/jboss/seam/xml/test/types/TypesTest.java 2010-03-30
10:24:05 UTC (rev 12324)
@@ -26,6 +26,7 @@
TypeInjectedClass x = WeldManagerUtils.getInstanceByType(manager,
TypeInjectedClass.class);
assert x.value instanceof AllowedType;
+ assert x.createValue instanceof RestrictedType;
}
}
Modified:
modules/xml/trunk/core/src/test/resources/org/jboss/seam/xml/test/types/types-test-beans.xml
===================================================================
---
modules/xml/trunk/core/src/test/resources/org/jboss/seam/xml/test/types/types-test-beans.xml 2010-03-30
10:22:06 UTC (rev 12323)
+++
modules/xml/trunk/core/src/test/resources/org/jboss/seam/xml/test/types/types-test-beans.xml 2010-03-30
10:24:05 UTC (rev 12324)
@@ -11,6 +11,16 @@
<test:AllowedType/>
</type>
</test:value>
+ <test:create>
+ <Inject/>
+ <parameters>
+ <test:SomeInterface>
+ <type>
+ <test:RestrictedType/>
+ </type>
+ </test:SomeInterface>
+ </parameters>
+ </test:create>
</test:TypeInjectedClass>
</beans>
\ No newline at end of file
Show replies by date