package org.jboss.seam.forge.parser.java.ast; import org.eclipse.jdt.core.dom.BodyDeclaration; import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword; import java.util.ArrayList; import java.util.List; public class ModifierAccessor { public boolean hasModifier(BodyDeclaration body, final ModifierKeyword modifier) { boolean result = false; List<Modifier> modifiers = getModifiers(body); for (Modifier m : modifiers) { if (m.getKeyword() == modifier) { result = true; } } return result; } private List<Modifier> getModifiers(BodyDeclaration body) { List<Modifier> result = new ArrayList<Modifier>(); List<?> modifiers = body.modifiers(); for (Object m : modifiers) { if (m instanceof Modifier) { Modifier mod = (Modifier) m; result.add(mod); } } return result; } @SuppressWarnings("unchecked") public List<Modifier> clearVisibility(BodyDeclaration body) { List<Modifier> modifiers = getModifiers(body); List<Modifier> toBeRemoved = new ArrayList<Modifier>(); for (Modifier modifier : modifiers) { if (modifier.isPrivate() || modifier.isProtected() || modifier.isPublic()) { toBeRemoved.add(modifier); } } body.modifiers().removeAll(toBeRemoved); return modifiers; } @SuppressWarnings("unchecked") public void addModifier(BodyDeclaration body, ModifierKeyword keyword) { body.modifiers().add(body.getAST().newModifier(keyword)); } @SuppressWarnings("unchecked") public void removeModifier(BodyDeclaration body, ModifierKeyword keyword) { List<Modifier> modifiers = getModifiers(body); List<Modifier> toBeRemoved = new ArrayList<Modifier>(); for (Modifier modifier : modifiers) { if (modifier.getKeyword().equals(keyword)) { toBeRemoved.add(modifier); } } body.modifiers().removeAll(toBeRemoved); } }