You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2015/05/15 17:10:54 UTC

[2/2] cxf git commit: Fix problems with using with blueprint-no-osgi

Fix problems with using <cxf:bus> with blueprint-no-osgi


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a35355ab
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a35355ab
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a35355ab

Branch: refs/heads/3.0.x-fixes
Commit: a35355abddc3e59084ca18b0efbd5962718670c4
Parents: 0c97da8
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri May 15 10:49:55 2015 -0400
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Fri May 15 16:10:21 2015 +0100

----------------------------------------------------------------------
 .../cxf/bus/blueprint/BlueprintBeanLocator.java | 22 +++++++++++---------
 .../apache/cxf/bus/blueprint/BlueprintBus.java  |  9 ++++++--
 .../AbstractBPBeanDefinitionParser.java         | 14 ++++++-------
 .../jaxrs_uriinfo_blueprint/WEB-INF/beans.xml   |  2 +-
 4 files changed, 26 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/a35355ab/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBeanLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBeanLocator.java b/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBeanLocator.java
index 70b547e..4db349d 100644
--- a/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBeanLocator.java
+++ b/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBeanLocator.java
@@ -123,7 +123,7 @@ public class BlueprintBeanLocator implements ConfiguredBeanLocator {
                 list.add(type.cast(container.getComponentInstance(s)));
             }
         }
-        if (list.isEmpty()) {
+        if (list.isEmpty() && context != null) {
             try {
                 ServiceReference refs[] = context.getServiceReferences(type.getName(), null);
                 if (refs != null) {
@@ -168,16 +168,18 @@ public class BlueprintBeanLocator implements ConfiguredBeanLocator {
         }
         
         try {
-            ServiceReference refs[] = context.getServiceReferences(type.getName(), null);
-            if (refs != null) {
-                for (ServiceReference r : refs) {
-                    Object o2 = context.getService(r);
-                    Class<? extends T> t = o2.getClass().asSubclass(type);
-                    if (listener.loadBean(t.getName(), t)) {
-                        if (listener.beanLoaded(t.getName(), type.cast(o2))) {
-                            return true;
+            if (context != null) {
+                ServiceReference refs[] = context.getServiceReferences(type.getName(), null);
+                if (refs != null) {
+                    for (ServiceReference r : refs) {
+                        Object o2 = context.getService(r);
+                        Class<? extends T> t = o2.getClass().asSubclass(type);
+                        if (listener.loadBean(t.getName(), t)) {
+                            if (listener.beanLoaded(t.getName(), type.cast(o2))) {
+                                return true;
+                            }
+                            loaded = true;
                         }
-                        loaded = true;
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/cxf/blob/a35355ab/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBus.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBus.java b/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBus.java
index 9842ad3..b6b68dc 100644
--- a/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBus.java
+++ b/core/src/main/java/org/apache/cxf/bus/blueprint/BlueprintBus.java
@@ -67,10 +67,15 @@ public class BlueprintBus extends ExtensionManagerBus {
         setExtension(new BlueprintBeanLocator(getExtension(ConfiguredBeanLocator.class), container, context),
                            ConfiguredBeanLocator.class);
     }
+    @Override
     public String getId() {
         if (id == null) {
-            id = context.getBundle().getSymbolicName() + "-" 
-                + DEFAULT_BUS_ID + Integer.toString(this.hashCode());
+            if (context == null) {
+                id = super.getId();
+            } else {
+                id = context.getBundle().getSymbolicName() + "-" 
+                    + DEFAULT_BUS_ID + Integer.toString(this.hashCode());
+            }
         }
         return id;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/a35355ab/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
index 6be1e3c..c71601c 100644
--- a/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
+++ b/core/src/main/java/org/apache/cxf/configuration/blueprint/AbstractBPBeanDefinitionParser.java
@@ -52,7 +52,6 @@ import org.apache.cxf.common.util.PackageUtils;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.staxutils.StaxUtils;
-import org.osgi.framework.Bundle;
 import org.osgi.service.blueprint.reflect.BeanMetadata;
 import org.osgi.service.blueprint.reflect.CollectionMetadata;
 import org.osgi.service.blueprint.reflect.ComponentMetadata;
@@ -266,11 +265,7 @@ public abstract class AbstractBPBeanDefinitionParser {
     protected MutableBeanMetadata getBus(ParserContext context, String name) {
         ComponentDefinitionRegistry cdr = context.getComponentDefinitionRegistry();
         ComponentMetadata meta = cdr.getComponentDefinition("blueprintBundle");
-
-        Bundle blueprintBundle = null;
-        if (meta instanceof PassThroughMetadata) {
-            blueprintBundle = (Bundle) ((PassThroughMetadata) meta).getObject();
-        }
+        
         if (!cdr.containsComponentDefinition(InterceptorTypeConverter.class.getName())) {
             MutablePassThroughMetadata md = context.createMetadata(MutablePassThroughMetadata.class);
             md.setObject(new InterceptorTypeConverter());
@@ -278,13 +273,16 @@ public abstract class AbstractBPBeanDefinitionParser {
             md.setId(InterceptorTypeConverter.class.getName());
             context.getComponentDefinitionRegistry().registerTypeConverter(md);
         }
-        if (blueprintBundle != null && !cdr.containsComponentDefinition(name)) {
+        if (!cdr.containsComponentDefinition(name)) {
             //Create a bus
 
             MutableBeanMetadata bus = context.createMetadata(MutableBeanMetadata.class);
             bus.setId(name);
             bus.setRuntimeClass(BlueprintBus.class);
-            bus.addProperty("bundleContext", createRef(context, "blueprintBundleContext"));
+            if (meta != null) {
+                //blueprint-no-osgi does not provide a bundleContext
+                bus.addProperty("bundleContext", createRef(context, "blueprintBundleContext"));
+            }
             bus.addProperty("blueprintContainer", createRef(context, "blueprintContainer"));
             bus.setDestroyMethod("shutdown");
             bus.setInitMethod("initialize");

http://git-wip-us.apache.org/repos/asf/cxf/blob/a35355ab/systests/jaxrs/src/test/resources/jaxrs_uriinfo_blueprint/WEB-INF/beans.xml
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/resources/jaxrs_uriinfo_blueprint/WEB-INF/beans.xml b/systests/jaxrs/src/test/resources/jaxrs_uriinfo_blueprint/WEB-INF/beans.xml
index dd056e2..9cc8d1d 100644
--- a/systests/jaxrs/src/test/resources/jaxrs_uriinfo_blueprint/WEB-INF/beans.xml
+++ b/systests/jaxrs/src/test/resources/jaxrs_uriinfo_blueprint/WEB-INF/beans.xml
@@ -29,7 +29,7 @@
         Having cxf:bus has no effect: <cxf:bus/>
         Having cxf:bus with id causes NPE in BusDefinitionParser: <cxf:bus id="cxf"/>   
      -->        
-     <bean id="cxf" class="org.apache.cxf.bus.extension.ExtensionManagerBus"/>
+     <cxf:bus/>
      
      <jaxrs:server id="resourceServer" address="/">
         <jaxrs:serviceBeans>