/* * ModeShape (http://www.modeshape.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.modeshape.sequencer.javafile.metadata; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * Base class for the other type metadata used when retrieving information from the JDT compiler. * * @author Horia Chiorean */ public abstract class AbstractMetadata { public static final String STATIC = "static"; public static final String FINAL = "final"; public static final String ABSTRACT = "abstract"; public static final String STRICT_FP = "strictfp"; public static final String NATIVE = "native"; public static final String SYNCRHONIZED = "synchronized"; public static final String TRANSIENT = "transient"; public static final String VOLATILE = "volatile"; public static final String PUBLIC = "public"; public static final String PROTECTED = "protected"; public static final String PRIVATE = "private"; protected String name; private List<ModifierMetadata> modifiers = new ArrayList<ModifierMetadata>(); private List<AnnotationMetadata> annotations = new LinkedList<AnnotationMetadata>(); public List<AnnotationMetadata> getAnnotations() { return annotations; } public List<ModifierMetadata> getModifiers() { return modifiers; } public String getName() { return name; } public void setName( String name ) { this.name = name; } public boolean hasStaticModifier() { return hasModifierNamed(STATIC); } public boolean hasFinalModifier() { return hasModifierNamed(FINAL); } public boolean hasAbstractModifier() { return hasModifierNamed(ABSTRACT); } public boolean hasNativeModifier() { return hasModifierNamed(NATIVE); } public boolean hasSynchronizedModifier() { return hasModifierNamed(SYNCRHONIZED); } public boolean hasStrictFPModifier() { return hasModifierNamed(STRICT_FP); } public boolean hasTransientModifier() { return hasModifierNamed(TRANSIENT); } public boolean hasVolatileModifier() { return hasModifierNamed(VOLATILE); } public boolean hasPublicVisibility() { return hasModifierNamed(PUBLIC); } public boolean hasProtectedVisibility() { return hasModifierNamed(PROTECTED); } public boolean hasPrivateVisibility() { return hasModifierNamed(PRIVATE); } /** * Checks if a modifier with the given name is found among this method's identifiers. * * @param modifierName the name of the modifier to check for * @return true if the type has a modifier of that name, otherwise false */ private boolean hasModifierNamed( String modifierName ) { for (ModifierMetadata modifier : modifiers) { if (modifierName.equalsIgnoreCase(modifier.getName())) { return true; } } return false; } }