void validate() { // Make sure we have an identity getIdentity(); // Validate the capabilities for (Capability cap : getCapabilities(null)) { ((AbstractCapability) cap).validate(); } // Validate the requirements for (Requirement req : getRequirements(null)) { ((AbstractRequirement) req).validate(); } }
@Override public Resource getResource() { AbstractResource resource = getResourceInternal(); resource.validate(); resource.setMutable(false); return resource; }
@Override public boolean isValid() { AbstractResource resource = getResourceInternal(); return resource.isValid(); }
@Override public Capability addCapability(String namespace, Map<String, Object> atts, Map<String, String> dirs) { IllegalArgumentAssertion.assertNotNull(namespace, "namespace"); AbstractResource resource = getResourceInternal(); AbstractCapability cap = createCapability(resource, namespace, mutableAttributes(atts), mutableDirectives(dirs)); resource.addCapability(cap); return cap; }
@Override public Requirement addRequirement(String namespace, Map<String, Object> atts, Map<String, String> dirs) { IllegalArgumentAssertion.assertNotNull(namespace, "namespace"); AbstractResource resource = getResourceInternal(); AbstractRequirement req = createRequirement(resource, namespace, mutableAttributes(atts), mutableDirectives(dirs)); resource.addRequirement(req); return req; }
private Attachable getAttachmentsInternal() { if (attachments == null) { attachments = new AttachableSupport(); } return attachments; }
private Object getAttributeValue(String key, String valstr) { String[] parts = key.split(":"); if (parts.length == 1) { return unquote(valstr); } String typespec = parts[1].trim(); if (typespec.startsWith("List")) { parts = typespec.split("[<>]"); typespec = "List<" + (parts.length > 1 ? parts[1].trim() : "String") + ">"; } AttributeValue attval = AttributeValueHandler.readAttributeValue(key, typespec, unquote(valstr)); return attval.getValue(); }
@Override public Resource getMutableResource() { AbstractResource resource = getResourceInternal(); resource.assertMutable(); return resource; }
void addCapability(AbstractCapability cap) { synchronized (capabilities) { assertMutable(); capabilities.add(cap); } }
boolean isValid() { try { validate(); return true; } catch (RuntimeException rte) { return false; } }
/** * Read attribute values according to * 132.5.6 Attribute Element */ public static AttributeValue readAttributeValue(String typespec, String valstr) { return readAttributeValue(null, typespec, valstr); }
@Override public String toString() { return toExternalForm(); } }
private AbstractResource getResourceInternal() { if (resource == null) { resource = createResource(); } return resource; }
@Override public Resource getResource(ResourceIdentity resid) { return getResourceInternal(resid); }
public static List<String> parseDelimitedString(String value, char delim) { return parseDelimitedString(value, delim, true); }
@Override public <T> boolean hasAttachment(AttachmentKey<T> key) { return getAttachmentsInternal().hasAttachment(key); }
@Override public Capability addIdentityCapability(String symbolicName, Version version) { IllegalArgumentAssertion.assertNotNull(symbolicName, "symbolicName"); return addIdentityCapability(symbolicName, version, null, null); }
@Override public Requirement addIdentityRequirement(String symbolicName, VersionRange range) { IllegalArgumentAssertion.assertNotNull(symbolicName, "symbolicName"); return addIdentityRequirement(symbolicName, range, null, null); }
@Override public String toString() { ResourceIdentity id = identity; String idstr = (id != null ? id.getSymbolicName() + ":" + id.getVersion() : "anonymous"); return getSimpleTypeName() + "[" + idstr + "]"; } }
void addRequirement(AbstractRequirement req) { synchronized (requirements) { assertMutable(); requirements.add(req); } }