this.moduleNamesToConfigs = Collections.unmodifiableMap(moduleNamesToConfigs);
}
- private Map<String, Map<String, Collection<ObjectName>>> getMappedInstances(Set<ObjectName> instancesToMap,
- Services serviceTracker) {
+ public static Map<String, Map<String, Collection<ObjectName>>> getMappedInstances(Set<ObjectName> instancesToMap,
+ Services serviceTracker, Map<String, Map<String, ModuleConfig>> configs) {
Multimap<String, ObjectName> moduleToInstances = mapInstancesToModules(instancesToMap);
Map<String, Map<String, Collection<ObjectName>>> retVal = Maps.newLinkedHashMap();
- for (String namespace : moduleConfigs.keySet()) {
+ for (String namespace : configs.keySet()) {
Map<String, Collection<ObjectName>> innerRetVal = Maps.newHashMap();
- for (Entry<String, ModuleConfig> mbeEntry : moduleConfigs.get(namespace).entrySet()) {
+ for (Entry<String, ModuleConfig> mbeEntry : configs.get(namespace).entrySet()) {
String moduleName = mbeEntry.getKey();
Collection<ObjectName> instances = moduleToInstances.get(moduleName);
+ // TODO, this code does not support same module names from different namespaces
+ // Namespace should be present in ObjectName
+
if (instances == null)
continue;
return retVal;
}
- private void addServices(Services serviceTracker, Collection<ObjectName> instances,
- Map<String, String> providedServices) {
+ private static void addServices(Services serviceTracker, Collection<ObjectName> instances,
+ Multimap<String, String> providedServices) {
for (ObjectName instanceOn : instances) {
- for (Entry<String, String> serviceName : providedServices.entrySet()) {
+ for (Entry<String, String> serviceName : providedServices.entries()) {
serviceTracker.addServiceEntry(serviceName.getKey(), serviceName.getValue(), instanceOn);
}
}
Services serviceTracker = new Services();
Map<String, Map<String, Collection<ObjectName>>> moduleToInstances = getMappedInstances(instancesToMap,
- serviceTracker);
+ serviceTracker, moduleConfigs);
Element root = dataElement;
if (maybeNamespace.isPresent()) {
checkState(moduleConfig != null, "Cannot find ModuleConfig with name " + factoryName + " in " + moduleNamesToConfigs);
// Set<String> services = ;
- for (Entry<String, String> serviceName : moduleConfig.getProvidedServices().entrySet()) {
+ for (Entry<String, String> serviceName : moduleConfig.getProvidedServices().entries()) {
services.addServiceEntry(serviceName.getKey(), serviceName.getValue(), existingON);
}