You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ma...@apache.org on 2009/12/03 10:27:06 UTC

svn commit: r886718 - in /incubator/aries/trunk/blueprint/blueprint-core: ./ src/main/java/org/apache/aries/blueprint/ src/main/java/org/apache/aries/blueprint/container/ src/main/java/org/apache/aries/blueprint/namespace/ src/test/java/org/apache/arie...

Author: mahrwald
Date: Thu Dec  3 09:26:49 2009
New Revision: 886718

URL: http://svn.apache.org/viewvc?rev=886718&view=rev
Log:
ARIES-63 Add convenience getters for built-in beans to component definition registry

Modified:
    incubator/aries/trunk/blueprint/blueprint-core/pom.xml
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ComponentDefinitionRegistry.java
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
    incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/ComponentDefinitionRegistryImpl.java
    incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/AbstractBlueprintTest.java
    incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/TestBlueprintContainer.java
    incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java

Modified: incubator/aries/trunk/blueprint/blueprint-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/pom.xml?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/pom.xml (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/pom.xml Thu Dec  3 09:26:49 2009
@@ -70,6 +70,12 @@
           <artifactId>slf4j-simple</artifactId>
           <scope>test</scope>
       </dependency>
+      <dependency>
+          <groupId>org.apache.aries.testsupport</groupId>
+          <artifactId>aries-testsupport-unit</artifactId>
+          <version>${version}</version>
+          <scope>test</scope>
+      </dependency>     
   </dependencies>
 
     <build>

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ComponentDefinitionRegistry.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ComponentDefinitionRegistry.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ComponentDefinitionRegistry.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/ComponentDefinitionRegistry.java Thu Dec  3 09:26:49 2009
@@ -19,6 +19,10 @@
 import java.util.List;
 import java.util.Set;
 
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.blueprint.container.Converter;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Target;
 
@@ -41,5 +45,29 @@
     void registerInterceptorWithComponent(ComponentMetadata component, Interceptor interceptor);
     
     List<Interceptor> getInterceptors(ComponentMetadata component);
+    
+    /**
+     * Obtain the blueprint container of that this component definition registry belongs to
+     * @return
+     */
+    BlueprintContainer getBlueprintContainer();
+    
+    /**
+     * Obtain the client bundle that defines this blueprint module
+     * @return
+     */
+    Bundle getBlueprintBundle();
+    
+    /**
+     * Obtain the client bundle context of the bundle that defines this blueprint module
+     * @return
+     */
+    BundleContext getBlueprintBundleContext();
+    
+    /**
+     * Obtain the blueprint converter of the current blueprint module
+     * @return
+     */
+    Converter getBlueprintConverter();
 
 }

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BlueprintContainerImpl.java Thu Dec  3 09:26:49 2009
@@ -35,11 +35,11 @@
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
-import java.util.LinkedHashSet;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -52,12 +52,11 @@
 import org.apache.aries.blueprint.ExtendedBlueprintContainer;
 import org.apache.aries.blueprint.NamespaceHandler;
 import org.apache.aries.blueprint.Processor;
-import org.apache.aries.blueprint.reflect.PassThroughMetadataImpl;
-import org.apache.aries.blueprint.reflect.MetadataUtil;
 import org.apache.aries.blueprint.di.Recipe;
 import org.apache.aries.blueprint.di.Repository;
 import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
 import org.apache.aries.blueprint.namespace.NamespaceHandlerRegistryImpl;
+import org.apache.aries.blueprint.reflect.MetadataUtil;
 import org.apache.aries.blueprint.utils.HeaderParser;
 import org.apache.aries.blueprint.utils.JavaUtils;
 import org.apache.aries.blueprint.utils.HeaderParser.PathElement;
@@ -145,7 +144,7 @@
         this.handlers = handlers;
         this.pathList = pathList;
         this.converter = new AggregateConverter(this);
-        this.componentDefinitionRegistry = new ComponentDefinitionRegistryImpl();
+        this.componentDefinitionRegistry = new ComponentDefinitionRegistryImpl(this, bundleContext, converter);
         this.executors = executors;
         this.processors = new ArrayList<Processor>();
         if (System.getSecurityManager() != null) {
@@ -250,10 +249,6 @@
                             eventDispatcher.blueprintEvent(new BlueprintEvent(BlueprintEvent.GRACE_PERIOD, getBundleContext().getBundle(), getExtenderBundle(), missing.toArray(new String[missing.size()])));
                             return;
                         }
-                        componentDefinitionRegistry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintContainer", this));
-                        componentDefinitionRegistry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintBundle", bundleContext.getBundle()));
-                        componentDefinitionRegistry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintBundleContext", bundleContext));
-                        componentDefinitionRegistry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintConverter", converter));
                         if (xmlValidation) {
                             parser.validate(handlerSet.getSchema());
                         }

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/ComponentDefinitionRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/ComponentDefinitionRegistryImpl.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/ComponentDefinitionRegistryImpl.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/namespace/ComponentDefinitionRegistryImpl.java Thu Dec  3 09:26:49 2009
@@ -31,7 +31,12 @@
 import org.apache.aries.blueprint.ComponentDefinitionRegistry;
 import org.apache.aries.blueprint.ComponentNameAlreadyInUseException;
 import org.apache.aries.blueprint.Interceptor;
+import org.apache.aries.blueprint.PassThroughMetadata;
 import org.apache.aries.blueprint.reflect.PassThroughMetadataImpl;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.blueprint.container.Converter;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
 import org.osgi.service.blueprint.reflect.Target;
 
@@ -44,16 +49,31 @@
  * @version $Rev: 760378 $, $Date: 2009-03-31 11:31:38 +0200 (Tue, 31 Mar 2009) $
  */
 public class ComponentDefinitionRegistryImpl implements ComponentDefinitionRegistry {
-
+    
+    private static final String COMP_ID_BLUEPRINT_CONVERTER = "blueprintConverter";
+    private static final String COMP_ID_BLUEPRINT_BUNDLE_CONTEXT = "blueprintBundleContext";
+    private static final String COMP_ID_BLUEPRINT_BUNDLE = "blueprintBundle";
+    private static final String COMP_ID_BLUEPRINT_CONTAINER = "blueprintContainer";
+    
     private final Map<String, ComponentMetadata> components;
     private final List<Target> typeConverters;
     private final Map<ComponentMetadata, List<Interceptor>> interceptors;
 
-    public ComponentDefinitionRegistryImpl() {
+    public ComponentDefinitionRegistryImpl(BlueprintContainer container, 
+            BundleContext applicationBundleContext, Converter blueprintConverter) {
         // Use a linked hash map to keep the declaration order 
         components = Collections.synchronizedMap(new LinkedHashMap<String, ComponentMetadata>());
         typeConverters = new CopyOnWriteArrayList<Target>();
         interceptors = Collections.synchronizedMap(new HashMap<ComponentMetadata, List<Interceptor>>());
+
+        registerComponentDefinition(
+                new PassThroughMetadataImpl(COMP_ID_BLUEPRINT_CONTAINER, container));
+        registerComponentDefinition(
+                new PassThroughMetadataImpl(COMP_ID_BLUEPRINT_BUNDLE, applicationBundleContext.getBundle()));
+        registerComponentDefinition(
+                new PassThroughMetadataImpl(COMP_ID_BLUEPRINT_BUNDLE_CONTEXT, applicationBundleContext));
+        registerComponentDefinition(
+                new PassThroughMetadataImpl(COMP_ID_BLUEPRINT_CONVERTER, blueprintConverter));
     }
 
     public boolean containsComponentDefinition(String name) {
@@ -124,5 +144,25 @@
     public List<Interceptor> getInterceptors(ComponentMetadata component) {
         return interceptors.get(component);
     }
+
+    public Bundle getBlueprintBundle() {
+        PassThroughMetadata meta = (PassThroughMetadata) components.get(COMP_ID_BLUEPRINT_BUNDLE);
+        return (Bundle) meta.getObject();
+    }
+
+    public BundleContext getBlueprintBundleContext() {
+        PassThroughMetadata meta = (PassThroughMetadata) components.get(COMP_ID_BLUEPRINT_BUNDLE_CONTEXT);
+        return (BundleContext) meta.getObject();
+    }
+
+    public BlueprintContainer getBlueprintContainer() {
+        PassThroughMetadata meta = (PassThroughMetadata) components.get(COMP_ID_BLUEPRINT_CONTAINER);
+        return (BlueprintContainer) meta.getObject();
+    }
+
+    public Converter getBlueprintConverter() {
+        PassThroughMetadata meta = (PassThroughMetadata) components.get(COMP_ID_BLUEPRINT_CONVERTER);
+        return (Converter) meta.getObject();
+    }
     
 }

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/AbstractBlueprintTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/AbstractBlueprintTest.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/AbstractBlueprintTest.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/AbstractBlueprintTest.java Thu Dec  3 09:26:49 2009
@@ -18,18 +18,22 @@
  */
 package org.apache.aries.blueprint;
 
+import java.io.IOException;
 import java.net.URI;
 import java.util.Collections;
 import java.util.Set;
-import java.io.IOException;
 
 import javax.xml.validation.Schema;
 
 import junit.framework.TestCase;
+
 import org.apache.aries.blueprint.container.NamespaceHandlerRegistry;
 import org.apache.aries.blueprint.container.Parser;
 import org.apache.aries.blueprint.namespace.ComponentDefinitionRegistryImpl;
-import org.osgi.framework.Bundle;
+import org.apache.aries.unittest.mocks.Skeleton;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.container.BlueprintContainer;
+import org.osgi.service.blueprint.container.Converter;
 import org.xml.sax.SAXException;
 
 public abstract class AbstractBlueprintTest extends TestCase {
@@ -59,7 +63,10 @@
     }
 
     protected ComponentDefinitionRegistryImpl parse(String name, NamespaceHandlerRegistry.NamespaceHandlerSet handlers) throws Exception {
-        ComponentDefinitionRegistryImpl registry = new ComponentDefinitionRegistryImpl();
+        ComponentDefinitionRegistryImpl registry = new ComponentDefinitionRegistryImpl(
+                Skeleton.newMock(BlueprintContainer.class),
+                Skeleton.newMock(BundleContext.class),
+                Skeleton.newMock(Converter.class));
         Parser parser = new Parser();
         parser.parse(Collections.singletonList(getClass().getResource(name)));
         parser.populate(handlers, registry);

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/TestBlueprintContainer.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/TestBlueprintContainer.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/TestBlueprintContainer.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/TestBlueprintContainer.java Thu Dec  3 09:26:49 2009
@@ -30,10 +30,9 @@
         super(new TestBundleContext(), null, null, null, null, null);
         this.registry = registry;
         if (registry != null) {
+            // overwrite the dummy container with something proper because it is needed somewhere
+            registry.removeComponentDefinition("blueprintContainer");
             registry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintContainer", this));
-            registry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintBundle", getBundleContext().getBundle()));
-            registry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintBundleContext", getBundleContext()));
-            registry.registerComponentDefinition(new PassThroughMetadataImpl("blueprintConverter", getConverter()));
         }
     }
 

Modified: incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java
URL: http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java?rev=886718&r1=886717&r2=886718&view=diff
==============================================================================
--- incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java (original)
+++ incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java Thu Dec  3 09:26:49 2009
@@ -411,6 +411,14 @@
         assertNotNull(repository.create("c3"));
     }
     
+    public void testDefaultBeans() throws Exception {
+        ComponentDefinitionRegistryImpl registry = parse("/test-circular.xml");
+        assertNotNull(registry.getBlueprintContainer());
+        assertNotNull(registry.getBlueprintBundle());
+        assertNotNull(registry.getBlueprintBundleContext());
+        assertNotNull(registry.getBlueprintConverter());
+    }
+    
     private TestBlueprintContainer createBlueprintContainer() throws Exception {
         ComponentDefinitionRegistryImpl registry = parse("/test-circular.xml");
         return new TestBlueprintContainer(registry);