Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C2714200C13 for ; Mon, 6 Feb 2017 15:37:56 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id C0D96160B49; Mon, 6 Feb 2017 14:37:56 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 196FF160B62 for ; Mon, 6 Feb 2017 15:37:54 +0100 (CET) Received: (qmail 74854 invoked by uid 500); 6 Feb 2017 14:37:54 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 74732 invoked by uid 99); 6 Feb 2017 14:37:54 -0000 Received: from Unknown (HELO svn01-us-west.apache.org) (209.188.14.144) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 06 Feb 2017 14:37:54 +0000 Received: from svn01-us-west.apache.org (localhost [127.0.0.1]) by svn01-us-west.apache.org (ASF Mail Server at svn01-us-west.apache.org) with ESMTP id 16AF73A23EC for ; Mon, 6 Feb 2017 14:37:53 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1781908 [3/5] - in /felix/trunk/dependencymanager: cnf/localrepo/ cnf/releaserepo/ org.apache.felix.dependencymanager.annotation/ org.apache.felix.dependencymanager.annotation/src/org/apache/felix/dm/annotation/api/ org.apache.felix.depend... Date: Mon, 06 Feb 2017 14:37:51 -0000 To: commits@felix.apache.org From: pderop@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20170206143753.16AF73A23EC@svn01-us-west.apache.org> archived-at: Mon, 06 Feb 2017 14:37:56 -0000 Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AdapterAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AdapterAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AdapterAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AdapterAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -32,6 +32,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class AdapterAnnotationTest extends TestBase { /** * Check if an adapter gets injected with its adaptee using default auto config mode. Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -32,6 +32,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class AspectAnnotationTest extends TestBase { public void testAspectChain() throws Throwable { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -30,9 +30,10 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class AspectLifecycleAnnotationTest extends TestBase { - public void testAnnotatedAspect() { + public void testAnnotatedAspect() { Ensure e = new Ensure(); // Provide the Sequencer server to the ServiceProvider service ServiceRegistration sr1 = register(e, ServiceProvider.ENSURE); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleWithDynamicProxyAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleWithDynamicProxyAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleWithDynamicProxyAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/AspectLifecycleWithDynamicProxyAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -30,6 +30,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class AspectLifecycleWithDynamicProxyAnnotationTest extends TestBase { public void testAnnotatedAspect() { Ensure e = new Ensure(); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/BundleDependencyAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/BundleDependencyAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/BundleDependencyAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/BundleDependencyAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -29,6 +29,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class BundleDependencyAnnotationTest extends TestBase { /** Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CompositeAnnotationsTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CompositeAnnotationsTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CompositeAnnotationsTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/CompositeAnnotationsTest.java Mon Feb 6 14:37:49 2017 @@ -30,6 +30,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class CompositeAnnotationsTest extends TestBase { public void testComposite() { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ConfigurationProxyTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ConfigurationProxyTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ConfigurationProxyTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ConfigurationProxyTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class ConfigurationProxyTest extends TestBase { /** * Validates ServiceDependency method signatures. 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=1781908&r1=1781907&r2=1781908&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 Mon Feb 6 14:37:49 2017 @@ -31,6 +31,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class ExtraServicePropertiesTest extends TestBase { /** Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/FELIX5337Test.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/FELIX5337Test.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/FELIX5337Test.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/FELIX5337Test.java Mon Feb 6 14:37:49 2017 @@ -27,6 +27,7 @@ import org.osgi.framework.ServiceRegistr /** * Test test validates that we can lookup ALL existing services using annotation, and "(objectClass=*)" filter. */ +@SuppressWarnings("rawtypes") public class FELIX5337Test extends TestBase { public void testCatchAllServicesUsingAnnotation() { Ensure e = new Ensure(); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4050Test.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4050Test.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4050Test.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4050Test.java Mon Feb 6 14:37:49 2017 @@ -30,6 +30,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class Felix4050Test extends TestBase { public void testFelix4050() { Ensure e = new Ensure(); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4357Test.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4357Test.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4357Test.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix4357Test.java Mon Feb 6 14:37:49 2017 @@ -29,6 +29,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class Felix4357Test extends TestBase { public void testSingleProperty() { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix5236Test.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix5236Test.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix5236Test.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/Felix5236Test.java Mon Feb 6 14:37:49 2017 @@ -29,6 +29,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class Felix5236Test extends TestBase { public void testPropertiesWithTypes() { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/InheritedAnnotationsTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/InheritedAnnotationsTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/InheritedAnnotationsTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/InheritedAnnotationsTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class InheritedAnnotationsTest extends TestBase { public void testInheritedAnnotation() throws Throwable { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MethodSignaturesTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MethodSignaturesTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MethodSignaturesTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MethodSignaturesTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class MethodSignaturesTest extends TestBase { /** * Validates ServiceDependency method signatures. Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MultipleAnnotationsTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MultipleAnnotationsTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MultipleAnnotationsTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/MultipleAnnotationsTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class MultipleAnnotationsTest extends TestBase { public void testMultipleAnnotations() { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/OptionalConfigurationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/OptionalConfigurationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/OptionalConfigurationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/OptionalConfigurationTest.java Mon Feb 6 14:37:49 2017 @@ -23,6 +23,7 @@ import org.apache.felix.dm.itest.util.Te import org.apache.felix.dm.runtime.itest.components.OptionalConfiguration; import org.osgi.framework.ServiceRegistration; +@SuppressWarnings("rawtypes") public class OptionalConfigurationTest extends TestBase { public void testOptionalConfig() throws Throwable { Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PropagateAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PropagateAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PropagateAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/PropagateAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class PropagateAnnotationTest extends TestBase { public void testServiceDependencyPropagate() { 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=1781908&r1=1781907&r2=1781908&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 Mon Feb 6 14:37:49 2017 @@ -32,6 +32,7 @@ import org.osgi.framework.ServiceRegistr /** * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class PublisherAnnotationTest extends TestBase { /** Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ResourceAnnotationTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ResourceAnnotationTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ResourceAnnotationTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/ResourceAnnotationTest.java Mon Feb 6 14:37:49 2017 @@ -28,6 +28,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class ResourceAnnotationTest extends TestBase { /** Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/SimpleAnnotationsTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/SimpleAnnotationsTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/SimpleAnnotationsTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime.itest/src/org/apache/felix/dm/runtime/itest/tests/SimpleAnnotationsTest.java Mon Feb 6 14:37:49 2017 @@ -29,6 +29,7 @@ import org.osgi.framework.ServiceRegistr * * @author Felix Project Team */ +@SuppressWarnings("rawtypes") public class SimpleAnnotationsTest extends TestBase { public void testSimpleAnnotations() throws Throwable { 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=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/bnd.bnd Mon Feb 6 14:37:49 2017 @@ -18,12 +18,10 @@ Bundle-Version: 4.0.4 -buildpath: \ osgi.core;version=4.2,\ osgi.cmpn;version=4.2,\ - org.apache.felix.dependencymanager;version=latest,\ - de.twentyeleven.skysail.org.json-osgi;version=20080701.0 + org.apache.felix.dependencymanager;version=latest Bundle-Activator:org.apache.felix.dm.runtime.Activator Private-Package: \ - org.apache.felix.dm.runtime,\ - org.json + org.apache.felix.dm.runtime Export-Package: \ org.apache.felix.dm.runtime.api Provide-Capability: osgi.extender; osgi.extender="org.apache.felix.dependencymanager.runtime";\ 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=1781908&r1=1781907&r2=1781908&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 Mon Feb 6 14:37:49 2017 @@ -86,6 +86,13 @@ public abstract class AbstractBuilder if (componentField != null) { c.setAutoConfig(Component.class, componentField); + } + + // See if Service Registration must be auto configured + String registrationField = srvMeta.getString(Params.registrationField, null); + if (registrationField != null) + { + c.setAutoConfig(ServiceRegistration.class, registrationField); } // Now, if the component has a @Started annotation, then add our component state listener, 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=1781908&r1=1781907&r2=1781908&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 Mon Feb 6 14:37:49 2017 @@ -74,17 +74,8 @@ public class AspectServiceBuilder extend } else { - if (added != null || changed != null || removed != null || swap != null) - { - c = dm.createAspectService(serviceInterface, serviceFilter, ranking, added, changed, removed, swap) - .setServiceProperties(aspectProperties); - } - else - { - c = dm.createAspectService(serviceInterface, serviceFilter, ranking) - .setServiceProperties(aspectProperties); - } - + c = dm.createAspectService(serviceInterface, serviceFilter, ranking, null, added, changed, removed, swap) + .setServiceProperties(aspectProperties); } setCommonServiceParams(c, srvMeta); 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=1781908&r1=1781907&r2=1781908&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 Mon Feb 6 14:37:49 2017 @@ -104,17 +104,18 @@ public class DependencyBuilder String autoConfigField = m_metaData.getString(Params.autoConfig, null); boolean required = "true".equals(m_metaData.getString(Params.required, "true")); boolean propagate = "true".equals(m_metaData.getString(Params.propagate, "false")); + boolean dereference = "true".equals(m_metaData.getString(Params.dereference, "true")); Dependency dp = createServiceDependency(dm, serviceClass, serviceFilter, defaultServiceImplClass, added, changed, - removed, autoConfigField, timeout, required, propagate); + removed, autoConfigField, timeout, required, propagate, dereference); return dp; } private Dependency createServiceDependency(DependencyManager dm, Class serviceClass, String serviceFilter, Class defaultServiceImplClass, String added, String changed, String removed, String autoConfigField, long timeout, boolean required, - boolean propagate) + boolean propagate, boolean dereference) { ServiceDependency sd = timeout != -1 ? dm.createTemporalServiceDependency(timeout) : dm.createServiceDependency(); @@ -134,6 +135,7 @@ public class DependencyBuilder } sd.setPropagate(propagate); + sd.setDereference(dereference); return sd; } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DescriptorParser.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DescriptorParser.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DescriptorParser.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/DescriptorParser.java Mon Feb 6 14:37:49 2017 @@ -25,7 +25,6 @@ import java.util.List; import java.util.Map; import org.apache.felix.dm.DependencyManager; -import org.json.JSONObject; import org.osgi.framework.Bundle; /** @@ -51,15 +50,9 @@ public class DescriptorParser // The first line is a Service Component (a Service, an Aspect Service, etc ...) line = reader.readLine(); Log.instance().debug("DescriptorParser: parsing service %s", line); - JSONObject json = new JSONObject(line); - JSONMetaData serviceMetaData = new JSONMetaData(json); + JSONMetaData serviceMetaData = new JSONMetaData(line); - String type = (String) json.get("type"); - if (type == null) - { - throw new IllegalArgumentException("Invalid descriptor" - + ": no \"type\" parameter found in first line"); - } + String type = serviceMetaData.getString(Params.type); AbstractBuilder builder = m_builders.get(type); if (builder == null) @@ -73,8 +66,7 @@ public class DescriptorParser while ((line = reader.readLine()) != null) { Log.instance().debug("Parsing dependency %s", line); - JSONObject dep = new JSONObject(line); - serviceDependencies.add(new JSONMetaData(dep)); + serviceDependencies.add(new JSONMetaData(line)); } // and Invoke the builder Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/FactoryConfigurationAdapterServiceBuilder.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/FactoryConfigurationAdapterServiceBuilder.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/FactoryConfigurationAdapterServiceBuilder.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/FactoryConfigurationAdapterServiceBuilder.java Mon Feb 6 14:37:49 2017 @@ -52,17 +52,11 @@ public class FactoryConfigurationAdapter Dictionary properties = srvMeta.getDictionary(Params.properties, null); boolean propagate = "true".equals(srvMeta.getString(Params.propagate, "false")); String configProxyClassName = srvMeta.getString(Params.configType, null); + Component c = null; - if (configProxyClassName != null) - { - Class configProxyClass = b.loadClass(configProxyClassName); - c = dm.createFactoryConfigurationAdapterService(factoryPid, updated, propagate, configProxyClass); - } - else - { - c = dm.createFactoryConfigurationAdapterService(factoryPid, updated, propagate); - } + Class configProxyClass = configProxyClassName != null ? b.loadClass(configProxyClassName) : null; + c = dm.createFactoryConfigurationAdapterService(factoryPid, updated, propagate, null, configProxyClass); c.setInterface(provides, properties); String factoryMethod = srvMeta.getString(Params.factoryMethod, null); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JSONMetaData.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JSONMetaData.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JSONMetaData.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JSONMetaData.java Mon Feb 6 14:37:49 2017 @@ -22,14 +22,11 @@ import java.lang.reflect.Array; import java.util.Dictionary; import java.util.HashMap; import java.util.Hashtable; -import java.util.Iterator; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; +import java.util.List; +import java.util.Map; /** - * Thsi class represents the parsed data found from meta-inf dependencymanager descriptors. + * This class represents the parsed data found from meta-inf dependencymanager descriptors. * * @author Felix Project Team */ @@ -65,65 +62,66 @@ public class JSONMetaData implements Met * } * } * - * @param jso the JSON object that corresponds to a dependency manager descriptor entry line. - * @throws JSONException + * @param input the JSON string that corresponds to a dependency manager descriptor entry line. + * @throws Exception */ @SuppressWarnings("unchecked") - public JSONMetaData(JSONObject jso) throws JSONException + public JSONMetaData(String input) throws Exception { - // Decode json object into our internal map. - Iterator it = jso.keys(); - while (it.hasNext()) - { - String key = it.next(); - Object value = jso.get(key); - if (value instanceof String) - { + JsonReader jreader = new JsonReader(input); + Map m = jreader.getParsed(); + + for (Map.Entry e : m.entrySet()) + { + String key = e.getKey(); + Object value = e.getValue(); + if (value instanceof String) + { m_metadata.put(key, value); - } - else if (value instanceof JSONArray) - { - m_metadata.put(key, decodeStringArray((JSONArray) value)); - } - else if (value instanceof JSONObject) - { - m_metadata.put(key, parseProperties((JSONObject) value)); - } + } else if (value instanceof List) + { + // String array + m_metadata.put(key, decodeStringArray((List) value)); + } else if (value instanceof Map) + { + // properties + m_metadata.put(key, parseProperties((Map) value)); + } } } - private Hashtable parseProperties(JSONObject properties) throws JSONException { + @SuppressWarnings("unchecked") + private Hashtable parseProperties(Map properties) throws Exception { Hashtable parsedProps = new Hashtable(); - @SuppressWarnings("unchecked") - Iterator it = properties.keys(); - while (it.hasNext()) - { - String key = it.next(); - Object value = properties.get(key); + + for (Map.Entry entry : properties.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof String) { // This property type is a simple string - parsedProps.put(key, value); + parsedProps.put(key, value); } - else if (value instanceof JSONArray) + else if (value instanceof List) { // This property type is a simple string array - parsedProps.put(key, decodeStringArray((JSONArray) value)); + parsedProps.put(key, decodeStringArray((List) value)); } - else if (value instanceof JSONObject) + else if (value instanceof Map) { // This property type is a typed value, encoded as a JSONObject with two keys: "type"/"value" - JSONObject json = ((JSONObject) value); - String type = json.getString("type"); + Map json = ((Map) value); + String type = json.get("type").toString(); Object typeValue = json.get("value"); if (type == null) { - throw new JSONException("missing type attribute in json metadata for key " + key); + throw new Exception("missing type attribute in json metadata for key " + key); } if (typeValue == null) { - throw new JSONException("missing type value attribute in json metadata for key " + key); + throw new Exception("missing type value attribute in json metadata for key " + key); } Class typeClass; @@ -133,24 +131,25 @@ public class JSONMetaData implements Met } catch (ClassNotFoundException e) { - throw new JSONException("invalid type attribute (" + type + ") in json metadata for key " + throw new Exception("invalid type attribute (" + type + ") in json metadata for key " + key); } - if (typeValue instanceof JSONArray) + if (typeValue instanceof List) { - parsedProps.put(key, toPrimitiveTypeArray(typeClass, (JSONArray) typeValue)); + parsedProps.put(key, toPrimitiveTypeArray(typeClass, (List) typeValue)); } - else + else { parsedProps.put(key, toPrimitiveType(typeClass, typeValue.toString())); } } } + return parsedProps; } - private Object toPrimitiveType(Class type, String value) throws JSONException { + private Object toPrimitiveType(Class type, String value) throws Exception { if (type.equals(String.class)) { return value; @@ -189,71 +188,71 @@ public class JSONMetaData implements Met } else { - throw new JSONException("invalid type (" + type + ") attribute in json metadata"); + throw new Exception("invalid type (" + type + ") attribute in json metadata"); } } - private Object toPrimitiveTypeArray(Class type, JSONArray array) throws JSONException { - int len = array.length(); + private Object toPrimitiveTypeArray(Class type, List array) throws Exception { + int len = array.size(); Object result = Array.newInstance(type, len); if (type.equals(String.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, array.getString(i)); + Array.set(result, i, array.get(i).toString()); } } else if (type.equals(Long.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Long.valueOf(array.getString(i))); + Array.set(result, i, Long.valueOf(array.get(i).toString())); } } else if (type.equals(Double.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Double.valueOf(array.getString(i))); + Array.set(result, i, Double.valueOf(array.get(i).toString())); } } else if (type.equals(Float.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Float.valueOf(array.getString(i))); + Array.set(result, i, Float.valueOf(array.get(i).toString())); } } else if (type.equals(Integer.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Integer.valueOf(array.getString(i))); + Array.set(result, i, Integer.valueOf(array.get(i).toString())); } } else if (type.equals(Byte.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Byte.valueOf(array.getString(i))); + Array.set(result, i, Byte.valueOf(array.get(i).toString())); } } else if (type.equals(Character.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Character.valueOf((char) Integer.parseInt(array.getString(i)))); + Array.set(result, i, Character.valueOf((char) Integer.parseInt(array.get(i).toString()))); } } else if (type.equals(Boolean.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Boolean.valueOf(array.getString(i))); + Array.set(result, i, Boolean.valueOf(array.get(i).toString())); } } else if (type.equals(Short.class)) { for (int i = 0; i < len; i ++) { - Array.set(result, i, Short.valueOf(array.getString(i))); + Array.set(result, i, Short.valueOf(array.get(i).toString())); } } else { - throw new JSONException("invalid type (" + type + ") attribute in json metadata"); + throw new Exception("invalid type (" + type + ") attribute in json metadata"); } return result; } @@ -269,7 +268,7 @@ public class JSONMetaData implements Met clone.m_metadata = (HashMap) m_metadata.clone(); return clone; } - + public String getString(Params key) { Object value = m_metadata.get(key.toString()); @@ -465,18 +464,8 @@ public class JSONMetaData implements Met /** * Decodes a JSONArray into a String array (all JSON array values are supposed to be strings). */ - private String[] decodeStringArray(JSONArray array) throws JSONException + private String[] decodeStringArray(List array) { - String[] arr = new String[array.length()]; - for (int i = 0; i < array.length(); i++) - { - Object value = array.get(i); - if (!(value instanceof String)) - { - throw new IllegalArgumentException("JSON array is not an array of Strings: " + array); - } - arr[i] = value.toString(); - } - return arr; + return array.stream().map(x -> x.toString()).toArray(String[]::new); } } Added: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JsonReader.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JsonReader.java?rev=1781908&view=auto ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JsonReader.java (added) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/JsonReader.java Mon Feb 6 14:37:49 2017 @@ -0,0 +1,290 @@ +/* + * 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; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Stack; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * A very small JSON parser. + * Code adapted from the org.apache.felix.serializer.impl.json.JsonParser.java, + * from the Apache Felix Converter proejct. + * + * The JSON input is parsed into an object structure in the following way: + *
    + *
  • Object names are represented as a {@link String}. + *
  • String values are represented as a {@link String}. + *
  • Numeric values without a decimal separator are represented as a {@link Long}. + *
  • Numeric values with a decimal separator are represented as a {@link Double}. + *
  • Boolean values are represented as a {@link Boolean}. + *
  • Nested JSON objects are parsed into a {@link java.util.Map Map<String, Object>}. + *
  • JSON lists are parsed into a {@link java.util.List} which may contain any of the above values. + *
+ */ +public class JsonReader { + private static final Pattern KEY_VALUE_PATTERN = Pattern.compile("^\\s*[\"](.+?)[\"]\\s*[:]\\s*(.+)$"); + + private enum Scope { QUOTE, CURLY, BRACKET; + static Scope getScope(char c) { + switch (c) { + case '"': + return QUOTE; + case '[': + case ']': + return BRACKET; + case '{': + case '}': + return CURLY; + default: + return null; + } + } + } + + static class Pair { + final K key; + final V value; + + Pair(K k, V v) { + key = k; + value = v; + } + } + + private final Map parsed; + + public JsonReader(CharSequence json) { + String str = json.toString(); + str = str.trim().replace('\n', ' '); + parsed = parseObject(str); + } + + public JsonReader(InputStream is) throws IOException { + this(readStreamAsString(is)); + } + + public Map getParsed() { + return parsed; + } + + private static Pair parseKeyValue(String jsonKeyValue) { + Matcher matcher = KEY_VALUE_PATTERN.matcher(jsonKeyValue); + if (!matcher.matches() || matcher.groupCount() < 2) { + throw new IllegalArgumentException("Malformatted JSON key-value pair: " + jsonKeyValue); + } + + return new Pair<>(matcher.group(1), parseValue(matcher.group(2))); + } + + private static Object parseValue(String jsonValue) { + jsonValue = jsonValue.trim(); + + switch (jsonValue.charAt(0)) { + case '\"': + if (!jsonValue.endsWith("\"")) + throw new IllegalArgumentException("Malformatted JSON string: " + jsonValue); + + return jsonValue.substring(1, jsonValue.length() - 1); + case '[': + List entries = new ArrayList<>(); + for (String v : parseListValuesRaw(jsonValue)) { + entries.add(parseValue(v)); + } + return entries; + case '{': + return parseObject(jsonValue); + case 't': + case 'T': + case 'f': + case 'F': + return Boolean.parseBoolean(jsonValue); + case 'n': + case 'N': + return null; + default: + if (jsonValue.contains(".")) { + return Double.parseDouble(jsonValue); + } + return Long.parseLong(jsonValue); + } + } + + private static Map parseObject(String jsonObject) { + if (!(jsonObject.startsWith("{") && jsonObject.endsWith("}"))) + throw new IllegalArgumentException("Malformatted JSON object: " + jsonObject); + + Map values = new HashMap<>(); + + jsonObject = jsonObject.substring(1, jsonObject.length() - 1).trim(); + if (jsonObject.length() == 0) + return values; + + for (String element : parseKeyValueListRaw(jsonObject)) { + Pair pair = parseKeyValue(element); + values.put(pair.key, pair.value); + } + + return values; + } + + private static List parseKeyValueListRaw(String jsonKeyValueList) { + if (jsonKeyValueList.trim().isEmpty()) + return Collections.emptyList(); + jsonKeyValueList = jsonKeyValueList + ","; // append comma to simplify parsing + List elements = new ArrayList<>(); + + int i=0; + int start=0; + Stack scopeStack = new Stack<>(); + while (i < jsonKeyValueList.length()) { + char curChar = jsonKeyValueList.charAt(i); + switch (curChar) { + case '"': + if (i > 0 && jsonKeyValueList.charAt(i-1) == '\\') { + // it's escaped, ignore for now + } else { + if (!scopeStack.empty() && scopeStack.peek() == Scope.QUOTE) { + scopeStack.pop(); + } else { + scopeStack.push(Scope.QUOTE); + } + } + break; + case '[': + case '{': + if ((scopeStack.empty() ? null : scopeStack.peek()) == Scope.QUOTE) { + // inside quotes, ignore + } else { + scopeStack.push(Scope.getScope(curChar)); + } + break; + case ']': + case '}': + Scope curScope = scopeStack.empty() ? null : scopeStack.peek(); + if (curScope == Scope.QUOTE) { + // inside quotes, ignore + } else { + Scope newScope = Scope.getScope(curChar); + if (curScope == newScope) { + scopeStack.pop(); + } else { + throw new IllegalArgumentException("Unbalanced closing " + + curChar + " in: " + jsonKeyValueList); + } + } + break; + case ',': + if (scopeStack.empty()) { + elements.add(jsonKeyValueList.substring(start, i)); + start = i+1; + } + break; + } + + i++; + } + return elements; + } + + private static List parseListValuesRaw(String jsonList) { + if (!(jsonList.startsWith("[") && jsonList.endsWith("]"))) + throw new IllegalArgumentException("Malformatted JSON list: " + jsonList); + + jsonList = jsonList.substring(1, jsonList.length() - 1); + return parseKeyValueListRaw(jsonList); + } + + private static String readStreamAsString(InputStream is) throws IOException { + byte [] bytes = readStream(is); + if (bytes.length < 5) + // need at least 5 bytes to establish the encoding + throw new IllegalArgumentException("Malformatted JSON"); + + int offset = 0; + if ((bytes[0] == -1 && bytes[1] == -2) + || (bytes[0] == -2 && bytes[1] == -1)) { + // Skip UTF16/UTF32 Byte Order Mark (BOM) + offset = 2; + } + + /* Infer the encoding as described in section 3 of http://www.ietf.org/rfc/rfc4627.txt + * which reads: + * Encoding + * + * JSON text SHALL be encoded in Unicode. The default encoding is + * UTF-8. + * + * Since the first two characters of a JSON text will always be ASCII + * characters [RFC0020], it is possible to determine whether an octet + * stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking + * at the pattern of nulls in the first four octets. + * + * 00 00 00 xx UTF-32BE + * 00 xx 00 xx UTF-16BE + * xx 00 00 00 UTF-32LE + * xx 00 xx 00 UTF-16LE + * xx xx xx xx UTF-8 + */ + String encoding; + if (bytes[offset + 2] == 0) { + if (bytes[offset + 1] != 0) { + encoding = "UTF-16"; + } else { + encoding = "UTF-32"; + } + } else if (bytes[offset + 1] == 0) { + encoding = "UTF-16"; + } else { + encoding = "UTF-8"; + } + return new String(bytes, encoding); + } + + public static byte [] readStream(InputStream is) throws IOException { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] bytes = new byte[8192]; + + int length = 0; + int offset = 0; + + while ((length = is.read(bytes, offset, bytes.length - offset)) != -1) { + offset += length; + + if (offset == bytes.length) { + baos.write(bytes, 0, bytes.length); + offset = 0; + } + } + if (offset != 0) { + baos.write(bytes, 0, offset); + } + return baos.toByteArray(); + } finally { + is.close(); + } + } +} \ No newline at end of file Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.runtime/src/org/apache/felix/dm/runtime/Params.java Mon Feb 6 14:37:49 2017 @@ -63,7 +63,9 @@ public enum Params bundleContextField, dependencyManagerField, componentField, + registrationField, registered, unregistered, - configType + configType, + dereference } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/bnd.bnd Mon Feb 6 14:37:49 2017 @@ -15,14 +15,14 @@ # limitations under the License. # Bundle-Version: 1.0.0.${tstamp} --buildpath: \ - osgi.core;version=4.2,\ - osgi.cmpn;version=4.2,\ +-buildpath: \ biz.aQute.bnd.annotation,\ org.apache.felix.dependencymanager;version=latest,\ org.apache.felix.gogo.runtime;version=latest,\ org.apache.felix.dependencymanager.runtime;version=latest,\ - org.apache.felix.dependencymanager.annotation;version=latest + org.apache.felix.dependencymanager.annotation;version=latest,\ + osgi.core;version=6.0,\ + osgi.cmpn;version=6.0 -sub: \ *.bnd -metatype: * Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryAspectConfiguration.java Mon Feb 6 14:37:49 2017 @@ -20,8 +20,8 @@ package org.apache.felix.dependencymanag import java.util.List; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; /** * This interface describes the configuration for our DictionaryAspect component. We are using the bnd metatype @@ -29,9 +29,11 @@ import aQute.bnd.annotation.metatype.Met * * @author Felix Project Team */ -@OCD(name="Spell Checker Aspect Dictionary", - description = "Declare here the list of english words to be added into the default english dictionary") +@ObjectClassDefinition( + name="Spell Checker Aspect Dictionary", + description = "Declare here the list of english words to be added into the default english dictionary", + pid="org.apache.felix.dependencymanager.samples.dictionary.annot.DictionaryAspectConfiguration") public interface DictionaryAspectConfiguration { - @AD(description = "Dictionary aspect words") + @AttributeDefinition(description = "Dictionary aspect words") List words(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/annot/DictionaryConfiguration.java Mon Feb 6 14:37:49 2017 @@ -20,8 +20,8 @@ package org.apache.felix.dependencymanag import java.util.List; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; /** * This interface describes the configuration for our DictionaryImpl component. We are using the bnd metatype @@ -29,13 +29,14 @@ import aQute.bnd.annotation.metatype.Met * * @author Felix Project Team */ -@OCD(name="Spell Checker Dictionary", - factory = true, - description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language") +@ObjectClassDefinition( + name="Spell Checker Dictionary", + factoryPid = "org.apache.felix.dependencymanager.samples.dictionary.annot.DictionaryConfiguration", + description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language") public interface DictionaryConfiguration { - @AD(description = "Describes the dictionary language", deflt = "en") + @AttributeDefinition(description = "Describes the dictionary language", defaultValue = "en") String lang(); - @AD(description = "Declare here the list of words supported by this dictionary. This properties starts with a Dot and won't be propagated with Dictionary OSGi service properties") + @AttributeDefinition(description = "Declare here the list of words supported by this dictionary. This properties starts with a Dot and won't be propagated with Dictionary OSGi service properties") List words(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryAspectConfiguration.java Mon Feb 6 14:37:49 2017 @@ -20,8 +20,8 @@ package org.apache.felix.dependencymanag import java.util.List; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; /** * This interface describes the configuration for our DictionaryAspect component. We are using the bnd metatype @@ -29,9 +29,11 @@ import aQute.bnd.annotation.metatype.Met * * @author Felix Project Team */ -@OCD(name="Spell Checker Aspect Dictionary", - description = "Declare here the list of english words to be added into the default english dictionary") +@ObjectClassDefinition( + name="Spell Checker Aspect Dictionary", + description = "Declare here the list of english words to be added into the default english dictionary", + pid="org.apache.felix.dependencymanager.samples.dictionary.api.DictionaryAspectConfiguration") public interface DictionaryAspectConfiguration { - @AD(description = "Dictionary aspect words") + @AttributeDefinition(description = "Dictionary aspect words") List words(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dictionary/api/DictionaryConfiguration.java Mon Feb 6 14:37:49 2017 @@ -20,8 +20,8 @@ package org.apache.felix.dependencymanag import java.util.List; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; /** * This interface describes the configuration for our DictionaryImpl component. We are using the bnd metatype @@ -29,13 +29,13 @@ import aQute.bnd.annotation.metatype.Met * * @author Felix Project Team */ -@OCD(name="Spell Checker Dictionary", - factory = true, +@ObjectClassDefinition(name="Spell Checker Dictionary", + factoryPid = "org.apache.felix.dependencymanager.samples.dictionary.api.DictionaryConfiguration", description = "Declare here some Dictionary instances, allowing to instantiates some DictionaryService services for a given dictionary language") public interface DictionaryConfiguration { - @AD(description = "Describes the dictionary language", deflt = "en") + @AttributeDefinition(description = "Describes the dictionary language", defaultValue = "en") String lang(); - @AD(description = "Declare here the list of words supported by this dictionary.") + @AttributeDefinition(description = "Declare here the list of words supported by this dictionary.") List words(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/annot/DynamicDependencyConfiguration.java Mon Feb 6 14:37:49 2017 @@ -18,26 +18,32 @@ */ package org.apache.felix.dependencymanager.samples.dynamicdep.annot; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.*; /** - * This interface describes the configuration for our DynamicDependencyComponent component. We are using the bnd metatype + * This interface describes the configuration for our DynamicDependencyComponent component. We are using the metatype * annotations, allowing to configure our component from web console. * * @author Felix Project Team */ -@OCD(name = "Dynamic Dependency Configuration", - description = "Declare here the configuration for the DynamicDependency component.") +@ObjectClassDefinition( + name = "Dynamic Dependency Configuration", + description = "Declare here the configuration for the DynamicDependency component.", + pid="org.apache.felix.dependencymanager.samples.dynamicdep.annot.DynamicDependencyConfiguration") public interface DynamicDependencyConfiguration { - @AD(description = "Enter the storage type to use", - deflt = "mapdb", - optionLabels = { "Map DB Storage implementation", "File Storage implementation" }, - optionValues = { "mapdb", "file" }) + @AttributeDefinition(description = "Enter the storage type to use", + defaultValue = "mapdb", + options={ + @Option(label="Map DB Storage implementation", value="mapdb"), + @Option(label="File Storage implementation", value="file") + }) String storageType(); - @AD(description = "Specifies here is the storage dependency is required or not (if false, a null object will be used)", deflt = "true") + @AttributeDefinition( + description = "Specifies here is the storage dependency is required or not (if false, a null object will be used)", + defaultValue = "true") boolean storageRequired(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/dynamicdep/api/DynamicDependencyConfiguration.java Mon Feb 6 14:37:49 2017 @@ -18,24 +18,33 @@ */ package org.apache.felix.dependencymanager.samples.dynamicdep.api; -import aQute.bnd.annotation.metatype.Meta.AD; -import aQute.bnd.annotation.metatype.Meta.OCD; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; +import org.osgi.service.metatype.annotations.Option; /** - * This interface describes the configuration for our DynamicDependencyComponent component. We are using the bnd metatype + * This interface describes the configuration for our DynamicDependencyComponent component. We are using the metatype * annotations, allowing to configure our component from web console. * * @author Felix Project Team */ -@OCD(name = "Dynamic Dependency Configuration", - description = "Declare here the configuration for the DynamicDependency component.") +@ObjectClassDefinition( + name = "Dynamic Dependency Configuration", + description = "Declare here the configuration for the DynamicDependency component.", + pid="org.apache.felix.dependencymanager.samples.dynamicdep.api.DynamicDependencyConfiguration") public interface DynamicDependencyConfiguration { - @AD(description = "Enter the storage type to use", - deflt = "mapdb", - optionLabels= {"Map DB Storage implementation", "File Storage implementation"}, - optionValues={"mapdb", "file"}) + + @AttributeDefinition(description = "Enter the storage type to use", + defaultValue = "mapdb", + options={ + @Option(label="Map DB Storage implementation", value="mapdb"), + @Option(label="File Storage implementation", value="file") + }) String storageType(); - @AD(description = "Specifies here is the storage dependency is required or not (if false, a null object will be used)", deflt = "true") + @AttributeDefinition( + description = "Specifies here is the storage dependency is required or not (if false, a null object will be used)", + defaultValue = "true") boolean storageRequired(); + } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/bnd.bnd URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/bnd.bnd?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/bnd.bnd (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/bnd.bnd Mon Feb 6 14:37:49 2017 @@ -14,13 +14,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # --buildpath: \ - osgi.core;version=4.2,\ - osgi.cmpn;version=4.2,\ +-buildpath: \ org.apache.felix.gogo.runtime;version=0.10,\ org.mockito.mockito-all;version=1.9,\ org.apache.felix.dependencymanager;version=latest,\ - ${junit} + ${junit},\ + osgi.core;version=6.0,\ + osgi.cmpn;version=6.0 Private-Package: \ org.apache.felix.dm.shell Bundle-Activator:org.apache.felix.dm.shell.Activator Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/test/test/DMCommandTest.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/test/test/DMCommandTest.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/test/test/DMCommandTest.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager.shell/test/test/DMCommandTest.java Mon Feb 6 14:37:49 2017 @@ -29,7 +29,7 @@ import java.io.ByteArrayOutputStream; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.PrintStream; -import java.util.Properties; +import java.util.Hashtable; import javax.crypto.Cipher; @@ -259,7 +259,7 @@ public class DMCommandTest { Bundle bundle1 = mock(Bundle.class); when(bundle1.getState()).thenReturn(Bundle.RESOLVED); when(bundle1.getSymbolicName()).thenReturn("BadBundle"); - Properties headers = new Properties(); + Hashtable headers = new Hashtable<>(); when(bundle1.getHeaders()).thenReturn(headers); setupBundles(bundle1); @@ -277,7 +277,7 @@ public class DMCommandTest { Bundle bundle1 = mock(Bundle.class); when(bundle1.getState()).thenReturn(Bundle.RESOLVED); when(bundle1.getSymbolicName()).thenReturn("BadBundle"); - Properties headers = new Properties(); + Hashtable headers = new Hashtable<>(); headers.put("Fragment-Host", "some value"); when(bundle1.getHeaders()).thenReturn(headers); setupBundles(bundle1); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/bnd.bnd Mon Feb 6 14:37:49 2017 @@ -15,11 +15,12 @@ # limitations under the License. # -buildpath: \ - osgi.core;version=4.2,\ - osgi.cmpn;version=4.2,\ org.mockito.mockito-all;version=1.9,\ ${junit},\ - biz.aQute.bndlib;version=3.0 + biz.aQute.bndlib;version=3.0,\ + osgi.core;version=6.0,\ + osgi.cmpn;version=6.0,\ + osgi.annotation;version=6.0 Private-Package: \ org.apache.felix.dm.impl,\ org.apache.felix.dm.impl.index,\ Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Component.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Component.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Component.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Component.java Mon Feb 6 14:37:49 2017 @@ -150,6 +150,7 @@ public interface Component { * * @return the service registration */ + @SuppressWarnings("rawtypes") public ServiceRegistration getServiceRegistration(); /** Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ComponentState.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ComponentState.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ComponentState.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ComponentState.java Mon Feb 6 14:37:49 2017 @@ -49,6 +49,12 @@ public enum ComponentState { STARTING, /** + * The component has been called in its started callback. At this point, the component has not yet been registered + * in the service registry. + */ + STARTED, + + /** * The component is started. At this point, the component:

*

    *
  • has been called in its start callback Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ConfigurationDependency.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ConfigurationDependency.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ConfigurationDependency.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ConfigurationDependency.java Mon Feb 6 14:37:49 2017 @@ -22,7 +22,7 @@ import java.util.Collection; import java.util.Dictionary; import java.util.Map; -import aQute.bnd.annotation.ProviderType; +import org.osgi.annotation.versioning.ProviderType; /** * Configuration dependency that can track the availability of a (valid) configuration. To use Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/FilterIndex.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/FilterIndex.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/FilterIndex.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/FilterIndex.java Mon Feb 6 14:37:49 2017 @@ -38,7 +38,8 @@ public interface FilterIndex { /** Determines if the combination of class and filter is applicable for this filter index. */ public boolean isApplicable(String clazz, String filter); /** Returns all service references that match the specified class and filter. Never returns null. */ - public List getAllServiceReferences(String clazz, String filter); + @SuppressWarnings("rawtypes") + public List getAllServiceReferences(String clazz, String filter); /** Invoked whenever a service event occurs. */ public void serviceChanged(ServiceEvent event); /** Adds a service listener to this filter index. */ Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Logger.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Logger.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Logger.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/Logger.java Mon Feb 6 14:37:49 2017 @@ -47,6 +47,7 @@ import org.osgi.service.log.LogService; * * @author Felix Project Team */ +@SuppressWarnings({"rawtypes", "unchecked"}) public class Logger implements ServiceListener { private static final String LOG_SINGLE_CONTEXT = "org.apache.felix.dependencymanager.singleContextLog"; public static final int LOG_ERROR = 1; @@ -59,7 +60,7 @@ public class Logger implements ServiceLi private final static int LOGGER_OBJECT_IDX = 0; private final static int LOGGER_METHOD_IDX = 1; private static final String ENABLED_LOG_LEVEL = "org.apache.felix.dependencymanager.loglevel"; - private ServiceReference m_logRef = null; + private ServiceReference m_logRef = null; private Object[] m_logger = null; private int m_enabledLevel = LogService.LOG_WARNING; private String m_debugKey; @@ -172,7 +173,7 @@ public class Logger implements ServiceLi * there will never be a log service present since the system bundle is * started before every other bundle. */ - private synchronized void startListeningForLogService() { + private synchronized void startListeningForLogService() { try { // add a service listener for log services, carefully avoiding any code dependency on it m_context.addServiceListener(this, "(objectClass=org.osgi.service.log.LogService)"); Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ServiceDependency.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ServiceDependency.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ServiceDependency.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/ServiceDependency.java Mon Feb 6 14:37:49 2017 @@ -18,6 +18,7 @@ */ package org.apache.felix.dm; +import org.osgi.annotation.versioning.ProviderType; import org.osgi.framework.ServiceReference; /** @@ -25,6 +26,7 @@ import org.osgi.framework.ServiceReferen * * @author Felix Project Team */ +@ProviderType public interface ServiceDependency extends Dependency, ComponentDependencyDeclaration { /** * Sets the callbacks for this service. These callbacks can be used as hooks whenever a @@ -244,7 +246,8 @@ public interface ServiceDependency exten * @param serviceReference the service reference to track * @return this service dependency */ - public ServiceDependency setService(Class serviceName, ServiceReference serviceReference); + @SuppressWarnings("rawtypes") + public ServiceDependency setService(Class serviceName, ServiceReference serviceReference); /** * Sets the default implementation for this service dependency. You can use this to supply @@ -261,6 +264,8 @@ public interface ServiceDependency exten /** * Sets propagation of the service dependency properties to the provided service properties. Any additional * service properties specified directly are merged with these. + * + * @param propagate true if the dependency service properties should be propagated to the component service properties. */ public ServiceDependency setPropagate(boolean propagate); @@ -282,4 +287,15 @@ public interface ServiceDependency exten * @return this service dependency. */ public ServiceDependency setDebug(String debugKey); + + /** + * Configures whether or not this dependency should internally obtain the service object for all tracked service references. + * + * By default, DM internally dereferences all discovered service references (using + * BundleContext.getService(ServiceReference ref) methods. + * However, sometimes, your callback only needs the ServiceReference, and sometimes you don't want to dereference the service. + * So, in this case you can use the setDereference(false) method in order to tell to DM + * that it should never internally dereference the service dependency internally. + */ + public ServiceDependency setDereference(boolean dereferenceServiceInternally); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/ComponentContext.java Mon Feb 6 14:37:49 2017 @@ -22,14 +22,14 @@ import java.util.Dictionary; import java.util.List; import java.util.Set; import java.util.concurrent.Executor; +import java.util.function.Supplier; import org.apache.felix.dm.Component; import org.apache.felix.dm.Logger; +import org.osgi.annotation.versioning.ProviderType; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; -import aQute.bnd.annotation.ProviderType; - /** * This interface is the entry point to the Component implementation context. * It is used by all DependencyManager Dependency implementations. @@ -134,6 +134,16 @@ public interface ComponentContext extend public void invokeCallbackMethod(Object[] instances, String methodName, Class[][] signatures, Object[][] parameters, boolean logIfNotFound); /** + * Invokes a callback method on a given set of objects. An error is logged if the callback is not found in any of the object instances. + * @param instances the component instances + * @param methodName the method name + * @param signatures the method signatures (types) + * @param paramsSupplier the supplier for the method parameters + * @param logIfNotFound true if a warning message should be logged in case the callback is not found in any of the object instances. + */ + public void invokeCallback(Object[] instances, String methodName, Class[][] signatures, Supplier[][] paramsSupplier, boolean logIfNotFound); + + /** * Returns the component instances * @return the component instances */ @@ -178,4 +188,10 @@ public interface ComponentContext extend * @return an instance of the given type that wraps the given configuration. */ public T createConfigurationType(Class type, Dictionary config); + + /** + * Instantiates the component instances. + * @return this component context. + */ + public ComponentContext instantiateComponent(); } Modified: felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/packageinfo URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/packageinfo?rev=1781908&r1=1781907&r2=1781908&view=diff ============================================================================== --- felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/packageinfo (original) +++ felix/trunk/dependencymanager/org.apache.felix.dependencymanager/src/org/apache/felix/dm/context/packageinfo Mon Feb 6 14:37:49 2017 @@ -1 +1 @@ -version 4.2.0 +version 4.3.0