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 2017/02/06 14:37:51 UTC
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...
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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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<String, Object> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
@@ -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<String> 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<String, Object> m = jreader.getParsed();
+
+ for (Map.Entry<String, Object> 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<String, Object>) value));
+ }
}
}
- private Hashtable<String, Object> parseProperties(JSONObject properties) throws JSONException {
+ @SuppressWarnings("unchecked")
+ private Hashtable<String, Object> parseProperties(Map<String, Object> properties) throws Exception {
Hashtable<String, Object> parsedProps = new Hashtable<String, Object>();
- @SuppressWarnings("unchecked")
- Iterator<String> it = properties.keys();
- while (it.hasNext())
- {
- String key = it.next();
- Object value = properties.get(key);
+
+ for (Map.Entry<String, Object> 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<String, Object> json = ((Map<String, Object>) 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<String, Object>) 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:
+ * <ul>
+ * <li>Object names are represented as a {@link String}.
+ * <li>String values are represented as a {@link String}.
+ * <li>Numeric values without a decimal separator are represented as a {@link Long}.
+ * <li>Numeric values with a decimal separator are represented as a {@link Double}.
+ * <li>Boolean values are represented as a {@link Boolean}.
+ * <li>Nested JSON objects are parsed into a {@link java.util.Map Map<String, Object>}.
+ * <li>JSON lists are parsed into a {@link java.util.List} which may contain any of the above values.
+ * </ul>
+ */
+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<K, V> {
+ final K key;
+ final V value;
+
+ Pair(K k, V v) {
+ key = k;
+ value = v;
+ }
+ }
+
+ private final Map<String, Object> 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<String, Object> getParsed() {
+ return parsed;
+ }
+
+ private static Pair<String, Object> 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<Object> 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<String, Object> parseObject(String jsonObject) {
+ if (!(jsonObject.startsWith("{") && jsonObject.endsWith("}")))
+ throw new IllegalArgumentException("Malformatted JSON object: " + jsonObject);
+
+ Map<String, Object> values = new HashMap<>();
+
+ jsonObject = jsonObject.substring(1, jsonObject.length() - 1).trim();
+ if (jsonObject.length() == 0)
+ return values;
+
+ for (String element : parseKeyValueListRaw(jsonObject)) {
+ Pair<String, Object> pair = parseKeyValue(element);
+ values.put(pair.key, pair.value);
+ }
+
+ return values;
+ }
+
+ private static List<String> parseKeyValueListRaw(String jsonKeyValueList) {
+ if (jsonKeyValueList.trim().isEmpty())
+ return Collections.emptyList();
+ jsonKeyValueList = jsonKeyValueList + ","; // append comma to simplify parsing
+ List<String> elements = new ArrayList<>();
+
+ int i=0;
+ int start=0;
+ Stack<Scope> 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<String> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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<String> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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<String> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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<String> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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<String> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
-@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<String, String> 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<String, String> 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:<p>
* <ul>
* <li> 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<ServiceReference> getAllServiceReferences(String clazz, String filter);
+ @SuppressWarnings("rawtypes")
+ public List<ServiceReference> 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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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 <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
+@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
+ * <code>BundleContext.getService(ServiceReference ref)</code> 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 <code>setDereference(false)</code> 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> T createConfigurationType(Class<T> 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