[jboss-cvs] JBossAS SVN: r96113 - in projects/kernel/trunk/weld-int/src: main/java/org/jboss/kernel/weld/metadata and 9 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 6 11:43:46 EST 2009


Author: kabir.khan at jboss.com
Date: 2009-11-06 11:43:45 -0500 (Fri, 06 Nov 2009)
New Revision: 96113

Added:
   projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/
   projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/
   projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/
   projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java
   projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/metadata/WeldBeanMetaData.java
   projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/
   projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/
   projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java
   projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/
   projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/
   projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSanity.xml
   projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSimpleWeld.xml
   projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testWeldWithProperties.xml
Log:
[JBKERNEL-51] Add support for <weld> element which adds the @WeldEnabled annotation

Added: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/metadata/api/annotations/WeldEnabled.java	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.jboss.kernel.weld.metadata.api.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Use this annotation on any Microcontainer beans that you want to be available
+ * for injection into weld beans.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
+public @interface WeldEnabled {
+
+}

Added: projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/metadata/WeldBeanMetaData.java
===================================================================
--- projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/metadata/WeldBeanMetaData.java	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/main/java/org/jboss/kernel/weld/plugins/metadata/WeldBeanMetaData.java	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,73 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.jboss.kernel.weld.plugins.metadata;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+import org.jboss.managed.api.annotation.ManagementObject;
+import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+ at ManagementObject(properties = ManagementProperties.EXPLICIT) // TODO - explicitly add props we want to manage
+ at JBossXmlSchema(namespace="urn:jboss:weld-beans:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="weld")
+ at XmlType(name="beanType", propOrder={"aliasMetaData", "related", "annotations", "classLoader", "constructor", "properties", "create", "start", "stop", "destroy", "depends", "demands", "supplies", "installs", "uninstalls", "installCallbacks", "uninstallCallbacks"})
+public class WeldBeanMetaData extends AbstractBeanMetaData
+{
+   private static final long serialVersionUID = 1L;
+
+   public WeldBeanMetaData()
+   {
+      super();
+   }
+
+   public WeldBeanMetaData(String name, String bean)
+   {
+      super(name, bean);
+   }
+
+   public WeldBeanMetaData(String bean)
+   {
+      super(bean);
+   }
+
+   @Override
+   public List<BeanMetaData> getBeans()
+   {
+      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(this);
+      builder.addAnnotation("@" + WeldEnabled.class.getName());
+      return super.getBeans();
+   }
+}

Added: projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java
===================================================================
--- projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/java/org/jboss/test/kernel/weld/weldschema/test/WeldElementTestCase.java	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,167 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file 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.jboss.test.kernel.weld.weldschema.test;
+
+import java.net.URL;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.beans.metadata.spi.AnnotationMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.LifecycleMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.kernel.weld.metadata.api.annotations.WeldEnabled;
+import org.jboss.kernel.weld.plugins.metadata.WeldBeanMetaData;
+import org.jboss.test.kernel.junit.MicrocontainerTest;
+import org.jboss.xb.binding.JBossXBException;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
+import org.jboss.xb.util.JBossXBHelper;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class WeldElementTestCase extends MicrocontainerTest
+{
+   private static final UnmarshallerFactory factory = UnmarshallerFactory.newInstance();
+
+   private static final SchemaBindingResolver resolver = SingletonSchemaResolverFactory.getInstance().getSchemaBindingResolver();
+
+   String namespace;
+   
+   public WeldElementTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return new TestSuite(WeldElementTestCase.class);
+   }
+   
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+      namespace = JBossXBHelper.findNamespace(WeldBeanMetaData.class);
+      JBossXBHelper.addClassBinding(namespace, WeldBeanMetaData.class);
+      
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {      
+      super.tearDown();
+      if (namespace != null)
+         JBossXBHelper.removeClassBinding(namespace);
+   }
+
+   
+   
+   public void testSanity() throws Exception
+   {
+      BeanMetaData bmd = assertOnlyBean("testSanity.xml");
+      assertEquals("Tester", bmd.getName());
+      assertNotWeldEnabled(bmd);
+   }
+   
+   public void testSimpleWeld() throws Exception
+   {
+      BeanMetaData bmd = assertOnlyBean("testSimpleWeld.xml");
+      assertEquals("Weld", bmd.getName());
+      assertWeldEnabled(bmd);
+   }
+   
+   public void testWeldWithProperties() throws Exception
+   {
+      BeanMetaData bmd = assertOnlyBean("testWeldWithProperties.xml");
+      assertEquals("Weld", bmd.getName());
+      assertWeldEnabled(bmd);
+      
+      boolean found = false;
+      for (PropertyMetaData pmd : bmd.getProperties())
+      {
+         if (pmd.getName().equals("foo"))
+            found = true;
+      }
+      if (!found)
+         fail("Did not find property");
+      
+      
+      LifecycleMetaData lmd = bmd.getStart();
+      assertNotNull(lmd);
+      assertEquals("toString", lmd.getMethodName());
+   }
+   
+   
+   
+   private void assertWeldEnabled(BeanMetaData bmd)
+   {
+      Set<AnnotationMetaData> anns = bmd.getAnnotations();
+      for (AnnotationMetaData ann : anns)
+      {
+         if (ann.getAnnotationInstance().annotationType().equals(WeldEnabled.class))
+            return;
+      }
+      fail("@WeldEnabled not found");
+   }
+
+   private void assertNotWeldEnabled(BeanMetaData bmd)
+   {
+      Set<AnnotationMetaData> anns = bmd.getAnnotations();
+      if (anns == null)
+         return;
+      for (AnnotationMetaData ann : anns)
+      {
+         if (ann.getAnnotationInstance().annotationType().equals(WeldEnabled.class))
+            fail("Should not be @WeldEnabled");
+      }
+   }
+
+   private BeanMetaData assertOnlyBean(String name) throws Exception
+   {
+      KernelDeployment kd = parse(name);
+      assertTrue(kd.getBeans().size() == 1);
+      return kd.getBeans().get(0);
+   }
+   
+   private List<BeanMetaData> getBeans(String name) throws Exception
+   {
+      return parse(name).getBeans();
+   }
+   
+   private KernelDeployment parse(String name) throws JBossXBException
+   {
+      Unmarshaller unmarshaller = factory.newUnmarshaller();
+      URL url = getResource(name);
+      assertNotNull(url);
+      return (KernelDeployment) unmarshaller.unmarshal(url.toString(), resolver);
+   }
+}

Added: projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSanity.xml
===================================================================
--- projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSanity.xml	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSanity.xml	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <bean name="Tester" class="java.lang.Object"/>
+
+</deployment>

Added: projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSimpleWeld.xml
===================================================================
--- projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSimpleWeld.xml	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testSimpleWeld.xml	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <weld xmlns="urn:jboss:weld-beans:1.0" name="Weld" class="java.lang.Object"/>
+
+</deployment>

Added: projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testWeldWithProperties.xml
===================================================================
--- projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testWeldWithProperties.xml	                        (rev 0)
+++ projects/kernel/trunk/weld-int/src/test/resources/org/jboss/test/kernel/weld/weldschema/test/testWeldWithProperties.xml	2009-11-06 16:43:45 UTC (rev 96113)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+   <weld xmlns="urn:jboss:weld-beans:1.0" name="Weld" class="java.lang.Object">
+      <property name="foo">Foo</property>
+      <start method="toString"/>
+   </weld>
+
+</deployment>




More information about the jboss-cvs-commits mailing list