[jboss-cvs] JBossAS SVN: r76462 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/beans/metadata/plugins/builder and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jul 30 04:40:16 EDT 2008
Author: alesj
Date: 2008-07-30 04:40:16 -0400 (Wed, 30 Jul 2008)
New Revision: 76462
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractRelatedClassMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
Log:
Builder util and related class.
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractRelatedClassMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractRelatedClassMetaData.java 2008-07-30 07:19:09 UTC (rev 76461)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractRelatedClassMetaData.java 2008-07-30 08:40:16 UTC (rev 76462)
@@ -47,8 +47,20 @@
private String className;
private Set<Object> enabled;
+ public AbstractRelatedClassMetaData()
+ {
+ }
+
+ public AbstractRelatedClassMetaData(String className)
+ {
+ this.className = className;
+ }
+
public String getClassName()
{
+ if (className == null)
+ throw new IllegalArgumentException("Null class name");
+
return className;
}
@@ -103,6 +115,26 @@
buffer.append(className);
}
+ protected int getHashCode()
+ {
+ int hash = getClassName().hashCode();
+ if (enabled != null)
+ hash += 7 * enabled.hashCode();
+ return hash;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof RelatedClassMetaData == false)
+ return false;
+
+ RelatedClassMetaData rcmd = (RelatedClassMetaData)obj;
+ if (getClassName().equals(rcmd.getClassName()) == false)
+ return false;
+
+ return JBossObject.equals(enabled, rcmd.getEnabled());
+ }
+
public AbstractRelatedClassMetaData clone()
{
AbstractRelatedClassMetaData clone = (AbstractRelatedClassMetaData)super.clone();
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-07-30 07:19:09 UTC (rev 76461)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/builder/BeanMetaDataBuilderImpl.java 2008-07-30 08:40:16 UTC (rev 76462)
@@ -21,15 +21,18 @@
*/
package org.jboss.beans.metadata.plugins.builder;
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.lang.annotation.Annotation;
import org.jboss.beans.info.spi.BeanAccessMode;
+import org.jboss.beans.metadata.api.model.AutowireType;
+import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
import org.jboss.beans.metadata.plugins.AbstractArrayMetaData;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
import org.jboss.beans.metadata.plugins.AbstractCallbackMetaData;
@@ -43,25 +46,25 @@
import org.jboss.beans.metadata.plugins.AbstractListMetaData;
import org.jboss.beans.metadata.plugins.AbstractMapMetaData;
import org.jboss.beans.metadata.plugins.AbstractPropertyMetaData;
+import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
import org.jboss.beans.metadata.plugins.AbstractSetMetaData;
import org.jboss.beans.metadata.plugins.AbstractSupplyMetaData;
import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
+import org.jboss.beans.metadata.plugins.DirectAnnotationMetaData;
import org.jboss.beans.metadata.plugins.StringValueMetaData;
import org.jboss.beans.metadata.plugins.ThisValueMetaData;
-import org.jboss.beans.metadata.plugins.AbstractAnnotationMetaData;
-import org.jboss.beans.metadata.plugins.DirectAnnotationMetaData;
+import org.jboss.beans.metadata.spi.AnnotationMetaData;
import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
import org.jboss.beans.metadata.spi.DemandMetaData;
import org.jboss.beans.metadata.spi.DependencyMetaData;
import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.SupplyMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
-import org.jboss.beans.metadata.spi.AnnotationMetaData;
-import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
import org.jboss.beans.metadata.spi.builder.ParameterMetaDataBuilder;
-import org.jboss.beans.metadata.api.model.AutowireType;
import org.jboss.dependency.spi.Cardinality;
import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
@@ -288,6 +291,30 @@
return this;
}
+ public BeanMetaDataBuilder addRelatedClass(String className, Object... enabled)
+ {
+ RelatedClassMetaData related = createRelated(className, enabled);
+ return addRelatedClass(related);
+ }
+
+ public BeanMetaDataBuilder addRelatedClass(RelatedClassMetaData related)
+ {
+ Set<RelatedClassMetaData> relatedSet = beanMetaData.getRelated();
+ if (relatedSet == null)
+ {
+ relatedSet = new HashSet<RelatedClassMetaData>();
+ beanMetaData.setRelated(relatedSet);
+ }
+ relatedSet.add(related);
+ return this;
+ }
+
+ public BeanMetaDataBuilder setRelated(Set<RelatedClassMetaData> related)
+ {
+ beanMetaData.setRelated(related);
+ return this;
+ }
+
public BeanMetaDataBuilder setAliases(Set<Object> aliases)
{
beanMetaData.setAliases(aliases);
@@ -898,6 +925,15 @@
return this;
}
+ public RelatedClassMetaData createRelated(String className, Object... enabled)
+ {
+ AbstractRelatedClassMetaData related = new AbstractRelatedClassMetaData();
+ related.setClassName(className);
+ if (enabled != null && enabled.length > 0)
+ related.setEnabled(new HashSet<Object>(Arrays.asList(enabled)));
+ return related;
+ }
+
public ValueMetaData createNull()
{
return new AbstractValueMetaData();
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-07-30 07:19:09 UTC (rev 76461)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/builder/BeanMetaDataBuilder.java 2008-07-30 08:40:16 UTC (rev 76462)
@@ -36,6 +36,7 @@
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.ClassLoaderMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.dependency.spi.Cardinality;
import org.jboss.dependency.spi.ControllerMode;
import org.jboss.dependency.spi.ControllerState;
@@ -149,6 +150,31 @@
public abstract BeanMetaDataBuilder setAliases(Set<Object> aliases);
/**
+ * Add related class.
+ *
+ * @param className the related class name
+ * @param enabled the enabled
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addRelatedClass(String className, Object... enabled);
+
+ /**
+ * Add related class.
+ *
+ * @param related the related class
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder addRelatedClass(RelatedClassMetaData related);
+
+ /**
+ * Set the related
+ *
+ * @param related the related
+ * @return the builder
+ */
+ public abstract BeanMetaDataBuilder setRelated(Set<RelatedClassMetaData> related);
+
+ /**
* Add alias.
*
* @param alias the alias
@@ -1485,6 +1511,15 @@
Cardinality cardinality);
/**
+ * Create related class name.
+ *
+ * @param className the related class name
+ * @param enabled the enabled
+ * @return new related class meta data
+ */
+ public abstract RelatedClassMetaData createRelated(String className, Object... enabled);
+
+ /**
* Create a null value
*
* @return the null value
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java 2008-07-30 07:19:09 UTC (rev 76461)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/spi/factory/GenericBeanFactoryMetaData.java 2008-07-30 08:40:16 UTC (rev 76462)
@@ -31,8 +31,8 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlTransient;
import org.jboss.beans.info.spi.BeanAccessMode;
import org.jboss.beans.metadata.plugins.AbstractAliasMetaData;
@@ -597,7 +597,11 @@
ValueMetaData injectKernelConfigurator = builder.createInject(KernelConstants.KERNEL_CONFIGURATOR_NAME);
builder.addConstructorParameter(KernelConfigurator.class.getName(), injectKernelConfigurator);
if (bean != null)
+ {
builder.addPropertyMetaData("bean", bean);
+ // add bean as related class
+ builder.addRelatedClass(bean);
+ }
if (classLoader != null)
{
builder.setClassLoader(classLoader);
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2008-07-30 07:19:09 UTC (rev 76461)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/config/test/BeanMetaDataBuilderTestCase.java 2008-07-30 08:40:16 UTC (rev 76462)
@@ -28,17 +28,20 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.HashSet;
import junit.framework.Test;
import org.jboss.beans.metadata.api.model.AutowireType;
import org.jboss.beans.metadata.plugins.InstallCallbackMetaData;
import org.jboss.beans.metadata.plugins.UninstallCallbackMetaData;
import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractRelatedClassMetaData;
import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
import org.jboss.beans.metadata.spi.BeanMetaData;
import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
import org.jboss.beans.metadata.spi.CallbackMetaData;
import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.beans.metadata.spi.RelatedClassMetaData;
import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
import org.jboss.dependency.spi.Cardinality;
import org.jboss.dependency.spi.ControllerContext;
@@ -841,4 +844,50 @@
assertFalse(beans.isEmpty());
assertSame(abmd, beans.get(0));
}
+
+ public void testRelatedClassName() throws Throwable
+ {
+ RelatedClassMetaData rcmd = new AbstractRelatedClassMetaData(Object.class.getName());
+ Set<RelatedClassMetaData> related = new HashSet<RelatedClassMetaData>();
+ related.add(rcmd);
+
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean");
+ builder.addRelatedClass(Object.class.getName());
+ BeanMetaData bmd = builder.getBeanMetaData();
+
+ assertEquals(related, bmd.getRelated());
+ }
+
+ public void testRelatedClassNameWithEnabled() throws Throwable
+ {
+ AbstractRelatedClassMetaData rcmd = new AbstractRelatedClassMetaData(Object.class.getName());
+ rcmd.setEnabledValue("aop");
+ Set<RelatedClassMetaData> related = new HashSet<RelatedClassMetaData>();
+ related.add(rcmd);
+
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean");
+ builder.addRelatedClass(Object.class.getName(), "aop");
+ BeanMetaData bmd = builder.getBeanMetaData();
+
+ assertEquals(related, bmd.getRelated());
+ }
+
+ public void testMultipleRelatedClassNameWithMultipleEnabled() throws Throwable
+ {
+ AbstractRelatedClassMetaData rcmd1 = new AbstractRelatedClassMetaData(Object.class.getName());
+ rcmd1.setEnabled(new HashSet<Object>(Arrays.asList("aop", "md")));
+ AbstractRelatedClassMetaData rcmd2 = new AbstractRelatedClassMetaData(String.class.getName());
+ rcmd2.setEnabled(new HashSet<Object>(Arrays.asList("qwert", "foobar")));
+
+ Set<RelatedClassMetaData> related = new HashSet<RelatedClassMetaData>();
+ related.add(rcmd1);
+ related.add(rcmd2);
+
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Bean");
+ builder.addRelatedClass(Object.class.getName(), "aop", "md");
+ builder.addRelatedClass(String.class.getName(), "qwert", "foobar");
+ BeanMetaData bmd = builder.getBeanMetaData();
+
+ assertEquals(related, bmd.getRelated());
+ }
}
More information about the jboss-cvs-commits
mailing list