public void addItdTypeDetails(final ItdTypeDetails itdTypeDetails) { if (itdTypeDetails == null || itdTypeDetails.getGovernor() == null) { return; } if (typeMap.get(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName()) == null) { typeMap.put(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName(), new HashMap<String, MemberHoldingTypeDetails>()); } itdIdToTypeMap.put(itdTypeDetails.getDeclaredByMetadataId(), itdTypeDetails.getGovernor() .getName().getFullyQualifiedTypeName()); typeMap.get(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName()).put( itdTypeDetails.getDeclaredByMetadataId(), itdTypeDetails); updateChanges(itdTypeDetails.getGovernor().getName(), false); }
@Override protected String getLocalMidToRequest(final ItdTypeDetails itdTypeDetails) { // Determine the governor for this ITD, and whether any DOD metadata is // even hoping to hear about changes to that JavaType and its ITDs final JavaType governor = itdTypeDetails.getName(); for (final JavaType type : itdTypeDetails.getGovernor().getLayerEntities()) { final String localMidType = entityToDodMidMap.get(type); if (localMidType != null) { return localMidType; } } final String localMid = entityToDodMidMap.get(governor); if (localMid == null) { // No DOD is interested in this JavaType, so let's move on return null; } // We have some DOD metadata, so let's check if we care if any methods // match our requirements for (final MethodMetadata method : itdTypeDetails.getDeclaredMethods()) { if (BeanInfoUtils.isMutatorMethod(method)) { // A DOD cares about the JavaType, and an ITD offers a method // likely of interest, so let's formally trigger it to run. // Note that it will re-scan and discover this ITD, and register // a direct dependency on it for the future. return localMid; } } return null; }
/** * Constructor based on an existing ITD * * @param existing (required) */ public ItdTypeDetailsBuilder(final ItdTypeDetails existing) { super(existing.getDeclaredByMetadataId(), existing); aspect = existing.getAspect(); governor = existing.getGovernor(); importRegistrationResolver = new ImportRegistrationResolverImpl(aspect.getPackage()); privilegedAspect = existing.isPrivilegedAspect(); declarePrecedence = existing.getDeclarePrecedence(); }
appendFields(); appendConstructors(); appendMethods(itdTypeDetails.getGovernor().getPhysicalTypeCategory() .equals(PhysicalTypeCategory.INTERFACE)); appendInnerTypes();
public void addItdTypeDetails(final ItdTypeDetails itdTypeDetails) { if (itdTypeDetails == null || itdTypeDetails.getGovernor() == null) { return; } if (typeMap.get(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName()) == null) { typeMap.put(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName(), new HashMap<String, MemberHoldingTypeDetails>()); } itdIdToTypeMap.put(itdTypeDetails.getDeclaredByMetadataId(), itdTypeDetails.getGovernor() .getName().getFullyQualifiedTypeName()); typeMap.get(itdTypeDetails.getGovernor().getName().getFullyQualifiedTypeName()).put( itdTypeDetails.getDeclaredByMetadataId(), itdTypeDetails); updateChanges(itdTypeDetails.getGovernor().getName(), false); }
@Override protected String getLocalMidToRequest(final ItdTypeDetails itdTypeDetails) { // Determine the governor for this ITD, and whether any DOD metadata is // even hoping to hear about changes to that JavaType and its ITDs final JavaType governor = itdTypeDetails.getName(); for (final JavaType type : itdTypeDetails.getGovernor().getLayerEntities()) { final String localMidType = entityToDodMidMap.get(type); if (localMidType != null) { return localMidType; } } final String localMid = entityToDodMidMap.get(governor); if (localMid == null) { // No DOD is interested in this JavaType, so let's move on return null; } // We have some DOD metadata, so let's check if we care if any methods // match our requirements for (final MethodMetadata method : itdTypeDetails.getDeclaredMethods()) { if (BeanInfoUtils.isMutatorMethod(method)) { // A DOD cares about the JavaType, and an ITD offers a method // likely of interest, so let's formally trigger it to run. // Note that it will re-scan and discover this ITD, and register // a direct dependency on it for the future. return localMid; } } return null; }
/** * Constructor based on an existing ITD * * @param existing (required) */ public ItdTypeDetailsBuilder(final ItdTypeDetails existing) { super(existing.getDeclaredByMetadataId(), existing); aspect = existing.getAspect(); governor = existing.getGovernor(); importRegistrationResolver = new ImportRegistrationResolverImpl(aspect.getPackage()); privilegedAspect = existing.isPrivilegedAspect(); declarePrecedence = existing.getDeclarePrecedence(); }
appendFields(); appendConstructors(); appendMethods(itdTypeDetails.getGovernor().getPhysicalTypeCategory() .equals(PhysicalTypeCategory.INTERFACE)); appendInnerTypes();
.get(itdTypeDetails.getGovernor().getName()); if (localMid != null) { metadataService.evictAndGet(localMid);