[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