You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2009/04/14 19:17:03 UTC

svn commit: r764886 - in /geronimo/sandbox/blueprint/org.apache.felix.blueprint/src: main/java/org/apache/felix/blueprint/context/ test/java/org/apache/felix/blueprint/

Author: gawor
Date: Tue Apr 14 17:17:02 2009
New Revision: 764886

URL: http://svn.apache.org/viewvc?rev=764886&view=rev
Log:
quick hack to get things working again: make sure to use Bundle.loadClass() to load classes

Modified:
    geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/Instanciator.java
    geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/ModuleContextImpl.java
    geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/WiringTest.java

Modified: geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/Instanciator.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/Instanciator.java?rev=764886&r1=764885&r2=764886&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/Instanciator.java (original)
+++ geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/Instanciator.java Tue Apr 14 17:17:02 2009
@@ -26,6 +26,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.xbean.recipe.Option;
 import org.apache.xbean.recipe.Repository;
 import org.apache.xbean.recipe.DefaultRepository;
 import org.apache.xbean.recipe.ObjectRecipe;
@@ -34,6 +35,7 @@
 import org.apache.xbean.recipe.ConstructionException;
 import org.apache.xbean.recipe.ReferenceRecipe;
 import org.apache.xbean.recipe.Recipe;
+import org.osgi.framework.Bundle;
 import org.osgi.service.blueprint.namespace.ComponentDefinitionRegistry;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.LocalComponentMetadata;
@@ -58,7 +60,13 @@
  */
 public class Instanciator {
 
-    public static Repository createRepository(ComponentDefinitionRegistry registry) throws Exception {
+    private Bundle bundle;
+    
+    public Instanciator(Bundle bundle) {
+        this.bundle = bundle;
+    }
+    
+    public Repository createRepository(ComponentDefinitionRegistry registry) throws Exception {
         Repository repository = new DefaultRepository();
         // Create recipes
         for (String name : (Set<String>) registry.getComponentDefinitionNames()) {
@@ -69,10 +77,11 @@
         return repository;
     }
 
-    private static Recipe createRecipe(ComponentMetadata component) {
+    private Recipe createRecipe(ComponentMetadata component) {
         if (component instanceof LocalComponentMetadata) {
             LocalComponentMetadata local = (LocalComponentMetadata) component;
-            ObjectRecipe recipe = new ObjectRecipe(local.getClassName());
+            ObjectRecipe recipe = new BundleObjectRecipe(local.getClassName());
+            recipe.allow(Option.PRIVATE_PROPERTIES);
             recipe.setName(component.getName());
             for (PropertyInjectionMetadata property : (Collection<PropertyInjectionMetadata>) local.getPropertyInjectionMetadata()) {
                 Object value = getValue(property.getValue());
@@ -92,7 +101,7 @@
         }
     }
 
-    private static Object getValue(Value v) {
+    private Object getValue(Value v) {
         if (v instanceof NullValue) {
             return null;
         } else if (v instanceof TypedStringValue) {
@@ -138,5 +147,27 @@
             throw new IllegalStateException("Unsupported value: " + v.getClass().getName());
         }
     }
+    
+    private class BundleObjectRecipe extends ObjectRecipe {
+        
+        String typeName;
+        
+        public BundleObjectRecipe(String typeName) {
+            super(typeName);
+            this.typeName = typeName;
+        }
+        
+        @Override
+        public Class getType() {
+            if (bundle == null) {
+                return super.getType();
+            }
+            try {
+                return bundle.loadClass(typeName);
+            } catch (ClassNotFoundException e) {
+                throw new ConstructionException("Type class could not be found: " + typeName);
+            }
+        }
+    }
 
 }

Modified: geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/ModuleContextImpl.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/ModuleContextImpl.java?rev=764886&r1=764885&r2=764886&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/ModuleContextImpl.java (original)
+++ geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/main/java/org/apache/felix/blueprint/context/ModuleContextImpl.java Tue Apr 14 17:17:02 2009
@@ -61,7 +61,8 @@
             Parser parser = new Parser();
             parser.parse(urls);
             componentDefinitionRegistry = parser.getRegistry();
-            Repository repository = Instanciator.createRepository(componentDefinitionRegistry);
+            Instanciator i = new Instanciator(bundleContext.getBundle());
+            Repository repository = i.createRepository(componentDefinitionRegistry);
             ObjectGraph graph = new ObjectGraph(repository);
             graph.createAll(new ArrayList<String>(componentDefinitionRegistry.getComponentDefinitionNames()));
             sender.sendCreated(this);

Modified: geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/WiringTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/WiringTest.java?rev=764886&r1=764885&r2=764886&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/WiringTest.java (original)
+++ geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/WiringTest.java Tue Apr 14 17:17:02 2009
@@ -32,7 +32,8 @@
     public void testWiring() throws Exception {
         Parser parser = parse("/test-wiring.xml");
 
-        Repository repository = Instanciator.createRepository(parser.getRegistry());
+        Instanciator i = new Instanciator(null);
+        Repository repository = i.createRepository(parser.getRegistry());
         ObjectGraph graph = new ObjectGraph(repository);
         Object obj = graph.create("pojoA");
         assertNotNull(obj);