You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2016/04/27 22:21:01 UTC
svn commit: r1741329 -
/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/
Author: pderop
Date: Wed Apr 27 20:21:01 2016
New Revision: 1741329
URL: http://svn.apache.org/viewvc?rev=1741329&view=rev
Log:
FELIX-5244: Can't inject service using a method ref on a parent class method.
Modified:
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ConfigurationDependencyBuilderImpl.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/FactoryPidAdapterBuilderImpl.java
felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceCallbacksBuilderImpl.java
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java?rev=1741329&r1=1741328&r2=1741329&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleAdapterBuilderImpl.java Wed Apr 27 20:21:01 2016
@@ -260,7 +260,7 @@ public class BundleAdapterBuilderImpl im
List<MethodRef<Object>> list = m_refs.computeIfAbsent(cbType, l -> new ArrayList<>());
list.add((instance, component, bundle) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((U) componentImpl, component, bundle);
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java?rev=1741329&r1=1741328&r2=1741329&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/BundleDependencyBuilderImpl.java Wed Apr 27 20:21:01 2016
@@ -349,7 +349,7 @@ public class BundleDependencyBuilderImpl
List<MethodRef<Object>> list = m_refs.computeIfAbsent(cbType, l -> new ArrayList<>());
list.add((instance, component, bundle) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((T) componentImpl, component, bundle);
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ConfigurationDependencyBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ConfigurationDependencyBuilderImpl.java?rev=1741329&r1=1741328&r2=1741329&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ConfigurationDependencyBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ConfigurationDependencyBuilderImpl.java Wed Apr 27 20:21:01 2016
@@ -208,7 +208,7 @@ public class ConfigurationDependencyBuil
m_hasComponentCallbackRefs = true;
m_refs.add((instance, component, props) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((T) componentImpl, component, props);
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/FactoryPidAdapterBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/FactoryPidAdapterBuilderImpl.java?rev=1741329&r1=1741328&r2=1741329&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/FactoryPidAdapterBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/FactoryPidAdapterBuilderImpl.java Wed Apr 27 20:21:01 2016
@@ -214,7 +214,7 @@ public class FactoryPidAdapterBuilderImp
m_hasMethodRefs = true;
m_refs.add((instance, component, props) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((T) componentImpl, component, props);
Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceCallbacksBuilderImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceCallbacksBuilderImpl.java?rev=1741329&r1=1741328&r2=1741329&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceCallbacksBuilderImpl.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.lambda/src/org/apache/felix/dm/lambda/impl/ServiceCallbacksBuilderImpl.java Wed Apr 27 20:21:01 2016
@@ -471,7 +471,7 @@ public class ServiceCallbacksBuilderImpl
List<MethodRef<Object, S>> list = m_refs.computeIfAbsent(cbType, l -> new ArrayList<>());
list.add((instance, component, sref, service) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((I) componentImpl, component, sref, service);
@@ -494,7 +494,7 @@ public class ServiceCallbacksBuilderImpl
if (! m_autoConfigInvoked) m_autoConfig = false;
m_swapRefs.add((instance, component, oref, oservice, nref, nservice) -> {
Object componentImpl = Stream.of(component.getInstances())
- .filter(impl -> Helpers.getClass(impl).equals(type))
+ .filter(impl -> type.isAssignableFrom(Helpers.getClass(impl)))
.findFirst()
.orElseThrow(() -> new IllegalStateException("The method reference " + ref + " does not match any available component impl classes."));
ref.accept((I) componentImpl, component, oref, oservice, nref, nservice);