You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2018/09/26 16:45:39 UTC

svn commit: r1842034 [5/11] - in /felix/trunk/dependencymanager: ./ .gradle-wrapper/ cnf/ cnf/buildrepo/ cnf/ext/ cnf/localrepo/ cnf/localrepo/org.apache.felix.gogo.command/ cnf/localrepo/org.apache.felix.gogo.jline/ cnf/localrepo/org.apache.felix.gogo...

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MethodSignatures.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MethodSignatures.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MethodSignatures.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MethodSignatures.java Wed Sep 26 16:45:35 2018
@@ -25,7 +25,6 @@ import java.util.Map;
 
 import org.apache.felix.dm.annotation.api.Component;
 import org.apache.felix.dm.annotation.api.ConfigurationDependency;
-import org.apache.felix.dm.annotation.api.FactoryConfigurationAdapterService;
 import org.apache.felix.dm.annotation.api.ServiceDependency;
 import org.apache.felix.dm.annotation.api.Start;
 import org.apache.felix.dm.annotation.api.Stop;
@@ -261,7 +260,7 @@ public class MethodSignatures {
 	}
 
 	// This is a factory pid component with an updated callback having the "updated(Dictionary)" signature
-	@FactoryConfigurationAdapterService
+	@Component(factoryPid="org.apache.felix.dm.runtime.itest.components.MethodSignatures$FactoryPidComponent")
 	public static class FactoryPidComponent {
 		Dictionary<String, Object> m_properties;
 		
@@ -286,7 +285,7 @@ public class MethodSignatures {
 	}
 	
 	// This is a factory pid component with an updated callback having the "updated(Component, Dictionary)" signature
-	@FactoryConfigurationAdapterService
+	@Component(factoryPid="org.apache.felix.dm.runtime.itest.components.MethodSignatures$FactoryPidComponent2")
 	public static class FactoryPidComponent2 {
 		Dictionary<String, Object> m_properties;
 		
@@ -312,7 +311,7 @@ public class MethodSignatures {
 	}
 	
 	// This is a factory pid component with an updated callback having the "updated(Config)" signature
-    @FactoryConfigurationAdapterService(configType=Config.class)
+	@Component(factoryPid="org.apache.felix.dm.runtime.itest.components.MethodSignatures$Config")
     public static class FactoryPidComponent3 {
         Config m_properties;
         

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleAnnotations.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleAnnotations.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleAnnotations.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleAnnotations.java Wed Sep 26 16:45:35 2018
@@ -63,7 +63,8 @@ public class MultipleAnnotations {
         public void doService();
     }
 
-    @Component(properties = {@Property(name = "foo", value = "bar")})
+    @Component
+    @Property(name = "foo", value = "bar")
     public static class ServiceProvider implements ServiceInterface {
         @ServiceDependency(filter="(name=" + ENSURE + ")")
         volatile Ensure m_sequencer;

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleReconfigurableComponentPropertyType.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleReconfigurableComponentPropertyType.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleReconfigurableComponentPropertyType.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/MultipleReconfigurableComponentPropertyType.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ */
+package org.apache.felix.dm.runtime.itest.components;
+
+import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.felix.dm.annotation.api.Component;
+import org.apache.felix.dm.annotation.api.ConfigurationDependency;
+import org.apache.felix.dm.annotation.api.PropertyType;
+import org.apache.felix.dm.annotation.api.ServiceDependency;
+import org.apache.felix.dm.itest.util.Ensure;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+
+/**
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class MultipleReconfigurableComponentPropertyType {
+    public final static String ENSURE = "MultipleReconfigurableComponentPropertyType";
+
+    @PropertyType
+    @Retention(RetentionPolicy.CLASS)
+    @interface MyProperties {
+    	String string_value() default "defstring";
+    	double double_value() default 123;    	
+    }
+
+    @PropertyType
+    @Retention(RetentionPolicy.CLASS)
+    @interface MyProperties2 {
+        String string_value2() default "defstring2";
+        double double_value2() default 456;      
+    }
+
+    @Component(provides=MyComponent.class)
+	@MyProperties(string_value="string")
+	@MyProperties2(string_value2="string2")
+    public static class MyComponent {                
+		@ConfigurationDependency(propagate=true, pidClass=MyComponent.class)
+		void updated(MyProperties props, MyProperties2 props2) {
+		    if (props != null && props2 != null) {
+		        System.out.println("MyComponent.updated: string_value=" + props.string_value() + ", double_value=" + props.double_value() +
+		            "string_value2=" + props2.string_value2() + ", double_value2=" + props2.double_value2());
+		    }
+		}		
+    }
+
+    @Component
+    public static class MyConsumer {        
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
+        volatile Ensure m_ensure;
+        
+        Configuration m_conf;
+        
+        @ServiceDependency
+        void bind(ConfigurationAdmin cm) {
+            try {
+                m_conf = cm.getConfiguration(MyComponent.class.getName());
+                Hashtable<String, Object> newprops = new Hashtable<>();
+                newprops.put("string.value", "string from CM");
+                m_conf.update(newprops);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        
+        @ServiceDependency(required=false, removed="unbind")
+        void bind(MyComponent comp, Map<String, Object> props) {
+        	try {
+        		// first, we expect to be injected with MyComponent with the following properties:
+        		// string.value=another_string and double_value=123     	
+        		if ("string from CM".equals(props.get("string.value")) && new Double(123).equals(props.get("double.value")) &&
+        		    "string2".equals(props.get("string.value2")) && new Double(456).equals(props.get("double.value2"))) {
+					m_ensure.step(1);
+					m_conf.delete();
+				}
+        	} catch (Exception e) {
+        		e.printStackTrace();
+        	}
+        }
+        
+        void unbind(MyComponent comp) {
+            m_ensure.step(2);
+        }
+    }  
+    
+}

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/PropagateAnnotation.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/PropagateAnnotation.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/PropagateAnnotation.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/PropagateAnnotation.java Wed Sep 26 16:45:35 2018
@@ -59,13 +59,15 @@ public class PropagateAnnotation {
         }
     }
 
-    @Component(provides = {Producer.class}, properties = {@Property(name = "foo", value = "bar")})
+    @Component(provides = Producer.class)
+    @Property(name = "foo", value = "bar")
     public static class Producer {
         @ServiceDependency(propagate = true)
         volatile Producer2 m_producer;
     }
 
-    @Component(provides = {Producer2.class}, properties = {@Property(name = "foo2", value = "bar2")})
+    @Component(provides = Producer2.class)
+    @Property(name = "foo2", value = "bar2")
     public static class Producer2 {
     }
 }

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+package org.apache.felix.dm.runtime.itest.components;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.apache.felix.dm.annotation.api.Component;
+import org.apache.felix.dm.annotation.api.ConfigurationDependency;
+import org.apache.felix.dm.annotation.api.PropertyType;
+import org.apache.felix.dm.annotation.api.ServiceDependency;
+import org.apache.felix.dm.itest.util.Ensure;
+import org.osgi.service.cm.Configuration;
+import org.osgi.service.cm.ConfigurationAdmin;
+
+/**
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation {
+    public final static String ENSURE = "ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation";
+        
+    @PropertyType
+    @Retention(RetentionPolicy.CLASS)
+    @interface MyReconfigurableProperties {
+    	String string_value() default "defstring";
+    	double double_value() default 123;    	
+    }
+
+	@Component(provides=MyComponent.class)
+	@MyReconfigurableProperties(string_value="another_string")
+    public static class MyComponent {
+		@ConfigurationDependency(propagate=true, required=false)
+		void updated(MyReconfigurableProperties props) {
+			System.out.println("MyComponent.updated: string_value=" + props.string_value() + ", double_value=" + props.double_value());
+		}		
+    }
+
+    @Component
+    public static class MyConsumer {
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
+        volatile Ensure m_ensure;
+
+        @ServiceDependency
+        volatile ConfigurationAdmin m_cm;
+        
+        Configuration m_conf;
+        
+        @ServiceDependency(changed="change")
+        void bind(MyComponent comp, Map<String, Object> props) {
+        	try {
+        		// first, we expect to be injected with MyComponent with the following properties:
+        		// string.value=another_string and double_value=123     	
+        		if ("another_string".equals(props.get("string.value")) && new Double(123).equals(props.get("double.value"))) {
+					m_ensure.step(1);
+
+					// at this point, let's reconfigure ourself
+					m_conf = m_cm.getConfiguration(MyReconfigurableProperties.class.getName());
+					Hashtable<String, Object> newprops = new Hashtable<>();
+					newprops.put("string.value", "a_string_configured_from_CM");
+					m_conf.update(newprops);
+				}
+        	} catch (Exception e) {
+        		e.printStackTrace();
+        	}
+        }
+        
+        void change(MyComponent comp, Map<String, Object> props) {
+        	try {
+        		System.out.println("MyConsumer.change: " + props);
+				if (m_conf != null) {
+					// CM is reconfiguring us: we expect to be injected with MyComponent with the following properties:
+					// string.value=a_string_configured_from_CM and double_value=123
+					if ("a_string_configured_from_CM".equals(props.get("string.value"))
+							&& new Double(123).equals(props.get("double.value"))) {
+						m_ensure.step(2);
+						Configuration conf = m_conf;
+						m_conf = null;
+						conf.delete();
+					}
+				} else {
+					// configuration has been deleted, we expect to be injected with default service properties:
+					// string.value=another_string" and double_value=123
+					if ("another_string".equals(props.get("string.value")) && new Double(123).equals(props.get("double.value"))) {							
+						m_ensure.step(3);
+					}
+				}
+        	}  catch (Exception e) {
+        		e.printStackTrace();
+        	}
+        }
+    }  
+    
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ScopedServiceAnnotation.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ScopedServiceAnnotation.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ScopedServiceAnnotation.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ScopedServiceAnnotation.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,110 @@
+/*
+ * 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.
+ */
+package org.apache.felix.dm.runtime.itest.components;
+
+import java.util.Map;
+
+import org.apache.felix.dm.annotation.api.Component;
+import org.apache.felix.dm.annotation.api.PropertyType;
+import org.apache.felix.dm.annotation.api.ServiceDependency;
+import org.apache.felix.dm.annotation.api.ServiceScope;
+import org.apache.felix.dm.annotation.api.Start;
+import org.apache.felix.dm.annotation.api.Stop;
+import org.apache.felix.dm.itest.util.Ensure;
+import org.junit.Assert;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceObjects;
+import org.osgi.framework.ServiceRegistration;
+
+public class ScopedServiceAnnotation {
+	
+    public final static String ENSURE = "ScopedServiceAnnotation.ENSURE";
+	
+	public interface PrototypeService {
+	}
+	
+	@PropertyType
+	public @interface MyConf {
+		public String foo() default "bar";
+	}
+	
+	@Component(scope=ServiceScope.PROTOTYPE)
+	@MyConf(foo="bar2")
+	public static class PrototypeServiceImpl implements PrototypeService {
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
+        protected volatile Ensure m_sequencer;
+        
+        Bundle m_clientBundle;        
+        ServiceRegistration m_registration;
+        
+        public PrototypeServiceImpl(Bundle b, ServiceRegistration sr) {
+        	m_clientBundle = b;
+        	m_registration = sr;
+        }
+        
+		@Start
+		void start() {
+        	Assert.assertNotNull(m_clientBundle);
+        	Assert.assertNotNull(m_registration);
+			m_sequencer.step();
+		}
+		
+		@Stop
+		void stop() {
+			m_sequencer.step();
+		}
+	}
+		
+	@Component
+	public static class Consumer {	
+        @ServiceDependency(filter = "(name=" + ENSURE + ")")
+        protected volatile Ensure m_sequencer;
+
+		private ServiceObjects<PrototypeService> m_so;
+		private PrototypeService m_service1;
+		private PrototypeService m_service2;
+		
+		@ServiceDependency
+		void bind(PrototypeService service, Map<String, Object> props) {	
+			m_service1 = service;
+        	Assert.assertEquals("bar2", props.get("foo"));
+		}
+
+		@ServiceDependency
+		void bind2(ServiceObjects<PrototypeService> so) {
+			m_so = so;
+			m_service2 = m_so.getService();
+		}
+		
+		@Start
+		void start() {
+        	Assert.assertNotNull(m_service1);
+        	Assert.assertNotNull(m_service2);
+        	Assert.assertNotEquals(m_service1, m_service2);
+        	m_sequencer.step();
+		}
+		
+		@Stop
+		void stop() {
+			m_so.ungetService(m_service2);
+			m_sequencer.step();			
+		}
+	}
+
+}

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ServiceTestWthPublisher.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ServiceTestWthPublisher.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ServiceTestWthPublisher.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/ServiceTestWthPublisher.java Wed Sep 26 16:45:35 2018
@@ -62,7 +62,8 @@ public class ServiceTestWthPublisher {
         }
     }
 
-    @Component(properties = {@Property(name = "foo", value = "bar")})
+    @Component
+    @Property(name = "foo", value = "bar")
     public static class ProviderImpl implements Provider {
         @LifecycleController
         volatile Runnable m_publisher; // injected and used to register our service

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/SimpleAnnotations.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/SimpleAnnotations.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/SimpleAnnotations.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/components/SimpleAnnotations.java Wed Sep 26 16:45:35 2018
@@ -43,7 +43,9 @@ public class SimpleAnnotations {
      * Provides a <code>Runnable</code> service, which is required by the
      * {@link Consumer} class.
      */
-    @Component(properties = {@Property(name = "foo", value = "bar"), @Property(name="type", value="SimpleAnnotations")})
+    @Component
+    @Property(name = "foo", value = "bar")
+    @Property(name="type", value="SimpleAnnotations")
     public static class Producer implements Runnable {
         public final static String ENSURE = "SimpleAnnotations.Producer";
         

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CollectionFieldDependencyAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CollectionFieldDependencyAnnotationTest.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CollectionFieldDependencyAnnotationTest.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CollectionFieldDependencyAnnotationTest.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,56 @@
+/*
+* 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.
+*/
+package org.apache.felix.dm.runtime.itest.tests;
+
+import org.apache.felix.dm.itest.util.Ensure;
+import org.apache.felix.dm.itest.util.TestBase;
+import org.apache.felix.dm.runtime.itest.components.CollectionFieldDependencyAnnotation;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * Check if a client already bound to a service provider is called in swap method
+ * when an aspect service replaces the original service.
+ * 
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@SuppressWarnings("rawtypes")
+public class CollectionFieldDependencyAnnotationTest extends TestBase {
+    
+	public void testAnnotatedAspect() {
+        Ensure e = new Ensure();
+        // register the two providers
+        ServiceRegistration provider1 = register(e, CollectionFieldDependencyAnnotation.ProviderImpl1.ENSURE);
+        ServiceRegistration provider2 = register(e, CollectionFieldDependencyAnnotation.ProviderImpl2.ENSURE);        
+        e.waitForStep(2, 5000);
+        
+        // register the consumer
+        ServiceRegistration consumer = register(e, CollectionFieldDependencyAnnotation.Consumer.ENSURE);
+        e.waitForStep(3, 5000);
+        
+        // check if the first collection (m_list1) was properly injected in consumer
+        e.waitForStep(4, 5000);
+        
+        // check if the second collection (m_list2) was properly injected in consumer
+        e.waitForStep(6, 5000);
+        
+        provider1.unregister();
+        provider2.unregister();
+        consumer.unregister();
+    }
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ComponentPropertyTypeAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ComponentPropertyTypeAnnotationTest.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ComponentPropertyTypeAnnotationTest.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ComponentPropertyTypeAnnotationTest.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,114 @@
+/*
+ * 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.
+ */
+package org.apache.felix.dm.runtime.itest.tests;
+
+import org.apache.felix.dm.itest.util.Ensure;
+import org.apache.felix.dm.itest.util.TestBase;
+import org.apache.felix.dm.runtime.itest.components.ComponentDMPropertyTypeAnnotation;
+import org.apache.felix.dm.runtime.itest.components.ComponentDMPropertyTypeArrayAnnotation;
+import org.apache.felix.dm.runtime.itest.components.ComponentDMSingleValuedPropertyTypeAnnotation;
+import org.apache.felix.dm.runtime.itest.components.ComponentJaxrsResourceAnnotation;
+import org.apache.felix.dm.runtime.itest.components.ComponentPropertyTypeWithDictionaryPassedInUpdateCallback;
+import org.apache.felix.dm.runtime.itest.components.FactoryPidWithPropertyTypeAnnotation;
+import org.apache.felix.dm.runtime.itest.components.JaxrsComponentPropertyTypeAnnotation;
+import org.apache.felix.dm.runtime.itest.components.MultipleReconfigurableComponentPropertyType;
+import org.apache.felix.dm.runtime.itest.components.ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * Use case: Ensure that a Provider can be injected into a Consumer, using simple DM annotations.
+ * 
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@SuppressWarnings("rawtypes")
+public class ComponentPropertyTypeAnnotationTest extends TestBase {
+    
+    public void testJaxRsPropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, JaxrsComponentPropertyTypeAnnotation.JaxRsConsumer.ENSURE);
+        e.waitForStep(2, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testCustomPropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ComponentDMPropertyTypeAnnotation.ENSURE);
+        e.waitForStep(3, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testCustomPropertyTypesArray() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ComponentDMPropertyTypeArrayAnnotation.ENSURE);
+        e.waitForStep(4, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+
+    public void testSingleValuedPropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ComponentDMSingleValuedPropertyTypeAnnotation.ENSURE);
+        e.waitForStep(3, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testJaxrsPropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ComponentJaxrsResourceAnnotation.ENSURE);
+        e.waitForStep(2, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+
+    public void testCustomReconfigurablePropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ReconfigurableComponentPropertyTypeWithOptionalConfigAnnotation.ENSURE);
+        e.waitForStep(3, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testDictionaryPassedInUpdatedCallback() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, ComponentPropertyTypeWithDictionaryPassedInUpdateCallback.ENSURE);
+        e.waitForStep(3, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testMultipleReconfigurablePropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, MultipleReconfigurableComponentPropertyType.ENSURE);
+        e.waitForStep(2, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+    public void testFactoryPidWithPropertyTypes() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration sr1 = register(e, FactoryPidWithPropertyTypeAnnotation.ENSURE);
+        e.waitForStep(3, 5000);
+        sr1.unregister();
+        e.ensure();
+    }
+    
+}

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ExtraServicePropertiesTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ExtraServicePropertiesTest.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ExtraServicePropertiesTest.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ExtraServicePropertiesTest.java Wed Sep 26 16:45:35 2018
@@ -21,8 +21,6 @@ package org.apache.felix.dm.runtime.ites
 import org.apache.felix.dm.itest.util.Ensure;
 import org.apache.felix.dm.itest.util.TestBase;
 import org.apache.felix.dm.runtime.itest.components.ExtraAdapterServiceProperties;
-import org.apache.felix.dm.runtime.itest.components.ExtraComponentFactoryServiceProperties;
-import org.apache.felix.dm.runtime.itest.components.ExtraFactoryServiceProperties;
 import org.apache.felix.dm.runtime.itest.components.ExtraServiceProperties;
 import org.osgi.framework.ServiceRegistration;
 
@@ -44,26 +42,6 @@ public class ExtraServicePropertiesTest
         sr.unregister();
     }
 
-    /**
-     * Tests if a Service instantiated by a Factory set can provide its service properties from its start method.
-     */
-    public void testExtraFactoryServiceProperties() {
-        Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, ExtraFactoryServiceProperties.ENSURE);
-        e.waitForStep(3, 10000);
-        sr.unregister();
-    }
-    
-    /**
-     * Tests if a Service instantiated by a DM ComponentFactory can provide its service properties from its start method.
-     */
-    public void testExtraComponentFactoryServiceProperties() {
-        Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, ExtraComponentFactoryServiceProperties.ENSURE);
-        e.waitForStep(3, 10000);
-        sr.unregister();
-    }
-
     /**
      * Tests if an AdapterService can provide its service properties from its start method.
      */

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PublisherAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PublisherAnnotationTest.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PublisherAnnotationTest.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PublisherAnnotationTest.java Wed Sep 26 16:45:35 2018
@@ -22,10 +22,7 @@ import org.apache.felix.dm.itest.util.En
 import org.apache.felix.dm.itest.util.TestBase;
 import org.apache.felix.dm.runtime.itest.components.AdapterServiceTestWithPublisher;
 import org.apache.felix.dm.runtime.itest.components.BundleAdapterServiceTestWithPublisher;
-import org.apache.felix.dm.runtime.itest.components.ComponentFactoryServiceTestWthPublisher;
 import org.apache.felix.dm.runtime.itest.components.FactoryConfigurationAdapterServiceTestWithPublisher;
-import org.apache.felix.dm.runtime.itest.components.FactoryServiceTestWthPublisher;
-import org.apache.felix.dm.runtime.itest.components.ResourceAdapterServiceTestWithPublisher;
 import org.apache.felix.dm.runtime.itest.components.ServiceTestWthPublisher;
 import org.osgi.framework.ServiceRegistration;
 
@@ -46,28 +43,6 @@ public class PublisherAnnotationTest ext
     }
 
     /**
-     * A Service instantiated from a FactorySet, and which registers/unregisters its service,
-     * using the @ServiceLifecycle annotation.
-     */
-    public void testFactoryServiceWithPublisher() {
-        Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, FactoryServiceTestWthPublisher.ENSURE);
-        e.waitForStep(5, 10000);
-        sr.unregister();
-    }
-
-    /**
-     * A Service instantiated from a DM ComponentFactory, and which registers/unregisters its service,
-     * using the @ServiceLifecycle annotation.
-     */
-    public void testComponentFactoryServiceWithPublisher() {
-        Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, ComponentFactoryServiceTestWthPublisher.ENSURE);
-        e.waitForStep(5, 10000);
-        sr.unregister();
-    }
-
-    /**
      * Test an AdapterService which provides its interface using a @ServiceLifecycle.
      */
     public void testAdapterServiceWithPublisher() {
@@ -86,16 +61,6 @@ public class PublisherAnnotationTest ext
         e.waitForStep(5, 10000);
         sr.unregister();
     }
-
-    /**
-     * Test a ResourceAdapterService which provides its interface using a @ServiceLifecycle.
-     */
-    public void TestResourceAdapterServiceWithPublisher() {
-        Ensure e = new Ensure();
-        ServiceRegistration sr = register(e, ResourceAdapterServiceTestWithPublisher.ENSURE);
-        e.waitForStep(5, 10000);
-        sr.unregister();
-    }
 
     /**
      * Test a FactoryConfigurationAdapterService which provides its interface using a @ServiceLifecycle.

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ScopedServiceAnnotationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ScopedServiceAnnotationTest.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ScopedServiceAnnotationTest.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ScopedServiceAnnotationTest.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,51 @@
+/*
+* 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.
+*/
+package org.apache.felix.dm.runtime.itest.tests;
+
+import org.apache.felix.dm.itest.util.Ensure;
+import org.apache.felix.dm.itest.util.TestBase;
+import org.apache.felix.dm.runtime.itest.components.ScopedServiceAnnotation;
+import org.osgi.framework.ServiceRegistration;
+
+/**
+ * Use case: Verify Aspect Annotations usage.
+ * 
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+@SuppressWarnings("rawtypes")
+public class ScopedServiceAnnotationTest extends TestBase {
+ 
+    public void testScopedService() throws Throwable {
+        Ensure e = new Ensure();
+        ServiceRegistration seq = register(e, ScopedServiceAnnotation.ENSURE);
+        // the consumer defines two dependencies, hence two prototype instances are created
+        e.waitForStep(2, 5000);
+        
+        // make sure Consumer has started
+        e.waitForStep(3, 5000);
+
+        // Deactivate service provider
+        seq.unregister();
+        
+        // make sure the two prototypes and the consumer have stopped
+        e.waitForStep(6, 5000);
+        e.ensure();
+    }
+    
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/component/annotations/ComponentPropertyType.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/component/annotations/ComponentPropertyType.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/component/annotations/ComponentPropertyType.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/component/annotations/ComponentPropertyType.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) OSGi Alliance (2016, 2017). All Rights Reserved.
+ *
+ * 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.osgi.service.component.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Identify the annotated annotation as a Component Property Type.
+ * <p>
+ * Component Property Types can be applied as annotations to the implementation
+ * class of the Component. They can also be used as activation objects which
+ * means they can be used as parameter types for the component's constructor and
+ * life cycle methods {@link Activate}, {@link Deactivate}, and {@link Modified}
+ * as well as activation fields.
+ * <p>
+ * Component Property Types do not have to be annotated with this annotation to
+ * be used as parameter types but they must be annotated with this annotation to
+ * be used as annotations on the implementation class of the Component.
+ * <p>
+ * This annotation is not processed at runtime by Service Component Runtime. It
+ * must be processed by tools and used to add a Component Description to the
+ * bundle.
+ * 
+ * @see "Component Property Types."
+ * @author $Id: 563e80fe5d699c0e02ac2963d08e167552d8928d $
+ * @since 1.4
+ */
+@Documented
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.ANNOTATION_TYPE)
+public @interface ComponentPropertyType {
+	// meta-annotation
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/JaxRSWhiteboardConstants.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/JaxRSWhiteboardConstants.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/JaxRSWhiteboardConstants.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/JaxRSWhiteboardConstants.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) OSGi Alliance (2017). All Rights Reserved.
+ * 
+ * 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.osgi.service.jaxrs.whiteboard;
+
+public class JaxRSWhiteboardConstants {
+	/**
+	 * Service property specifying that a JAX-RS resource should be processed by
+	 * the whiteboard.
+	 * <p>
+	 * The value of this service property must be of type {@code String} or
+	 * {@link Boolean} and set to &quot;true&quot; or <code>true</code>.
+	 */
+	public static final String	JAX_RS_RESOURCE				= "osgi.jaxrs.resource";
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/annotations/RequireJaxRSWhiteboard.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/annotations/RequireJaxRSWhiteboard.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/annotations/RequireJaxRSWhiteboard.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/annotations/RequireJaxRSWhiteboard.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,41 @@
+/*
+* 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.
+*/
+package org.osgi.service.jaxrs.whiteboard.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * This annotation can be used to require the Http Whiteboard implementation. It
+ * can be used directly, or as a meta-annotation.
+ * <p>
+ * This annotation is applied to several of the Http Whiteboard component
+ * property annotations meaning that it does not normally need to be applied to
+ * DS components which use the Http Whiteboard.
+ * 
+ * @author $Id: d8dd2f2d079255ec829406ab1e496054a4528d1b $
+ * @since 1.0
+ */
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.TYPE)
+public @interface RequireJaxRSWhiteboard {
+	// This is a purely informational annotation and has no elements.
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsName.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsName.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsName.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsName.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) OSGi Alliance (2017). All Rights Reserved.
+ * 
+ * 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.osgi.service.jaxrs.whiteboard.propertytypes;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.osgi.service.component.annotations.ComponentPropertyType;
+
+/**
+ * Component Property Type for the {@code osgi.jaxrs.name} service property.
+ * <p>
+ * This annotation can be used on a JAX-RS service to declare the value of the
+ * {@link org.osgi.service.jaxrs.whiteboard.JaxRSWhiteboardConstants#JAX_RS_NAME}
+ * service property.
+ * 
+ * @see "Component Property Types"
+ * @author $Id: 5d90577770d30e749a85b3be11a7ced5bd91d9e7 $
+ * @since 1.0
+ */
+@ComponentPropertyType
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.TYPE)
+public @interface JaxrsName {
+	/**
+	 * Prefix for the property name. This value is prepended to each property
+	 * name.
+	 */
+	String PREFIX_ = "osgi.";
+
+	/**
+	 * Service property identifying the name of a JAX-RS service for processing
+	 * by the whiteboard.
+	 * 
+	 * @return The JAX-RS service name.
+	 * @see org.osgi.service.jaxrs.whiteboard.JaxRSWhiteboardConstants#JAX_RS_NAME
+	 */
+	String value();
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsResource.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsResource.java?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsResource.java (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/osgi/service/jaxrs/whiteboard/propertytypes/JaxrsResource.java Wed Sep 26 16:45:35 2018
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) OSGi Alliance (2017). All Rights Reserved.
+ * 
+ * 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.osgi.service.jaxrs.whiteboard.propertytypes;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.osgi.service.component.annotations.ComponentPropertyType;
+import org.osgi.service.jaxrs.whiteboard.annotations.RequireJaxRSWhiteboard;
+
+/**
+ * Component Property Type for the {@code osgi.jaxrs.resource} service property.
+ * <p>
+ * This annotation can be used on a JAX-RS resource to declare the value of the
+ * {@link org.osgi.service.jaxrs.whiteboard.JaxRSWhiteboardConstants#JAX_RS_RESOURCE}
+ * service property.
+ * 
+ * @see "Component Property Types"
+ * @author $Id: 6a574a8c0d6523e601a31c233d25c01e89107351 $
+ * @since 1.0
+ */
+@ComponentPropertyType
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.TYPE)
+@RequireJaxRSWhiteboard
+public @interface JaxrsResource {
+	/**
+	 * Prefix for the property name. This value is prepended to each property
+	 * name.
+	 */
+	String PREFIX_ = "osgi.";
+
+	/**
+	 * Service property identifying a JAX-RS resource for processing by the
+	 * whiteboard.
+	 * 
+	 * @return The JAX-RS resource value.
+	 * @see org.osgi.service.jaxrs.whiteboard.JaxRSWhiteboardConstants#JAX_RS_RESOURCE
+	 */
+	//String value() default "true";
+}

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.core.prefs Wed Sep 26 16:45:35 2018
@@ -0,0 +1,306 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=0
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter

Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs?rev=1842034&view=auto
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs (added)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/.settings/org.eclipse.jdt.ui.prefs Wed Sep 26 16:45:35 2018
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_Apache Felix Eclipse Template
+formatter_settings_version=13

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd Wed Sep 26 16:45:35 2018
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-Bundle-Version: 4.0.5
+Bundle-Version: 4.0.6
 -buildpath: \
 	osgi.core;version=4.2,\
 	osgi.cmpn;version=4.2,\

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/resources/changelog.txt
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/resources/changelog.txt?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/resources/changelog.txt (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/resources/changelog.txt Wed Sep 26 16:45:35 2018
@@ -1,3 +1,18 @@
+Release Notes - Felix - Version org.apache.felix.dependencymanager-r12
+======================================================================
+
+** List of bundles being part of the release:
+    * org.apache.felix.dependencymanager; version=4.5.0
+    * org.apache.felix.dependencymanager.shell; version=4.0.7
+    * org.apache.felix.dependencymanager.runtime; version=4.0.6
+    * org.apache.felix.dependencymanager.annotation; version=5.0.0
+    * org.apache.felix.dependencymanager.lambda; version=1.2.0
+
+** Improvement
+
+	* [FELIX-5939] - DM annotations enhancements
+	* [FELIX-5336] - Add support for prototype scope services in DM4
+
 Release Notes - Felix - Version org.apache.felix.dependencymanager-r11
 ======================================================================
 

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AbstractBuilder.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AbstractBuilder.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AbstractBuilder.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AbstractBuilder.java Wed Sep 26 16:45:35 2018
@@ -21,6 +21,7 @@ package org.apache.felix.dm.runtime;
 import java.util.List;
 
 import org.apache.felix.dm.Component;
+import org.apache.felix.dm.Component.ServiceScope;
 import org.apache.felix.dm.ComponentState;
 import org.apache.felix.dm.ComponentStateListener;
 import org.apache.felix.dm.Dependency;
@@ -65,6 +66,7 @@ public abstract class AbstractBuilder
             c.setAutoConfig(ServiceRegistration.class, Boolean.FALSE);
             c.setAutoConfig(DependencyManager.class, Boolean.FALSE);
             c.setAutoConfig(Component.class, Boolean.FALSE);
+            c.setAutoConfig(Bundle.class, Boolean.FALSE);
         }
 
         // See if BundleContext must be auto configured.
@@ -104,6 +106,20 @@ public abstract class AbstractBuilder
         {
             c.add(new RegistrationListener(registered, unregistered));
         }
+        
+        // See if a service scope is provided
+        String scope = srvMeta.getString(Params.scope, null);
+        if (scope != null) {
+            ServiceScope serviceScope = ServiceScope.valueOf(scope);
+            c.setScope(serviceScope);
+        }
+        
+        // See if Bundle must be auto configured
+        String bundleField = srvMeta.getString(Params.bundle, null);
+        if (bundleField != null)
+        {
+            c.setAutoConfig(Bundle.class, bundleField);
+        }
     }
 
     /**

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AspectServiceBuilder.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AspectServiceBuilder.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AspectServiceBuilder.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/AspectServiceBuilder.java Wed Sep 26 16:45:35 2018
@@ -69,7 +69,9 @@ public class AspectServiceBuilder extend
         Component c;
         if (field != null)
         {
-            c = dm.createAspectService(serviceInterface, serviceFilter, ranking, field)
+            c = dm.createAspectComponent()
+                  .setAspect(serviceInterface, serviceFilter, ranking)
+                  .setAspectField(field)
                   .setServiceProperties(aspectProperties);
         } 
         else

Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java?rev=1842034&r1=1842033&r2=1842034&view=diff
==============================================================================
--- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java (original)
+++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DependencyBuilder.java Wed Sep 26 16:45:35 2018
@@ -142,15 +142,17 @@ public class DependencyBuilder
 
     private Dependency createConfigurationDependency(Bundle b, DependencyManager dm) throws Exception
     {
-        String confProxyType = m_metaData.getString(Params.configType, null);
+        String configType = m_metaData.getString(Params.configType, null);
+        String[] configTypes = m_metaData.getStrings(Params.configTypes, null);
+        configTypes = configTypes == null ? ((configType != null) ? new String[] { configType } : null) : configTypes;
         String pid = m_metaData.getString(Params.pid);
         boolean propagate = "true".equals(m_metaData.getString(Params.propagate, "false"));
         String callback = m_metaData.getString(Params.updated, "updated");
         boolean required = "true".equals(m_metaData.getString(Params.required, "true"));
-        return createConfigurationDependency(dm, b, pid, callback, confProxyType, propagate, required);
+        return createConfigurationDependency(dm, b, pid, callback, configTypes, propagate, required);
     }
 
-    private Dependency createConfigurationDependency(DependencyManager dm, Bundle b, String pid, String callback, String confProxyType, boolean propagate, boolean required) 
+   private Dependency createConfigurationDependency(DependencyManager dm, Bundle b, String pid, String callback, String[] configTypes, boolean propagate, boolean required)
         throws ClassNotFoundException
     {
         if (pid == null)
@@ -160,17 +162,19 @@ public class DependencyBuilder
         }
         ConfigurationDependency cd = dm.createConfigurationDependency();
         cd.setPid(pid);
-        if (confProxyType != null) 
-        {
-            Class<?> confProxyTypeClass = b.loadClass(confProxyType); 
-            cd.setCallback(callback, confProxyTypeClass);            
-        }
-        else
-        {
-            cd.setCallback(callback);            
-        }
-        cd.setPropagate(propagate);
+        cd.setCallback(callback);
+        cd.setPropagate(propagate, true /* configuration will override default service properties */);
         cd.setRequired(required);
+        
+        if (configTypes != null) 
+        {
+            Class<?>[] configTypeClasses = new Class<?>[configTypes.length];
+            for (int i = 0; i < configTypes.length; i ++)
+            {
+                configTypeClasses[i] = b.loadClass(configTypes[i]);
+            }
+            cd.setConfigType(configTypeClasses);            
+        }        
         return cd;
     }