import org.wamblee.xmlrouter.config.RouterConfig;
import org.wamblee.xmlrouter.config.RouterConfigService;
+// TODO pass unique id of config service in the constructor to allow multiple instances with
+// unique ids (ServiceFactory)
+
/**
* Router configuration service providing an atomic configuration API for the
* XML router.
public XMLRouterConfigService(XMLRouterConfiguration aConfig) {
sequence = new AtomicLong(1L);
config = aConfig;
- routerConfigs = new ConfigImpl<RouterConfig>(sequence) {
- public RouterConfig wrap(Id<RouterConfig> aId, RouterConfig aT) {
+ routerConfigs = new ConfigImpl<RouterConfig>(new Id<Config>("config")) {
+ public RouterConfig wrap(String aPrefix, RouterConfig aT) {
return aT;
}
};
}
@Override
- public RouterConfig emptyConfig() {
- return new SingleRouterConfig(sequence);
+ public RouterConfig emptyConfig(String aId) {
+ // TODO check AP{ impacts.
+ return new SingleRouterConfig(new Id<RouterConfig>(aId));
}
@Override
- public Id<RouterConfig> apply(RouterConfig aConfig,
- Id<RouterConfig> aOldConfig) {
+ public void apply(RouterConfig aConfig, Id<RouterConfig> aOldConfig) {
if (aOldConfig != null) {
routerConfigs.remove(aOldConfig);
}
- Id<RouterConfig> id = routerConfigs.add(aConfig);
+ routerConfigs.add(aConfig);
update();
- return id;
}
@Override
private void update() {
ExtendedRouterConfig newconfig = new CompositeRouterConfig(
- routerConfigs.map().values());
+ new Id<RouterConfig>("routerconfig"), routerConfigs.values());
config.setRouterConfig(newconfig);
}