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 2018/08/24 16:35:04 UTC

svn commit: r1838899 - in /aries/trunk/cdi: cdi-extender/ cdi-extender/src/main/java/org/apache/aries/cdi/container/ cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/ cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/...

Author: rotty3000
Date: Fri Aug 24 16:35:04 2018
New Revision: 1838899

URL: http://svn.apache.org/viewvc?rev=1838899&view=rev
Log:
[CDI] update to latest changes

Signed-off-by: Raymond Auge <ro...@apache.org>

Added:
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/CDIProvider.java
      - copied, changed from r1838707, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/SeContainerInitializer.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/package-info.java
      - copied, changed from r1838707, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java
    aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.se.SeContainerInitializer
    aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.spi.CDIProvider
Removed:
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java
Modified:
    aries/trunk/cdi/cdi-extender/bnd.bnd
    aries/trunk/cdi/cdi-extender/pom.xml
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/Activator.java
    aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/CCR.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/model/BeansModelBuilder.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/CDIBundlePhaseTest.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerBootstrapTest.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ExtensionPhaseTest.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/TemplatesTests.java
    aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java
    aries/trunk/cdi/cdi-extension-http/bnd.bnd
    aries/trunk/cdi/cdi-extension-http/pom.xml
    aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpActivator.java
    aries/trunk/cdi/cdi-extension-jndi/bnd.bnd
    aries/trunk/cdi/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiActivator.java
    aries/trunk/cdi/cdi-extra/src/main/java/org/apache/aries/cdi/extra/propertytypes/JSONRequired.java
    aries/trunk/cdi/cdi-itests/bnd/basic-beans.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb1.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb10.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb11.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb2.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb3.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb4.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb5.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb6.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb7.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb8.bnd
    aries/trunk/cdi/cdi-itests/bnd/tb9.bnd
    aries/trunk/cdi/cdi-itests/cdi-executable.bndrun
    aries/trunk/cdi/cdi-itests/itest.bndrun
    aries/trunk/cdi/cdi-itests/pom.xml
    aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
    aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java

Modified: aries/trunk/cdi/cdi-extender/bnd.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/bnd.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/bnd.bnd (original)
+++ aries/trunk/cdi/cdi-extender/bnd.bnd Fri Aug 24 16:35:04 2018
@@ -10,8 +10,8 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
-Conditional-Package: \
+-conditionalpackage: \
 	org.apache.felix.utils.extender,\
 	org.osgi.util.converter
 
--contract: JavaAnnotation, JavaCDI, JavaEL, JavaInject, JavaInterceptor
\ No newline at end of file
+-contract: *

Modified: aries/trunk/cdi/cdi-extender/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/pom.xml?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/pom.xml (original)
+++ aries/trunk/cdi/cdi-extender/pom.xml Fri Aug 24 16:35:04 2018
@@ -92,10 +92,6 @@
 					<artifactId>jboss-ejb-api_3.2_spec</artifactId>
 				</exclusion>
 				<exclusion>
-					<groupId>org.jboss.spec.javax.el</groupId>
-					<artifactId>jboss-el-api_3.0_spec</artifactId>
-				</exclusion>
-				<exclusion>
 					<groupId>org.jboss.spec.javax.interceptor</groupId>
 					<artifactId>jboss-interceptors-api_1.2_spec</artifactId>
 				</exclusion>
@@ -129,6 +125,12 @@
 			<version>1.0.0</version>
 			<scope>provided</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.namespace.service</artifactId>
+			<version>1.0.0</version>
+			<scope>provided</scope>
+		</dependency>
 		<dependency>
 			<groupId>org.osgi</groupId>
 			<artifactId>org.osgi.service.cdi</artifactId>

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/Activator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/Activator.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/Activator.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/Activator.java Fri Aug 24 16:35:04 2018
@@ -26,8 +26,6 @@ import java.util.Observer;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Executors;
 
-import javax.enterprise.inject.spi.CDI;
-
 import org.apache.aries.cdi.container.internal.command.CDICommand;
 import org.apache.aries.cdi.container.internal.container.CDIBundle;
 import org.apache.aries.cdi.container.internal.container.ConfigurationListener;
@@ -41,16 +39,15 @@ import org.apache.aries.cdi.container.in
 import org.apache.aries.cdi.container.internal.model.SingleActivator;
 import org.apache.aries.cdi.container.internal.model.SingleComponent;
 import org.apache.aries.cdi.container.internal.util.Logs;
-import org.apache.aries.cdi.provider.CDIProvider;
 import org.apache.felix.utils.extender.AbstractExtender;
 import org.apache.felix.utils.extender.Extension;
 import org.osgi.annotation.bundle.Header;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
+import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
-import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.cdi.runtime.CDIComponentRuntime;
@@ -68,9 +65,10 @@ import org.osgi.util.tracker.ServiceTrac
 @RequireConfigurationAdmin
 public class Activator extends AbstractExtender {
 
-	static {
-		CDI.setCDIProvider(new CDIProvider());
-	}
+	private static final Logs _logs = new Logs.Builder(FrameworkUtil.getBundle(Activator.class).getBundleContext()).build();
+	private static final Logger _log = _logs.getLogger(Activator.class);
+	private static final PromiseFactory _promiseFactory = new PromiseFactory(Executors.newFixedThreadPool(1));
+	public static final CCR ccr = new CCR(_promiseFactory, _logs);
 
 	public Activator() {
 		setSynchronous(true);
@@ -78,15 +76,11 @@ public class Activator extends AbstractE
 
 	@Override
 	public void start(BundleContext bundleContext) throws Exception {
-		_logs = new Logs.Builder(bundleContext).build();
-		_log = _logs.getLogger(getClass());
-
 		if (_log.isDebugEnabled()) {
 			_log.debug("CCR starting {}", bundleContext.getBundle());
 		}
 
-		_ccr = new CCR(_promiseFactory, _logs);
-		_command = new CDICommand(_ccr);
+		_command = new CDICommand(ccr);
 
 		_bundleContext = bundleContext;
 
@@ -158,7 +152,7 @@ public class Activator extends AbstractE
 			bundle, _bundleContext.getBundle(), _ccrChangeCount, _promiseFactory, caTracker, _logs);
 
 		// the CDI bundle
-		return new CDIBundle(_ccr, containerState,
+		return new CDIBundle(ccr, containerState,
 			// handle extensions
 			new ExtensionPhase(containerState,
 				// listen for configurations of the container component
@@ -187,10 +181,16 @@ public class Activator extends AbstractE
 
 	@Override
 	protected void debug(Bundle bundle, String msg) {
+		if (_log.isDebugEnabled()) {
+			_log.debug(msg, bundle);
+		}
 	}
 
 	@Override
 	protected void warn(Bundle bundle, String msg, Throwable t) {
+		if (_log.isWarnEnabled()) {
+			_log.warn(msg, bundle, t);
+		}
 	}
 
 	@Override
@@ -213,15 +213,7 @@ public class Activator extends AbstractE
 				Bundle providerWiringBundle = bundleWire.getProviderWiring().getBundle();
 
 				if (providerWiringBundle.equals(_bundleContext.getBundle())) {
-					BundleRequirement requirement = bundleWire.getRequirement();
-					Map<String, Object> requirementAttributes = requirement.getAttributes();
-
-					@SuppressWarnings("unchecked")
-					List<String> beans = (List<String>)requirementAttributes.get(REQUIREMENT_OSGI_BEANS_ATTRIBUTE);
-
-					if (beans != null && !beans.isEmpty()) {
-						return true;
-					}
+					return true;
 				}
 			}
 		}
@@ -229,16 +221,11 @@ public class Activator extends AbstractE
 		return false;
 	}
 
-
 	private BundleContext _bundleContext;
-	private volatile CCR _ccr;
 	private final ChangeCount _ccrChangeCount = new ChangeCount();
 	private ServiceRegistration<CDIComponentRuntime> _ccrRegistration;
 	private volatile CDICommand _command;
 	private ServiceRegistration<?> _commandRegistration;
-	private volatile Logs _logs;
-	private volatile Logger _log;
-	private final PromiseFactory _promiseFactory = new PromiseFactory(Executors.newFixedThreadPool(1));
 
 	private class ChangeObserverFactory implements Observer, ServiceFactory<CDIComponentRuntime> {
 
@@ -249,7 +236,7 @@ public class Activator extends AbstractE
 
 			_registrations.add(registration);
 
-			return _ccr;
+			return ccr;
 		}
 
 		@Override

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/CCR.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/CCR.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/CCR.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/CCR.java Fri Aug 24 16:35:04 2018
@@ -73,6 +73,10 @@ public class CCR implements CDIComponent
 		);
 	}
 
+	public ContainerState getContainerState(Bundle bundle) {
+		return _states.get(bundle);
+	}
+
 	public void remove(Bundle bundle) {
 		_states.remove(bundle);
 	}

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=1838899&r1=1838898&r2=1838899&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 Fri Aug 24 16:35:04 2018
@@ -47,12 +47,14 @@ import org.jboss.weld.resources.spi.Reso
 import org.jboss.weld.serialization.spi.ProxyServices;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.dto.BundleDTO;
 import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.framework.wiring.BundleCapability;
 import org.osgi.framework.wiring.BundleRequirement;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.resource.Namespace;
 import org.osgi.service.cdi.ComponentType;
 import org.osgi.service.cdi.ConfigurationPolicy;
 import org.osgi.service.cdi.MaximumCardinality;
@@ -73,7 +75,6 @@ public class ContainerState {
 		private static final long serialVersionUID = 1L;
 	};
 
-	@SuppressWarnings("unchecked")
 	public ContainerState(
 		Bundle bundle,
 		Bundle extenderBundle,
@@ -112,6 +113,28 @@ public class ContainerState {
 			}
 		}
 
+		wires = bundleWiring.getRequiredWires(CDI_EXTENSION_PROPERTY);
+
+		List<String> extensionRequirements = new ArrayList<>();
+
+		for (BundleWire wire : wires) {
+			String filter = wire.getRequirement().getDirectives().get(
+				Namespace.REQUIREMENT_FILTER_DIRECTIVE);
+			Bundle extensionProvider = wire.getProvider().getBundle();
+
+			StringBuilder sb = new StringBuilder();
+
+			sb.append("(&");
+			sb.append(filter);
+			sb.append("(");
+			sb.append(Constants.SERVICE_BUNDLEID);
+			sb.append("=");
+			sb.append(extensionProvider.getBundleId());
+			sb.append("))");
+
+			extensionRequirements.add(sb.toString());
+		}
+
 		_containerDTO = new ContainerDTO();
 		_containerDTO.bundle = _bundle.adapt(BundleDTO.class);
 		_containerDTO.changeCount = _changeCount.get();
@@ -127,24 +150,20 @@ public class ContainerState {
 			_bundle.getSymbolicName()
 		);
 
-		Optional.ofNullable(
-			(List<String>)cdiAttributes.get(REQUIREMENT_EXTENSIONS_ATTRIBUTE)
-		).ifPresent(
-			list -> list.stream().forEach(
-				extensionFilter -> {
-					ExtendedExtensionTemplateDTO extensionTemplateDTO = new ExtendedExtensionTemplateDTO();
-
-					try {
-						extensionTemplateDTO.filter = asFilter(extensionFilter);
-						extensionTemplateDTO.serviceFilter = extensionFilter;
+		extensionRequirements.forEach(
+			extensionFilter -> {
+				ExtendedExtensionTemplateDTO extensionTemplateDTO = new ExtendedExtensionTemplateDTO();
+
+				try {
+					extensionTemplateDTO.filter = asFilter(extensionFilter);
+					extensionTemplateDTO.serviceFilter = extensionFilter;
 
-						_containerDTO.template.extensions.add(extensionTemplateDTO);
-					}
-					catch (Exception e) {
-						_containerDTO.errors.add(Throw.asString(e));
-					}
+					_containerDTO.template.extensions.add(extensionTemplateDTO);
+				}
+				catch (Exception e) {
+					_containerDTO.errors.add(Throw.asString(e));
 				}
-			)
+			}
 		);
 
 		_containerComponentTemplateDTO = new ComponentTemplateDTO();
@@ -185,6 +204,8 @@ public class ContainerState {
 
 			_containerDTO.errors.add(Throw.asString(e));
 		}
+
+		_beanManagerDeferred = _promiseFactory.deferred();
 	}
 
 	public <T, R> Promise<R> addCallback(CheckedCallback<T, R> checkedCallback) {
@@ -194,11 +215,18 @@ public class ContainerState {
 	}
 
 	public BeanManager beanManager() {
-		return _beanManager;
+		try {
+			return _beanManagerDeferred.getPromise().timeout(5000).getValue();
+		} catch (InvocationTargetException | InterruptedException e) {
+			return Throw.exception(e);
+		}
 	}
 
 	public void beanManager(BeanManager beanManager) {
-		_beanManager = beanManager;
+		if (_beanManagerDeferred.getPromise().isDone()) {
+			_beanManagerDeferred = _promiseFactory.deferred();
+		}
+		_beanManagerDeferred.resolve(beanManager);
 	}
 
 	public BeansModel beansModel() {
@@ -371,7 +399,7 @@ public class ContainerState {
 	}
 
 	private final ClassLoader _aggregateClassLoader;
-	private volatile BeanManager _beanManager;
+	private volatile Deferred<BeanManager> _beanManagerDeferred;
 	private final BeansModel _beansModel;
 	private final Bundle _bundle;
 	private final ClassLoader _bundleClassLoader;

Modified: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BeansModelBuilder.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BeansModelBuilder.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BeansModelBuilder.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/BeansModelBuilder.java Fri Aug 24 16:35:04 2018
@@ -50,7 +50,7 @@ public class BeansModelBuilder {
 		List<URL> beanDescriptorURLs = new ArrayList<URL>();
 		Map<String, Object> attributes = getAttributes();
 
-		List<String> beanDescriptorPaths = cast(attributes.get(REQUIREMENT_BEANS_ATTRIBUTE));
+		List<String> beanDescriptorPaths = cast(attributes.get(REQUIREMENT_DESCRIPTOR_ATTRIBUTE));
 
 		if (beanDescriptorPaths != null) {
 			for (String descriptorPath : beanDescriptorPaths) {
@@ -64,7 +64,7 @@ public class BeansModelBuilder {
 
 		@SuppressWarnings("unchecked")
 		List<String> beanClassNames = Optional.ofNullable(
-			_attributes.get(REQUIREMENT_OSGI_BEANS_ATTRIBUTE)
+			_attributes.get(REQUIREMENT_BEANS_ATTRIBUTE)
 		).map(v -> (List<String>)v).orElse(Collections.emptyList());
 
 		Map<String, OSGiBean> beans = new HashMap<>();

Copied: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/CDIProvider.java (from r1838707, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java)
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/CDIProvider.java?p2=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/CDIProvider.java&p1=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java&r1=1838707&r2=1838899&rev=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/CDIProvider.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/CDIProvider.java Fri Aug 24 16:35:04 2018
@@ -12,23 +12,21 @@
  * limitations under the License.
  */
 
-package org.apache.aries.cdi.provider;
+package org.apache.aries.cdi.container.internal.provider;
 
 import java.lang.annotation.Annotation;
+import java.util.Collections;
 import java.util.Iterator;
+import java.util.Optional;
 
 import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.CDI;
 import javax.enterprise.util.TypeLiteral;
 
-import org.apache.aries.cdi.container.internal.util.Filters;
-import org.jboss.weld.exceptions.IllegalStateException;
+import org.apache.aries.cdi.container.internal.Activator;
 import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleReference;
-import org.osgi.framework.Filter;
-import org.osgi.util.tracker.ServiceTracker;
 
 public class CDIProvider implements javax.enterprise.inject.spi.CDIProvider {
 
@@ -36,12 +34,12 @@ public class CDIProvider implements java
 
 		@Override
 		public void destroy(Object instance) {
-			throw new UnsupportedOperationException();
+			// NOOP
 		}
 
 		@Override
 		public Object get() {
-			throw new UnsupportedOperationException();
+			return this;
 		}
 
 		@Override
@@ -52,57 +50,46 @@ public class CDIProvider implements java
 				BundleReference br = (BundleReference)contextClassLoader;
 
 				Bundle bundle = br.getBundle();
-				BundleContext bundleContext = bundle.getBundleContext();
 
-				Filter filter = Filters.asFilter(
-					"(&(objectClass=%s)(service.bundleid=%d))",
-					BeanManager.class.getName(), bundle.getBundleId());
-
-				ServiceTracker<BeanManager, BeanManager> bmt = new ServiceTracker<>(
-					bundleContext, filter, null);
-
-				bmt.open();
-
-				try {
-					return bmt.waitForService(1000);
-				}
-				catch (InterruptedException e) {
-					return null;
-				}
+				return Optional.ofNullable(
+					Activator.ccr.getContainerState(bundle)
+				).map(
+					cs -> cs.beanManager()
+				).orElse(null);
 			}
 
 			throw new IllegalStateException(
-				"This method can only be used when the Thread context classloader has been set to a bundle's classloader.");
+				"This method can only be used when the Thread context class loader has been set to a Bundle's classloader.");
 		}
 
 		@Override
 		public boolean isAmbiguous() {
-			throw new UnsupportedOperationException();
+			return false;
 		}
 
 		@Override
 		public boolean isUnsatisfied() {
-			throw new UnsupportedOperationException();
+			return false;
 		}
 
 		@Override
 		public Iterator<Object> iterator() {
-			throw new UnsupportedOperationException();
+			return Collections.singleton((Object)this).iterator();
 		}
 
 		@Override
 		public Instance<Object> select(Annotation... qualifiers) {
-			throw new UnsupportedOperationException();
+			return getBeanManager().createInstance().select(qualifiers);
 		}
 
 		@Override
 		public <U> Instance<U> select(Class<U> subtype, Annotation... qualifiers) {
-			throw new UnsupportedOperationException();
+			return getBeanManager().createInstance().select(subtype, qualifiers);
 		}
 
 		@Override
 		public <U> Instance<U> select(TypeLiteral<U> subtype, Annotation... qualifiers) {
-			throw new UnsupportedOperationException();
+			return getBeanManager().createInstance().select(subtype, qualifiers);
 		}
 
 	}

Added: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/SeContainerInitializer.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/SeContainerInitializer.java?rev=1838899&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/SeContainerInitializer.java (added)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/provider/SeContainerInitializer.java Fri Aug 24 16:35:04 2018
@@ -0,0 +1,111 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.aries.cdi.container.internal.provider;
+
+import java.lang.annotation.Annotation;
+import java.util.Map;
+
+import javax.enterprise.inject.se.SeContainer;
+import javax.enterprise.inject.spi.Extension;
+
+public class SeContainerInitializer extends javax.enterprise.inject.se.SeContainerInitializer {
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addBeanClasses(Class<?>... classes) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addPackages(Class<?>... packageClasses) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addPackages(
+		boolean scanRecursively, Class<?>... packageClasses) {
+
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addPackages(Package... packages) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addPackages(boolean scanRecursively, Package... packages) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addExtensions(Extension... extensions) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public javax.enterprise.inject.se.SeContainerInitializer addExtensions(Class<? extends Extension>... extensions) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer enableInterceptors(Class<?>... interceptorClasses) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer enableDecorators(Class<?>... decoratorClasses) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer selectAlternatives(Class<?>... alternativeClasses) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	@SuppressWarnings("unchecked")
+	public javax.enterprise.inject.se.SeContainerInitializer selectAlternativeStereotypes(
+		Class<? extends Annotation>... alternativeStereotypeClasses) {
+
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer addProperty(String key, Object value) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer setProperties(Map<String, Object> properties) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer disableDiscovery() {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public javax.enterprise.inject.se.SeContainerInitializer setClassLoader(ClassLoader classLoader) {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+	@Override
+	public SeContainer initialize() {
+		throw new UnsupportedOperationException("This API is not supported in OSGi");
+	}
+
+}

Copied: aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/package-info.java (from r1838707, aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java)
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/package-info.java?p2=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/package-info.java&p1=aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java&r1=1838707&r2=1838899&rev=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/provider/package-info.java (original)
+++ aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/package-info.java Fri Aug 24 16:35:04 2018
@@ -38,13 +38,54 @@
 	},
 	version = CDIConstants.CDI_SPECIFICATION_VERSION
 )
-@Export
-@Version("1.0.0")
-package org.apache.aries.cdi.provider;
+@Capability(
+	namespace = ServiceNamespace.SERVICE_NAMESPACE,
+	attribute = "objectClass:List<String>=javax.enterprise.inject.spi.BeanManager",
+	uses = {
+		javax.el.Expression.class,
+		javax.enterprise.context.ApplicationScoped.class,
+		javax.enterprise.context.spi.Context.class,
+		javax.enterprise.event.Event.class,
+		javax.enterprise.inject.Any.class,
+		javax.enterprise.inject.spi.Annotated.class,
+		javax.enterprise.util.TypeLiteral.class
+	}
+)
+@Capability(
+	namespace = ServiceNamespace.SERVICE_NAMESPACE,
+	attribute = "objectClass:List<String>=org.osgi.service.cdi.runtime.CDIComponentRuntime",
+	uses = {
+		org.osgi.service.cdi.runtime.CDIComponentRuntime.class,
+		org.osgi.service.cdi.runtime.dto.ContainerDTO.class,
+		org.osgi.service.cdi.runtime.dto.template.ContainerTemplateDTO.class
+	}
+)
+@Capability(
+	namespace = "osgi.serviceloader",
+	name = "javax.enterprise.inject.se.SeContainerInitializer",
+	uses = {
+		javax.enterprise.inject.se.SeContainerInitializer.class,
+		javax.enterprise.inject.spi.CDI.class
+	}
+)
+@Capability(
+	namespace = "osgi.serviceloader",
+	name = "javax.enterprise.inject.spi.CDIProvider",
+	uses = {
+		javax.enterprise.inject.Any.class,
+		javax.enterprise.inject.spi.Annotated.class,
+		javax.enterprise.util.TypeLiteral.class
+	}
+)
+@Requirement(
+	namespace = ExtenderNamespace.EXTENDER_NAMESPACE,
+	name = "osgi.serviceloader.registrar"
+)
+package org.apache.aries.cdi.container;
 
 import org.osgi.annotation.bundle.Capability;
-import org.osgi.annotation.bundle.Export;
-import org.osgi.annotation.versioning.Version;
+import org.osgi.annotation.bundle.Requirement;
 import org.osgi.namespace.extender.ExtenderNamespace;
 import org.osgi.namespace.implementation.ImplementationNamespace;
+import org.osgi.namespace.service.ServiceNamespace;
 import org.osgi.service.cdi.CDIConstants;

Added: aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.se.SeContainerInitializer
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.se.SeContainerInitializer?rev=1838899&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.se.SeContainerInitializer (added)
+++ aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.se.SeContainerInitializer Fri Aug 24 16:35:04 2018
@@ -0,0 +1,13 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+org.apache.aries.cdi.container.internal.provider.SeContainerInitializer
\ No newline at end of file

Added: aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.spi.CDIProvider
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.spi.CDIProvider?rev=1838899&view=auto
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.spi.CDIProvider (added)
+++ aries/trunk/cdi/cdi-extender/src/main/resources/META-INF/services/javax.enterprise.inject.spi.CDIProvider Fri Aug 24 16:35:04 2018
@@ -0,0 +1,13 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+org.apache.aries.cdi.container.internal.provider.CDIProvider
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/CDIBundlePhaseTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/CDIBundlePhaseTest.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/CDIBundlePhaseTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/CDIBundlePhaseTest.java Fri Aug 24 16:35:04 2018
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import static org.mockito.Mockito.*;
 
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -27,8 +28,12 @@ import org.apache.aries.cdi.container.in
 import org.apache.aries.cdi.container.test.BaseCDIBundleTest;
 import org.junit.Test;
 import org.osgi.framework.Bundle;
+import org.osgi.framework.wiring.BundleRequirement;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.namespace.extender.ExtenderNamespace;
+import org.osgi.resource.Namespace;
 import org.osgi.service.cdi.CDIConstants;
 import org.osgi.service.cdi.runtime.dto.ContainerDTO;
 
@@ -70,8 +75,7 @@ public class CDIBundlePhaseTest extends
 	public void extensions_simple() throws Exception {
 		Map<String, Object> attributes = new HashMap<>();
 
-		attributes.put(CDIConstants.REQUIREMENT_EXTENSIONS_ATTRIBUTE, Arrays.asList("(foo=name)", "(fum=bar)"));
-		attributes.put(CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+		attributes.put(CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.BarAnnotated",
 				"org.apache.aries.cdi.container.test.beans.FooAnnotated",
@@ -86,6 +90,44 @@ public class CDIBundlePhaseTest extends
 						0).getRequirement().getAttributes()
 		).thenReturn(attributes);
 
+		BundleWire wire0 = mock(BundleWire.class);
+		BundleRequirement req0 = mock(BundleRequirement.class);
+		BundleRevision rev0 = mock(BundleRevision.class);
+		BundleWire wire1 = mock(BundleWire.class);
+		BundleRequirement req1 = mock(BundleRequirement.class);
+		BundleRevision rev1 = mock(BundleRevision.class);
+
+		when(
+			bundle.adapt(
+				BundleWiring.class).getRequiredWires(CDIConstants.CDI_EXTENSION_PROPERTY)
+		).thenReturn(Arrays.asList(wire0, wire1));
+
+		when(
+			wire0.getRequirement()
+		).thenReturn(req0);
+		when(
+			wire0.getProvider()
+		).thenReturn(rev0);
+		when(
+			rev0.getBundle()
+		).thenReturn(bundle);
+		when(
+			req0.getDirectives()
+		).thenReturn(Collections.singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(foo=name)"));
+
+		when(
+			wire1.getRequirement()
+		).thenReturn(req1);
+		when(
+			wire1.getProvider()
+		).thenReturn(rev1);
+		when(
+			rev1.getBundle()
+		).thenReturn(bundle);
+		when(
+			req1.getDirectives()
+		).thenReturn(Collections.singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(fum=bar)"));
+
 		ContainerState containerState = new ContainerState(bundle, ccrBundle, ccrChangeCount, promiseFactory, null, new Logs.Builder(bundle.getBundleContext()).build());
 
 		CDIBundle cdiBundle = new CDIBundle(ccr, containerState, null);
@@ -111,8 +153,8 @@ public class CDIBundlePhaseTest extends
 		assertNotNull(containerDTO.template);
 		assertEquals(2, containerDTO.template.components.size());
 		assertEquals(2, containerDTO.template.extensions.size());
-		assertEquals("(foo=name)", containerDTO.template.extensions.get(0).serviceFilter);
-		assertEquals("(fum=bar)", containerDTO.template.extensions.get(1).serviceFilter);
+		assertEquals("(&(foo=name)(service.bundleid=1))", containerDTO.template.extensions.get(0).serviceFilter);
+		assertEquals("(&(fum=bar)(service.bundleid=1))", containerDTO.template.extensions.get(1).serviceFilter);
 		assertEquals("foo", containerDTO.template.id);
 
 		cdiBundle.destroy();
@@ -122,8 +164,6 @@ public class CDIBundlePhaseTest extends
 	public void extensions_invalidsyntax() throws Exception {
 		Map<String, Object> attributes = new HashMap<>();
 
-		attributes.put(CDIConstants.REQUIREMENT_EXTENSIONS_ATTRIBUTE, Arrays.asList("(foo=name)", "fum=bar)"));
-
 		when(
 			bundle.adapt(
 				BundleWiring.class).getRequiredWires(
@@ -131,6 +171,44 @@ public class CDIBundlePhaseTest extends
 						0).getRequirement().getAttributes()
 		).thenReturn(attributes);
 
+		BundleWire wire0 = mock(BundleWire.class);
+		BundleRequirement req0 = mock(BundleRequirement.class);
+		BundleRevision rev0 = mock(BundleRevision.class);
+		BundleWire wire1 = mock(BundleWire.class);
+		BundleRequirement req1 = mock(BundleRequirement.class);
+		BundleRevision rev1 = mock(BundleRevision.class);
+
+		when(
+			bundle.adapt(
+				BundleWiring.class).getRequiredWires(CDIConstants.CDI_EXTENSION_PROPERTY)
+		).thenReturn(Arrays.asList(wire0, wire1));
+
+		when(
+			wire0.getRequirement()
+		).thenReturn(req0);
+		when(
+			wire0.getProvider()
+		).thenReturn(rev0);
+		when(
+			rev0.getBundle()
+		).thenReturn(bundle);
+		when(
+			req0.getDirectives()
+		).thenReturn(Collections.singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(foo=name)"));
+
+		when(
+			wire1.getRequirement()
+		).thenReturn(req1);
+		when(
+			wire1.getProvider()
+		).thenReturn(rev1);
+		when(
+			rev1.getBundle()
+		).thenReturn(bundle);
+		when(
+			req1.getDirectives()
+		).thenReturn(Collections.singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "fum=bar)"));
+
 		ContainerState containerState = new ContainerState(bundle, ccrBundle, ccrChangeCount, promiseFactory, null, new Logs.Builder(bundle.getBundleContext()).build());
 
 		CDIBundle cdiBundle = new CDIBundle(ccr, containerState, null);
@@ -153,7 +231,7 @@ public class CDIBundlePhaseTest extends
 		assertFalse(containerDTO.errors + "", containerDTO.errors.isEmpty());
 		assertEquals(1, containerDTO.errors.size());
 		assertFalse(containerDTO.template.extensions.isEmpty());
-		assertEquals("(foo=name)", containerDTO.template.extensions.get(0).serviceFilter);
+		assertEquals("(&(foo=name)(service.bundleid=1))", containerDTO.template.extensions.get(0).serviceFilter);
 
 		cdiBundle.destroy();
 	}

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerBootstrapTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerBootstrapTest.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerBootstrapTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerBootstrapTest.java Fri Aug 24 16:35:04 2018
@@ -52,7 +52,7 @@ public class ContainerBootstrapTest exte
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				FooService.class.getName()
 			)

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ContainerReferencesTest.java Fri Aug 24 16:35:04 2018
@@ -249,7 +249,7 @@ public class ContainerReferencesTest ext
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.Reference_S_R_M_U_Service"
 			)
@@ -391,7 +391,7 @@ public class ContainerReferencesTest ext
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.Reference_D_R_M_U_Service"
 			)

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ExtensionPhaseTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ExtensionPhaseTest.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ExtensionPhaseTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/ExtensionPhaseTest.java Fri Aug 24 16:35:04 2018
@@ -20,8 +20,7 @@ import static org.mockito.Mockito.*;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Collections;
 
 import javax.enterprise.inject.spi.Extension;
 
@@ -38,8 +37,11 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceEvent;
 import org.osgi.framework.ServiceListener;
+import org.osgi.framework.wiring.BundleRequirement;
+import org.osgi.framework.wiring.BundleRevision;
+import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
-import org.osgi.namespace.extender.ExtenderNamespace;
+import org.osgi.resource.Namespace;
 import org.osgi.service.cdi.CDIConstants;
 import org.osgi.service.cdi.runtime.dto.ContainerDTO;
 import org.osgi.service.cdi.runtime.dto.ExtensionDTO;
@@ -49,15 +51,26 @@ public class ExtensionPhaseTest extends
 
 	@Test
 	public void extensions_tracking() throws Exception {
-		Map<String, Object> attributes = new HashMap<>();
-		attributes.put(CDIConstants.REQUIREMENT_EXTENSIONS_ATTRIBUTE, Arrays.asList("(foo=name)"));
+		BundleWire wire0 = mock(BundleWire.class);
+		BundleRequirement req0 = mock(BundleRequirement.class);
+		BundleRevision rev0 = mock(BundleRevision.class);
 
 		when(
 			bundle.adapt(
-				BundleWiring.class).getRequiredWires(
-					ExtenderNamespace.EXTENDER_NAMESPACE).get(
-						0).getRequirement().getAttributes()
-		).thenReturn(attributes);
+				BundleWiring.class).getRequiredWires(CDIConstants.CDI_EXTENSION_PROPERTY)
+		).thenReturn(Arrays.asList(wire0));
+		when(
+			wire0.getRequirement()
+		).thenReturn(req0);
+		when(
+			wire0.getProvider()
+		).thenReturn(rev0);
+		when(
+			rev0.getBundle()
+		).thenReturn(bundle);
+		when(
+			req0.getDirectives()
+		).thenReturn(Collections.singletonMap(Namespace.REQUIREMENT_FILTER_DIRECTIVE, "(foo=name)"));
 
 		ContainerState containerState = new ContainerState(bundle, ccrBundle, ccrChangeCount, promiseFactory, null, new Logs.Builder(bundle.getBundleContext()).build());
 
@@ -86,7 +99,7 @@ public class ExtensionPhaseTest extends
 
 		assertNotNull(containerDTO.template);
 		assertEquals(1, containerDTO.template.extensions.size());
-		assertEquals("(foo=name)", containerDTO.template.extensions.get(0).serviceFilter);
+		assertEquals("(&(foo=name)(service.bundleid=1))", containerDTO.template.extensions.get(0).serviceFilter);
 
 		final MockServiceRegistration<Extension> regA = cast(bundle.getBundleContext().registerService(
 			Extension.class, new Extension(){}, Maps.dict("foo", "name")));
@@ -97,7 +110,7 @@ public class ExtensionPhaseTest extends
 			TestUtil.serviceListeners.stream().filter(
 				en -> en.getValue().matches(
 					Maps.of(Constants.OBJECTCLASS, Extension.class.getName(),
-					"foo", "name"))
+					"foo", "name", Constants.SERVICE_BUNDLEID, bundle.getBundleId()))
 			).map(
 				en -> en.getKey()
 			).findFirst().ifPresent(
@@ -105,9 +118,9 @@ public class ExtensionPhaseTest extends
 			);
 
 			Thread.sleep(10);
-		} while(!slD.getPromise().isDone());
+		} while(!slD.getPromise().timeout(500).isDone());
 
-		slD.getPromise().thenAccept(
+		slD.getPromise().timeout(500).thenAccept(
 			sl -> {
 				assertEquals(2, containerState.containerDTO().changeCount);
 				assertEquals(1, containerState.containerDTO().extensions.size());

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/TemplatesTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/TemplatesTests.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/TemplatesTests.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/internal/phase/TemplatesTests.java Fri Aug 24 16:35:04 2018
@@ -107,7 +107,7 @@ public class TemplatesTests extends Base
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.BarAnnotated",
 				"org.apache.aries.cdi.container.test.beans.BarProducer",
@@ -192,7 +192,7 @@ public class TemplatesTests extends Base
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.BarAnnotated",
 				"org.apache.aries.cdi.container.test.beans.BarProducer",
@@ -411,7 +411,7 @@ public class TemplatesTests extends Base
 		Map<String, Object> attributes = new HashMap<>();
 
 		attributes.put(
-			CDIConstants.REQUIREMENT_OSGI_BEANS_ATTRIBUTE,
+			CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 			Arrays.asList(
 				"org.apache.aries.cdi.container.test.beans.BarAnnotated",
 				"org.apache.aries.cdi.container.test.beans.FooAnnotated",

Modified: aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java (original)
+++ aries/trunk/cdi/cdi-extender/src/test/java/org/apache/aries/cdi/container/test/BaseCDIBundleTest.java Fri Aug 24 16:35:04 2018
@@ -93,7 +93,7 @@ public class BaseCDIBundleTest {
 				when(extenderWire.getRequirement()).thenReturn(extenderRequirement);
 				when(extenderRequirement.getAttributes()).thenReturn(
 					Maps.of(
-						"osgi.beans",
+						CDIConstants.REQUIREMENT_BEANS_ATTRIBUTE,
 						Arrays.asList(
 							"org.apache.aries.cdi.container.test.beans.BarAnnotated",
 							"org.apache.aries.cdi.container.test.beans.FooAnnotated",

Modified: aries/trunk/cdi/cdi-extension-http/bnd.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-http/bnd.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-http/bnd.bnd (original)
+++ aries/trunk/cdi/cdi-extension-http/bnd.bnd Fri Aug 24 16:35:04 2018
@@ -10,4 +10,4 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
--contract: JavaAnnotation, JavaCDI, JavaServlet
\ No newline at end of file
+-contract: *
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-extension-http/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-http/pom.xml?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-http/pom.xml (original)
+++ aries/trunk/cdi/cdi-extension-http/pom.xml Fri Aug 24 16:35:04 2018
@@ -96,7 +96,7 @@
 		<dependency>
 			<groupId>org.osgi</groupId>
 			<artifactId>org.osgi.service.http.whiteboard</artifactId>
-			<version>1.0.0</version>
+			<version>1.1.0</version>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>

Modified: aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpActivator.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpActivator.java (original)
+++ aries/trunk/cdi/cdi-extension-http/src/main/java/org/apache/aries/cdi/extension/http/HttpActivator.java Fri Aug 24 16:35:04 2018
@@ -28,17 +28,47 @@ import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.namespace.implementation.ImplementationNamespace;
 import org.osgi.namespace.service.ServiceNamespace;
+import org.osgi.service.cdi.CDIConstants;
 import org.osgi.service.cdi.annotations.RequireCDIImplementation;
 
 @Capability(
-	attribute = {
-		"objectClass:List<String>=javax.enterprise.inject.spi.Extension",
-		"osgi.cdi.extension=aries.cdi.http"},
-	namespace = ServiceNamespace.SERVICE_NAMESPACE
+	attribute = "objectClass:List<String>=javax.enterprise.inject.spi.Extension",
+	namespace = ServiceNamespace.SERVICE_NAMESPACE,
+	uses= {
+		javax.annotation.Priority.class,
+		javax.enterprise.context.Initialized.class,
+		javax.enterprise.event.Observes.class,
+		javax.enterprise.inject.spi.Extension.class,
+		javax.naming.Context.class,
+		javax.naming.spi.ObjectFactory.class,
+		javax.servlet.ServletContextListener.class,
+		javax.servlet.http.HttpSessionListener.class,
+		org.jboss.weld.module.web.servlet.WeldInitialListener.class,
+		org.osgi.service.cdi.CDIConstants.class,
+		org.osgi.service.http.whiteboard.HttpWhiteboardConstants.class,
+	}
+)
+@Capability(
+	name = "aries.cdi.http",
+	namespace = CDIConstants.CDI_EXTENSION_PROPERTY,
+	uses= {
+		javax.annotation.Priority.class,
+		javax.enterprise.context.Initialized.class,
+		javax.enterprise.event.Observes.class,
+		javax.enterprise.inject.spi.Extension.class,
+		javax.naming.Context.class,
+		javax.naming.spi.ObjectFactory.class,
+		javax.servlet.ServletContextListener.class,
+		javax.servlet.http.HttpSessionListener.class,
+		org.jboss.weld.module.web.servlet.WeldInitialListener.class,
+		org.osgi.service.cdi.CDIConstants.class,
+		org.osgi.service.http.whiteboard.HttpWhiteboardConstants.class,
+	},
+	version = "0.0.2"
 )
 @Header(
 	name = Constants.BUNDLE_ACTIVATOR,
-	value = "org.apache.aries.cdi.extension.http.HttpActivator"
+	value = "${@class}"
 )
 @Requirement(
 	name = "osgi.http",
@@ -51,7 +81,7 @@ public class HttpActivator implements Bu
 	@Override
 	public void start(BundleContext context) throws Exception {
 		Dictionary<String, Object> properties = new Hashtable<>();
-		properties.put("osgi.cdi.extension", "aries.cdi.http");
+		properties.put(CDIConstants.CDI_EXTENSION_PROPERTY, "aries.cdi.http");
 		_serviceRegistration = context.registerService(
 			Extension.class, new HttpExtensionFactory(), properties);
 	}

Modified: aries/trunk/cdi/cdi-extension-jndi/bnd.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-jndi/bnd.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-jndi/bnd.bnd (original)
+++ aries/trunk/cdi/cdi-extension-jndi/bnd.bnd Fri Aug 24 16:35:04 2018
@@ -10,4 +10,4 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
--contract: JavaCDI
\ No newline at end of file
+-contract: *
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiActivator.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiActivator.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiActivator.java (original)
+++ aries/trunk/cdi/cdi-extension-jndi/src/main/java/org/apache/aries/cdi/extension/jndi/JndiActivator.java Fri Aug 24 16:35:04 2018
@@ -34,14 +34,39 @@ import org.osgi.service.log.LoggerFactor
 import org.osgi.util.tracker.ServiceTracker;
 
 @Capability(
-	attribute = {
-		"objectClass:List<String>=javax.enterprise.inject.spi.Extension",
-		"osgi.cdi.extension=aries.cdi.jndi"},
-	namespace = ServiceNamespace.SERVICE_NAMESPACE
+	attribute = "objectClass:List<String>=javax.enterprise.inject.spi.Extension",
+	namespace = ServiceNamespace.SERVICE_NAMESPACE,
+	uses= {
+		javax.enterprise.context.Initialized.class,
+		javax.enterprise.event.Observes.class,
+		javax.enterprise.inject.spi.Extension.class,
+		javax.naming.Context.class,
+		javax.naming.spi.ObjectFactory.class,
+		org.osgi.service.cdi.CDIConstants.class,
+		org.osgi.service.jndi.JNDIConstants.class,
+		org.osgi.service.log.LoggerFactory.class,
+		org.osgi.util.promise.Promise.class
+	}
+)
+@Capability(
+	namespace = CDIConstants.CDI_EXTENSION_PROPERTY,
+	name = "aries.cdi.jndi",
+	uses= {
+		javax.enterprise.context.Initialized.class,
+		javax.enterprise.event.Observes.class,
+		javax.enterprise.inject.spi.Extension.class,
+		javax.naming.Context.class,
+		javax.naming.spi.ObjectFactory.class,
+		org.osgi.service.cdi.CDIConstants.class,
+		org.osgi.service.jndi.JNDIConstants.class,
+		org.osgi.service.log.LoggerFactory.class,
+		org.osgi.util.promise.Promise.class
+	},
+	version = "0.0.2"
 )
 @Header(
 	name = Constants.BUNDLE_ACTIVATOR,
-	value = "org.apache.aries.cdi.extension.jndi.JndiActivator"
+	value = "${@class}"
 )
 @RequireCDIImplementation
 public class JndiActivator implements BundleActivator {
@@ -63,6 +88,7 @@ public class JndiActivator implements Bu
 	@Override
 	public void stop(BundleContext context) throws Exception {
 		_serviceRegistration.unregister();
+		_lft.close();
 	}
 
 	private volatile ServiceTracker<LoggerFactory, LoggerFactory> _lft;

Modified: aries/trunk/cdi/cdi-extra/src/main/java/org/apache/aries/cdi/extra/propertytypes/JSONRequired.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extra/src/main/java/org/apache/aries/cdi/extra/propertytypes/JSONRequired.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-extra/src/main/java/org/apache/aries/cdi/extra/propertytypes/JSONRequired.java (original)
+++ aries/trunk/cdi/cdi-extra/src/main/java/org/apache/aries/cdi/extra/propertytypes/JSONRequired.java Fri Aug 24 16:35:04 2018
@@ -19,7 +19,6 @@ package org.apache.aries.cdi.extra.prope
 import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 import static javax.ws.rs.core.MediaType.*;
-import static org.osgi.annotation.bundle.Requirement.Resolution.*;
 import static org.osgi.namespace.service.ServiceNamespace.*;
 import static org.osgi.resource.Namespace.*;
 
@@ -45,7 +44,7 @@ import org.osgi.service.jaxrs.whiteboard
 @Requirement(
 	namespace = SERVICE_NAMESPACE, //
 	filter = JSONRequired.FILTER, //
-	resolution = OPTIONAL, //
+	// resolution = OPTIONAL, // this changed diverges from the original
 	effective = EFFECTIVE_ACTIVE
 )
 @Retention(RUNTIME)

Modified: aries/trunk/cdi/cdi-itests/bnd/basic-beans.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/basic-beans.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/basic-beans.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/basic-beans.bnd Fri Aug 24 16:35:04 2018
@@ -14,5 +14,5 @@ Export-Package: ${p}.beans.*;-split-pack
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		extensions:List<String>='(osgi.cdi.extension=aries.cdi.jndi)';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.beans.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.beans.*}',\
+	osgi.cdi.extension;filter:="(osgi.cdi.extension=aries.cdi.jndi)"
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb1.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb1.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb1.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb1.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb1.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb1.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb1.*}'
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb10.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb10.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb10.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb10.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb10.*;-split-packa
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb10.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb10.*}'

Modified: aries/trunk/cdi/cdi-itests/bnd/tb11.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb11.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb11.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb11.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb11.*;-split-packa
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb11.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb11.*}'

Modified: aries/trunk/cdi/cdi-itests/bnd/tb2.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb2.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb2.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb2.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb2.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb2.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb2.*}'
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb3.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb3.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb3.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb3.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb3.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb3.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb3.*}'
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb4.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb4.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb4.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb4.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb4.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb4.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb4.*}'
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb5.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb5.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb5.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb5.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb5.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb5.*}'
\ No newline at end of file
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb5.*}'
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/bnd/tb6.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb6.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb6.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb6.bnd Fri Aug 24 16:35:04 2018
@@ -14,5 +14,5 @@ Export-Package: ${p}.tb6.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		extensions:List<String>='(osgi.cdi.extension=aries.cdi.http)';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb6.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb6.*}',\
+	osgi.cdi.extension;filter:="(osgi.cdi.extension=aries.cdi.http)"

Modified: aries/trunk/cdi/cdi-itests/bnd/tb7.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb7.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb7.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb7.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb7.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb7.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb7.*}'

Modified: aries/trunk/cdi/cdi-itests/bnd/tb8.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb8.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb8.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb8.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb8.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb8.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb8.*}'

Modified: aries/trunk/cdi/cdi-itests/bnd/tb9.bnd
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/bnd/tb9.bnd?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/bnd/tb9.bnd (original)
+++ aries/trunk/cdi/cdi-itests/bnd/tb9.bnd Fri Aug 24 16:35:04 2018
@@ -14,4 +14,4 @@ Export-Package: ${p}.tb9.*;-split-packag
 Require-Capability:\
 	osgi.extender;\
 		filter:='(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))';\
-		osgi.beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb9.*}'
+		beans:List<String>='${classes;PUBLIC;CONCRETE;NAMED;${p}.tb9.*}'

Modified: aries/trunk/cdi/cdi-itests/cdi-executable.bndrun
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/cdi-executable.bndrun?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/cdi-executable.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/cdi-executable.bndrun Fri Aug 24 16:35:04 2018
@@ -41,6 +41,7 @@
 	org.apache.aries.javax.cdi-api;version='[0.0.2,0.0.3)',\
 	org.apache.aries.javax.el-api;version='[0.0.2,0.0.3)',\
 	org.apache.aries.javax.interceptor-api;version='[0.0.2,0.0.3)',\
+	org.apache.aries.spifly.dynamic.framework.extension;version='[1.0.14,1.0.15)',\
 	org.apache.felix.configadmin;version='[1.9.0,1.9.1)',\
 	org.apache.felix.gogo.command;version='[1.0.2,1.0.3)',\
 	org.apache.felix.gogo.jline;version='[1.0.2,1.0.3)',\

Modified: aries/trunk/cdi/cdi-itests/itest.bndrun
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/itest.bndrun?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/itest.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/itest.bndrun Fri Aug 24 16:35:04 2018
@@ -16,12 +16,8 @@
 -standalone: true
 
 -runrequires: \
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.extender)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.extension.http)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.extension.jndi)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.cdi.itests)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.aries.jndi.core)',\
-	osgi.identity;filter:='(osgi.identity=org.apache.felix.fileinstall)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
 	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)'
 
@@ -50,10 +46,10 @@
 	org.apache.aries.javax.interceptor-api;version='[0.0.2,0.0.3)',\
 	org.apache.aries.jndi.api;version='[1.1.0,1.1.1)',\
 	org.apache.aries.jndi.core;version='[1.0.2,1.0.3)',\
+	org.apache.aries.spifly.dynamic.framework.extension;version='[1.0.14,1.0.15)',\
 	org.apache.aries.util;version='[1.0.0,1.0.1)',\
 	org.apache.commons.logging;version='[1.2.0,1.2.1)',\
 	org.apache.felix.configadmin;version='[1.9.0,1.9.1)',\
-	org.apache.felix.fileinstall;version='[3.6.0,3.6.1)',\
 	org.apache.felix.gogo.command;version='[1.0.2,1.0.3)',\
 	org.apache.felix.gogo.runtime;version='[1.0.2,1.0.3)',\
 	org.apache.felix.gogo.shell;version='[1.0.0,1.0.1)',\
@@ -76,7 +72,7 @@
 -resolve.effective: resolve, active
 -runee: JavaSE-1.8
 -runsystemcapabilities: ${native_capability}
--runfw: org.eclipse.osgi;version='[3.13.0,4.0.0)'
+-runfw: org.eclipse.osgi;version=3.13.0
 -runproperties: \
 	eclipse.log.enabled=false,\
 	logback.configurationFile=file:${.}/logback.xml,\

Modified: aries/trunk/cdi/cdi-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/pom.xml?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/pom.xml (original)
+++ aries/trunk/cdi/cdi-itests/pom.xml Fri Aug 24 16:35:04 2018
@@ -38,74 +38,6 @@
 	<build>
 		<plugins>
 			<plugin>
-				<groupId>com.googlecode.maven-download-plugin</groupId>
-				<artifactId>download-maven-plugin</artifactId>
-				<version>1.4.0</version>
-				<executions>
-					<execution>
-						<id>get-equinox-3.13.0</id>
-						<phase>pre-integration-test</phase>
-						<goals>
-							<goal>wget</goal>
-						</goals>
-						<configuration>
-							<url>http://download.eclipse.org/eclipse/updates/4.8milestones/S-4.8RC2-201805240900/plugins/org.eclipse.osgi_3.13.0.v20180409-1500.jar</url>
-							<outputDirectory>${project.build.directory}/equinox</outputDirectory>
-						</configuration>
-					</execution>
-					<execution>
-						<id>get-equinox-3.13.0-sources</id>
-						<phase>pre-integration-test</phase>
-						<goals>
-							<goal>wget</goal>
-						</goals>
-						<configuration>
-							<url>http://download.eclipse.org/eclipse/updates/4.8milestones/S-4.8RC2-201805240900/plugins/org.eclipse.osgi.source_3.13.0.v20180409-1500.jar</url>
-							<outputDirectory>${project.build.directory}/equinox</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-install-plugin</artifactId>
-				<version>2.5.2</version>
-				<executions>
-					<execution>
-						<id>install-equinox</id>
-						<phase>pre-integration-test</phase>
-						<goals>
-							<goal>install-file</goal>
-						</goals>
-						<configuration>
-							<repositoryLayout>default</repositoryLayout>
-							<groupId>org.eclipse.platform</groupId>
-							<artifactId>org.eclipse.osgi</artifactId>
-							<version>3.13.0.v20180409-1500</version>
-							<file>${project.build.directory}/equinox/org.eclipse.osgi_3.13.0.v20180409-1500.jar</file>
-							<packaging>jar</packaging>
-							<generatePom>true</generatePom>
-						</configuration>
-					</execution>
-					<execution>
-						<id>install-equinox-sources</id>
-						<phase>pre-integration-test</phase>
-						<goals>
-							<goal>install-file</goal>
-						</goals>
-						<configuration>
-							<repositoryLayout>default</repositoryLayout>
-							<groupId>org.eclipse.platform</groupId>
-							<artifactId>org.eclipse.osgi</artifactId>
-							<version>3.13.0.v20180409-1500</version>
-							<file>${project.build.directory}/equinox/org.eclipse.osgi.source_3.13.0.v20180409-1500.jar</file>
-							<packaging>jar</packaging>
-							<classifier>sources</classifier>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<plugin>
 				<groupId>biz.aQute.bnd</groupId>
 				<artifactId>bnd-maven-plugin</artifactId>
 			</plugin>
@@ -206,9 +138,9 @@
 			<scope>runtime</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.felix</groupId>
-			<artifactId>org.apache.felix.fileinstall</artifactId>
-			<version>3.6.0</version>
+			<groupId>org.apache.aries.spifly</groupId>
+			<artifactId>org.apache.aries.spifly.dynamic.framework.extension</artifactId>
+			<version>1.0.14</version>
 			<scope>runtime</scope>
 		</dependency>
 		<dependency>
@@ -265,7 +197,7 @@
 		<dependency>
 			<groupId>org.apache.felix</groupId>
 			<artifactId>org.apache.felix.logback</artifactId>
-			<version>1.0.0-SNAPSHOT</version>
+			<version>1.0.0</version>
 			<scope>runtime</scope>
 		</dependency>
 		<dependency>
@@ -293,7 +225,7 @@
 		<dependency>
 			<groupId>org.eclipse.platform</groupId>
 			<artifactId>org.eclipse.osgi</artifactId>
-			<version>3.13.0.v20180409-1500</version>
+			<version>3.13.0</version>
 			<scope>runtime</scope>
 		</dependency>
 		<dependency>

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/AbstractTestCase.java Fri Aug 24 16:35:04 2018
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Supplier;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Any;
@@ -58,6 +59,14 @@ import org.osgi.util.tracker.ServiceTrac
 	filter = "(objectClass=org.osgi.service.cm.ConfigurationAdmin)",
 	namespace = ServiceNamespace.SERVICE_NAMESPACE
 )
+@Requirement(
+	namespace = CDIConstants.CDI_EXTENSION_PROPERTY,
+	name = "aries.cdi.http"
+)
+@Requirement(
+	namespace = CDIConstants.CDI_EXTENSION_PROPERTY,
+	name = "aries.cdi.jndi"
+)
 public class AbstractTestCase {
 
 	@Rule public TestName testName = new TestName();
@@ -222,6 +231,18 @@ public class AbstractTestCase {
 		).longValue();
 	}
 
+	<T> T with(ClassLoader classLoader, Supplier<T> supplier) {
+		Thread currentThread = Thread.currentThread();
+		ClassLoader original = currentThread.getContextClassLoader();
+		try {
+			currentThread.setContextClassLoader(classLoader);
+			return supplier.get();
+		}
+		finally {
+			currentThread.setContextClassLoader(original);
+		}
+	}
+
 	static final Bundle bundle = FrameworkUtil.getBundle(CdiBeanTests.class);
 	static final BundleContext bundleContext = bundle.getBundleContext();
 	static final long timeout = 5000;

Modified: aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java
URL: http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java?rev=1838899&r1=1838898&r2=1838899&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java (original)
+++ aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiContainerTests.java Fri Aug 24 16:35:04 2018
@@ -20,6 +20,7 @@ import javax.enterprise.inject.spi.BeanM
 import javax.enterprise.inject.spi.CDI;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.cdi.ComponentType;
@@ -38,23 +39,16 @@ public class CdiContainerTests extends A
 	}
 
 	@Test
+	@Ignore("Due to a Service Loader Mediator incompatibility in the official CDI 2.0 API")
 	public void testGetBeanManagerFromCDI() throws Exception {
-		Thread currentThread = Thread.currentThread();
-		ClassLoader contextClassLoader = currentThread.getContextClassLoader();
+		BeanManager beanManager = with(
+			cdiBundle.adapt(BundleWiring.class).getClassLoader(),
+			() ->
+				CDI.current().getBeanManager()
+		);
 
-		try {
-			BundleWiring bundleWiring = cdiBundle.adapt(BundleWiring.class);
-
-			currentThread.setContextClassLoader(bundleWiring.getClassLoader());
-
-			BeanManager beanManager = CDI.current().getBeanManager();
-
-			assertNotNull(beanManager);
-			assertBeanExists(Pojo.class, beanManager);
-		}
-		finally {
-			currentThread.setContextClassLoader(contextClassLoader);
-		}
+		assertNotNull(beanManager);
+		assertBeanExists(Pojo.class, beanManager);
 	}
 
 	@Test