package org.springframework.roo.classpath.customdata.taggers; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.Validate; import org.springframework.roo.classpath.details.MemberHoldingTypeDetails; import org.springframework.roo.model.CustomDataKey; /** * {@link MemberHoldingTypeDetails}-specific implementation of {@link Matcher}. * Matches are based on the the type's MID. * * @author James Tyrrell * @since 1.1.3 */ public class MidTypeMatcher extends TypeMatcher { private final CustomDataKey<MemberHoldingTypeDetails> customDataKey; private final String declaredBy; /** * Constructor * * @param customDataKey * @param declaredBy the declaring class (required) * @since 1.2 */ public MidTypeMatcher(final CustomDataKey<MemberHoldingTypeDetails> customDataKey, final Class<?> declaredBy) { this(customDataKey, declaredBy.getName()); } /** * Constructor * * @param customDataKey * @param declaredBy (required) */ public MidTypeMatcher(final CustomDataKey<MemberHoldingTypeDetails> customDataKey, final String declaredBy) { Validate.notBlank(declaredBy, "declaredBy is required"); this.customDataKey = customDataKey; this.declaredBy = declaredBy; } public CustomDataKey<MemberHoldingTypeDetails> getCustomDataKey() { return customDataKey; } public Object getTagValue(final MemberHoldingTypeDetails key) { return null; } public List<MemberHoldingTypeDetails> matches( final List<MemberHoldingTypeDetails> memberHoldingTypeDetailsList) { final List<MemberHoldingTypeDetails> types = new ArrayList<MemberHoldingTypeDetails>(); for (final MemberHoldingTypeDetails memberHoldingTypeDetails : memberHoldingTypeDetailsList) { if (memberHoldingTypeDetails.getDeclaredByMetadataId().startsWith("MID:" + declaredBy)) { types.add(memberHoldingTypeDetails); } } return types; } }