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 2014/09/23 00:04:13 UTC
svn commit: r1626911 - in
/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples:
./ src/org/apache/felix/dependencymanager/samples/conf/
src/org/apache/felix/dependencymanager/samples/device/
src/org/apache/felix/...
Author: pderop
Date: Mon Sep 22 22:04:12 2014
New Revision: 1626911
URL: http://svn.apache.org/r1626911
Log:
code cleanup.
Added a sample code showing an adapter example with some "instance bound" dependencies (inspired from
http://www.mail-archive.com/users@felix.apache.org/msg15687.html).
Added:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/device.bnd
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Activator.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Device.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceConsumer.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameter.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameterImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProvider.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProviderImpl.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ThreadPool.java
Removed:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/MyComponent.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceImplementation.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceInterface.java
Modified:
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/bnd.bnd
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Activator.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/Activator.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceConsumer.java
felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/bnd.bnd?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/bnd.bnd (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/bnd.bnd Mon Sep 22 22:04:12 2014
@@ -18,14 +18,15 @@ Bundle-Version: 1.0.0.${tstamp}
org.apache.felix.dependencymanager.samples.hello;version=latest,\
org.apache.felix.dependencymanager.samples.tpool;version=latest,\
org.apache.felix.dependencymanager.samples.conf;version=latest,\
- org.apache.felix.configadmin;version=1.8.0
+ org.apache.felix.configadmin;version=1.8.0,\
+ org.apache.felix.dependencymanager.samples.device;version=latest
Private-Package: \
org.apache.felix.dependencymanager.samples.tpool,\
org.apache.felix.dependencymanager.samples.hello
-runproperties: \
- org.apache.felix.log.maxSize=100000,\
- org.apache.felix.dependencymanager.parallel=!org.apache.felix.dependencymanager.samples.hello, *,\
- org.apache.felix.dependencymanager.runtime.log=debug
+ org.apache.felix.dependencymanager.parallel='!org.apache.felix.dependencymanager.samples.tpool, *',\
+ org.apache.felix.dependencymanager.runtime.log=debug,\
+ org.apache.felix.log.maxSize=100000
-plugin: org.apache.felix.dm.annotation.plugin.bnd.AnnotationPlugin;log=debug;\
path:=${workspace}/org.apache.felix.dependencymanager.annotation/generated/org.apache.felix.dependencymanager.annotation.jar
Bundle-Activator: org.apache.felix.dependencymanager.samples.tpool.Activator
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/device.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/device.bnd?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/device.bnd (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/device.bnd Mon Sep 22 22:04:12 2014
@@ -0,0 +1,3 @@
+Bundle-Activator: org.apache.felix.dependencymanager.samples.device.Activator
+Private-Package: \
+ org.apache.felix.dependencymanager.samples.device
\ No newline at end of file
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Activator.java?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Activator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Activator.java Mon Sep 22 22:04:12 2014
@@ -1,23 +1,27 @@
package org.apache.felix.dependencymanager.samples.conf;
+import java.util.Hashtable;
+import java.util.concurrent.Executor;
+
+import org.apache.felix.dependencymanager.samples.tpool.ThreadPool;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
import org.osgi.service.cm.ConfigurationAdmin;
+/**
+ * This Activator defines a component that is used to injects configuration into the Configuration Admin service,
+ * in order to configure some other components defined in other sample sub-projects.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
public class Activator extends DependencyActivatorBase {
@Override
- public void init(BundleContext context, DependencyManager dm) throws Exception {
- dm.add(createComponent()
- .setImplementation(MyComponent.class)
- .add(createConfigurationDependency()
- .setPid(MyComponent.class.getName())
- .setCallback("updated")));
-
+ public void init(BundleContext context, DependencyManager dm) throws Exception {
dm.add(createComponent()
.setImplementation(Configurator.class)
.add(createServiceDependency()
.setService(ConfigurationAdmin.class)
- .setRequired(true)));
+ .setRequired(true)));
}
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/conf/Configurator.java Mon Sep 22 22:04:12 2014
@@ -7,17 +7,22 @@ import java.util.Properties;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
+/**
+ * Configurator class used to inject configuration into Configuration Admin Service.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
public class Configurator {
private volatile ConfigurationAdmin m_ca;
- Configuration m_conf;
-
+ volatile Configuration m_serviceConsumerConf;
+
public void start() {
try {
- System.out.println("Starting " + this.getClass().getName());
- m_conf = m_ca.getConfiguration(MyComponent.class.getName(), null);
+ System.out.println(Thread.currentThread().getName() + ": Starting " + this.getClass().getName());
+ m_serviceConsumerConf = m_ca.getConfiguration("org.apache.felix.dependencymanager.samples.hello.ServiceConsumer", null);
Hashtable props = new Properties();
props.put("key", "value");
- m_conf.update(props);
+ m_serviceConsumerConf.update(props);
}
catch (IOException e) {
e.printStackTrace();
@@ -25,6 +30,6 @@ public class Configurator {
}
public void destroy() throws IOException {
- m_conf.delete();
+ m_serviceConsumerConf.delete();
}
}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Activator.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Activator.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Activator.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,34 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+import java.util.Hashtable;
+
+import org.apache.felix.dm.DependencyActivatorBase;
+import org.apache.felix.dm.DependencyManager;
+import org.osgi.framework.BundleContext;
+
+/**
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class Activator extends DependencyActivatorBase {
+ @Override
+ public void init(BundleContext context, DependencyManager dm) throws Exception {
+ createDeviceAndParameter(dm, 1);
+ createDeviceAndParameter(dm, 2);
+
+ dm.add(createAdapterService(Device.class, null)
+ .setImplementation(DeviceConsumer.class));
+ }
+
+ private void createDeviceAndParameter(DependencyManager dm, int id) {
+ Hashtable<String, Object> props = new Hashtable<>();
+ props.put("device.id", id);
+ dm.add(createComponent()
+ .setImplementation(new DeviceImpl(id)).setInterface(Device.class.getName(), props));
+
+ props = new Hashtable<>();
+ props.put("device.id", id);
+ dm.add(createComponent()
+ .setImplementation(new DeviceParameterImpl(id)).setInterface(DeviceParameter.class.getName(), props));
+ }
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Device.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Device.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Device.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/Device.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,5 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+public interface Device {
+ int getDeviceId();
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceConsumer.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceConsumer.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceConsumer.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceConsumer.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,21 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+import org.apache.felix.dm.Component;
+import org.apache.felix.dm.DependencyManager;
+
+public class DeviceConsumer {
+ volatile Device device;
+ volatile DeviceParameter deviceParameter;
+
+ void init(Component c) {
+ DependencyManager dm = c.getDependencyManager();
+ c.add(dm.createServiceDependency()
+ .setService(DeviceParameter.class, "(device.id=" + device.getDeviceId() + ")")
+ .setRequired(true));
+ }
+
+ void start() {
+ System.out.println("Created a DeviceConsumer for device id " + device.getDeviceId() + ", device parameter id "
+ + deviceParameter.getDeviceId());
+ }
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceImpl.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceImpl.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceImpl.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,14 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+public class DeviceImpl implements Device {
+ final int id;
+
+ DeviceImpl(int id) {
+ this.id = id;
+ }
+
+ @Override
+ public int getDeviceId() {
+ return id;
+ }
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameter.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameter.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameter.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameter.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,5 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+public interface DeviceParameter {
+ int getDeviceId();
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameterImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameterImpl.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameterImpl.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/device/DeviceParameterImpl.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,14 @@
+package org.apache.felix.dependencymanager.samples.device;
+
+public class DeviceParameterImpl implements DeviceParameter {
+ final int id;
+
+ DeviceParameterImpl(int id) {
+ this.id = id;
+ }
+
+ @Override
+ public int getDeviceId() {
+ return id;
+ }
+}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/Activator.java?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/Activator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/Activator.java Mon Sep 22 22:04:12 2014
@@ -6,18 +6,25 @@ import org.osgi.framework.BundleContext;
/**
* Simple Activator with one service consumer and a service provider.
+ * The ServiceConsumer is also depending on a configuration pid
+ * (see org.apache.felix.dependencymanager.samples.conf.Configurator)
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class Activator extends DependencyActivatorBase {
@Override
public void init(BundleContext ctx, DependencyManager dm) throws Exception {
dm.add(createComponent()
- .setImplementation(ServiceImplementation.class)
- .setInterface(ServiceInterface.class.getName(), null));
+ .setImplementation(ServiceProviderImpl.class)
+ .setInterface(ServiceProvider.class.getName(), null));
dm.add(createComponent()
- .setImplementation(ServiceConsumer.class)
+ .setImplementation(ServiceConsumer.class)
+ .add(createConfigurationDependency()
+ .setPid("org.apache.felix.dependencymanager.samples.hello.ServiceConsumer")
+ .setCallback("updated"))
.add(createServiceDependency()
- .setService(ServiceInterface.class)
+ .setService(ServiceProvider.class)
.setRequired(true)));
}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceConsumer.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceConsumer.java?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceConsumer.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceConsumer.java Mon Sep 22 22:04:12 2014
@@ -1,10 +1,21 @@
package org.apache.felix.dependencymanager.samples.hello;
+import java.util.Dictionary;
+
+/**
+ * Our service consumer. We depend on a ServiceProvider, and on a configuration.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
public class ServiceConsumer {
- volatile ServiceInterface service;
+ volatile ServiceProvider service;
+ protected void update(Dictionary<?, ?> conf) {
+ System.out.println("ServiceConsumer updated with conf " + conf);
+ }
+
public void start() {
- System.out.println("Starting " + this.getClass().getName());
+ System.out.println(Thread.currentThread().getName() + ": Starting " + this.getClass().getName());
this.service.hello();
}
}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProvider.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProvider.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProvider.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProvider.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,10 @@
+package org.apache.felix.dependencymanager.samples.hello;
+
+/**
+ * The interface for our service provider.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public interface ServiceProvider {
+ public void hello();
+}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProviderImpl.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProviderImpl.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProviderImpl.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/hello/ServiceProviderImpl.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,14 @@
+package org.apache.felix.dependencymanager.samples.hello;
+
+
+/**
+ * The implementation for our service provider.
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
+ */
+public class ServiceProviderImpl implements ServiceProvider {
+ @Override
+ public void hello() {
+ System.out.println(Thread.currentThread().getName() + ": Hello");
+ }
+}
Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java?rev=1626911&r1=1626910&r2=1626911&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/Activator.java Mon Sep 22 22:04:12 2014
@@ -2,7 +2,6 @@ package org.apache.felix.dependencymanag
import java.util.Hashtable;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
@@ -13,17 +12,21 @@ import org.osgi.framework.BundleContext;
* DependencyManager core will use the threadpool when handling components dependencies and
* components lifecycle callbacks.
*
- * To turn on parallelism, the "org.apache.felix.dependencymanager.parallel" system property must also be set
- * to "true".
+ * Important note: since we are using the DM API to declare our threadpool, we have to disable
+ * parallelism for our "org.apache.felix.dependencymanager.samples.tpool.ThreadPool" component.
+ * To do so, we use the
+ * "org.apache.felix.dependencymanager.parallelism=!org.apache.felix.dependencymanager.samples.tpool,*"
+ * OSGI service property (see the bnd.bnd file).
+ *
+ * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a>
*/
public class Activator extends DependencyActivatorBase {
@Override
public void init(BundleContext context, DependencyManager mgr) throws Exception {
- System.out.println("Declaring ThreadPool for DependencyManager.");
Hashtable props = new Hashtable();
props.put("target", DependencyManager.THREADPOOL);
mgr.add(createComponent()
.setInterface(Executor.class.getName(), props)
- .setImplementation(Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())));
+ .setImplementation(ThreadPool.class));
}
}
Added: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ThreadPool.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ThreadPool.java?rev=1626911&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ThreadPool.java (added)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/tpool/ThreadPool.java Mon Sep 22 22:04:12 2014
@@ -0,0 +1,12 @@
+package org.apache.felix.dependencymanager.samples.tpool;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public class ThreadPool extends ThreadPoolExecutor {
+ final static int SIZE = Runtime.getRuntime().availableProcessors();
+ public ThreadPool() {
+ super(SIZE, SIZE, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+ }
+}