Modified: aries/trunk/cdi/cdi-itests/cdi-executable.bndrun
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/cdi-executable.bndrun?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/cdi-executable.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/cdi-executable.bndrun Sat Apr 14 01:10:27 2018
@@ -6,29 +6,31 @@
 
 -runrequires: \
        
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.jndi.core)',\
-       osgi.identity;filter:='(osgi.identity=org.apache.felix.configadmin)',\
        osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)',\
-       osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.jline)',\
-       osgi.identity;filter:='(osgi.identity=ch.qos.logback.classic)'
+       osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.jline)'
 
--runbundles: \
+-runpath: \
        ch.qos.logback.classic;version='[1.2.3,1.2.4)',\
        ch.qos.logback.core;version='[1.2.3,1.2.4)',\
+       slf4j.api;version='[1.7.25,1.7.26)'
+
+-runsystempackages: \
+       org.slf4j;version=1.7.25,\
+       org.slf4j.helpers;version=1.7.25,\
+       org.slf4j.spi;version=1.7.25
+
+-runbundles: \
+       javax.ejb-api;version='[3.2.0,3.2.1)',\
+       javax.transaction-api;version='[1.2.0,1.2.1)',\
        jboss-classfilewriter;version='[1.1.2,1.1.3)',\
        org.apache.aries.cdi.extender;version='[0.0.1,0.0.2)',\
        org.apache.aries.cdi.extension.http;version='[0.0.1,0.0.2)',\
-       org.apache.aries.cdi.extension.jndi;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.annotation-api;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.cdi-api;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.el-api;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.inject-api;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.interceptor-api;version='[0.0.1,0.0.2)',\
-       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.util;version='[1.0.0,1.0.1)',\
-       org.apache.felix.configadmin;version='[1.8.12,1.8.13)',\
+       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)',\
        org.apache.felix.gogo.runtime;version='[1.0.2,1.0.3)',\
@@ -36,20 +38,22 @@
        org.apache.felix.http.servlet-api;version='[1.1.2,1.1.3)',\
        org.apache.logging.log4j.api;version='[2.7.0,2.7.1)',\
        org.jboss.logging.jboss-logging;version='[3.2.1,3.2.2)',\
-       org.jboss.weld.osgi-bundle;version='[3.0.1,3.0.2)',\
+       org.jboss.weld.osgi-bundle;version='[3.0.2,3.0.3)',\
        org.jline;version='[3.0.0,3.0.1)',\
        org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
        org.osgi.service.event;version='[1.3.1,1.3.2)',\
-       slf4j.api;version='[1.7.25,1.7.26)'
+       org.osgi.util.function;version='[1.1.0,1.1.1)',\
+       org.osgi.util.promise;version='[1.1.0,1.1.1)'
 
 -resolve.effective: resolve, active
 -runee: JavaSE-1.8
 -runsystemcapabilities.dflt: ${native_capability}
--runfw: org.eclipse.osgi;version='[3.10.0,4.0.0)'
+-runfw: org.eclipse.osgi;version='[3.13.0,4.0.0)'
 -runproperties: \
-       logback.configurationFile=file:${.}/logback.xml,\
+       eclipse.log.enabled=false,\
        org.jboss.logging.provider=slf4j,\
        org.osgi.service.http.port=8080,\
        osgi.console.enable.builtin=false, \
        osgi.console=
--runsystempackages: javax.ejb;version=3.2.0
\ No newline at end of file
+
+#      logback.configurationFile=file:${.}/logback.xml,\
\ No newline at end of file

Modified: aries/trunk/cdi/cdi-itests/itest.bndrun
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/itest.bndrun?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/itest.bndrun (original)
+++ aries/trunk/cdi/cdi-itests/itest.bndrun Sat Apr 14 01:10:27 2018
@@ -5,19 +5,32 @@
 -standalone: target/index.xml
 
 -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.gogo.command)',\
-       osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)',\
-       osgi.identity;filter:='(osgi.identity=ch.qos.logback.classic)'
+       osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.shell)'
 
--runbundles: \
+-runpath: \
        ch.qos.logback.classic;version='[1.2.3,1.2.4)',\
        ch.qos.logback.core;version='[1.2.3,1.2.4)',\
+       slf4j.api;version='[1.7.25,1.7.26)'
+
+-runsystempackages: \
+       org.slf4j;version=1.7.25,\
+       org.slf4j.helpers;version=1.7.25,\
+       org.slf4j.spi;version=1.7.25
+
+-runbundles: \
+       javax.ejb-api;version='[3.2.0,3.2.1)',\
+       javax.transaction-api;version='[1.2.0,1.2.1)',\
        jboss-classfilewriter;version='[1.1.2,1.1.3)',\
        org.apache.aries.cdi.extender;version='[0.0.1,0.0.2)',\
        org.apache.aries.cdi.extension.http;version='[0.0.1,0.0.2)',\
        org.apache.aries.cdi.extension.jndi;version='[0.0.1,0.0.2)',\
+       org.apache.aries.cdi.extra;version='[0.0.1,0.0.2)',\
        org.apache.aries.cdi.itests;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.annotation-api;version='[0.0.1,0.0.2)',\
        org.apache.aries.javax.cdi-api;version='[0.0.1,0.0.2)',\
@@ -28,7 +41,7 @@
        org.apache.aries.jndi.core;version='[1.0.2,1.0.3)',\
        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.8.12,1.8.13)',\
+       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.runtime;version='[1.0.2,1.0.3)',\
        org.apache.felix.gogo.shell;version='[1.0.0,1.0.1)',\
@@ -39,21 +52,22 @@
        org.apache.httpcomponents.httpcore;version='[4.4.6,4.4.7)',\
        org.apache.logging.log4j.api;version='[2.7.0,2.7.1)',\
        org.jboss.logging.jboss-logging;version='[3.2.1,3.2.2)',\
-       org.jboss.weld.osgi-bundle;version='[3.0.1,3.0.2)',\
+       org.jboss.weld.osgi-bundle;version='[3.0.2,3.0.3)',\
        org.osgi.service.cdi;version='[1.0.0,1.0.1)',\
        org.osgi.service.event;version='[1.3.1,1.3.2)',\
+       org.osgi.util.function;version='[1.1.0,1.1.1)',\
+       org.osgi.util.promise;version='[1.1.0,1.1.1)',\
        osgi.enroute.hamcrest.wrapper;version='[1.3.0,1.3.1)',\
-       osgi.enroute.junit.wrapper;version='[4.12.0,4.12.1)',\
-       slf4j.api;version='[1.7.25,1.7.26)'
+       osgi.enroute.junit.wrapper;version='[4.12.0,4.12.1)'
 
 -resolve.effective: resolve, active
 -runee: JavaSE-1.8
 -runsystemcapabilities: ${native_capability}
--runfw: org.eclipse.osgi;version='[3.10.0,4.0.0)'
+-runfw: org.eclipse.osgi;version='[3.13.0,4.0.0)'
 -runproperties: \
+       eclipse.log.enabled=false,\
        logback.configurationFile=file:${.}/logback.xml,\
        org.jboss.logging.provider=slf4j,\
        org.osgi.service.http.port=8080,\
        osgi.console.enable.builtin=false, \
-       osgi.console=
--runsystempackages: javax.ejb;version=3.2.0
\ No newline at end of file
+       osgi.console=
\ No newline at end of file

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/maven-metadata-local.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/maven-metadata-local.xml?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/maven-metadata-local.xml
 (added)
+++ 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/maven-metadata-local.xml
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+  <groupId>org.apache.felix</groupId>
+  <artifactId>org.apache.felix.configadmin</artifactId>
+  <version>1.9.0-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <localCopy>true</localCopy>
+    </snapshot>
+    <lastUpdated>20180407030954</lastUpdated>
+    <snapshotVersions>
+      <snapshotVersion>
+        <classifier>sources</classifier>
+        <extension>jar</extension>
+        <value>1.9.0-SNAPSHOT</value>
+        <updated>20180407030954</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>pom</extension>
+        <value>1.9.0-SNAPSHOT</value>
+        <updated>20180407030954</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>jar</extension>
+        <value>1.9.0-SNAPSHOT</value>
+        <updated>20180407030835</updated>
+      </snapshotVersion>
+      <snapshotVersion>
+        <extension>bundle</extension>
+        <value>1.9.0-SNAPSHOT</value>
+        <updated>20180407030645</updated>
+      </snapshotVersion>
+    </snapshotVersions>
+  </versioning>
+</metadata>

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT-sources.jar
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT-sources.jar?rev=1829115&view=auto
==============================================================================
Binary files 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT-sources.jar
 (added) and 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT-sources.jar
 Sat Apr 14 01:10:27 2018 differ

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.bundle
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.bundle?rev=1829115&view=auto
==============================================================================
Binary files 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.bundle
 (added) and 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.bundle
 Sat Apr 14 01:10:27 2018 differ

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.jar
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.jar?rev=1829115&view=auto
==============================================================================
Binary files 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.jar
 (added) and 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.jar
 Sat Apr 14 01:10:27 2018 differ

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.pom
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.pom?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.pom
 (added)
+++ 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/1.9.0-SNAPSHOT/org.apache.felix.configadmin-1.9.0-SNAPSHOT.pom
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>felix-parent</artifactId>
+        <version>4</version>
+        <relativePath/>
+    </parent>
+
+    <artifactId>org.apache.felix.configadmin</artifactId>
+    <version>1.9.0-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <name>Apache Felix Configuration Admin Service</name>
+    <description>
+        Implementation of the OSGi Configuration Admin Service Specification 
1.6
+    </description>
+
+    <scm>
+        
<connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/osgi-r7/configadmin</connection>
+        
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/osgi-r7/configadmin</developerConnection>
+        <url>http://svn.apache.org/repos/asf/felix/osgi-r7/configadmin</url>
+    </scm>
+
+    <!--
+        A Note on Testing
+        =================
+        
+        This project contains two kinds of tests: regular unit tests running
+        in the test phase and integration tests based on PAX Exam running
+        in the integration-test phase.
+        
+        Basically the complete project is build using Java 1.3 source and 
target
+        compatibility (as inherited from the parent pom). The exception are the
+        unit tests in the "integration" packages. These have to be compiled 
with
+        Java 5 source and target compatibility because the employ annotations
+        and generics.
+        
+        For running the integration tests from the console using Maven nothing
+        special has to be done as the tests run automatically. To run the tests
+        in your IDE, the project has to be built to the "package" phase with
+        the profile "ide" enabled:
+        
+             $ mvn -Pide clean package
+             
+        This creates the scr.jar file in the target folder, which is used by
+        the integration tests when run from the IDE. Alternatively the
+        "project.bundle.file" system property may be set to the bundle JAR
+        in the IDE launcher. 
+    -->
+    <properties>
+        <felix.java.version>7</felix.java.version>
+        <bundle.build.name>
+            ${basedir}/target
+        </bundle.build.name>
+        <bundle.file.name>
+            ${bundle.build.name}/${project.build.finalName}.jar
+        </bundle.file.name>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.annotation</artifactId>
+            <version>6.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>6.0.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.log</artifactId>
+            <version>1.3.0</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.coordinator</artifactId>
+            <version>1.0.2</version>
+            <scope>provided</scope>
+        </dependency>
+        
+        <!-- Integration Testing with Pax Exam -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-junit4</artifactId>
+            <version>2.6.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-native</artifactId>
+            <version>2.6.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-link-mvn</artifactId>
+            <version>2.6.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.url</groupId>
+            <artifactId>pax-url-aether</artifactId>
+            <version>1.5.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.tinybundles</groupId>
+            <artifactId>tinybundles</artifactId>
+            <version>1.0.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+            <version>1.7.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.framework</artifactId>
+            <version>5.6.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>3.2.0</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Bundle-Category>osgi</Bundle-Category>
+                        <Bundle-SymbolicName>
+                            ${project.artifactId}
+                        </Bundle-SymbolicName>
+                        <Bundle-Vendor>The Apache Software 
Foundation</Bundle-Vendor>
+                        <Bundle-DocURL>
+                            
http://felix.apache.org/site/apache-felix-config-admin.html
+                        </Bundle-DocURL>
+                        <Bundle-Activator>
+                            org.apache.felix.cm.impl.Activator
+                        </Bundle-Activator>
+                        <Export-Package>
+                            <!-- just list, version from package-info classes 
-->
+                            <!-- when the spec version changes, update the 
service property that includes the spec version in ConfigurationManager -->
+                            org.apache.felix.cm;
+                            org.apache.felix.cm.file,
+                            org.osgi.service.cm;provide:=true
+                        </Export-Package>
+                        <Import-Package>
+                            org.osgi.service.cm,
+                                                       
org.osgi.service.coordinator;resolution:=optional,
+                                                       
org.osgi.service.log;resolution:=optional,
+                            *
+                        </Import-Package>
+                        <DynamicImport-Package>
+                            org.osgi.service.coordinator;version="[1.0,2)",    
                        
+                            org.osgi.service.log;version="[1.3,2)"
+                        </DynamicImport-Package>
+                        <Provide-Capability><![CDATA[
+                            
osgi.service;objectClass:List<String>="org.osgi.service.cm.ConfigurationAdmin";uses:="org.osgi.service.cm,org.apache.felix.cm",
+                            
osgi.service;objectClass:List<String>="org.apache.felix.cm.PersistenceManager";uses:="org.osgi.service.cm,org.apache.felix.cm",
+                            
osgi.implementation;osgi.implementation="osgi.cm";uses:="org.osgi.service.cm,org.apache.felix.cm";version:Version="1.6"
+                        ]]></Provide-Capability>
+                        <Require-Capability><![CDATA[
+                            
osgi.service;filter:="(objectClass=org.osgi.service.log.LogService)";effective:=active;resolution:=optional
+                        ]]></Require-Capability>
+                    </instructions>
+                </configuration>
+                   <executions>
+                        <execution>
+                            <id>baseline</id>
+                            <goals>
+                                <goal>baseline</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+              </plugin>
+            <!--
+                Exclude Integration tests in (default) unit tests and
+                conversely enable integration tests for integration testing
+                only. Helper classes are completely excluded from testing. 
+            -->
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>surefire-it</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <systemProperties>
+                                <property>
+                                    <name>project.bundle.file</name>
+                                    <value>${bundle.file.name}</value>
+                                </property>
+                            </systemProperties>
+                            <excludes>
+                                <exclude>**/cm/*</exclude>
+                                <exclude>**/cm/file/*</exclude>
+                                <exclude>**/cm/impl/**</exclude>
+                            </excludes>
+                            <includes>
+                                <include>**/integration/*</include>
+                            </includes>
+                        </configuration>
+                    </execution>
+                </executions>
+                <configuration>
+                    <excludes>
+                        <exclude>**/integration/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    
+    <profiles>
+        <!--
+            copy the package such that IDEs may easily use it without
+            setting the system property
+        -->
+        <profile>
+            <id>ide</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <version>1.3</version>
+                        <executions>
+                            <execution>
+                                <id>cm-file-create</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <tasks>
+                                        <copy 
file="${project.build.directory}/${project.build.finalName}.jar" 
tofile="${project.build.directory}/configadmin.jar" />
+                                    </tasks>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/maven-metadata-local.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/maven-metadata-local.xml?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/maven-metadata-local.xml
 (added)
+++ 
aries/trunk/cdi/cdi-itests/local-repo/org/apache/felix/org.apache.felix.configadmin/maven-metadata-local.xml
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>org.apache.felix</groupId>
+  <artifactId>org.apache.felix.configadmin</artifactId>
+  <versioning>
+    <versions>
+      <version>1.9.0-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20180407030954</lastUpdated>
+  </versioning>
+</metadata>

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.jar
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.jar?rev=1829115&view=auto
==============================================================================
Binary files 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.jar
 (added) and 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.jar
 Sat Apr 14 01:10:27 2018 differ

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.pom
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.pom?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.pom
 (added)
+++ 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/3.13.0/org.eclipse.osgi-3.13.0.pom
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"; 
xmlns="http://maven.apache.org/POM/4.0.0";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.platform</groupId>
+  <artifactId>org.eclipse.osgi</artifactId>
+  <version>3.13.0</version>
+  <description>POM was created from install:install-file</description>
+</project>

Added: 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/maven-metadata-local.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/maven-metadata-local.xml?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/maven-metadata-local.xml
 (added)
+++ 
aries/trunk/cdi/cdi-itests/local-repo/org/eclipse/platform/org.eclipse.osgi/maven-metadata-local.xml
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+  <groupId>org.eclipse.platform</groupId>
+  <artifactId>org.eclipse.osgi</artifactId>
+  <versioning>
+    <release>3.13.0</release>
+    <versions>
+      <version>3.13.0</version>
+    </versions>
+    <lastUpdated>20180315235604</lastUpdated>
+  </versioning>
+</metadata>

Modified: aries/trunk/cdi/cdi-itests/logback.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/logback.xml?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/logback.xml (original)
+++ aries/trunk/cdi/cdi-itests/logback.xml Sat Apr 14 01:10:27 2018
@@ -1,15 +1,31 @@
 <configuration>
+<!--  scan="true" scanPeriod="5 seconds" debug="true"> -->
        <contextListener 
class="ch.qos.logback.classic.jul.LevelChangePropagator">
                <resetJUL>true</resetJUL>
        </contextListener>
 
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                <encoder>
-                       <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level 
%logger{36} - %msg%n</pattern>
+                       <pattern>%d{HH:mm:ss.SSS} [%.15thread] %-5level 
%logger{36}:%line - %msg%n</pattern>
                </encoder>
        </appender>
 
-       <logger name="org.apache.aries.cdi.container" level="ERROR"/>
+       <logger name="Events.Bundle" level="ERROR"/>
+       <logger name="Events.Framework" level="ERROR"/>
+       <logger name="Events.Service" level="ERROR"/>
+       <logger name="LogService" level="ERROR"/>
+
+       <logger name="Events.Service.org" level="WARN"/>
+       <logger name="Events.Service.cdi-itests" level="INFO"/>
+       <logger name="Events.Service.org.apache.aries" level="INFO"/>
+
+       <logger name="LogService.org.apache.aries.cdi.itests" level="OFF"/>
+
+       <logger name="org.apache.aries.cdi" level="DEBUG"/>
+       <!-- <logger name="org.apache.aries.cdi.container.internal.container" 
level="ERROR"/> -->
+
+       <logger name="org.eclipse" level="ERROR"/>
+       <logger name="org.jboss" level="ERROR"/>
 
        <root level="ERROR">
                <appender-ref ref="STDOUT" />

Modified: aries/trunk/cdi/cdi-itests/pom.xml
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/pom.xml?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- aries/trunk/cdi/cdi-itests/pom.xml (original)
+++ aries/trunk/cdi/cdi-itests/pom.xml Sat Apr 14 01:10:27 2018
@@ -104,19 +104,16 @@
 
        <dependencies>
                <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.util.promise</artifactId>
-                       <version>1.1.0-SNAPSHOT</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>log4j-over-slf4j</artifactId>
-                       <version>1.7.25</version>
-               </dependency>
-               <dependency>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                        <version>1.2.3</version>
+                       <scope>runtime</scope>
+               </dependency>
+               <dependency>
+                       <groupId>javax.ejb</groupId>
+                       <artifactId>javax.ejb-api</artifactId>
+                       <version>3.2</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.aries.cdi</groupId>
@@ -125,28 +122,38 @@
                </dependency>
                <dependency>
                        <groupId>org.apache.aries.cdi</groupId>
+                       <artifactId>org.apache.aries.cdi.extra</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.aries.cdi</groupId>
                        
<artifactId>org.apache.aries.cdi.extension.http</artifactId>
                        <version>${project.version}</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.aries.cdi</groupId>
                        
<artifactId>org.apache.aries.cdi.extension.jndi</artifactId>
                        <version>${project.version}</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.aries.jndi</groupId>
                        <artifactId>org.apache.aries.jndi.core</artifactId>
                        <version>1.0.2</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.configadmin</artifactId>
-                       <version>1.8.12</version>
+                       <version>1.9.0-SNAPSHOT</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.gogo.command</artifactId>
                        <version>1.0.2</version>
+                       <scope>runtime</scope>
                        <exclusions>
                                <exclusion>
                                        <groupId>org.osgi</groupId>
@@ -162,21 +169,25 @@
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.gogo.jline</artifactId>
                        <version>1.0.2</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.gogo.runtime</artifactId>
                        <version>1.0.2</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.gogo.shell</artifactId>
                        <version>1.0.0</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.http.jetty</artifactId>
                        <version>3.4.2</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.felix</groupId>
@@ -187,6 +198,7 @@
                        <groupId>org.apache.felix</groupId>
                        <artifactId>org.apache.felix.scr</artifactId>
                        <version>2.0.8</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.apache.httpcomponents</groupId>
@@ -202,16 +214,13 @@
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-api</artifactId>
                        <version>2.7</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.osgi</groupId>
-                       <artifactId>org.eclipse.equinox.metatype</artifactId>
-                       <version>1.4.100.v20150408-1437</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.osgi</artifactId>
-                       <version>3.11.3</version>
+                       <version>3.13.0</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
@@ -225,20 +234,26 @@
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.annotation.bundle</artifactId>
+                       <version>1.0.0-SNAPSHOT</version>
+                       <scope>provided</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
                        <artifactId>org.osgi.namespace.extender</artifactId>
                        <version>1.0.1</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
-                       
<artifactId>org.osgi.service.component.annotations</artifactId>
-                       <version>1.3.0</version>
+                       <artifactId>org.osgi.namespace.service</artifactId>
+                       <version>1.0.0</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.service.event</artifactId>
-                       <version>1.3.1</version>
+                       
<artifactId>org.osgi.service.component.annotations</artifactId>
+                       <version>1.3.0</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
@@ -249,13 +264,51 @@
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
-                       <artifactId>org.osgi.service.metatype</artifactId>
-                       <version>1.3.0</version>
+                       <artifactId>org.osgi.service.event</artifactId>
+                       <version>1.3.1</version>
+                       <scope>runtime</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.util.function</artifactId>
+                       <version>1.1.0-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.util.promise</artifactId>
+                       <version>1.1.0-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.util.pushstream</artifactId>
+                       <version>1.0.0-SNAPSHOT</version>
+                       <scope>runtime</scope>
                </dependency>
                <dependency>
                        <groupId>org.osgi</groupId>
                        <artifactId>osgi.core</artifactId>
-                       <version>6.0.0</version>
+                       <version>7.0.0-SNAPSHOT</version>
+                       <scope>provided</scope>
+               </dependency>
+               <dependency>
+                       <groupId>org.slf4j</groupId>
+                       <artifactId>log4j-over-slf4j</artifactId>
+                       <version>1.7.25</version>
+                       <scope>runtime</scope>
                </dependency>
        </dependencies>
+
+       <repositories>
+               <repository>
+                       <id>my-local-repo</id>
+                       <url>file://${project.basedir}/local-repo/</url>
+                       <releases>
+                               <enabled>false</enabled>
+                               <checksumPolicy>ignore</checksumPolicy>
+                       </releases>
+                       <snapshots>
+                               <enabled>false</enabled>
+                       </snapshots>
+               </repository>
+       </repositories>
 </project>

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/BeanWithReference.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/BeanWithReference.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/BeanWithReference.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/BeanWithReference.java
 Sat Apr 14 01:10:27 2018
@@ -14,48 +14,15 @@
 
 package org.apache.aries.cdi.test.beans;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import javax.enterprise.inject.Default;
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BundleScoped;
 import org.osgi.service.cdi.annotations.Reference;
 
 public class BeanWithReference {
 
-       @Qualifier
-       @Retention(value = RetentionPolicy.RUNTIME)
-       @Target(value = { ElementType.FIELD, ElementType.METHOD, 
ElementType.PARAMETER, ElementType.CONSTRUCTOR })
-       public @interface ComplexEnoughKey {
-               String complex_enough_key();
-       }
-
-       @Qualifier
-       @Retention(value = RetentionPolicy.RUNTIME)
-       @Target(value = { ElementType.FIELD, ElementType.METHOD, 
ElementType.PARAMETER, ElementType.CONSTRUCTOR })
-       public @interface ComplexAnnotation {
-               String fee_fi();
-               int fo_fum();
-       }
-
-       @Qualifier
-       @Retention(value = RetentionPolicy.RUNTIME)
-       @Target(value = { ElementType.FIELD, ElementType.METHOD, 
ElementType.PARAMETER, ElementType.CONSTRUCTOR })
-       public @interface SimpleAnnotation {
-               String value();
-       }
-
-       @ComplexEnoughKey(complex_enough_key= "fum")
-       @ComplexAnnotation(fee_fi = "fee", fo_fum = 23)
-       @SimpleAnnotation("blah")
        @Inject
        @Reference
-       @Default
        BundleScoped bundleScoped;
 
 }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ConstructorInjectedService.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ConstructorInjectedService.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ConstructorInjectedService.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ConstructorInjectedService.java
 Sat Apr 14 01:10:27 2018
@@ -18,10 +18,8 @@ import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Service;
 
-@Component
 @Service({ConstructorInjectedService.class, BeanService.class})
 public class ConstructorInjectedService implements BeanService<Pojo> {
 

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedBundleScopedImpl.java
 Sat Apr 14 01:10:27 2018
@@ -23,11 +23,11 @@ import javax.inject.Inject;
 import org.apache.aries.cdi.test.interfaces.BundleScoped;
 import org.apache.aries.cdi.test.interfaces.FieldInjectedReference;
 import org.osgi.framework.ServiceReference;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Reference;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({FieldInjectedBundleScopedImpl.class, FieldInjectedReference.class})
 public class FieldInjectedBundleScopedImpl implements 
FieldInjectedReference<BundleScoped> {
 

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedPrototypeScopedImpl.java
 Sat Apr 14 01:10:27 2018
@@ -23,11 +23,11 @@ import javax.inject.Inject;
 import org.apache.aries.cdi.test.interfaces.FieldInjectedReference;
 import org.apache.aries.cdi.test.interfaces.PrototypeScoped;
 import org.osgi.framework.ServiceReference;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Reference;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({FieldInjectedPrototypeScopedImpl.class, 
FieldInjectedReference.class})
 public class FieldInjectedPrototypeScopedImpl implements 
FieldInjectedReference<PrototypeScoped> {
 

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedService.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedService.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedService.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/FieldInjectedService.java
 Sat Apr 14 01:10:27 2018
@@ -18,10 +18,8 @@ import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Service;
 
-@Component
 @Service({FieldInjectedService.class, BeanService.class})
 public class FieldInjectedService implements BeanService<Pojo> {
 

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_Optional.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_Optional.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_Optional.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_Optional.java
 Sat Apr 14 01:10:27 2018
@@ -15,41 +15,34 @@
 package org.apache.aries.cdi.test.beans;
 
 import java.util.Collection;
-import java.util.concurrent.Callable;
+import java.util.Iterator;
 
-import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Reference;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({BeanService.class, Instance_Optional.class})
-@SuppressWarnings("rawtypes")
-public class Instance_Optional implements BeanService<Callable<String>> {
+public class Instance_Optional implements BeanService<Integer> {
 
        @Override
        public String doSomething() {
-               int count = 0;
-               Collection<Callable> callables = _instance.get();
-               for (Callable callable : callables) {
-                       System.out.println(callable);
-                       count++;
-               }
-               return String.valueOf(count);
+               return String.valueOf(_instance.size());
        }
 
        @Override
-       @SuppressWarnings("unchecked")
-       public Callable<String> get() {
-               Collection<Callable> iterator = _instance.get();
-               return iterator.iterator().next();
+       public Integer get() {
+               Iterator<Integer> iterator = _instance.iterator();
+               if (iterator.hasNext())
+                       return iterator.next();
+               return null;
        }
 
        @Inject
-       @Reference
-       Instance<Collection<Callable>> _instance;
+       @Reference(target = "(foo=bar)")
+       Collection<Integer> _instance;
 
 }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceProperties.java
 Sat Apr 14 01:10:27 2018
@@ -15,37 +15,47 @@
 package org.apache.aries.cdi.test.beans;
 
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
-import javax.enterprise.inject.Instance;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Reference;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({BeanService.class, Instance_ServiceProperties.class})
 public class Instance_ServiceProperties implements BeanService<Map<String, 
Object>> {
 
        @Override
        public String doSomething() {
-               int count = 0;
-               for (Iterator<?> iterator = 
_instance.iterator();iterator.hasNext();) {
-                       iterator.next();
-                       count++;
-               }
-               return String.valueOf(count);
+               return String.valueOf(_instance.size());
        }
 
        @Override
        public Map<String, Object> get() {
-               return _instance.iterator().next();
+               Iterator<Map<String, Object>> iterator = _instance.iterator();
+               if (iterator.hasNext())
+                       return iterator.next();
+               return null;
        }
 
        @Inject
-       @Reference
-       Instance<Map<String, Object>> _instance;
+       @Reference(Integer.class)
+       List<Map<String, Object>> _instance;
+
+       @PostConstruct
+       private void postConstructed() {
+               System.out.println("PostConstructed " + this);
+       }
+
+       @PreDestroy
+       private void preDestroyed() {
+               System.out.println("PreDestroyed " + this);
+       }
 
 }

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceReference.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceReference.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceReference.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/Instance_ServiceReference.java
 Sat Apr 14 01:10:27 2018
@@ -15,39 +15,37 @@
 package org.apache.aries.cdi.test.beans;
 
 import java.util.Iterator;
+import java.util.List;
 
-import javax.enterprise.inject.Instance;
 import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.SingletonScoped;
 import org.osgi.framework.ServiceReference;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Reference;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({BeanService.class, Instance_ServiceReference.class})
 @SuppressWarnings("rawtypes")
 public class Instance_ServiceReference implements 
BeanService<ServiceReference> {
 
        @Override
        public String doSomething() {
-               int count = 0;
-               for (Iterator<?> iterator = 
_instance.iterator();iterator.hasNext();) {
-                       iterator.next();
-                       count++;
-               }
-               return String.valueOf(count);
+               return String.valueOf(_instance.size());
        }
 
        @Override
        public ServiceReference get() {
-               return _instance.iterator().next();
+               Iterator<ServiceReference> iterator = _instance.iterator();
+               if (iterator.hasNext())
+                       return iterator.next();
+               return null;
        }
 
        @Inject
        @Reference(SingletonScoped.class)
-       Instance<ServiceReference> _instance;
+       List<ServiceReference> _instance;
 
 }

Added: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/IntegerServiceProvider.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/IntegerServiceProvider.java?rev=1829115&view=auto
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/IntegerServiceProvider.java
 (added)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/IntegerServiceProvider.java
 Sat Apr 14 01:10:27 2018
@@ -0,0 +1,52 @@
+/**
+ * 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.test.beans;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.inject.Produces;
+
+import org.apache.aries.cdi.extra.propertytypes.ServiceRanking;
+import org.osgi.service.cdi.annotations.Service;
+
+@ApplicationScoped
+public class IntegerServiceProvider {
+
+       @Produces
+       @Service(Integer.class)
+       @ServiceRanking(5000)
+       Integer int1() {
+               return new Integer(Double.valueOf(Math.random()).intValue());
+       }
+
+       @Produces
+       @Service(Integer.class)
+       @ServiceRanking(12000)
+       Integer int2() {
+               return new Integer(Double.valueOf(Math.random()).intValue());
+       }
+
+       @Produces
+       @Service(Integer.class)
+       @ServiceRanking(1000)
+       Integer int3() {
+               return new Integer(Double.valueOf(Math.random()).intValue());
+       }
+
+       @Produces
+       @Service(Integer.class)
+       @ServiceRanking(100000)
+       Integer int4 = new Integer(Double.valueOf(Math.random()).intValue());
+
+}

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/MethodInjectedService.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/MethodInjectedService.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/MethodInjectedService.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/MethodInjectedService.java
 Sat Apr 14 01:10:27 2018
@@ -18,10 +18,8 @@ import javax.inject.Inject;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
-import org.osgi.service.cdi.annotations.Component;
 import org.osgi.service.cdi.annotations.Service;
 
-@Component
 @Service({MethodInjectedService.class, BeanService.class})
 public class MethodInjectedService implements BeanService<Pojo> {
 

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/beans/ServiceWithProperties.java
 Sat Apr 14 01:10:27 2018
@@ -14,27 +14,30 @@
 
 package org.apache.aries.cdi.test.beans;
 
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
 import javax.inject.Inject;
-import javax.inject.Qualifier;
 
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.Pojo;
-import org.osgi.service.cdi.annotations.Component;
+import org.osgi.service.cdi.annotations.ComponentPropertyType;
 import org.osgi.service.cdi.annotations.Service;
+import org.osgi.service.cdi.annotations.SingleComponent;
 
-@Component
+@SingleComponent
 @Service({ServiceWithProperties.class, BeanService.class})
 @ServiceWithProperties.Props
 @ServiceWithProperties.MoreProperties(glub_integer = 45, goo_string = "green")
 public class ServiceWithProperties implements BeanService<Pojo> {
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE)
+       @Retention(RUNTIME) @Target(TYPE)
+       @ComponentPropertyType
        public @interface Props {
                String test_key_b1() default "test.value.b1";
                String test_key_b2() default "test.value.b2";
@@ -58,7 +61,8 @@ public class ServiceWithProperties imple
                String[] p_String_array() default {"black", "green"};
        }
 
-       @Qualifier @Retention(RUNTIME) @Target(TYPE )
+       @Retention(RUNTIME) @Target(TYPE )
+       @ComponentPropertyType
        public @interface MoreProperties {
                String goo_string();
                int glub_integer();
@@ -77,4 +81,14 @@ public class ServiceWithProperties imple
        @Inject
        private PojoImpl _pojo;
 
+       @PostConstruct
+       private void postConstructed() {
+               System.out.println("PostConstructed " + this);
+       }
+
+       @PreDestroy
+       private void preDestroyed() {
+               System.out.println("PreDestroyed " + this);
+       }
+
 }

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=1829115&r1=1829114&r2=1829115&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
 Sat Apr 14 01:10:27 2018
@@ -14,54 +14,83 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static org.junit.Assert.*;
+
 import java.io.InputStream;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Any;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.TestName;
+import org.osgi.annotation.bundle.Requirement;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.namespace.extender.ExtenderNamespace;
-import org.osgi.service.cdi.CdiConstants;
-import org.osgi.service.cdi.runtime.CdiRuntime;
-import org.osgi.service.cdi.runtime.dto.ContainerDTO;
-import org.osgi.util.promise.Promise;
+import org.osgi.namespace.service.ServiceNamespace;
+import org.osgi.service.cdi.CDIConstants;
+import org.osgi.service.cdi.runtime.CDIComponentRuntime;
 import org.osgi.util.promise.PromiseFactory;
 import org.osgi.util.tracker.ServiceTracker;
 
-import junit.framework.TestCase;
+@Requirement(
+       effective = "active",
+       filter = "(objectClass=org.osgi.service.cm.ConfigurationAdmin)",
+       namespace = ServiceNamespace.SERVICE_NAMESPACE
+)
+public class AbstractTestCase {
+
+       @Rule public TestName testName = new TestName();
+
+       @BeforeClass
+       public static void beforeClass() throws Exception {
+               runtimeTracker = new ServiceTracker<>(
+                               bundleContext, CDIComponentRuntime.class, null);
+               runtimeTracker.open();
+               servicesBundle = installBundle("services-one.jar");
+               servicesBundle.start();
+       }
+
+       @AfterClass
+       public static void afterClass() throws Exception {
+               runtimeTracker.close();
+               servicesBundle.uninstall();
+       }
 
-public class AbstractTestCase extends TestCase {
+       void testHeader() {
+               System.out.println("--------- TEST: " + 
getClass().getSimpleName() + "#" +testName.getMethodName());
+       }
 
-       @Override
-       protected void setUp() throws Exception {
-               servicesBundle = bundleContext.installBundle("services-one.jar" 
, getBundle("services-one.jar"));
-               servicesBundle.start();
-               cdiBundle = bundleContext.installBundle("basic-beans.jar" , 
getBundle("basic-beans.jar"));
-               cdiBundle.start();
+       @Before
+       public void setUp() throws Exception {
+               testHeader();
 
-               runtimeTracker = new ServiceTracker<>(bundleContext, 
CdiRuntime.class, null);
-               runtimeTracker.open();
                cdiRuntime = runtimeTracker.waitForService(timeout);
+               cdiBundle = installBundle("basic-beans.jar");
+               cdiBundle.start();
        }
 
-       @Override
-       protected void tearDown() throws Exception {
-               runtimeTracker.close();
+       @After
+       public void tearDown() throws Exception {
                cdiBundle.uninstall();
-               servicesBundle.uninstall();
        }
 
        void assertBeanExists(Class<?> clazz, BeanManager beanManager) {
@@ -79,10 +108,8 @@ public class AbstractTestCase extends Te
                assertNotNull(pojo);
        }
 
-       InputStream getBundle(String name) {
-               Class<?> clazz = this.getClass();
-
-               ClassLoader classLoader = clazz.getClassLoader();
+       static InputStream getBundle(String name) {
+               ClassLoader classLoader = 
AbstractTestCase.class.getClassLoader();
 
                return classLoader.getResourceAsStream(name);
        }
@@ -96,7 +123,7 @@ public class AbstractTestCase extends Te
                        Map<String, Object> attributes = 
wire.getCapability().getAttributes();
                        String extender = 
(String)attributes.get(ExtenderNamespace.EXTENDER_NAMESPACE);
 
-                       if (CdiConstants.CDI_CAPABILITY_NAME.equals(extender)) {
+                       if (CDIConstants.CDI_CAPABILITY_NAME.equals(extender)) {
                                return wire.getProvider().getBundle();
                        }
                }
@@ -104,11 +131,11 @@ public class AbstractTestCase extends Te
                return null;
        }
 
-       public Bundle installBundle(String url) throws Exception {
+       public static Bundle installBundle(String url) throws Exception {
                return installBundle(url, true);
        }
 
-       public Bundle installBundle(String bundleName, boolean start) throws 
Exception {
+       public static Bundle installBundle(String bundleName, boolean start) 
throws Exception {
                Bundle b = bundleContext.installBundle(bundleName, 
getBundle(bundleName));
 
                if (start) {
@@ -127,15 +154,25 @@ public class AbstractTestCase extends Te
                }
        }
 
+       public <S,T> ServiceTracker<S, T> track(Filter filter) {
+               ServiceTracker<S, T> tracker = new 
ServiceTracker<>(bundleContext, filter, null);
+               tracker.open();
+               return tracker;
+       }
+
+       public <S,T> ServiceTracker<S, T> track(String pattern, Object... 
objects) {
+               return track(filter(pattern, objects));
+       }
+
        BeanManager getBeanManager(Bundle bundle) throws Exception {
                return getServiceTracker(bundle).waitForService(timeout);
        }
 
        ServiceTracker<BeanManager, BeanManager> getServiceTracker(Bundle 
bundle) throws Exception {
                ServiceTracker<BeanManager, BeanManager> serviceTracker = new 
ServiceTracker<>(
-                       bundleContext,
+                       bundle.getBundleContext(),
                        filter(
-                               "(&(objectclass=%s)(bundle.id=%d))",
+                               "(&(objectClass=%s)(service.bundleid=%d))",
                                BeanManager.class.getName(),
                                bundle.getBundleId()),
                        null);
@@ -143,40 +180,24 @@ public class AbstractTestCase extends Te
                return serviceTracker;
        }
 
-       Promise<ContainerDTO> getContainerDTO() throws Exception {
-               return getContainerDTO(bundle);
-       }
-
-       Promise<ContainerDTO> getContainerDTO(Bundle bundle) throws Exception {
-               final PromiseFactory factory = new PromiseFactory(
-                               PromiseFactory.inlineExecutor());
-
-               Promise<ContainerDTO> promise = factory.submit(new 
Callable<ContainerDTO>() {
-                       @Override
-                       public ContainerDTO call() throws Exception {
-                               while (!Thread.interrupted()) {
-                                       ContainerDTO containerDTO = 
cdiRuntime.getContainerDTO(bundle);
-                                       if (containerDTO == null) {
-                                               Thread.sleep(10);
-                                               continue;
-                                       }
-                                       return containerDTO;
-                               }
-                               return null;
-                       }
-               });
-
-               return promise.timeout(timeout);
+       long getChangeCount(ServiceReference<?> reference) {
+               return Optional.ofNullable(
+                       reference.getProperty(Constants.SERVICE_CHANGECOUNT)
+               ).map(
+                       v -> (Long)v
+               ).orElse(
+                       new Long(-1l)
+               ).longValue();
        }
 
        static final Bundle bundle = 
FrameworkUtil.getBundle(CdiBeanTests.class);
        static final BundleContext bundleContext = bundle.getBundleContext();
        static final long timeout = 5000;
+       static Bundle servicesBundle;
+       static ServiceTracker<CDIComponentRuntime, CDIComponentRuntime> 
runtimeTracker;
 
        Bundle cdiBundle;
-       Bundle servicesBundle;
-       CdiRuntime cdiRuntime;
-       Promise<ContainerDTO> containerDTO;
-       ServiceTracker<CdiRuntime, CdiRuntime> runtimeTracker;
+       CDIComponentRuntime cdiRuntime;
+       final PromiseFactory promiseFactory = new PromiseFactory(null);
 
 }
\ No newline at end of file

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiBeanTests.java
 Sat Apr 14 01:10:27 2018
@@ -14,11 +14,10 @@
 
 package org.apache.aries.cdi.test.cases;
 
-import java.util.Iterator;
-import java.util.List;
+import static org.junit.Assert.*;
+
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Callable;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
@@ -28,47 +27,39 @@ import javax.enterprise.util.AnnotationL
 import org.apache.aries.cdi.test.interfaces.BeanService;
 import org.apache.aries.cdi.test.interfaces.BundleContextBeanQualifier;
 import org.apache.aries.cdi.test.interfaces.FieldInjectedReference;
-import org.junit.Ignore;
+import org.junit.Test;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
+import org.osgi.service.cdi.ComponentType;
+import org.osgi.service.cdi.runtime.dto.ComponentDTO;
+import org.osgi.service.cdi.runtime.dto.ComponentInstanceDTO;
+import org.osgi.service.cdi.runtime.dto.ContainerDTO;
+import org.osgi.util.tracker.ServiceTracker;
 
 @SuppressWarnings("rawtypes")
 public class CdiBeanTests extends AbstractTestCase {
 
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-               containerDTO = getContainerDTO(cdiBundle);
-       }
-
+       @Test
        public void testConstructorInjectedService() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","ConstructorInjectedService")).iterator();
-
-               assertTrue(iterator.hasNext());
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "ConstructorInjectedService");
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
+               BeanService beanService = tracker.waitForService(timeout);
 
-               assertNotNull(serviceReference);
-
-               BeanService bean = bundleContext.getService(serviceReference);
-
-               assertNotNull(bean);
-               assertEquals("PREFIXCONSTRUCTOR", bean.doSomething());
+               assertNotNull(beanService);
+               assertEquals("PREFIXCONSTRUCTOR", beanService.doSomething());
        }
 
+       @Test
        public void testFieldInjectedReference_BundleScoped() throws Exception {
-               Iterator<ServiceReference<FieldInjectedReference>> iterator = 
bundleContext.getServiceReferences(
-                       FieldInjectedReference.class, 
String.format("(objectClass=*.%s)","FieldInjectedBundleScopedImpl")).iterator();
-
-               assertTrue(iterator.hasNext());
-
-               ServiceReference<FieldInjectedReference> serviceReference = 
iterator.next();
+               ServiceTracker<FieldInjectedReference, FieldInjectedReference> 
tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       FieldInjectedReference.class.getName(),
+                       "FieldInjectedBundleScopedImpl");
 
-               assertNotNull(serviceReference);
-               assertNotNull(serviceReference.getBundle());
-
-               FieldInjectedReference fieldInjectedReference = 
bundleContext.getService(serviceReference);
+               FieldInjectedReference fieldInjectedReference = 
tracker.waitForService(timeout);
 
                assertNotNull(fieldInjectedReference);
                assertNotNull(fieldInjectedReference.getProperties());
@@ -80,18 +71,14 @@ public class CdiBeanTests extends Abstra
                assertEquals("value", 
fieldInjectedReference.getRawReference().getProperty("key"));
        }
 
+       @Test
        public void testFieldInjectedReference_PrototypeScoped() throws 
Exception {
-               Iterator<ServiceReference<FieldInjectedReference>> iterator = 
bundleContext.getServiceReferences(
-                       FieldInjectedReference.class, 
String.format("(objectClass=*.%s)","FieldInjectedPrototypeScopedImpl")).iterator();
-
-               assertTrue(iterator.hasNext());
-
-               ServiceReference<FieldInjectedReference> serviceReference = 
iterator.next();
-
-               assertNotNull(serviceReference);
-               assertNotNull(serviceReference.getBundle());
+               ServiceTracker<FieldInjectedReference, FieldInjectedReference> 
tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       FieldInjectedReference.class.getName(),
+                       "FieldInjectedPrototypeScopedImpl");
 
-               FieldInjectedReference fieldInjectedReference = 
bundleContext.getService(serviceReference);
+               FieldInjectedReference fieldInjectedReference = 
tracker.waitForService(timeout);
 
                assertNotNull(fieldInjectedReference);
                assertNotNull(fieldInjectedReference.getProperties());
@@ -103,134 +90,106 @@ public class CdiBeanTests extends Abstra
                assertEquals("value", 
fieldInjectedReference.getRawReference().getProperty("key"));
        }
 
+       @Test
        public void testFieldInjectedService() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","FieldInjectedService")).iterator();
-
-               assertTrue(iterator.hasNext());
-
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
-
-               assertNotNull(serviceReference);
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "FieldInjectedService");
 
-               BeanService bean = bundleContext.getService(serviceReference);
+               BeanService beanService = tracker.waitForService(timeout);
 
-               assertNotNull(bean);
-               assertEquals("PREFIXFIELD", bean.doSomething());
+               assertNotNull(beanService);
+               assertEquals("PREFIXFIELD", beanService.doSomething());
        }
 
+       @Test
        public void testMethodInjectedService() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","MethodInjectedService")).iterator();
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "MethodInjectedService");
 
-               assertTrue(iterator.hasNext());
+               BeanService beanService = tracker.waitForService(timeout);
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
+               assertNotNull(beanService);
+               assertEquals("PREFIXMETHOD", beanService.doSomething());
 
-               assertNotNull(serviceReference);
+               ContainerDTO containerDTO = 
cdiRuntime.getContainerDTO(cdiBundle);
+               assertNotNull(containerDTO);
 
-               BeanService bean = bundleContext.getService(serviceReference);
+               ComponentDTO containerComponentDTO = 
containerDTO.components.stream().filter(
+                       c -> c.template.type == 
ComponentType.CONTAINER).findFirst().orElse(null);
+               assertNotNull(containerComponentDTO);
+               assertEquals(8, containerComponentDTO.template.beans.size());
 
-               assertNotNull(bean);
-               assertEquals("PREFIXMETHOD", bean.doSomething());
+               // There's only one instance of the Container component
+               ComponentInstanceDTO componentInstanceDTO = 
containerComponentDTO.instances.get(0);
+               assertNotNull(componentInstanceDTO);
+
+               assertEquals(0, componentInstanceDTO.configurations.size());
+               assertNotNull("should have properties", 
componentInstanceDTO.properties);
        }
 
-       @SuppressWarnings("unchecked")
+       @Test
        public void testBeanAsServiceWithProperties() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","ServiceWithProperties")).iterator();
-
-               assertTrue(iterator.hasNext());
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "ServiceWithProperties");
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
+               BeanService beanService = tracker.waitForService(timeout);
 
-               assertNotNull(serviceReference);
+               assertNotNull(beanService);
 
-               BeanService bean = bundleContext.getService(serviceReference);
-
-               assertNotNull(bean);
+               ServiceReference<BeanService> serviceReference = 
tracker.getServiceReference();
 
                assertEquals("test.value.b2", 
serviceReference.getProperty("test.key.b2"));
 
                assertTrue(serviceReference.getProperty("p.Boolean") instanceof 
Boolean);
-               assertTrue(serviceReference.getProperty("p.Boolean.array") 
instanceof Boolean[]);
-               assertEquals(2, 
((Boolean[])serviceReference.getProperty("p.Boolean.array")).length);
-               assertTrue(serviceReference.getProperty("p.Boolean.list") 
instanceof List);
-               assertEquals(2, 
((List<Boolean>)serviceReference.getProperty("p.Boolean.list")).size());
-               assertTrue(serviceReference.getProperty("p.Boolean.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Boolean>)serviceReference.getProperty("p.Boolean.set")).size());
+               assertTrue(serviceReference.getProperty("p.Boolean.array") 
instanceof boolean[]);
+               assertEquals(2, 
((boolean[])serviceReference.getProperty("p.Boolean.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Byte") instanceof 
Byte);
-               assertTrue(serviceReference.getProperty("p.Byte.array") 
instanceof Byte[]);
-               assertEquals(2, 
((Byte[])serviceReference.getProperty("p.Byte.array")).length);
-               assertTrue(serviceReference.getProperty("p.Byte.list") 
instanceof List);
-               assertEquals(2, 
((List<Byte>)serviceReference.getProperty("p.Byte.list")).size());
-               assertTrue(serviceReference.getProperty("p.Byte.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Byte>)serviceReference.getProperty("p.Byte.set")).size());
+               assertTrue(serviceReference.getProperty("p.Byte.array") 
instanceof byte[]);
+               assertEquals(2, 
((byte[])serviceReference.getProperty("p.Byte.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Character") 
instanceof Character);
-               assertTrue(serviceReference.getProperty("p.Character.array") 
instanceof Character[]);
-               assertEquals(2, 
((Character[])serviceReference.getProperty("p.Character.array")).length);
-               assertTrue(serviceReference.getProperty("p.Character.list") 
instanceof List);
-               assertEquals(2, 
((List<Character>)serviceReference.getProperty("p.Character.list")).size());
-               assertTrue(serviceReference.getProperty("p.Character.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Character>)serviceReference.getProperty("p.Character.set")).size());
+               assertTrue(serviceReference.getProperty("p.Character.array") 
instanceof char[]);
+               assertEquals(2, 
((char[])serviceReference.getProperty("p.Character.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Double") instanceof 
Double);
-               assertTrue(serviceReference.getProperty("p.Double.array") 
instanceof Double[]);
-               assertEquals(2, 
((Double[])serviceReference.getProperty("p.Double.array")).length);
-               assertTrue(serviceReference.getProperty("p.Double.list") 
instanceof List);
-               assertEquals(2, 
((List<Double>)serviceReference.getProperty("p.Double.list")).size());
-               assertTrue(serviceReference.getProperty("p.Double.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Double>)serviceReference.getProperty("p.Double.set")).size());
+               assertTrue(serviceReference.getProperty("p.Double.array") 
instanceof double[]);
+               assertEquals(2, 
((double[])serviceReference.getProperty("p.Double.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Float") instanceof 
Float);
-               assertTrue(serviceReference.getProperty("p.Float.array") 
instanceof Float[]);
-               assertEquals(2, 
((Float[])serviceReference.getProperty("p.Float.array")).length);
-               assertTrue(serviceReference.getProperty("p.Float.list") 
instanceof List);
-               assertEquals(2, 
((List<Float>)serviceReference.getProperty("p.Float.list")).size());
-               assertTrue(serviceReference.getProperty("p.Float.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Float>)serviceReference.getProperty("p.Float.set")).size());
+               assertTrue(serviceReference.getProperty("p.Float.array") 
instanceof float[]);
+               assertEquals(2, 
((float[])serviceReference.getProperty("p.Float.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Integer") instanceof 
Integer);
-               assertTrue(serviceReference.getProperty("p.Integer.array") 
instanceof Integer[]);
-               assertEquals(2, 
((Integer[])serviceReference.getProperty("p.Integer.array")).length);
-               assertTrue(serviceReference.getProperty("p.Integer.list") 
instanceof List);
-               assertEquals(2, 
((List<Integer>)serviceReference.getProperty("p.Integer.list")).size());
-               assertTrue(serviceReference.getProperty("p.Integer.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Integer>)serviceReference.getProperty("p.Integer.set")).size());
+               assertTrue(serviceReference.getProperty("p.Integer.array") 
instanceof int[]);
+               assertEquals(2, 
((int[])serviceReference.getProperty("p.Integer.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Long") instanceof 
Long);
-               assertTrue(serviceReference.getProperty("p.Long.array") 
instanceof Long[]);
-               assertEquals(2, 
((Long[])serviceReference.getProperty("p.Long.array")).length);
-               assertTrue(serviceReference.getProperty("p.Long.list") 
instanceof List);
-               assertEquals(2, 
((List<Long>)serviceReference.getProperty("p.Long.list")).size());
-               assertTrue(serviceReference.getProperty("p.Long.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Long>)serviceReference.getProperty("p.Long.set")).size());
+               assertTrue(serviceReference.getProperty("p.Long.array") 
instanceof long[]);
+               assertEquals(2, 
((long[])serviceReference.getProperty("p.Long.array")).length);
 
                assertTrue(serviceReference.getProperty("p.Short") instanceof 
Short);
-               assertTrue(serviceReference.getProperty("p.Short.array") 
instanceof Short[]);
-               assertEquals(2, 
((Short[])serviceReference.getProperty("p.Short.array")).length);
-               assertTrue(serviceReference.getProperty("p.Short.list") 
instanceof List);
-               assertEquals(2, 
((List<Short>)serviceReference.getProperty("p.Short.list")).size());
-               assertTrue(serviceReference.getProperty("p.Short.set") 
instanceof Set);
-               assertEquals(2, 
((Set<Short>)serviceReference.getProperty("p.Short.set")).size());
+               assertTrue(serviceReference.getProperty("p.Short.array") 
instanceof short[]);
+               assertEquals(2, 
((short[])serviceReference.getProperty("p.Short.array")).length);
 
                assertTrue(serviceReference.getProperty("p.String") instanceof 
String);
                assertTrue(serviceReference.getProperty("p.String.array") 
instanceof String[]);
                assertEquals(2, 
((String[])serviceReference.getProperty("p.String.array")).length);
-               assertTrue(serviceReference.getProperty("p.String.list") 
instanceof List);
-               assertEquals(2, 
((List<String>)serviceReference.getProperty("p.String.list")).size());
-               assertTrue(serviceReference.getProperty("p.String.set") 
instanceof Set);
-               assertEquals(2, 
((Set<String>)serviceReference.getProperty("p.String.set")).size());
 
                // glubInteger = 45, gooString = "green"
                assertTrue(serviceReference.getProperty("glub.integer") 
instanceof Integer);
                assertEquals(45, 
((Integer)serviceReference.getProperty("glub.integer")).intValue());
                assertTrue(serviceReference.getProperty("goo.string") 
instanceof String);
-               assertEquals("green", 
((String)serviceReference.getProperty("goo.string")));
+               assertEquals("green", 
(serviceReference.getProperty("goo.string")));
        }
 
+       @Test
        public void testBundleContextInjection() throws Exception {
                BeanManager beanManager = getBeanManager(cdiBundle);
 
@@ -248,63 +207,51 @@ public class CdiBeanTests extends Abstra
                assertTrue(bti.get() instanceof BundleContext);
        }
 
-       @Ignore // This test doesn't make sense because there's only a single 
bean for the reference!!!
-       public void _testInstanceProperties() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","Instance_ServiceProperties")).iterator();
-
-               assertTrue(iterator.hasNext());
+       @Test
+       public void testInstanceProperties() throws Exception {
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "Instance_ServiceProperties");
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
-
-               assertNotNull(serviceReference);
+               BeanService beanService = tracker.waitForService(timeout);
 
+               assertNotNull(beanService);
+               assertEquals(4, 
Integer.decode(beanService.doSomething()).intValue());
                @SuppressWarnings("unchecked")
-               BeanService<Map<String, Object>> bean = 
bundleContext.getService(serviceReference);
-
-               assertNotNull(bean);
-               assertEquals(3, Integer.decode(bean.doSomething()).intValue());
-               Map<String, Object> map = bean.get();
+               Map<String, Object> map = (Map<String, 
Object>)beanService.get();
                assertNotNull(map);
+               assertEquals(100000, (int)map.get("service.ranking"));
        }
 
-       @Ignore // This test doesn't make sense because there's only a single 
bean for the reference!!!
-       public void _testInstanceServiceReference() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","Instance_ServiceReference")).iterator();
-
-               assertTrue(iterator.hasNext());
+       @Test
+       public void testInstanceServiceReference() throws Exception {
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "Instance_ServiceReference");
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
+               BeanService beanService = tracker.waitForService(timeout);
 
-               assertNotNull(serviceReference);
-
-               @SuppressWarnings("unchecked")
-               BeanService<ServiceReference<?>> bean = 
bundleContext.getService(serviceReference);
-
-               assertNotNull(bean);
-               assertEquals(3, Integer.decode(bean.doSomething()).intValue());
-               ServiceReference<?> sr = bean.get();
+               assertNotNull(beanService);
+               assertEquals(4, 
Integer.decode(beanService.doSomething()).intValue());
+               ServiceReference<?> sr = (ServiceReference<?>)beanService.get();
                assertNotNull(sr);
+               assertEquals(4, (int)sr.getProperty("service.ranking"));
        }
 
-       @Ignore // This test doesn't make sense because there's only a single 
bean for the reference!!!
-       public void _testInstance_Optional() throws Exception {
-               Iterator<ServiceReference<BeanService>> iterator = 
bundleContext.getServiceReferences(
-                       BeanService.class, 
String.format("(objectClass=*.%s)","Instance_Optional")).iterator();
-
-               assertTrue(iterator.hasNext());
+       @Test
+       public void testInstance_Optional() throws Exception {
+               ServiceTracker<BeanService, BeanService> tracker = track(
+                       "(&(objectClass=%s)(objectClass=*.%s))",
+                       BeanService.class.getName(),
+                       "Instance_Optional");
 
-               ServiceReference<BeanService> serviceReference = 
iterator.next();
-
-               assertNotNull(serviceReference);
-
-               @SuppressWarnings("unchecked")
-               BeanService<Callable<String>> bean = 
bundleContext.getService(serviceReference);
+               BeanService beanService = tracker.waitForService(timeout);
 
-               assertNotNull(bean);
-               assertEquals(0, Integer.decode(bean.doSomething()).intValue());
-               assertNull(bean.get());
+               assertNotNull(beanService);
+               assertEquals(0, 
Integer.decode(beanService.doSomething()).intValue());
+               assertNull(beanService.get());
        }
 
 }
\ No newline at end of file

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=1829115&r1=1829114&r2=1829115&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
 Sat Apr 14 01:10:27 2018
@@ -14,20 +14,18 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static org.junit.Assert.*;
+
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.CDI;
 
 import org.apache.aries.cdi.test.interfaces.Pojo;
+import org.junit.Test;
 import org.osgi.framework.wiring.BundleWiring;
 
 public class CdiContainerTests extends AbstractTestCase {
 
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-               containerDTO = getContainerDTO(cdiBundle);
-       }
-
+       @Test
        public void testGetBeanFromCdiContainerService() throws Exception {
                BeanManager beanManager = getBeanManager(cdiBundle);
 
@@ -35,6 +33,7 @@ public class CdiContainerTests extends A
                assertBeanExists(Pojo.class, beanManager);
        }
 
+       @Test
        public void testGetBeanManagerFromCDI() throws Exception {
                Thread currentThread = Thread.currentThread();
                ClassLoader contextClassLoader = 
currentThread.getContextClassLoader();

Modified: 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java?rev=1829115&r1=1829114&r2=1829115&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
 (original)
+++ 
aries/trunk/cdi/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
 Sat Apr 14 01:10:27 2018
@@ -14,32 +14,49 @@
 
 package org.apache.aries.cdi.test.cases;
 
+import static org.junit.Assert.*;
+
 import javax.enterprise.inject.spi.BeanManager;
 
+import org.junit.Test;
 import org.osgi.framework.Bundle;
 import org.osgi.util.tracker.ServiceTracker;
 
 public class CdiExtenderTests extends AbstractTestCase {
 
+       @Test
        public void testStopExtender() throws Exception {
                Bundle cdiExtenderBundle = getCdiExtenderBundle();
 
-               ServiceTracker<BeanManager,BeanManager> serviceTracker = 
getServiceTracker(cdiBundle);
+               ServiceTracker<BeanManager, BeanManager> tracker = 
getServiceTracker(cdiBundle);
 
-               try {
-                       assertNotNull(serviceTracker.waitForService(timeout));
+               BeanManager beanManager = tracker.waitForService(timeout);
 
-                       cdiExtenderBundle.stop();
+               assertNotNull(beanManager);
 
-                       assertTrue(serviceTracker.isEmpty());
+               int trackingCount = tracker.getTrackingCount();
 
-                       cdiExtenderBundle.start();
+               cdiExtenderBundle.stop();
 
-                       assertNotNull(serviceTracker.waitForService(timeout));
+               for (int i = 10; (i > 0) && (tracker.getTrackingCount() == 
trackingCount); i--) {
+                       Thread.sleep(20);
                }
-               finally {
-                       serviceTracker.close();
+
+               beanManager = tracker.getService();
+
+               assertNull(beanManager);
+
+               trackingCount = tracker.getTrackingCount();
+
+               cdiExtenderBundle.start();
+
+               for (int i = 10; (i > 0) && (tracker.getTrackingCount() == 
trackingCount); i--) {
+                       Thread.sleep(20);
                }
+
+               beanManager = tracker.getService();
+
+               assertNotNull(beanManager);
        }
 
 }
\ No newline at end of file


Reply via email to