Search in sources :

Example 16 with MemberHoldingTypeDetails

use of org.springframework.roo.classpath.details.MemberHoldingTypeDetails in project spring-roo by spring-projects.

the class MemberDetailsBuilder method tag.

public <T> void tag(final T toModify, final CustomDataKey<T> key, final Object value) {
    if (toModify instanceof FieldMetadata) {
        final CustomDataBuilder customDataBuilder = new CustomDataBuilder();
        customDataBuilder.put(key, value);
        doModification((FieldMetadata) toModify, customDataBuilder.build());
    } else if (toModify instanceof MethodMetadata) {
        final CustomDataBuilder customDataBuilder = new CustomDataBuilder();
        customDataBuilder.put(key, value);
        doModification((MethodMetadata) toModify, customDataBuilder.build());
    } else if (toModify instanceof ConstructorMetadata) {
        final CustomDataBuilder customDataBuilder = new CustomDataBuilder();
        customDataBuilder.put(key, value);
        doModification((ConstructorMetadata) toModify, customDataBuilder.build());
    } else if (toModify instanceof MemberHoldingTypeDetails) {
        final CustomDataBuilder customDataBuilder = new CustomDataBuilder();
        customDataBuilder.put(key, value);
        doModification((MemberHoldingTypeDetails) toModify, customDataBuilder.build());
    }
}
Also used : ConstructorMetadata(org.springframework.roo.classpath.details.ConstructorMetadata) FieldMetadata(org.springframework.roo.classpath.details.FieldMetadata) CustomDataBuilder(org.springframework.roo.model.CustomDataBuilder) MemberHoldingTypeDetails(org.springframework.roo.classpath.details.MemberHoldingTypeDetails) MethodMetadata(org.springframework.roo.classpath.details.MethodMetadata)

Example 17 with MemberHoldingTypeDetails

use of org.springframework.roo.classpath.details.MemberHoldingTypeDetails in project spring-roo by spring-projects.

the class MemberDetailsBuilder method doModification.

private void doModification(final FieldMetadata field, final CustomData customData) {
    final MemberHoldingTypeDetails memberHoldingTypeDetails = memberHoldingTypeDetailsMap.get(field.getDeclaredByMetadataId());
    if (memberHoldingTypeDetails != null) {
        final FieldMetadata matchedField = memberHoldingTypeDetails.getField(field.getFieldName());
        if (matchedField != null && !matchedField.getCustomData().keySet().containsAll(customData.keySet())) {
            final TypeDetailsBuilder typeDetailsBuilder = getTypeDetailsBuilder(memberHoldingTypeDetails);
            typeDetailsBuilder.addDataToField(field, customData);
            changed = true;
        }
    }
}
Also used : FieldMetadata(org.springframework.roo.classpath.details.FieldMetadata) MemberHoldingTypeDetails(org.springframework.roo.classpath.details.MemberHoldingTypeDetails) ClassOrInterfaceTypeDetailsBuilder(org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetailsBuilder) AbstractMemberHoldingTypeDetailsBuilder(org.springframework.roo.classpath.details.AbstractMemberHoldingTypeDetailsBuilder) ItdTypeDetailsBuilder(org.springframework.roo.classpath.details.ItdTypeDetailsBuilder)

Example 18 with MemberHoldingTypeDetails

use of org.springframework.roo.classpath.details.MemberHoldingTypeDetails in project spring-roo by spring-projects.

the class JpaEntityFactoryMetadataProviderImpl method getMetadata.

@Override
protected ItdTypeDetailsProvidingMetadataItem getMetadata(final String entityFactoryMetadata, final JavaType aspectName, final PhysicalTypeMetadata governorPhysicalTypeMetadata, final String itdFilename) {
    // Get related entity
    final JavaType entity = (JavaType) governorPhysicalTypeMetadata.getMemberHoldingTypeDetails().getAnnotation(ROO_JPA_ENTITY_FACTORY).getAttribute("entity").getValue();
    if (entity == null) {
        return null;
    }
    final MemberDetails memberDetails = getMemberDetails(entity);
    if (memberDetails == null) {
        return null;
    }
    final MemberHoldingTypeDetails persistenceMemberHoldingTypeDetails = MemberFindingUtils.getMostConcreteMemberHoldingTypeDetailsWithTag(memberDetails, PERSISTENT_TYPE);
    if (persistenceMemberHoldingTypeDetails == null) {
        return null;
    }
    // We need to be informed if our dependent metadata changes
    getMetadataDependencyRegistry().registerDependency(persistenceMemberHoldingTypeDetails.getDeclaredByMetadataId(), entityFactoryMetadata);
    final JavaType identifierType = getPersistenceMemberLocator().getIdentifierType(entity);
    if (identifierType == null) {
        return null;
    }
    // Identify all the fields we care about on the entity
    final Map<FieldMetadata, JpaEntityFactoryMetadata> locatedFields = getLocatedFields(memberDetails, entityFactoryMetadata);
    // Get the list of embedded metadata holders - may be an empty list if
    // no embedded identifier exists
    final List<EmbeddedHolder> embeddedHolders = getEmbeddedHolders(memberDetails, entityFactoryMetadata);
    // Get the embedded identifier metadata holder - may be null if no
    // embedded identifier exists
    final EmbeddedIdHolder embeddedIdHolder = getEmbeddedIdHolder(memberDetails, entityFactoryMetadata);
    Set<ClassOrInterfaceTypeDetails> entityFactoryClasses = getTypeLocationService().findClassesOrInterfaceDetailsWithAnnotation(RooJavaType.ROO_JPA_ENTITY_FACTORY);
    return new JpaEntityFactoryMetadata(entityFactoryMetadata, aspectName, governorPhysicalTypeMetadata, entity, locatedFields, embeddedHolders, entityFactoryClasses, embeddedIdHolder);
}
Also used : RooJavaType(org.springframework.roo.model.RooJavaType) JavaType(org.springframework.roo.model.JavaType) FieldMetadata(org.springframework.roo.classpath.details.FieldMetadata) EmbeddedIdHolder(org.springframework.roo.addon.jpa.addon.dod.EmbeddedIdHolder) MemberHoldingTypeDetails(org.springframework.roo.classpath.details.MemberHoldingTypeDetails) MemberDetails(org.springframework.roo.classpath.scanner.MemberDetails) ClassOrInterfaceTypeDetails(org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetails) EmbeddedHolder(org.springframework.roo.addon.jpa.addon.dod.EmbeddedHolder)

Example 19 with MemberHoldingTypeDetails

use of org.springframework.roo.classpath.details.MemberHoldingTypeDetails in project spring-roo by spring-projects.

the class SecurityFiltersMetadataProviderImpl method getLocalMidToRequest.

@Override
protected String getLocalMidToRequest(final ItdTypeDetails itdTypeDetails) {
    // Determine the governor for this ITD, and whether any metadata is even
    // hoping to hear about changes to that JavaType and its ITDs
    final JavaType governor = itdTypeDetails.getName();
    final String localMid = domainTypeToServiceMidMap.get(governor);
    if (localMid != null) {
        return localMid;
    }
    final MemberHoldingTypeDetails memberHoldingTypeDetails = getTypeLocationService().getTypeDetails(governor);
    if (memberHoldingTypeDetails != null) {
        for (final JavaType type : memberHoldingTypeDetails.getLayerEntities()) {
            final String localMidType = domainTypeToServiceMidMap.get(type);
            if (localMidType != null) {
                return localMidType;
            }
        }
    }
    return null;
}
Also used : AnnotatedJavaType(org.springframework.roo.classpath.details.annotations.AnnotatedJavaType) RooJavaType(org.springframework.roo.model.RooJavaType) JavaType(org.springframework.roo.model.JavaType) MemberHoldingTypeDetails(org.springframework.roo.classpath.details.MemberHoldingTypeDetails)

Example 20 with MemberHoldingTypeDetails

use of org.springframework.roo.classpath.details.MemberHoldingTypeDetails in project spring-roo by spring-projects.

the class EntityDeserializerMetadataProviderImpl method getLocalMidToRequest.

@Override
protected String getLocalMidToRequest(final ItdTypeDetails itdTypeDetails) {
    // Determine the governor for this ITD, and whether any metadata is even
    // hoping to hear about changes to that JavaType and its ITDs
    final JavaType governor = itdTypeDetails.getName();
    final String localMid = domainTypeToServiceMidMap.get(governor);
    if (localMid != null) {
        return localMid;
    }
    final MemberHoldingTypeDetails memberHoldingTypeDetails = getTypeLocationService().getTypeDetails(governor);
    if (memberHoldingTypeDetails != null) {
        for (final JavaType type : memberHoldingTypeDetails.getLayerEntities()) {
            final String localMidType = domainTypeToServiceMidMap.get(type);
            if (localMidType != null) {
                return localMidType;
            }
        }
    }
    return null;
}
Also used : RooJavaType(org.springframework.roo.model.RooJavaType) JavaType(org.springframework.roo.model.JavaType) MemberHoldingTypeDetails(org.springframework.roo.classpath.details.MemberHoldingTypeDetails)

Aggregations

MemberHoldingTypeDetails (org.springframework.roo.classpath.details.MemberHoldingTypeDetails)38 JavaType (org.springframework.roo.model.JavaType)29 RooJavaType (org.springframework.roo.model.RooJavaType)26 ArrayList (java.util.ArrayList)7 ClassOrInterfaceTypeDetails (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetails)7 FieldMetadata (org.springframework.roo.classpath.details.FieldMetadata)7 AnnotatedJavaType (org.springframework.roo.classpath.details.annotations.AnnotatedJavaType)7 JpaJavaType (org.springframework.roo.model.JpaJavaType)7 ClassOrInterfaceTypeDetailsBuilder (org.springframework.roo.classpath.details.ClassOrInterfaceTypeDetailsBuilder)6 MethodMetadata (org.springframework.roo.classpath.details.MethodMetadata)6 AbstractMemberHoldingTypeDetailsBuilder (org.springframework.roo.classpath.details.AbstractMemberHoldingTypeDetailsBuilder)4 ItdTypeDetailsBuilder (org.springframework.roo.classpath.details.ItdTypeDetailsBuilder)4 MemberDetails (org.springframework.roo.classpath.scanner.MemberDetails)4 JavaSymbolName (org.springframework.roo.model.JavaSymbolName)4 ConstructorMetadata (org.springframework.roo.classpath.details.ConstructorMetadata)3 ImportMetadata (org.springframework.roo.classpath.details.ImportMetadata)2 AnnotationMetadata (org.springframework.roo.classpath.details.annotations.AnnotationMetadata)2 Path (org.springframework.roo.project.Path)2 File (java.io.File)1 HashSet (java.util.HashSet)1