aries-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hugh...@apache.org
Subject svn commit: r1624034 - /aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java
Date Wed, 10 Sep 2014 15:33:21 GMT
Author: hughesj
Date: Wed Sep 10 15:33:21 2014
New Revision: 1624034

URL: http://svn.apache.org/r1624034
Log:
ARIES-1063 ARIES-1065: ServiceFactory can now be specified as the bean class

Modified:
    aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java

Modified: aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java
URL: http://svn.apache.org/viewvc/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java?rev=1624034&r1=1624033&r2=1624034&view=diff
==============================================================================
--- aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java
(original)
+++ aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/ServiceRecipe.java
Wed Sep 10 15:33:21 2014
@@ -288,9 +288,19 @@ public class ServiceRecipe extends Abstr
                         validateClasses(o);
                     } else if (o instanceof UnwrapperedBeanHolder) {
                         UnwrapperedBeanHolder holder = (UnwrapperedBeanHolder) o;
-                        validateClasses(holder.unwrapperedBean);
-                        o = BeanRecipe.wrap(holder, getClassesForProxying(holder.unwrapperedBean));
-                    } else {
+                        if (holder.unwrapperedBean instanceof ServiceFactory) {
+                            //If a service factory is used, make sure the proxy classes implement
this
+                            //interface so that later on, internalGetService will create
the real
+                            //service from it.
+                            LOGGER.debug("{} implements ServiceFactory, creating proxy that
also implements this", holder.unwrapperedBean);
+                            Collection<Class<?>> cls = getClassesForProxying(holder.unwrapperedBean);
+                            cls.add(blueprintContainer.loadClass("org.osgi.framework.ServiceFactory"));
+                            o = BeanRecipe.wrap(holder, cls);
+                        } else {
+                            validateClasses(holder.unwrapperedBean);
+                            o = BeanRecipe.wrap(holder, getClassesForProxying(holder.unwrapperedBean));
+                        }
+                    } else if (!(o instanceof ServiceFactory)) {
                         validateClasses(o);
                     }
                     service = o;



Mime
View raw message