- public synchronized String getSchemaForCapability(final String moduleName, final Optional<String> revision) {
-
- Map<String, String> revisionMapRequest = mappedModulesToRevisionToSchema.get(moduleName);
- Preconditions.checkState(revisionMapRequest != null, "Capability for module %s not present, " + ""
- + "available modules : %s", moduleName, Collections2.transform(capabilities.values(), CAPABILITY_TO_URI));
-
- if (revision.isPresent()) {
- String schema = revisionMapRequest.get(revision.get());
-
- Preconditions.checkState(schema != null,
- "Capability for module %s:%s not present, available revisions for module: %s", moduleName,
- revision.get(), revisionMapRequest.keySet());
-
- return schema;
- } else {
- Preconditions.checkState(revisionMapRequest.size() == 1,
- "Expected 1 capability for module %s, available revisions : %s", moduleName,
- revisionMapRequest.keySet());
- return revisionMapRequest.values().iterator().next();
- }
- }
-
- private synchronized void updateCapabilityToSchemaMap(final Set<Capability> added, final Set<Capability> removed) {
- for (final Capability cap : added) {
- if (!isValidModuleCapability(cap)){
- continue;
- }
-
- final String currentModuleName = cap.getModuleName().get();
- Map<String, String> revisionMap = mappedModulesToRevisionToSchema.get(currentModuleName);
- if (revisionMap == null) {
- revisionMap = Maps.newHashMap();
- mappedModulesToRevisionToSchema.put(currentModuleName, revisionMap);
- }
-
- final String currentRevision = cap.getRevision().get();
- revisionMap.put(currentRevision, cap.getCapabilitySchema().get());
- }
- for (final Capability cap : removed) {
- if (!isValidModuleCapability(cap)){
- continue;
- }
- final Map<String, String> revisionMap = mappedModulesToRevisionToSchema.get(cap.getModuleName().get());
- if (revisionMap != null) {
- revisionMap.remove(cap.getRevision().get());
- if (revisionMap.isEmpty()) {
- mappedModulesToRevisionToSchema.remove(cap.getModuleName().get());
- }
- }
- }
- }
-
- private boolean isValidModuleCapability(Capability cap) {
- return cap.getModuleName().isPresent()
- && cap.getRevision().isPresent()
- && cap.getCapabilitySchema().isPresent();