package org.springframework.roo.addon.web.mvc.controller.details; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedMap; import org.springframework.roo.classpath.TypeLocationService; import org.springframework.roo.classpath.customdata.tagkeys.MethodMetadataCustomDataKey; import org.springframework.roo.classpath.details.FieldMetadata; import org.springframework.roo.classpath.layers.MemberTypeAdditions; import org.springframework.roo.classpath.scanner.MemberDetails; import org.springframework.roo.model.JavaSymbolName; import org.springframework.roo.model.JavaType; /** * Service to retrieve various metadata information for use by Web scaffolding * add-ons. * * @author Stefan Schmidt * @since 1.1.2 */ public interface WebMetadataService { Map<MethodMetadataCustomDataKey, MemberTypeAdditions> getCrudAdditions( JavaType domainType, String metadataIdentificationString); Map<JavaSymbolName, DateTimeFormatDetails> getDatePatterns( JavaType javaType, MemberDetails memberDetails, String metadataIdentificationString); List<JavaTypeMetadataDetails> getDependentApplicationTypeMetadata( JavaType javaType, MemberDetails memberDetails, String metadataIdentificationString); /** * Returns details of the dynamic finders for the given form backing type * * @param formBackingType * @param formBackingTypeDetails * @param consumingMetadataId the ID of the * {@link org.springframework.roo.metadata.MetadataItem} that's * using these details * @return <code>null</code> if this information is not currently available */ Set<FinderMetadataDetails> getDynamicFinderMethodsAndFields( JavaType formBackingType, MemberDetails formBackingTypeDetails, String consumingMetadataId); FieldMetadata getIdentifierField(JavaType javaType); JavaTypeMetadataDetails getJavaTypeMetadataDetails(JavaType javaType, MemberDetails memberDetails, String metadataIdentificationString); JavaTypePersistenceMetadataDetails getJavaTypePersistenceMetadataDetails( JavaType javaType, MemberDetails memberDetails, String metadataIdentificationString); MemberDetails getMemberDetails(JavaType javaType); /** * Returns details of the Java types that are related to the given type * * @param baseType the type for which to obtain related types * @param baseTypeDetails the details of the given type * @param metadataId the ID of the * {@link org.springframework.roo.metadata.MetadataItem} * consuming the returned details; required for registering the * necessary metadata dependencies * @return a non-<code>null</code> map that includes the given type */ SortedMap<JavaType, JavaTypeMetadataDetails> getRelatedApplicationTypeMetadata( JavaType baseType, MemberDetails baseTypeDetails, String metadataId); List<FieldMetadata> getScaffoldEligibleFieldMetadata(JavaType javaType, MemberDetails memberDetails, String metadataIdentificationString); /** * @deprecated use {@link TypeLocationService#isInProject(JavaType)} instead */ @Deprecated boolean isApplicationType(JavaType javaType); boolean isRooIdentifier(JavaType javaType, MemberDetails memberDetails); }