@SuppressWarnings("unchecked") @Override public <T, U> U getValue(T element) { return ((U) ((Object) (castTarget(element).getModifiers()))); }
ctModifiable.addModifier(ModifierKind.ABSTRACT); ctModifiable.addModifier(ModifierKind.FINAL); ctModifiable.addModifier(ModifierKind.NATIVE); ctModifiable.addModifier(ModifierKind.PRIVATE); ctModifiable.addModifier(ModifierKind.PROTECTED); ctModifiable.addModifier(ModifierKind.PUBLIC); ctModifiable.addModifier(ModifierKind.STATIC); ctModifiable.addModifier(ModifierKind.STRICTFP); ctModifiable.addModifier(ModifierKind.SYNCHRONIZED); ctModifiable.addModifier(ModifierKind.TRANSIENT); } else if (ctModifiable instanceof CtExecutable) { ctModifiable.addModifier(ModifierKind.VOLATILE);
@Override protected void enter(CtElement e) { if (e instanceof CtCompilationUnit) { return; } ElementSourceFragment newFragment = addChild(parents.peek(), scannedRole, e); if (newFragment != null) { parents.push(newFragment); if (e instanceof CtModifiable) { CtModifiable modifiable = (CtModifiable) e; Set<CtExtendedModifier> modifiers = modifiable.getExtendedModifiers(); for (CtExtendedModifier ctExtendedModifier : modifiers) { addChild(newFragment, CtRole.MODIFIER, ctExtendedModifier); } } } } @Override
@Override public void scanCtModifiable(CtModifiable m) { final CtModifiable peek = (CtModifiable) this.other; if (m.getVisibility() == null) { if (peek.getVisibility() != null) { setNotEqual(CtRole.MODIFIER); } } else if (peek.getVisibility() == null) { setNotEqual(CtRole.MODIFIER); } else if (!m.getVisibility().equals(peek.getVisibility())) { setNotEqual(CtRole.MODIFIER); } if (m.getModifiers().size() != peek.getModifiers().size()) { setNotEqual(CtRole.MODIFIER); } if (!m.getModifiers().containsAll(peek.getModifiers())) { setNotEqual(CtRole.MODIFIER); } super.scanCtModifiable(m); }
/** * @return true if `element` still exist in the printed model. false if it was removed or was never there */ public boolean isElementExists(SourcePositionHolder element) { if (element instanceof CtExtendedModifier) { CtExtendedModifier modifier = (CtExtendedModifier) element; if (this.element instanceof CtModifiable) { return ((CtModifiable) this.element).hasModifier(modifier.getKind()); } } EarlyTerminatingScanner<Boolean> scanner = new EarlyTerminatingScanner<Boolean>() { @Override protected void enter(CtElement e) { if (element == e) { setResult(Boolean.TRUE); terminate(); } } }; scanner.scan(this.element); return scanner.getResult() == Boolean.TRUE; }
@Override public <T, U> void setValue(T element, U value) { castTarget(element).setModifiers(castValue(value)); } }
public static boolean hasModifier(CtElement element, ModifierKind kind) { if (allowsModifiers(element)) { return ((CtModifiable) element).hasModifier(kind); } return false; }
public DefaultJavaPrettyPrinter writeModifiers(CtModifiable m) { for (ModifierKind mod : m.getModifiers()) { write(mod.toString() + " "); } return this; }
isInStaticScope = isInStaticScope || ((CtModifiable) parent).hasModifier(ModifierKind.STATIC);
List<String> thirdPosition = new ArrayList<>(); // all other things for (CtExtendedModifier extendedModifier : modifiable.getExtendedModifiers()) { if (!extendedModifier.isImplicit()) { ModifierKind modifierKind = extendedModifier.getKind();
@Override public void scanCtModifiable(CtModifiable m) { ITree modifiers = builder.createNode("Modifiers", ""); modifiers.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, m); // ensuring an order (instead of hashset) // otherwise some flaky tests in CI Set<ModifierKind> modifiers1 = new TreeSet<>(new Comparator<ModifierKind>() { @Override public int compare(ModifierKind o1, ModifierKind o2) { return o1.name().compareTo(o2.name()); } }); modifiers1.addAll(m.getModifiers()); for (ModifierKind kind : modifiers1) { ITree modifier = builder.createNode("Modifier", kind.toString()); modifier.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, m); modifiers.addChild(modifier); } builder.addSiblingNode(modifiers); }
/** verifies that the explicit modifier should be present in the original source code */ public void checkModifiers() { for (CtModifiable modifiable : _rootPackage.getElements(new TypeFilter<>(CtModifiable.class))) { for (CtExtendedModifier modifier : modifiable.getExtendedModifiers()) { if (modifier.isImplicit()) { continue; } SourcePosition position = modifier.getPosition(); CompilationUnit compilationUnit = position.getCompilationUnit(); String originalSourceCode = compilationUnit.getOriginalSourceCode(); assertEquals(modifier.getKind().toString(), originalSourceCode.substring(position.getSourceStart(), position.getSourceEnd() + 1)); } } }
@Override public void scanCtModifiable(CtModifiable m) { ITree modifiers = builder.createNode("Modifiers", ""); modifiers.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, m); // ensuring an order (instead of hashset) // otherwise some flaky tests in CI Set<ModifierKind> modifiers1 = new TreeSet<>(new Comparator<ModifierKind>() { @Override public int compare(ModifierKind o1, ModifierKind o2) { return o1.name().compareTo(o2.name()); } }); modifiers1.addAll(m.getModifiers()); for (ModifierKind kind : modifiers1) { ITree modifier = builder.createNode("Modifier", kind.toString()); modifier.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, m); modifiers.addChild(modifier); } builder.addSiblingNode(modifiers); }
char[] contents = jdtTreeBuilder.getContextBuilder().getCompilationUnitContents(); Set<CtExtendedModifier> modifiers = e.getExtendedModifiers(); Map<String, CtExtendedModifier> explicitModifiersByName = new HashMap<>(); for (CtExtendedModifier modifier: modifiers) {