[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