@Override public String toString() { return "ResourceSpace[" + primary.getIdentity() + "]"; } }
@Override public Resource addResource(Resource res) { synchronized (resources) { if (getResourceInternal(res.getIdentity()) != null) throw new IllegalArgumentException("Resource already added: " + res); LOGGER.debug("Add to {}: {}", storeName, res); // Add resource capabilites for (Capability cap : res.getCapabilities(null)) { CacheKey cachekey = CacheKey.create(cap); getCachedCapabilities(cachekey).add(cap); } // Log cap/req details if (LOGGER.isDebugEnabled()) { for (Capability cap : res.getCapabilities(null)) { LOGGER.debug(" {}", cap); } for (Requirement req : res.getRequirements(null)) { LOGGER.debug(" {}", req); } } resources.put(res.getIdentity(), res); return res; } }
/** * A reference resource has a 'type' attribute with value 'reference' */ public static boolean isReference(Resource res) { Object attval = res.getIdentityCapability().getAttribute(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE); return IdentityNamespace.TYPE_REFERENCE.equals(attval); }
@Override public ResourceBuilder fromResource(Resource res) { for (Capability cap : res.getCapabilities(null)) { addCapability(cap.getNamespace(), cap.getAttributes(), cap.getDirectives()); } for (Requirement req : res.getRequirements(null)) { addRequirement(req.getNamespace(), req.getAttributes(), req.getDirectives()); } return this; }
@Override public Resource removeResource(ResourceIdentity resid) { synchronized (resources) { Resource res = resources.remove(resid); if (res != null) { LOGGER.debug("Remove from {}: {}", storeName, res); // Remove resource capabilities for (Capability cap : res.getCapabilities(null)) { CacheKey cachekey = CacheKey.create(cap); Set<Capability> cachecaps = getCachedCapabilities(cachekey); cachecaps.remove(cap); if (cachecaps.isEmpty()) { capabilityCache.remove(cachekey); } } } return res; } }
Iterator<List<Wire>> iterator(final ResolveContext context) throws ResolutionException { return new Iterator<List<Wire>>() { private List<Iterator<Wire>> candidates = new ArrayList<Iterator<Wire>>(); private List<Requirement> reqs = res.getRequirements(null); private Map<Requirement, Wire> wires; private boolean hasNext;
private int getCapabilityIndex(Capability cap) { return getResource().getCapabilities(cap.getNamespace()).indexOf(cap); }
@Override public Requirement getRequirement() { Resource resource = resbuilder.getResource(); String namespace = requirement.getNamespace(); return resource.getRequirements(namespace).get(0); }
@Override public ResourceIdentity getIdentity() { return resource.getIdentity(); }
public CompositeData getCompositeData(Resource res) throws OpenDataException { String identity = res.getIdentity().toString(); List<Capability> caps = res.getCapabilities(null); List<Requirement> reqs = res.getRequirements(null); List<Object> items = new ArrayList<Object>(); items.add(identity); items.add(new CapabilitiesType().getCompositeData(caps)); items.add(new RequirementsType().getCompositeData(reqs)); Object[] itemValues = items.toArray(new Object[items.size()]); return new CompositeDataSupport(compositeType, getItemNames(), itemValues); }
private static URL getContentURL(Resource resource) { IllegalArgumentAssertion.assertNotNull(resource, "resource"); List<Capability> ccaps = resource.getCapabilities(ContentNamespace.CONTENT_NAMESPACE); if (ccaps.size() != 1) return null; return ccaps.get(0).adapt(ContentCapability.class).getContentURL(); }
/** * A shared resource has a 'shared' attribute with value 'true' */ public static boolean isShared(Resource resource) { Object attval = resource.getIdentityCapability().getAttribute(IdentityNamespace.CAPABILITY_SHARED_ATTRIBUTE); return Boolean.parseBoolean(attval != null ? attval.toString() : null); } }
List<Requirement> manreqs = res.getRequirements(null); Iterator<Requirement> itreqs = manreqs.iterator(); while (itreqs.hasNext()) {
ResourceSpace(Resource primary, Wiring wiring) { this.primary = primary; String uniquekey = primary.getIdentity().getSymbolicName(); resources.put(uniquekey, primary); if (wiring != null) { for (Wire wire : wiring.getRequiredResourceWires(null)) { Resource provider = wire.getProvider(); uniquekey = provider.getIdentity().getSymbolicName(); resources.put(uniquekey, provider); } } }
private static URL getRequiredContentURL(Resource resource) { IllegalArgumentAssertion.assertNotNull(resource, "resource"); List<Capability> ccaps = resource.getCapabilities(ContentNamespace.CONTENT_NAMESPACE); IllegalArgumentAssertion.assertFalse(ccaps.isEmpty(), "Cannot obtain content capability from: " + resource); IllegalArgumentAssertion.assertFalse(ccaps.size() > 1, "Cannot process multiple content capabilities in: " + resource); URL contentURL = ccaps.get(0).adapt(ContentCapability.class).getContentURL(); IllegalArgumentAssertion.assertTrue(contentURL != null, "Cannot obtain content URL from: " + resource); return contentURL; } }
/** * A resource is abstract if it has a 'type' attribute with value 'abstract' or 'reference' */ public static boolean isAbstract(Resource res) { Object attval = res.getIdentityCapability().getAttribute(IdentityNamespace.CAPABILITY_TYPE_ATTRIBUTE); return isReference(res) || IdentityNamespace.TYPE_ABSTRACT.equals(attval); }
boolean addDependencySpace(ResourceSpace dependency) { if (dependency == null) return false; for (Resource aux : dependency.getResources()) { String uniquekey = aux.getIdentity().getSymbolicName(); Resource other = resources.get(uniquekey); if (other != null && other != aux) { return false; } } for (Resource aux : dependency.getResources()) { String uniquekey = aux.getIdentity().getSymbolicName(); resources.put(uniquekey, aux); } return true; }
Map<String, Object> attsC = builderC.getMutableResource().getIdentityCapability().getAttributes(); attsC.put(ContentNamespace.CAPABILITY_RUNTIME_NAME_ATTRIBUTE, RESOURCE_C + ".war"); ResourceHandle handleC = provisioner.installResource(builderC.getResource());
if (environment.getResource(res.getIdentity()) == null) throw new IllegalArgumentException("Resource not in provided store: " + res); if (environment.getResource(res.getIdentity()) == null) throw new IllegalArgumentException("Resource not in provided store: " + res);
ResourceIdentity resourceIdentity = resource.getIdentity(); Hashtable<String, String> clonedHeaders = new Hashtable<String, String>(); if (headers != null) { ResourceIdentity headersIdentity = new DictionaryResourceBuilder().load(clonedHeaders).getResource().getIdentity(); if (!resourceIdentity.equals(headersIdentity)) throw new IllegalArgumentException("Resource and header identity does not match: " + resourceIdentity);