You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ro...@apache.org on 2019/03/07 19:53:53 UTC

svn commit: r1855000 - in /aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal: container/ContainerBootstrap.java container/ContainerState.java loader/BundleResourcesLoader.java

Author: rotty3000
Date: Thu Mar  7 19:53:53 2019
New Revision: 1855000

URL: http://svn.apache.org/viewvc?rev=1855000&view=rev
Log:
ARIES-1903 Cannot create proxy classes from extensions

Modified:
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java?rev=1855000&r1=1854999&r2=1855000&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerBootstrap.java Thu Mar  7 19:53:53 2019
@@ -21,6 +21,7 @@ import javax.enterprise.inject.spi.Exten
 
 import org.apache.aries.cdi.container.internal.container.Op.Mode;
 import org.apache.aries.cdi.container.internal.container.Op.Type;
+import org.apache.aries.cdi.container.internal.loader.BundleResourcesLoader;
 import org.apache.aries.cdi.container.internal.model.ExtendedExtensionDTO;
 import org.apache.aries.cdi.container.internal.model.FactoryComponent;
 import org.apache.aries.cdi.container.internal.model.SingleComponent;
@@ -105,6 +106,7 @@ public class ContainerBootstrap extends
 
 			Thread currentThread = Thread.currentThread();
 			ClassLoader current = currentThread.getContextClassLoader();
+			BundleResourcesLoader.Builder builder = new BundleResourcesLoader.Builder(containerState.bundle(), containerState.extenderBundle());
 
 			try {
 				currentThread.setContextClassLoader(containerState.classLoader());
@@ -116,13 +118,16 @@ public class ContainerBootstrap extends
 				containerState.containerDTO().extensions.stream().map(
 					ExtendedExtensionDTO.class::cast
 				).map(
-					e -> new ExtensionMetadata(e.extension.getService(), e.template.serviceFilter)
+					e -> {
+						builder.add(e.serviceReference.getBundle());
+						return new ExtensionMetadata(e.extension.getService(), e.template.serviceFilter);
+					}
 				).forEach(extensions::add);
 
 				_bootstrap = new WeldBootstrap();
 
 				BeanDeploymentArchive beanDeploymentArchive = new ContainerDeploymentArchive(
-					containerState.loader(),
+					builder.build(),
 					containerState.id(),
 					containerState.beansModel().getBeanClassNames(),
 					containerState.beansModel().getBeansXml());

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java?rev=1855000&r1=1854999&r2=1855000&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ContainerState.java Thu Mar  7 19:53:53 2019
@@ -14,9 +14,11 @@
 
 package org.apache.aries.cdi.container.internal.container;
 
-import static org.apache.aries.cdi.container.internal.util.Filters.*;
-import static org.osgi.namespace.extender.ExtenderNamespace.*;
-import static org.osgi.service.cdi.CDIConstants.*;
+import static org.apache.aries.cdi.container.internal.util.Filters.asFilter;
+import static org.osgi.namespace.extender.ExtenderNamespace.EXTENDER_NAMESPACE;
+import static org.osgi.service.cdi.CDIConstants.CDI_CAPABILITY_NAME;
+import static org.osgi.service.cdi.CDIConstants.CDI_CONTAINER_ID;
+import static org.osgi.service.cdi.CDIConstants.CDI_EXTENSION_PROPERTY;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
@@ -330,7 +332,7 @@ public class ContainerState {
 
 	@SuppressWarnings("unchecked")
 	public <T extends ResourceLoader & ProxyServices> T loader() {
-		return (T)new BundleResourcesLoader(_bundle, _extenderBundle);
+		return (T)new BundleResourcesLoader.Builder(_bundle, _extenderBundle).build();
 	}
 
 	public PromiseFactory promiseFactory() {

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java?rev=1855000&r1=1854999&r2=1855000&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/loader/BundleResourcesLoader.java Thu Mar  7 19:53:53 2019
@@ -33,7 +33,28 @@ import org.osgi.framework.wiring.BundleW
 
 public class BundleResourcesLoader implements ProxyServices, ResourceLoader {
 
-	public BundleResourcesLoader(Bundle bundle, Bundle extenderBundle) {
+	public static class Builder {
+
+		public Builder(Bundle bundle, Bundle extenderBundle) {
+			this.bundle = bundle;
+			this.extenderBundle = extenderBundle;
+		}
+
+		public Builder add(Bundle bundle) {
+			additionalBundles.add(bundle);
+			return this;
+		}
+
+		public BundleResourcesLoader build() {
+			return new BundleResourcesLoader(bundle, extenderBundle, additionalBundles);
+		}
+
+		private final Bundle bundle;
+		private final Bundle extenderBundle;
+		private final List<Bundle> additionalBundles = new ArrayList<>();
+	}
+
+	BundleResourcesLoader(Bundle bundle, Bundle extenderBundle, List<Bundle> additionalBundles) {
 		BundleWiring extenderWiring = extenderBundle.adapt(BundleWiring.class);
 
 		List<Bundle> bundles = new ArrayList<>();
@@ -57,6 +78,8 @@ public class BundleResourcesLoader imple
 			}
 		}
 
+		bundles.addAll(additionalBundles);
+
 		_classLoader = new BundleClassLoader(bundles.toArray(new Bundle[0]));
 	}