[jboss-cvs] JBossAS SVN: r68738 - in projects/microcontainer/trunk/kernel/src: main/org/jboss/kernel/plugins/deployment/props/vertex and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jan 9 13:09:19 EST 2008


Author: alesj
Date: 2008-01-09 13:09:19 -0500 (Wed, 09 Jan 2008)
New Revision: 68738

Added:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/ComplexValueVertex.java
Modified:
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/TreeVertex.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/DefaultVertexFactory.java
   projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/props/test/GraphBuilderTestCase.java
Log:
Inject support for .properties metadata.

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/TreeVertex.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/TreeVertex.java	2008-01-09 16:50:36 UTC (rev 68737)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/TreeVertex.java	2008-01-09 18:09:19 UTC (rev 68738)
@@ -62,7 +62,7 @@
    /**
     * Get the last token.
     *
-    * @return
+    * @return last token string
     */
    protected String getLastToken()
    {

Added: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/ComplexValueVertex.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/ComplexValueVertex.java	                        (rev 0)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/ComplexValueVertex.java	2008-01-09 18:09:19 UTC (rev 68738)
@@ -0,0 +1,73 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.plugins.deployment.props.vertex;
+
+import java.util.Set;
+
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.ValueMetaDataAware;
+import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.kernel.plugins.deployment.props.TreeVertex;
+import org.jboss.util.graph.Vertex;
+
+/**
+ * Complex Value vertex.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ComplexValueVertex extends TreeVertex<Vertex<String>>
+{
+   public ComplexValueVertex(String value)
+   {
+      super(value);
+   }
+
+   public void visit(Vertex<String> parent, Set<Vertex<String>> children)
+   {
+      if (parent instanceof ValueMetaDataAware)
+      {
+         String[] tokens = getName().split("\\.");
+         if ("(inject)".equals(tokens[0]) == false)
+            throw new IllegalArgumentException("Currently only injection is supported.");
+
+         ValueMetaData value;
+         if ("autowire".equals(tokens[1]))
+         {
+            value = new AbstractInjectionValueMetaData();
+         }
+         else
+         {
+            if (tokens.length > 2)
+            {
+               value = new AbstractDependencyValueMetaData(tokens[1], tokens[2]);
+            }
+            else
+            {
+               value = new AbstractDependencyValueMetaData(tokens[1]);                  
+            }
+         }
+         ValueMetaDataAware valueMetaDataAware = (ValueMetaDataAware)parent;
+         valueMetaDataAware.setValue(value);
+      }
+   }
+}

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/DefaultVertexFactory.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/DefaultVertexFactory.java	2008-01-09 16:50:36 UTC (rev 68737)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/kernel/plugins/deployment/props/vertex/DefaultVertexFactory.java	2008-01-09 18:09:19 UTC (rev 68738)
@@ -85,9 +85,24 @@
       throw new IllegalArgumentException("No matching level factory: " + name + " / " + level);
    }
 
+   /**
+    * Is value complex.
+    * e.g. injection
+    *
+    * @param value
+    * @return
+    */
+   protected boolean isValueComplex(String value)
+   {
+      return value.contains(".");
+   }
+
    public TreeVertex valueVertex(String value)
    {
-      return new ValueVertex(value);
+      if (isValueComplex(value))
+         return new ComplexValueVertex(value);
+      else
+         return new ValueVertex(value);
    }
 
    public Visitor<String> visitor()

Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/props/test/GraphBuilderTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/props/test/GraphBuilderTestCase.java	2008-01-09 16:50:36 UTC (rev 68737)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/deployment/props/test/GraphBuilderTestCase.java	2008-01-09 18:09:19 UTC (rev 68738)
@@ -22,10 +22,19 @@
 package org.jboss.test.kernel.deployment.props.test;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import junit.framework.Test;
+import org.jboss.beans.metadata.plugins.AbstractBeanMetaData;
+import org.jboss.beans.metadata.plugins.AbstractDependencyValueMetaData;
+import org.jboss.beans.metadata.plugins.StringValueMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.PropertyMetaData;
+import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.kernel.plugins.deployment.props.PropertiesGraphFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
 import org.jboss.test.BaseTestCase;
 
 /**
@@ -51,13 +60,42 @@
       properties.put("mybean.(class)", "org.jboss.acme.MyBean");
       properties.put("mybean.somenumber", "123L");
       properties.put("mybean.somenumber.type", "java.lang.Long");
+      properties.put("mybean.injectee", "(inject).injectee");
+      properties.put("injectee.(class)", "org.jboss.acme.MyBean2");
 
       PropertiesGraphFactory propertiesGraph = new PropertiesGraphFactory(properties);
-      System.out.println("propertiesGraph " + propertiesGraph);
-      System.out.println("");
+      KernelDeployment deployment = propertiesGraph.build();
+      assertNotNull(deployment);
+      List<BeanMetaData> beans = deployment.getBeans();
+      assertNotNull(beans);
+      assertFalse(beans.isEmpty());
 
-      System.out.println(propertiesGraph.build());
+      BeanMetaData bean1 = beans.get(0);
+      assertInstanceOf(bean1, AbstractBeanMetaData.class);
+      AbstractBeanMetaData abmd1 = (AbstractBeanMetaData)bean1;
+      assertNotNull(bean1);
+      assertEquals("mybean", bean1.getName());
+      assertEquals("org.jboss.acme.MyBean", bean1.getBean());
+      Set<PropertyMetaData> propertys = bean1.getProperties();
+      assertNotNull(propertys);
+      assertFalse(propertys.isEmpty());
+      assertEquals(2, propertys.size());
+      PropertyMetaData pmd1 = abmd1.getProperty("somenumber");
+      assertNotNull(pmd1);
+      ValueMetaData vmd1 = pmd1.getValue();
+      assertNotNull(vmd1);
+      assertInstanceOf(vmd1, StringValueMetaData.class);
+      assertEquals("123L", vmd1.getUnderlyingValue());
+      assertEquals("java.lang.Long", ((StringValueMetaData)vmd1).getType());
+      PropertyMetaData pmd2 = abmd1.getProperty("injectee");
+      assertNotNull(pmd2);
+      ValueMetaData vmd2 = pmd2.getValue();
+      assertNotNull(vmd2);
+      assertInstanceOf(vmd2, AbstractDependencyValueMetaData.class);
 
-      System.out.println("");
+      BeanMetaData bean2 = beans.get(1);
+      assertNotNull(bean2);
+      assertEquals("injectee", bean2.getName());
+      assertEquals("org.jboss.acme.MyBean2", bean2.getBean());
    }
 }




More information about the jboss-cvs-commits mailing list