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]));
}