package org.springframework.roo.classpath.details; import java.lang.reflect.Modifier; import java.util.List; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.builder.ToStringBuilder; import org.springframework.roo.classpath.details.annotations.AnnotationMetadata; import org.springframework.roo.classpath.details.comments.CommentStructure; import org.springframework.roo.model.CustomData; import org.springframework.roo.model.JavaSymbolName; import org.springframework.roo.model.JavaType; /** * Default implementation of {@link FieldMetadata}. * * @author Ben Alex * @since 1.0 */ public class DefaultFieldMetadata extends AbstractIdentifiableAnnotatedJavaStructureProvider implements FieldMetadata { private final String fieldInitializer; private final JavaSymbolName fieldName; private final JavaType fieldType; private CommentStructure commentStructure; // Package protected to mandate the use of FieldMetadataBuilder public DefaultFieldMetadata(final CustomData customData, final String declaredByMetadataId, final int modifier, final List<AnnotationMetadata> annotations, final JavaSymbolName fieldName, final JavaType fieldType, final String fieldInitializer) { super(customData, declaredByMetadataId, modifier, annotations); Validate.notBlank(declaredByMetadataId, "Declared by metadata ID required"); Validate.notNull(fieldName, "Field name required"); Validate.notNull(fieldType, "Field type required"); this.fieldName = fieldName; this.fieldType = fieldType; this.fieldInitializer = fieldInitializer; } @Override public CommentStructure getCommentStructure() { return commentStructure; } @Override public void setCommentStructure(CommentStructure commentStructure) { this.commentStructure = commentStructure; } public String getFieldInitializer() { return fieldInitializer; } public JavaSymbolName getFieldName() { return fieldName; } public JavaType getFieldType() { return fieldType; } @Override public String toString() { final ToStringBuilder builder = new ToStringBuilder(this); builder.append("declaredByMetadataId", getDeclaredByMetadataId()); builder.append("modifier", Modifier.toString(getModifier())); builder.append("fieldType", fieldType); builder.append("fieldName", fieldName); builder.append("fieldInitializer", fieldInitializer); builder.append("annotations", getAnnotations()); builder.append("customData", getCustomData()); return builder.toString(); } }