package org.springframework.roo.metadata; import org.apache.commons.lang3.Validate; /** * Abstract implementation of {@link MetadataItem}. * * @author Ben Alex * @since 1.0 */ public abstract class AbstractMetadataItem implements MetadataItem { /** * Private to reinforce contractual immutability and formatting requirements */ private final String id; /** * Defaults to true; protected to simplify superclass direct field * modification */ protected boolean valid = true; /** * Constructs an {@link AbstractMetadataItem} with the specified identifier, * defaulting the {@link #isValid()} to true. * * @param id the metadata identification string for a particular instance * (must return true when presented to * {@link MetadataIdentificationUtils#isIdentifyingInstance(String)} * ) */ protected AbstractMetadataItem(final String id) { Validate.isTrue(MetadataIdentificationUtils.isIdentifyingInstance(id), "Metadata identification string '%s' does not identify a metadata instance", id); this.id = id; } public final String getId() { return id; } public final boolean isValid() { return valid; } }