[seam-commits] Seam SVN: r12324 - in modules/xml/trunk/core/src: test/java/org/jboss/seam/xml/test/types and 1 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Tue Mar 30 06:24:06 EDT 2010


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



More information about the seam-commits mailing list