List of usage examples for org.eclipse.jdt.core.dom Modifier isFinal
public static boolean isFinal(int flags)
From source file:ca.mcgill.cs.swevo.ppa.PPAASTUtil.java
License:Open Source License
/** * //from www . j a v a2 s . c om * @param mi * @return True if this is a final method from Object */ private static boolean checkObjectFinalMethod(MethodInvocation mi) { boolean isObjectFinal = false; IMethodBinding mb = mi.resolveMethodBinding(); if (mb != null) { isObjectFinal = Modifier.isFinal(mb.getModifiers()) && mb.getDeclaringClass().getQualifiedName().equals(OBJECT_FQN); } return isObjectFinal; }
From source file:coloredide.utils.CopiedNaiveASTFlattener.java
License:Open Source License
/** * Appends the text representation of the given modifier flags, followed by * a single space. Used for JLS2 modifiers. * //w w w. jav a2 s. c o m * @param modifiers * the modifier flags */ void printModifiers(int modifiers) { if (Modifier.isPublic(modifiers)) { this.buffer.append("public ");//$NON-NLS-1$ } if (Modifier.isProtected(modifiers)) { this.buffer.append("protected ");//$NON-NLS-1$ } if (Modifier.isPrivate(modifiers)) { this.buffer.append("private ");//$NON-NLS-1$ } if (Modifier.isStatic(modifiers)) { this.buffer.append("static ");//$NON-NLS-1$ } if (Modifier.isAbstract(modifiers)) { this.buffer.append("abstract ");//$NON-NLS-1$ } if (Modifier.isFinal(modifiers)) { this.buffer.append("final ");//$NON-NLS-1$ } if (Modifier.isSynchronized(modifiers)) { this.buffer.append("synchronized ");//$NON-NLS-1$ } if (Modifier.isVolatile(modifiers)) { this.buffer.append("volatile ");//$NON-NLS-1$ } if (Modifier.isNative(modifiers)) { this.buffer.append("native ");//$NON-NLS-1$ } if (Modifier.isStrictfp(modifiers)) { this.buffer.append("strictfp ");//$NON-NLS-1$ } if (Modifier.isTransient(modifiers)) { this.buffer.append("transient ");//$NON-NLS-1$ } }
From source file:com.crispico.flower.mp.metamodel.codesyncjava.algorithm.JavaSyncUtils.java
License:Open Source License
/** * Updates java code according to the model value for abstract or static modifiers * /*from ww w . jav a 2s . com*/ * @author Luiza * @param bd <code>{@link BodyDeclaration}</code> for a class, method or field. * @param isTrue value for the modifier * @param modifier flag indicating the modifier to update. * This should be one of the predefined flags: * <ul> * <li>{@link #MODIFIER_ABSTRACT}</li> * <li>{@link #MODIFIER_STATIC}</li> * </ul> * @flowerModelElementId _zVs8cJiOEd6aNMdNFvR5WQ */ @SuppressWarnings("unchecked") public static void updateModifierFromModelToJavaClass(BodyDeclaration bd, boolean isTrue, String modifier) { ModifierKeyword javaModifierFlag = null; ModifierKeyword modelModifierFlag = null; boolean isForAbstractModif = modifier.equals(MODIFIER_ABSTRACT); boolean isForStaticModif = modifier.equals(MODIFIER_STATIC); boolean isForFinalModif = modifier.equals(MODIFIER_FINAL); if (isForAbstractModif) { javaModifierFlag = Modifier.isAbstract(bd.getModifiers()) ? ModifierKeyword.ABSTRACT_KEYWORD : null; modelModifierFlag = isTrue ? ModifierKeyword.ABSTRACT_KEYWORD : null; } else if (isForStaticModif) { javaModifierFlag = Modifier.isStatic(bd.getModifiers()) ? ModifierKeyword.STATIC_KEYWORD : null; modelModifierFlag = isTrue ? ModifierKeyword.STATIC_KEYWORD : null; } else if (isForFinalModif) { javaModifierFlag = Modifier.isFinal(bd.getModifiers()) ? ModifierKeyword.FINAL_KEYWORD : null; modelModifierFlag = isTrue ? ModifierKeyword.FINAL_KEYWORD : null; } else throw new IllegalArgumentException( "updateModifierFromModelToJavaClass - can't update java code for modifier " + modifier); //if there are differences between the model and the java file if (modelModifierFlag != javaModifierFlag) { //if this modifier has been set before find it and remove it if (javaModifierFlag != null) { //Modifier toRemove = null; /* * we use bd.modifiers() instead of bd.getModifiers(), which computes a bit-wise integer consisting in all the modifier values * because it also iterates over the modifiers and method bd.setModifiers(modifiers) is deprecated */ for (Iterator<Modifier> it = bd.modifiers().iterator(); it.hasNext();) { Modifier modif = it.next(); if (isForAbstractModif && modif.isAbstract()) { it.remove(); break; } else if (isForStaticModif && modif.isStatic()) { it.remove(); break; } else if (isForFinalModif && modif.isFinal()) { it.remove(); break; } } //bd.modifiers().remove(toRemove); } // add the new modifier value if changes have been made in the model if (modelModifierFlag != null) { Modifier newModif = bd.getAST().newModifier(modelModifierFlag); bd.modifiers().add(newModif); } } }
From source file:com.drgarbage.ast.ASTGraphUtil.java
License:Apache License
private static void appendModifiers(int mod, StringBuffer buf) { if (Modifier.isAbstract(mod)) { buf.append(Modifier.ModifierKeyword.ABSTRACT_KEYWORD.toString()); buf.append(' '); }// w w w . j a va 2 s .c o m if (Modifier.isFinal(mod)) { buf.append(Modifier.ModifierKeyword.FINAL_KEYWORD.toString()); buf.append(' '); } if (Modifier.isNative(mod)) { buf.append(Modifier.ModifierKeyword.NATIVE_KEYWORD.toString()); buf.append(' '); } if (Modifier.isPrivate(mod)) { buf.append(Modifier.ModifierKeyword.PRIVATE_KEYWORD.toString()); buf.append(' '); } if (Modifier.isProtected(mod)) { buf.append(Modifier.ModifierKeyword.PROTECTED_KEYWORD.toString()); buf.append(' '); } if (Modifier.isPublic(mod)) { buf.append(Modifier.ModifierKeyword.PUBLIC_KEYWORD.toString()); buf.append(' '); } if (Modifier.isStatic(mod)) { buf.append(Modifier.ModifierKeyword.STATIC_KEYWORD.toString()); buf.append(' '); } if (Modifier.isStrictfp(mod)) { buf.append(Modifier.ModifierKeyword.STRICTFP_KEYWORD.toString()); buf.append(' '); } if (Modifier.isSynchronized(mod)) { buf.append(Modifier.ModifierKeyword.SYNCHRONIZED_KEYWORD.toString()); buf.append(' '); } if (Modifier.isTransient(mod)) { buf.append(Modifier.ModifierKeyword.TRANSIENT_KEYWORD.toString()); buf.append(' '); } if (Modifier.isVolatile(mod)) { buf.append(Modifier.ModifierKeyword.VOLATILE_KEYWORD.toString()); buf.append(' '); } }
From source file:com.google.devtools.j2cpp.translate.AnonymousClassConverter.java
License:Open Source License
/** * Returns the set of read-only variables (parameters and local variables) * defined in the scope of the method enclosing a specified anonymous * class declaration./*from w w w. jav a 2s. co m*/ */ private Set<IVariableBinding> getMethodVars(AnonymousClassDeclaration node) { final Set<IVariableBinding> methodVars = Sets.newHashSet(); MethodDeclaration method = getEnclosingMethod(node); if (method != null) { @SuppressWarnings("unchecked") List<SingleVariableDeclaration> params = method.parameters(); // safe by definition for (SingleVariableDeclaration param : params) { IVariableBinding var = Types.getVariableBinding(param); assert var != null; if (Modifier.isFinal(var.getModifiers())) { methodVars.add(var); } } ASTNode lastNode = node; do { getMethodVars(method, lastNode, methodVars); lastNode = method; method = getEnclosingMethod(lastNode); } while (method != null); } return methodVars; }
From source file:com.google.devtools.j2cpp.translate.AnonymousClassConverter.java
License:Open Source License
private void getMethodVars(MethodDeclaration method, ASTNode node, final Set<IVariableBinding> methodVars) { @SuppressWarnings("unchecked") List<Statement> statements = method.getBody().statements(); // safe by definition Statement enclosingStatement = getEnclosingStatement(node); for (Statement stmt : statements) { if (stmt == enclosingStatement) { // Local variables declared after this statement cannot be // referenced by the anonymous class. break; }// w ww . j a v a 2 s . co m stmt.accept(new ASTVisitor() { @Override public boolean visit(VariableDeclarationStatement node) { if (Modifier.isFinal(node.getModifiers())) { @SuppressWarnings("unchecked") // safe by definition List<VariableDeclarationFragment> localVars = node.fragments(); for (VariableDeclarationFragment localVar : localVars) { IVariableBinding var = Types.getVariableBinding(localVar); assert var != null; methodVars.add(var); } } return true; } @Override public boolean visit(SingleVariableDeclaration node) { IVariableBinding var = Types.getVariableBinding(node); assert var != null; if (Modifier.isFinal(var.getModifiers())) { methodVars.add(var); } return true; } @Override public boolean visit(AnonymousClassDeclaration node) { return false; } }); } }
From source file:com.google.devtools.j2cpp.translate.DeadCodeEliminator.java
License:Open Source License
/** * Initializes final instance fields in classes whose constructors have all * been deleted. This must take place after dead methods are removed. *//*w ww . j a v a2s . co m*/ private void initializeFinalFields(List<BodyDeclaration> body) { Set<VariableDeclarationFragment> finalVars = Sets.newHashSet(); for (BodyDeclaration declaration : body) { // If there's any non-generated constructor remaining, it must initialize // all final fields. if (declaration instanceof MethodDeclaration) { MethodDeclaration method = (MethodDeclaration) declaration; if (!generatedMethods.contains(method) && method.isConstructor()) { return; } } // Collect final fields that lack initializers. if (declaration instanceof FieldDeclaration) { FieldDeclaration field = (FieldDeclaration) declaration; int modifiers = field.getModifiers(); if (!Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers)) { @SuppressWarnings("unchecked") List<VariableDeclarationFragment> fragments = field.fragments(); for (VariableDeclarationFragment fragment : fragments) { if (fragment.getInitializer() == null) { finalVars.add(fragment); } } } } } // If we get this far, there are no explicit constructors left. for (VariableDeclarationFragment var : finalVars) { if (var.getInitializer() == null) { addFieldInitializer(var); } } }
From source file:com.google.devtools.j2cpp.translate.JavaToIOSMethodTranslator.java
License:Open Source License
private void loadTargetMethods(ITypeBinding clazz) { for (IMethodBinding method : clazz.getDeclaredMethods()) { if (method.isConstructor() && Types.isJavaObjectType(method.getDeclaringClass())) { continue; // No mapping needed for new Object(); }// w ww .j ava 2s. com if (method.getName().equals("clone")) { continue; } // track all non-final public, protected and package-private methods int mods = method.getModifiers(); if (!Modifier.isPrivate(mods)) { if (!Modifier.isFinal(mods)) { overridableMethods.add(method); } mappedMethods.add(method); addDescription(method); } } }
From source file:com.google.devtools.j2cpp.translate.Rewriter.java
License:Open Source License
@Override public boolean visit(FieldDeclaration node) { int mods = node.getModifiers(); if (Modifier.isStatic(mods)) { ASTNode parent = node.getParent(); @SuppressWarnings("unchecked") List<BodyDeclaration> classMembers = parent instanceof AbstractTypeDeclaration ? ((AbstractTypeDeclaration) parent).bodyDeclarations() : ((AnonymousClassDeclaration) parent).bodyDeclarations(); // safe by specification int indexOfNewMember = classMembers.indexOf(node) + 1; @SuppressWarnings("unchecked") List<VariableDeclarationFragment> fragments = node.fragments(); // safe by specification for (VariableDeclarationFragment var : fragments) { IVariableBinding binding = Types.getVariableBinding(var); if (Types.isPrimitiveConstant(binding) && Modifier.isPrivate(binding.getModifiers())) { // Don't define accessors for private constants, since they can be // directly referenced. continue; }//w w w .j a v a 2s . c o m // rename varName to varName_, per Obj-C style guide SimpleName oldName = var.getName(); ITypeBinding type = ((AbstractTypeDeclaration) node.getParent()).resolveBinding(); String varName = NameTable.getStaticVarQualifiedName(type, oldName.getIdentifier()); NameTable.rename(binding, varName); ITypeBinding typeBinding = binding.getType(); var.setExtraDimensions(0); // if array, type was corrected above // add accessor(s) if (needsReader(var, classMembers)) { classMembers.add(indexOfNewMember++, makeStaticReader(var, mods)); } if (!Modifier.isFinal(node.getModifiers()) && needsWriter(var, classMembers)) { classMembers.add(indexOfNewMember++, makeStaticWriter(var, oldName.getIdentifier(), node.getType(), mods)); } // move non-constant initialization to init block Expression initializer = var.getInitializer(); if (initializer != null && initializer.resolveConstantExpressionValue() == null) { var.setInitializer(null); AST ast = var.getAST(); SimpleName newName = ast.newSimpleName(varName); Types.addBinding(newName, binding); Assignment assign = ast.newAssignment(); assign.setLeftHandSide(newName); Expression newInit = NodeCopier.copySubtree(ast, initializer); assign.setRightHandSide(newInit); Types.addBinding(assign, typeBinding); Block initBlock = ast.newBlock(); @SuppressWarnings("unchecked") List<Statement> stmts = initBlock.statements(); // safe by definition stmts.add(ast.newExpressionStatement(assign)); Initializer staticInitializer = ast.newInitializer(); staticInitializer.setBody(initBlock); @SuppressWarnings("unchecked") List<IExtendedModifier> initMods = staticInitializer.modifiers(); // safe by definition initMods.add(ast.newModifier(ModifierKeyword.STATIC_KEYWORD)); classMembers.add(indexOfNewMember++, staticInitializer); } } } return true; }
From source file:com.google.devtools.j2cpp.translate.Rewriter.java
License:Open Source License
private MethodDeclaration createInterfaceMethodBody(AST ast, ITypeBinding typeBinding, IMethodBinding interfaceMethod) { IMethodBinding methodBinding = new IOSMethodBinding(interfaceMethod.getName(), interfaceMethod, typeBinding);//from w ww .j a v a2 s .co m MethodDeclaration method = ast.newMethodDeclaration(); Types.addBinding(method, methodBinding); method.setReturnType2(Types.makeType(interfaceMethod.getReturnType())); SimpleName methodName = ast.newSimpleName(interfaceMethod.getName()); Types.addBinding(methodName, methodBinding); method.setName(methodName); @SuppressWarnings("unchecked") List<Modifier> modifiers = method.modifiers(); modifiers.add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD)); @SuppressWarnings("unchecked") List<SingleVariableDeclaration> parameters = method.parameters(); // safe by design ITypeBinding[] parameterTypes = interfaceMethod.getParameterTypes(); for (int i = 0; i < parameterTypes.length; i++) { ITypeBinding paramType = parameterTypes[i]; String paramName = "param" + i; SingleVariableDeclaration param = ast.newSingleVariableDeclaration(); IVariableBinding paramBinding = IOSVariableBinding.newParameter(paramName, i, paramType, methodBinding, paramType.getDeclaringClass(), Modifier.isFinal(paramType.getModifiers())); Types.addBinding(param, paramBinding); param.setName(ast.newSimpleName(paramName)); Types.addBinding(param.getName(), paramBinding); param.setType(Types.makeType(paramType)); parameters.add(param); } Symbols.scanAST(method); return method; }