package org.springframework.roo.addon.web.mvc.jsp; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.builder.ToStringBuilder; import org.springframework.roo.addon.web.mvc.controller.addon.scaffold.WebScaffoldAnnotationValues; import org.springframework.roo.addon.web.mvc.controller.addon.scaffold.WebScaffoldMetadata; import org.springframework.roo.classpath.PhysicalTypeIdentifierNamingUtils; import org.springframework.roo.metadata.AbstractMetadataItem; import org.springframework.roo.metadata.MetadataIdentificationUtils; import org.springframework.roo.model.JavaType; import org.springframework.roo.project.LogicalPath; import org.springframework.roo.project.Path; /** * Metadata built from {@link WebScaffoldMetadata}. A single {@link JspMetadata} * represents all JSPs for an associated controller. The metadata identifier for * a {@link JspMetadata} is the fully qualifier name of the controller, and the * source {@link Path} of the controller. This can be created using * {@link #createIdentifier(JavaType, Path)}. * * @author Stefan Schmidt * @author Ben Alex * @since 1.0 */ public class JspMetadata extends AbstractMetadataItem { private static final String PROVIDES_TYPE_STRING = JspMetadata.class.getName(); private static final String PROVIDES_TYPE = MetadataIdentificationUtils .create(PROVIDES_TYPE_STRING); public static String createIdentifier(final JavaType javaType, final LogicalPath path) { return PhysicalTypeIdentifierNamingUtils.createIdentifier(PROVIDES_TYPE_STRING, javaType, path); } public static JavaType getJavaType(final String metadataIdentificationString) { return PhysicalTypeIdentifierNamingUtils.getJavaType(PROVIDES_TYPE_STRING, metadataIdentificationString); } public static String getMetadataIdentiferType() { return PROVIDES_TYPE; } public static LogicalPath getPath(final String metadataIdentificationString) { return PhysicalTypeIdentifierNamingUtils.getPath(PROVIDES_TYPE_STRING, metadataIdentificationString); } public static boolean isValid(final String metadataIdentificationString) { return PhysicalTypeIdentifierNamingUtils.isValid(PROVIDES_TYPE_STRING, metadataIdentificationString); } private final WebScaffoldAnnotationValues annotationValues; private final WebScaffoldMetadata webScaffoldMetadata; public JspMetadata(final String identifier, final WebScaffoldMetadata webScaffoldMetadata) { super(identifier); Validate.isTrue(isValid(identifier), "Metadata identification string '%s' does not appear to be a valid", identifier); Validate.notNull(webScaffoldMetadata, "Web scaffold metadata required"); this.webScaffoldMetadata = webScaffoldMetadata; annotationValues = webScaffoldMetadata.getAnnotationValues(); } public WebScaffoldAnnotationValues getAnnotationValues() { return annotationValues; } @Override public String toString() { final ToStringBuilder builder = new ToStringBuilder(this); builder.append("identifier", getId()); builder.append("valid", valid); builder.append("web scaffold metadata id", webScaffoldMetadata.getId()); return builder.toString(); } }