public boolean check(AssociationDescriptor descriptor, ServiceElement element) { return (ServiceElementUtil.matchesServiceElement( element, descriptor.getName(), descriptor.getInterfaceNames(), descriptor.getOperationalStringName())); }
/** * An AssociationDescriptor is equal to another AssociationDescriptor if their name, opStringName * and {@link AssociationType} attributes are equal */ public boolean equals(final Object obj) { if (this == obj) return true; if (!(obj instanceof AssociationDescriptor)) return false; AssociationDescriptor that = (AssociationDescriptor) obj; if (this.type.equals(that.type) && this.getName().equals(that.getName())) { boolean matched = false; /* Check propertyName attributes */ if (this.opStringName != null && that.opStringName != null && this.opStringName.equals(that.opStringName)) { matched = true; } if (this.opStringName == null && that.opStringName == null) matched = true; if (!matched) return matched; if (!Arrays.equals(this.interfaceNames, that.interfaceNames)) return false; /* Check propertyName attributes */ if (this.propertyName != null && that.propertyName != null && this.propertyName.equals(that.propertyName)) { return true; } if (this.propertyName == null && that.propertyName == null) return true; } return (false); }
/** * Creates an AssociationDescriptor for a service, matching on the service name * * @param name The service name * @param setter The setter property to use when injecting * @param serviceClass The service's exported proxy class * @param type The type of Association to create * @param groups Discovery groups to use * @return An AssociationDescriptor */ public static AssociationDescriptor create( final String name, final String setter, final Class serviceClass, final AssociationType type, final String... groups) { AssociationDescriptor ad = new AssociationDescriptor(type, name); ad.setInterfaceNames(serviceClass.getName()); if (setter != null) ad.setPropertyName(setter); ad.setGroups(groups); ad.setMatchOnName(true); return ad; }
/** * This method verifies whether the InstantiatorResource can support any declared service * colocation requirements * * @param sElem The ServiceElement * @param ir The InstantiatorResource * @return Return true if the provided InstantiatorResource meets service colocation requirements */ static boolean meetsColocationRequirements(ServiceElement sElem, InstantiatorResource ir) { boolean provisionable = true; AssociationDescriptor[] aDescs = sElem.getAssociationDescriptors(); for (AssociationDescriptor aDesc : aDescs) { boolean ok = false; if (aDesc.getAssociationType() == AssociationType.COLOCATED) { if (matches(aDesc, ir.getServiceElements())) { break; } } else { ok = true; } if (!ok) { provisionable = false; break; } } return (provisionable); }
public boolean check(AssociationDescriptor descriptor, ServiceItem serviceItem) { if (descriptor.getVersion() == null) return true; boolean matches = false; String configuredVersion = descriptor.getVersion(); for (Entry entry : serviceItem.attributeSets) { if (entry instanceof VersionEntry) { matches = versionMatcher.versionSupported(configuredVersion, ((VersionEntry) entry).version); if (logger.isDebugEnabled()) { logger.debug( "requiredVersion: {}, publishedVersion: {}, matched? {}", configuredVersion, entry, matches); } if (matches) break; } } return matches; }
/* * Get the AssociationMatchFilter for an AssociationDescriptor */ private static AssociationMatchFilter getAssociationMatchFilter( AssociationDescriptor descriptor) { AssociationMatchFilter defaultFilter = new DefaultAssociationMatchFilter(); AssociationMatchFilter filter; try { String matchFilter = descriptor.getAssociationMatchFilter(); if (matchFilter != null) { ClassLoader cl = Thread.currentThread().getContextClassLoader(); filter = (AssociationMatchFilter) cl.loadClass(matchFilter).newInstance(); } else { filter = defaultFilter; } } catch (Exception e) { filter = defaultFilter; logger.log( Level.WARNING, "Getting AssociationMatchFilter for association " + "[" + descriptor.toString() + "]", e); } return (filter); }