package org.foo.managed.factory;
import java.io.IOException;
import java.util.*;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedServiceFactory;
public class ManagedServiceFactoryExample implements ManagedServiceFactory {
private final Map<String, EchoServer> m_servers = new HashMap<String, EchoServer>();
public synchronized void deleted(String pid) {
EchoServer server = m_servers.remove(pid);
if (server != null) {
server.stop();
}
}
public String getName() {
return getClass().getName();
}
public synchronized void updated(String pid, Dictionary properties)
throws ConfigurationException {
System.out.println(pid + properties);
EchoServer server = m_servers.remove(pid);
if (server != null) {
server.stop();
}
if (properties != null) {
String portString = (String) properties.get("port");
if (portString == null) {
throw new ConfigurationException(null, "Property missing");
}
int port;
try {
port = Integer.parseInt(portString);
} catch (NumberFormatException ex) {
throw new ConfigurationException(null,
"Not a valid port number");
}
try {
server = new EchoServer(port);
server.start();
m_servers.put(pid, server);
} catch (IOException e) {
e.printStackTrace();
}
}
}
synchronized void stop() {
System.out.println(m_servers);
for (EchoServer server : m_servers.values()) {
server.stop();
}
m_servers.clear();
}
}