DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
| Code Block |
|---|
public class MemoryStore implements Store {
private Map m_map = new HashMap();
public Object get(String key) {
return m_map.get(key);
}
public void put(String key, Object value) {
m_map.put(key, value);
}
}
|
Depending on a service
| Code Block |
|---|
public class Activator extends DependencyActivatorBase {
public void init(BundleContext context, DependencyManager manager) throws Exception {
manager.add(createService()
.setImplementation(DataGenerator.class)
.add(createServiceDependency()
.setService(Store.class)
.setRequired(true)
)
.add(createServiceDependency()
.setService(LogService.class)
.setRequired(false)
)
);
}
public void destroy(BundleContext context, DependencyManager manager) throws Exception {}
}
|
| Code Block |
|---|
public class DataGenerator {
private volatile Store m_store;
private volatile LogService m_log;
public void generate() {
for (int i = 0; i < 10; i++) {
m_store.put("#" + i, "value_" + i);
}
m_log.log(LogService.LOG_INFO, "Data generated.");
}
}
|
Tracking services with callbacks
| Code Block |
|---|
public class Activator extends DependencyActivatorBase {
public void init(BundleContext context, DependencyManager manager) throws Exception {
manager.add(createService()
.setImplementation(DocumentTranslator.class)
.add(createServiceDependency()
.setService(Translator.class)
.setRequired(false)
.setCallbacks("added", "removed")
)
);
}
public void destroy(BundleContext context, DependencyManager manager) throws Exception {}
}
|
| Code Block |
|---|
public interface Translator {
public boolean canTranslate(String from, String to);
public Document translate(Document document, String from, String to);
}
|
| Code Block |
|---|
public class DocumentTranslator {
private List<Translator> m_translators = new ArrayList<Translator>();
public void added(Translator translator) {
m_translators.add(translator);
}
public void removed(Translator translator) {
m_translators.remove(translator);
}
public Document translate(Document document, String from, String to) {
for (Translator translator : m_translators) {
if (translator.canTranslate(from, to)) {
return translator.translate(document, from, to);
}
}
return null;
}
}
|
Depending on a configuration
| Code Block |
|---|
public class Activator extends DependencyActivatorBase {
public void init(BundleContext context, DependencyManager manager) throws Exception {
manager.add(createService()
.setImplementation(Task.class)
.add(createConfigurationDependency()
.setPid("config.pid")
)
);
}
public void destroy(BundleContext context, DependencyManager manager) throws Exception {}
}
|
| Code Block |
|---|
public class Task implements ManagedService {
private String m_interval;
public void execute() {
System.out.println("Scheduling task with interval " + m_interval);
}
public void updated(Dictionary properties) throws ConfigurationException {
if (properties != null) {
m_interval = (String) properties.get("interval");
if (m_interval == null) {
throw new ConfigurationException("interval", "must be specified");
}
}
}
}
|