@Override public ResourceIdentity getIdentity() { if (identity == null) { Capability icap = getIdentityCapability(); String symbolicName = (String) icap.getAttribute(IdentityNamespace.IDENTITY_NAMESPACE); Version version = (Version) icap.getAttribute(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE); identity = ResourceIdentity.create(symbolicName, version); } return identity; }
@Override public Capability getIdentityCapability() { if (identityCapability == null) { List<Capability> icaps = getCapabilities(IdentityNamespace.IDENTITY_NAMESPACE); if (icaps.size() > 1) throw new IllegalStateException("Multiple identity capabilities"); if (icaps.size() < 1) throw new IllegalStateException("No identity capability"); Capability icap = icaps.get(0); Object version = icap.getAttribute(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE); if (!(version instanceof Version)) { version = version == null ? Version.emptyVersion : Version.parseVersion(version.toString()); icap.getAttributes().put(IdentityNamespace.CAPABILITY_VERSION_ATTRIBUTE, version); } identityCapability = icap; } return identityCapability; }
/** * 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); }
/** * 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); } }
/** * 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); }