Java Examples for org.eclipse.jdt.core.dom.MethodDeclaration

The following java examples will help you to understand the usage of org.eclipse.jdt.core.dom.MethodDeclaration. These source code samples are taken from different open source projects.

Example 1
Project: bndtools-master  File: AbstractBuildErrorDetailsHandler.java View source code
@Override
public boolean visit(MethodDeclaration methodDecl) {
    if (matches(ast, methodDecl, methodName, methodSignature)) {
        // Create the marker attribs here
        markerAttributes.put(IMarker.CHAR_START, methodDecl.getStartPosition());
        markerAttributes.put(IMarker.CHAR_END, methodDecl.getStartPosition() + methodDecl.getLength());
    }
    return false;
}
Example 2
Project: ChangeScribe-master  File: StereotypeIdentifier.java View source code
public void identifyStereotypes() {
    if (this.parser == null) {
        return;
    }
    this.parser.parse();
    for (final ASTNode element : this.parser.getElements()) {
        try {
            StereotypedElement stereoElement;
            if (element instanceof TypeDeclaration) {
                stereoElement = new StereotypedType((TypeDeclaration) element, this.methodsMean, this.methodsStdDev);
            } else {
                if (!(element instanceof MethodDeclaration)) {
                    continue;
                }
                stereoElement = new StereotypedMethod((MethodDeclaration) element);
            }
            stereoElement.findStereotypes();
            this.stereotypedElements.add(stereoElement);
        } catch (NullPointerException ex) {
            ex.printStackTrace();
        }
    }
}
Example 3
Project: eclipse.jdt.core-master  File: DefaultJavaElementComparator.java View source code
/**
	 * This method is used to retrieve the category for a body declaration node according to the
	 * preferences passed at the creation of the comparator.
	 *
	 * @param node the given node
	 * @return the category corresponding to the given node
	 *
	 * @since 2.1
	 */
private int getCategory(BodyDeclaration node) {
    switch(node.getNodeType()) {
        case ASTNode.METHOD_DECLARATION:
            MethodDeclaration methodDeclaration = (MethodDeclaration) node;
            if (methodDeclaration.isConstructor()) {
                return this.categories[CONSTRUCTOR_CATEGORY];
            }
            if (Flags.isStatic(methodDeclaration.getModifiers())) {
                return this.categories[STATIC_METHOD_CATEGORY];
            }
            return this.categories[METHOD_CATEGORY];
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            if (Flags.isStatic(node.getModifiers())) {
                return this.categories[STATIC_METHOD_CATEGORY];
            }
            return this.categories[METHOD_CATEGORY];
        case ASTNode.FIELD_DECLARATION:
            FieldDeclaration fieldDeclaration = (FieldDeclaration) node;
            if (Flags.isStatic(fieldDeclaration.getModifiers())) {
                return this.categories[STATIC_FIELD_CATEGORY];
            }
            return this.categories[FIELD_CATEGORY];
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            return this.categories[STATIC_FIELD_CATEGORY];
        case ASTNode.TYPE_DECLARATION:
        case ASTNode.ENUM_DECLARATION:
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            AbstractTypeDeclaration abstractTypeDeclaration = (AbstractTypeDeclaration) node;
            if (Flags.isStatic(abstractTypeDeclaration.getModifiers())) {
                return this.categories[STATIC_TYPE_CATEGORY];
            }
            return this.categories[TYPE_CATEGORY];
        case ASTNode.INITIALIZER:
            Initializer initializer = (Initializer) node;
            if (Flags.isStatic(initializer.getModifiers())) {
                return this.categories[STATIC_INITIALIZER_CATEGORY];
            }
            return this.categories[INITIALIZER_CATEGORY];
    }
    return 0;
}
Example 4
Project: evosuite-master  File: MarkerWriter.java View source code
@Override
public void run() {
    ArrayList<Integer> lines = new ArrayList<Integer>();
    Set<Integer> actualLines = new HashSet<Integer>();
    actualLines.addAll(tgr.getUncoveredLines());
    actualLines.addAll(tgr.getCoveredLines());
    int contentPosition = 0;
    int line = 1;
    while (contentPosition != -2 && contentPosition != -1) {
        if (!actualLines.contains(line)) {
            lines.add(line);
        }
        contentPosition = compClass.getPosition(line, 0);
        line++;
    }
    IPreferenceStore store = Activator.getDefault().getPreferenceStore();
    if (store.getBoolean("removed")) {
        for (Integer i : lines) {
            // this line couldn't be reached in the test!
            IJavaElement currentElement = null;
            int position = compClass.getPosition(i, 0);
            int maxPosition = compClass.getPosition(i + 1, 0);
            if (position == -1 || position == -2) {
                continue;
            }
            while (position < classContent.length && Character.isWhitespace(classContent[position])) {
                // System.out.println(classContent);
                position++;
            }
            if (position > maxPosition) {
                continue;
            }
            while (maxPosition < classContent.length && Character.isWhitespace(classContent[maxPosition])) {
                // System.out.println(classContent);
                maxPosition++;
            }
            try {
                currentElement = icomp.getElementAt(position + 1);
            } catch (JavaModelException e1) {
                e1.printStackTrace();
            }
            if (isMethodDeclaration(i, currentElement, content, compClass, icomp)) {
                continue;
            }
            IJavaElement nextElement = null;
            int nextPosition = compClass.getPosition(i + 1, 0);
            if (nextPosition != -1 || nextPosition != -2) {
                try {
                    nextElement = icomp.getElementAt(nextPosition);
                    if (nextElement != currentElement) {
                        continue;
                    }
                } catch (JavaModelException e) {
                    e.printStackTrace();
                }
            }
            if (position > maxPosition) {
                continue;
            }
            while (maxPosition < classContent.length && Character.isWhitespace(classContent[maxPosition])) {
                // System.out.println(classContent);
                maxPosition++;
            }
            try {
                currentElement = icomp.getElementAt(position + 1);
            } catch (JavaModelException e1) {
                e1.printStackTrace();
            }
            if (content[position] == '/' && content[position + 1] == '/') {
                continue;
            }
            if (content[position] == '}') {
                continue;
            }
            if (getMethod(currentElement) == null) {
                continue;
            }
            boolean marker = shouldWriteMarkers(currentElement);
            if (marker) {
                try {
                    IMarker m = res.createMarker("EvoSuiteQuickFixes.lineremovedmarker");
                    m.setAttribute(IMarker.MESSAGE, "This line appears to be removed by the Java Compiler.");
                    m.setAttribute(IMarker.LINE_NUMBER, i);
                    m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
                    m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                    m.setAttribute(IMarker.LOCATION, res.getName());
                    m.setAttribute(IMarker.CHAR_START, position);
                    m.setAttribute(IMarker.CHAR_END, compClass.getPosition(i + 1, 0));
                } catch (CoreException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    if (store.getBoolean("uncovered")) {
        for (Integer i : tgr.getUncoveredLines()) {
            // this line couldn't be reached in the test!
            IJavaElement currentElement = null;
            int position = compClass.getPosition(i, 0);
            if (position == -1) {
                continue;
            }
            while (position < classContent.length && Character.isWhitespace(classContent[position])) {
                // System.out.println(classContent);
                position++;
            }
            try {
                currentElement = icomp.getElementAt(position + 1);
            } catch (JavaModelException e1) {
                e1.printStackTrace();
            }
            boolean marker = shouldWriteMarkers(currentElement);
            if (marker) {
                try {
                    IMarker m = res.createMarker("EvoSuiteQuickFixes.uncoveredlinemarker");
                    m.setAttribute(IMarker.LINE_NUMBER, i);
                    m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
                    m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                    m.setAttribute(IMarker.LOCATION, res.getName());
                    m.setAttribute(IMarker.CHAR_START, position);
                    m.setAttribute(IMarker.CHAR_END, compClass.getPosition(i + 1, 0));
                } catch (CoreException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    for (BranchInfo bi : tgr.getUncoveredBranches()) {
        int j = bi.getLineNo();
        IJavaElement currentElement = null;
        int position = compClass.getPosition(j, 0);
        while (position < classContent.length && Character.isWhitespace(classContent[position])) {
            // System.out.println(classContent);
            position++;
        }
        try {
            currentElement = icomp.getElementAt(position + 1);
        } catch (JavaModelException e1) {
            e1.printStackTrace();
        }
        boolean marker = shouldWriteMarkers(currentElement);
        if (marker) {
            try {
                IMarker m = res.createMarker("EvoSuiteQuickFixes.notcoveredmarker");
                m.setAttribute(IMarker.MESSAGE, "This branch (starting line " + j + ") could not be covered by EvoSuite.");
                m.setAttribute(IMarker.LINE_NUMBER, j);
                m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
                m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                m.setAttribute(IMarker.LOCATION, res.getName());
                m = res.createMarker("EvoSuiteQuickFixes.uncoveredlinemarker");
                // m.setAttribute(IMarker.LINE_NUMBER, j);
                m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
                m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                m.setAttribute(IMarker.LOCATION, res.getName());
                m.setAttribute(IMarker.CHAR_START, position);
                m.setAttribute(IMarker.CHAR_END, compClass.getPosition(j + 1, 0) - 1);
                m.setAttribute(IMarker.CHAR_START, position);
                m.setAttribute(IMarker.CHAR_END, compClass.getPosition(j + 1, 0) - 1);
            } catch (CoreException e) {
                e.printStackTrace();
            }
        }
    }
    for (MethodDeclaration method : testM.getMethods()) {
        String test = method.getName().getFullyQualifiedName();
        Set<Failure> failures = tgr.getContractViolations(test);
        if (failures != null && failures.size() != 0) {
            // uncaught Exception!
            try {
                for (Failure f : failures) {
                    if (f != null) {
                        int lineNumber = 1;
                        String message = "";
                        for (int i = 0; i < f.getStackTrace().length; i++) {
                            if (f.getStackTrace()[i].getClassName().equals(className)) {
                                boolean found = false;
                                for (MethodDeclaration method2 : raw.getMethods()) {
                                    String s = method2.getName().getFullyQualifiedName();
                                    if (s.equals(f.getStackTrace()[i].getMethodName())) {
                                        found = true;
                                        break;
                                    }
                                }
                                if (found) {
                                    message = f.getStackTrace()[i].toString();
                                    lineNumber = f.getStackTrace()[i].getLineNumber();
                                    break;
                                }
                            }
                        }
                        IJavaElement currentElement = null;
                        int position = compClass.getPosition(lineNumber, 0);
                        while (position < classContent.length && Character.isWhitespace(classContent[position])) {
                            // System.out.println(classContent);
                            position++;
                        }
                        try {
                            currentElement = icomp.getElementAt(position + 1);
                        } catch (JavaModelException e1) {
                            e1.printStackTrace();
                        }
                        boolean marker = shouldWriteMarkers(currentElement);
                        if (marker) {
                            IMarker m = res.createMarker("EvoSuiteQuickFixes.exceptionmarker");
                            m.setAttribute(IMarker.MESSAGE, f.getExceptionName() + " detected " + message);
                            m.setAttribute(IMarker.LINE_NUMBER, lineNumber);
                            m.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
                            m.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
                            m.setAttribute(IMarker.LOCATION, res.getName());
                            while (position < classContent.length && Character.isWhitespace(classContent[position])) {
                                // System.out.println(classContent);
                                position++;
                            }
                            m.setAttribute(IMarker.CHAR_START, position);
                            m.setAttribute(IMarker.CHAR_END, compClass.getPosition(lineNumber + 1, 0) - 1);
                        }
                    }
                }
            } catch (CoreException e) {
                e.printStackTrace();
            }
        }
    }
}
Example 5
Project: jbosstools-webservices-master  File: ImplementationClassCreationCommand.java View source code
@SuppressWarnings("unchecked")
protected void generateImplClass(ICompilationUnit portType, IPackageFragment pack, String ptCls, String clsName) throws CoreException, BadLocationException {
    ASTParser astp = ASTParser.newParser(AST.JLS3);
    astp.setKind(ASTParser.K_COMPILATION_UNIT);
    astp.setSource(portType);
    CompilationUnit cu = (CompilationUnit) astp.createAST(null);
    String implFileName = getJavaFileName(clsName);
    //$NON-NLS-1$
    ICompilationUnit icu = pack.createCompilationUnit(implFileName, "", true, null);
    // create a working copy with a new owner
    icu.becomeWorkingCopy(null);
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setSource(icu);
    parser.setResolveBindings(false);
    parser.setFocalPosition(0);
    CompilationUnit implCu = (CompilationUnit) parser.createAST(null);
    AST ast = implCu.getAST();
    // creation of a Document and ASTRewrite
    String source = icu.getBuffer().getContents();
    Document document = new Document(source);
    implCu.recordModifications();
    // start to add content into implementation class
    // add package declaration for impl class:
    PackageDeclaration implPackage = ast.newPackageDeclaration();
    implPackage.setName(ast.newName(pack.getElementName()));
    implCu.setPackage(implPackage);
    // add imports for implementation class
    addImportsToImplementationClass(implCu, cu, ptCls);
    // add class declaration
    TypeDeclaration type = ast.newTypeDeclaration();
    type.setInterface(false);
    // add WebService annotation
    String endpoint = getPortTypeFullName(portType.getParent().getElementName(), ptCls);
    NormalAnnotation ann = null;
    if (serviceName != null) {
        ann = createAnnotation(ast, serviceName, endpoint, targetNamespace);
    } else {
        ann = createAnnotation(ast, clsName, endpoint, targetNamespace);
    }
    type.modifiers().add(ann);
    type.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
    type.setName(ast.newSimpleName(clsName));
    type.superInterfaceTypes().add(ast.newSimpleType(ast.newName(ptCls)));
    // add Logger variable declaration
    // createLoggerField(ast, type, portTypeName);
    // add method implementation
    TypeDeclaration inTD = (TypeDeclaration) cu.types().get(0);
    // firstly, get all methods that declared in Interface class and then
    // add corresponding methods to
    // the impl class
    MethodDeclaration[] methods = inTD.getMethods();
    for (int i = 0; i < methods.length; i++) {
        MethodDeclaration newMethod = createMethodForImplClass(ast, methods[i]);
        type.bodyDeclarations().add(newMethod);
    }
    implCu.types().add(type);
    // try to save the Java file
    TextEdit edits = implCu.rewrite(document, icu.getJavaProject().getOptions(true));
    edits.apply(document);
    String newSource = document.get();
    icu.getBuffer().setContents(newSource);
    icu.reconcile(ICompilationUnit.NO_AST, false, null, null);
    icu.commitWorkingCopy(true, null);
    icu.discardWorkingCopy();
}
Example 6
Project: fb-contrib-eclipse-quick-fixes-master  File: UseEnumCollectionsResolution.java View source code
private ClassInstanceCreation findInitializerOfCollection(SimpleName collectionName, MethodInvocation startOfSearch) throws EnumParsingException {
    IBinding collectionBinding = collectionName.resolveBinding();
    // where it is being initialized
    if (collectionBinding instanceof IVariableBinding) {
        if (((IVariableBinding) collectionBinding).isField()) {
            return findFieldInitialization(collectionName, TraversalUtil.findClosestAncestor(startOfSearch, TypeDeclaration.class));
        }
        return findMethodInitialization(collectionName, TraversalUtil.findClosestAncestor(startOfSearch, MethodDeclaration.class), false);
    }
    throw new EnumParsingException();
}
Example 7
Project: ClearJS-master  File: WrongReturnTypeSubProcessor.java View source code
public static void addTypeMismatchProposal(IInvocationContext context, IProblemLocation problem, Collection proposals, String simpleType) throws CoreException {
    String args[] = problem.getProblemArguments();
    if (args.length != 2)
        return;
    org.eclipse.jdt.core.ICompilationUnit cu = context.getCompilationUnit();
    CompilationUnit astRoot = context.getASTRoot();
    AST ast = astRoot.getAST();
    ASTNode selectedNode = problem.getCoveredNode(astRoot);
    BodyDeclaration decl = ASTResolving.findParentBodyDeclaration(selectedNode);
    if (decl instanceof MethodDeclaration) {
        MethodDeclaration methodDeclaration = (MethodDeclaration) decl;
        ASTRewrite rewrite = ASTRewrite.create(ast);
        String label = Messages.format(CorrectionMessages.TypeMismatchSubProcessor_changereturntype_description, BasicElementLabels.getJavaElementName("java.util." + simpleType));
        org.eclipse.swt.graphics.Image image = JavaPluginImages.get("org.eclipse.jdt.ui.correction_change.gif");
        LinkedCorrectionProposal proposal = new LinkedCorrectionProposal(label, cu, rewrite, 6, image);
        ImportRewrite imports = proposal.createImportRewrite(astRoot);
        String newReturnType = imports.addImport("java.util." + simpleType);
        rewrite.replace(methodDeclaration.getReturnType2(), rewrite.createStringPlaceholder(simpleType + "<?>", 43), null);
        proposals.add(proposal);
    }
}
Example 8
Project: composite-refactorings-master  File: NewClassCreator.java View source code
public TypeDeclaration createClassDeclaration(String declaringType, CompilationUnitRewrite cuRewrite) throws CoreException {
    AST ast = cuRewrite.getAST();
    TypeDeclaration typeDeclaration = ast.newTypeDeclaration();
    typeDeclaration.setName(ast.newSimpleName(fClassName));
    if (fSuperclassType != null) {
        Type superclassASTNode = (Type) Type.copySubtree(typeDeclaration.getAST(), fSuperclassType);
        typeDeclaration.setSuperclassType(superclassASTNode);
    }
    List<BodyDeclaration> body = typeDeclaration.bodyDeclarations();
    MethodDeclaration constructor = createConstructor(declaringType, cuRewrite);
    body.add(constructor);
    return typeDeclaration;
}
Example 9
Project: gwt-eclipse-plugin-master  File: JsniParser.java View source code
public static JavaValidationResult parse(MethodDeclaration method) {
    final JavaValidationResult result = new JavaValidationResult();
    try {
        try {
            // Find all Java references
            result.addAllJavaRefs(findJavaRefs(method));
            // Validate the Java references
            for (JsniJavaRef ref : result.getJavaRefs()) {
                GWTJavaProblem problem = validateJavaRef(method, ref);
                if (problem != null) {
                    result.addProblem(problem);
                }
            }
        } catch (JavaScriptParseException e) {
            int offset = e.getOffset() + method.getStartPosition();
            result.addProblem(GWTJavaProblem.create(method, offset, 1, GWTProblemType.JSNI_PARSE_ERROR, e.getMessage()));
        } catch (IOException e) {
            GWTPluginLog.logError(e, "IO error while parsing JSNI method " + method.getName());
        } catch (InternalCompilerException e) {
            String errorMsg = "Unexpected error parsing JSNI method " + method.getName() + ": " + e.getMessage();
            Throwable cause = (e.getCause() != null ? e.getCause() : e);
            GWTPluginLog.logError(cause, errorMsg);
        }
    } catch (BadLocationException e) {
        GWTPluginLog.logError(e, "Error translating JS parse error location in " + method.getName());
    }
    return result;
}
Example 10
Project: roaster-master  File: PropertyImpl.java View source code
@Override
public PropertySource<O> setName(final String name) {
    Assert.isFalse(Strings.isBlank(name), "Property name cannot be null/empty/blank");
    if (hasField()) {
        getField().setName(name);
    }
    final String oldName = this.name;
    final boolean visitDocTags = true;
    final ASTVisitor renameVisitor = new ASTVisitor(visitDocTags) {

        @Override
        public boolean visit(SimpleName node) {
            if (Strings.areEqual(oldName, node.getIdentifier())) {
                node.setIdentifier(name);
            }
            return super.visit(node);
        }

        @Override
        public boolean visit(TextElement node) {
            final String text = node.getText();
            if (!text.contains(oldName)) {
                return super.visit(node);
            }
            final int matchLength = oldName.length();
            final int textLength = text.length();
            final StringBuilder buf = new StringBuilder(text.length());
            final ParsePosition pos = new ParsePosition(0);
            while (pos.getIndex() < textLength) {
                final int index = pos.getIndex();
                final char c = text.charAt(index);
                if (Character.isJavaIdentifierStart(c)) {
                    final int next = index + matchLength;
                    if (next <= textLength && Strings.areEqual(oldName, text.substring(index, next))) {
                        buf.append(name);
                        pos.setIndex(next);
                        continue;
                    }
                }
                buf.append(c);
                pos.setIndex(index + 1);
            }
            node.setText(buf.toString());
            return super.visit(node);
        }
    };
    if (isAccessible()) {
        final MethodSource<O> accessor = getAccessor();
        final String prefix = accessor.getReturnType().isType(boolean.class) ? "is" : "get";
        accessor.setName(methodName(prefix, name));
        ((MethodDeclaration) accessor.getInternal()).accept(renameVisitor);
    }
    if (isMutable()) {
        final MethodSource<O> mutator = getMutator();
        mutator.setName(methodName("set", name));
        ((MethodDeclaration) mutator.getInternal()).accept(renameVisitor);
    }
    this.name = name;
    return this;
}
Example 11
Project: Slithice-master  File: JavaASTUtils.java View source code
public static TypeDeclaration getOutMostClass(MethodDeclaration method) {
    ASTNode node = method;
    TypeDeclaration lastTypeDecl = null;
    while (node != null) {
        if (node instanceof TypeDeclaration) {
            TypeDeclaration type = (TypeDeclaration) node;
            lastTypeDecl = type;
        }
        node = node.getParent();
    }
    return lastTypeDecl;
}
Example 12
Project: spring-ide-master  File: QuickfixUtils.java View source code
@Override
public boolean visit(MethodDeclaration node) {
    if (methodToMatch != null) {
        if (node.getName().getFullyQualifiedName().equals(methodToMatch.getElementName()) && node.parameters().size() == methodToMatch.getNumberOfParameters()) {
            this.methodDecl = node;
            return false;
        }
    }
    return super.visit(node);
}
Example 13
Project: testng-eclipse-master  File: TestNGMethodParameterVisitor.java View source code
@Override
public boolean visit(NormalAnnotation annotation) {
    if (!isKnownAnnotation(annotation.getTypeName().getFullyQualifiedName())) {
        return false;
    }
    List<?> values = annotation.values();
    if (null != values && !values.isEmpty()) {
        for (int i = 0; i < values.size(); i++) {
            MemberValuePair pair = (MemberValuePair) values.get(i);
            if ("parameters".equals(pair.getName().toString())) {
                Expression paramAttr = pair.getValue();
                if (paramAttr instanceof ArrayInitializer) {
                    record((MethodDeclaration) annotation.getParent(), (ArrayInitializer) paramAttr);
                } else if (paramAttr instanceof StringLiteral) {
                    record((MethodDeclaration) annotation.getParent(), (StringLiteral) paramAttr);
                }
            }
        }
    }
    return false;
}
Example 14
Project: usus-plugins-master  File: CCCollectorTest.java View source code
@Test
public void methodInsideMethodYieldsCC2() {
    MethodDeclaration innerMethod = setupMethodDeclMock(INNER_METHOD);
    collector.init(innerMethod);
    collector.commit(innerMethod);
    // now we need to make sure that the outer method has a different enclosing class and start position in the file:
    TypeDeclaration parent = setupMockFor(TypeDeclaration.class, OUTER_CLASS_NAME);
    when(nodeHelper.findEnclosingClassOf(org.mockito.Matchers.any(MethodDeclaration.class))).thenReturn(parent);
    when(Integer.valueOf(nodeHelper.getStartPositionFor(org.mockito.Matchers.any(ASTNode.class)))).thenReturn(Integer.valueOf(100));
    collector.commit(method);
    methodVisitor.visit();
    assertEquals(1, methodVisitor.getValueMap().get(OUTER_CLASS_NAME + "." + METHOD + "()").intValue());
    assertEquals(1, methodVisitor.getValueMap().get(CLASS_NAME + "." + INNER_METHOD + "()").intValue());
}
Example 15
Project: whole-master  File: AbstractVisitorCompilationUnitBuilder.java View source code
public void addConstructorWithSuper(String[][] params) {
    MethodDeclaration constructor = addConstructorDeclaration();
    SuperConstructorInvocation superCall = newSuperConstructorInvocation();
    for (int i = 0; i < params.length; i++) {
        String pName = params[i][1];
        constructor.parameters().add(newSingleVariableDeclaration(generator.visitorInterfaceName(), pName));
        superCall.arguments().add(ast.newSimpleName(pName));
    }
    constructor.getBody().statements().add(superCall);
}
Example 16
Project: eclipse-optimus-master  File: GeneratedAnnotationHelper.java View source code
/**
	 * Updates the source passed as parameter, by populating the hashCode
	 * values.
	 * 
	 * @param source
	 *            : Source
	 * @return updated Source
	 */
public static String updateHashcodeInSource(String source) {
    ASTParser parser = ASTParserFactory.INSTANCE.newParser();
    parser.setSource(source.toCharArray());
    parser.setCompilerOptions(GeneratedAnnotationHelper.compilerOptions);
    CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    // Create and call the new Visitor, which role will be to
    // gather the methods on which the Generated annotation is yet not
    // defined.
    GeneratedAnnotationVisitor ev = new GeneratedAnnotationVisitor();
    ev.process(cu);
    // Get the annotations to modify, fetched by the Visitor
    List<NormalAnnotation> annotationsToEnrich = ev.getAnnotationsToEnrich();
    if (annotationsToEnrich.size() > 0) {
        cu.recordModifications();
        boolean modified = false;
        for (NormalAnnotation annotationToEnrich : annotationsToEnrich) {
            // For each annotation to modify, replace the null value of
            // the comments field by the method's hashcode
            ASTNode parent = annotationToEnrich.getParent();
            if (parent instanceof MethodDeclaration) {
                MethodDeclaration methodDeclaration = (MethodDeclaration) parent;
                if (methodDeclaration.getBody() != null) {
                    int hashCode = ASTHelper.methodBodyHashCode(methodDeclaration.getBody().toString());
                    modified = setGeneratedAnnotationHashcode(cu, annotationToEnrich, String.valueOf(hashCode));
                } else {
                    modified = setGeneratedAnnotationHashcode(cu, annotationToEnrich, "0");
                }
            } else if (parent instanceof EnumConstantDeclaration) {
                EnumConstantDeclaration enumConstantDeclaration = (EnumConstantDeclaration) parent;
                int hashCode = ASTHelper.enumConstantHashCode(enumConstantDeclaration);
                modified = setGeneratedAnnotationHashcode(cu, annotationToEnrich, String.valueOf(hashCode));
            } else if (parent instanceof FieldDeclaration) {
                modified = setGeneratedAnnotationHashcode(cu, annotationToEnrich, "0");
            }
        }
        if (modified) {
            // Writes file on disk
            IDocument document = new Document(source);
            try {
                cu.rewrite(document, null).apply(document);
                return document.get();
            } catch (MalformedTreeException e) {
                Activator.getDefault().logError("The compilation unit could not be" + " written on FileSystem because of thrown Exception.", e);
            } catch (BadLocationException e) {
                Activator.getDefault().logError("The compilation unit could not be" + " written on FileSystem because of thrown Exception", e);
            }
        }
    }
    return source;
}
Example 17
Project: CodingSpectator-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 * 
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 * 
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 18
Project: Eclipse-Postfix-Code-Completion-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 * 
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 * 
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 19
Project: eclipse.jdt.ui-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 * 
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 * 
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 20
Project: AP-Refactoring-master  File: HideMethodSolver.java View source code
//TODO clean
@Override
protected Solution internalSolve(Issue issue, Map<String, Parameter> parameters) {
    ASTNode node = issue.getNodes().get(0);
    Solution solution = new Solution(issue, this, parameters);
    SourceFile sourceFile = (SourceFile) node.getRoot().getProperty(SourceFile.SOURCE_FILE_PROPERTY);
    IDocument document = null;
    try {
        document = sourceFile.toDocument();
    } catch (IOException e) {
    }
    Delta delta = solution.createDelta(sourceFile);
    delta.setBefore(document.get());
    ASTRewrite rewrite = ASTRewrite.create(node.getAST());
    MethodDeclaration newMethodDeclaration = (MethodDeclaration) ASTNode.copySubtree(node.getAST(), node);
    if (node instanceof MethodDeclaration) {
        int modifiers = newMethodDeclaration.getModifiers();
        int modifierLocation = getAnnotationsSize((MethodDeclaration) node);
        if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers)) {
            newMethodDeclaration.modifiers().remove(modifierLocation);
        }
        newMethodDeclaration.modifiers().addAll(modifierLocation, newMethodDeclaration.getAST().newModifiers(Modifier.PRIVATE));
    }
    rewrite.replace(node, newMethodDeclaration, null);
    TextEdit textEdit = rewrite.rewriteAST(document, JavaCore.getOptions());
    try {
        textEdit.apply(document);
    } catch (MalformedTreeExceptionBadLocationException |  e) {
    }
    delta.setAfter(document.get());
    return solution;
}
Example 21
Project: che-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 *
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 *
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 22
Project: che-plugins-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 *
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 *
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 23
Project: DevTools-master  File: SuppressWarningsSubProcessor.java View source code
/**
	 * Adds a SuppressWarnings proposal if possible and returns whether parent nodes should be processed or not (and with what relevance).
	 *
	 * @param cu the compilation unit
	 * @param node the node on which to add a SuppressWarning token
	 * @param warningToken the warning token to add
	 * @param relevance the proposal's relevance
	 * @param proposals collector to which the proposal should be added
	 * @return <code>0</code> if no further proposals should be added to parent nodes, or the relevance of the next proposal
	 *
	 * @since 3.6
	 */
private static int addSuppressWarningsProposalIfPossible(ICompilationUnit cu, ASTNode node, String warningToken, int relevance, Collection<ICommandAccess> proposals) {
    ChildListPropertyDescriptor property;
    String name;
    boolean isLocalVariable = false;
    switch(node.getNodeType()) {
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            property = SingleVariableDeclaration.MODIFIERS2_PROPERTY;
            name = ((SingleVariableDeclaration) node).getName().getIdentifier();
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            property = VariableDeclarationStatement.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationStatement) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            property = VariableDeclarationExpression.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((VariableDeclarationExpression) node).fragments());
            isLocalVariable = true;
            break;
        case ASTNode.TYPE_DECLARATION:
            property = TypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((TypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            property = AnnotationTypeDeclaration.MODIFIERS2_PROPERTY;
            name = ((AnnotationTypeDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.ENUM_DECLARATION:
            property = EnumDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumDeclaration) node).getName().getIdentifier();
            break;
        case ASTNode.FIELD_DECLARATION:
            property = FieldDeclaration.MODIFIERS2_PROPERTY;
            name = getFirstFragmentName(((FieldDeclaration) node).fragments());
            break;
        // case ASTNode.INITIALIZER: not used, because Initializer cannot have annotations
        case ASTNode.METHOD_DECLARATION:
            property = MethodDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((MethodDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            property = AnnotationTypeMemberDeclaration.MODIFIERS2_PROPERTY;
            name = //$NON-NLS-1$
            ((AnnotationTypeMemberDeclaration) node).getName().getIdentifier() + //$NON-NLS-1$
            "()";
            break;
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            property = EnumConstantDeclaration.MODIFIERS2_PROPERTY;
            name = ((EnumConstantDeclaration) node).getName().getIdentifier();
            break;
        default:
            return relevance;
    }
    String label = Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { warningToken, BasicElementLabels.getJavaElementName(name) });
    ASTRewriteCorrectionProposal proposal = new SuppressWarningsProposal(warningToken, label, cu, node, property, relevance);
    proposals.add(proposal);
    return isLocalVariable ? relevance - 1 : 0;
}
Example 24
Project: fest-eclipse-plugin-master  File: GetterCollector.java View source code
@Override
public void endVisit(MethodDeclaration method) {
    if (!isGetter(method)) {
        return;
    }
    ITypeBinding returnTypeBinding = method.getReturnType2().resolveBinding();
    String getterName = method.getName().toString();
    Type getterReturnType = new Type(returnTypeBinding, projectBindings);
    collectedGetters.add(new Getter(getterName, getterReturnType));
}
Example 25
Project: fsmls-master  File: FSMLCodeGenDragSourceListener.java View source code
@Override
public void dragSetData(DragSourceEvent event) {
    // TODO Auto-generated method stub
    //		super.dragFinished(event);
    //		PackageExplorerPart view = (PackageExplorerPart)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.jdt.ui.PackageExplorer");
    //		TreeViewer treeViewer = view.getTreeViewer();
    //		treeViewer.collapseAll();
    //		treeViewer.addFilter(new ViewerFilter() {
    //		
    //			@Override
    //			public boolean select(Viewer viewer, Object parentElement, Object element) {
    //				// TODO Auto-generated method stub
    //				return true;
    //			}
    //		
    //		});
    ArrayList<IMarker> markers = new ArrayList<IMarker>();
    List<String> methodLocationNamesForMarkers = new ArrayList<String>();
    EObject selectedEObject = (EObject) ((IStructuredSelection) viewer.getSelection()).toArray()[0];
    Model assertedModel = ((ModelContainer) selectedEObject.eResource().getContents().get(0)).getAssertedModel();
    TreeIterator<EObject> allContents = assertedModel.eAllContents();
    HashMap<String, CompilationUnit> cuCache = new HashMap<String, CompilationUnit>();
    HashMap<String, Integer> methodLocations = new HashMap<String, Integer>();
    while (allContents.hasNext()) {
        EObject currentObject = allContents.next();
        if (currentObject.eClass().equals(selectedEObject.eClass())) {
            List<IMarker> markersForCurrentObject = Markers.INSTANCE.getMarkers(FSMLEcoreUtil.getFSMLId(currentObject, null));
            if (!markersForCurrentObject.isEmpty()) {
                markers.addAll(markersForCurrentObject);
                IResource resource = null;
                ICompilationUnit cu = null;
                int markerStartPos;
                int markerEndPos;
                for (int i = 0; i < markersForCurrentObject.size(); i++) {
                    resource = markersForCurrentObject.get(i).getResource();
                    cu = JavaCore.createCompilationUnitFrom(FileBuffers.getWorkspaceFileAtLocation(resource.getFullPath()));
                    ;
                    try {
                        markerStartPos = ((Integer) markersForCurrentObject.get(i).getAttribute(MarkerDescriptor.ATTRIBUTE_CHAR_START)).intValue();
                        markerEndPos = ((Integer) markersForCurrentObject.get(i).getAttribute(MarkerDescriptor.ATTRIBUTE_CHAR_END)).intValue();
                        CompilationUnit astRoot = null;
                        CompilationUnit cuInCache = cuCache.get(resource.getFullPath().toString());
                        if (cuInCache == null) {
                            ASTParser parser = ASTParser.newParser(AST.JLS3);
                            parser.setSource(cu);
                            parser.setResolveBindings(true);
                            parser.setBindingsRecovery(true);
                            astRoot = (CompilationUnit) parser.createAST(null);
                            cuCache.put(resource.getFullPath().toString(), astRoot);
                        } else {
                            astRoot = cuInCache;
                        }
                        ASTNode astNode = ASTNodeSearchUtil.getAstNode(astRoot, markerStartPos, markerEndPos - markerStartPos);
                        while (astNode != null && !(astNode instanceof MethodDeclaration)) {
                            astNode = astNode.getParent();
                        }
                        if (astNode != null) {
                            String methodKey = ((ResolvedSourceMethod) ((MethodDeclaration) astNode).resolveBinding().getJavaElement()).getKey();
                            methodKey = methodKey.substring(methodKey.indexOf(";.") + 2);
                            if (methodLocations.get(methodKey) == null) {
                                methodLocations.put(methodKey, 1);
                            } else {
                                methodLocations.put(methodKey, methodLocations.get(methodKey) + 1);
                            }
                            methodLocationNamesForMarkers.add(methodKey);
                        } else {
                            methodLocationNamesForMarkers.add("N/A");
                        }
                    } catch (JavaModelException e) {
                        e.printStackTrace();
                    } catch (CoreException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    Set<Entry<String, Integer>> entrySet = methodLocations.entrySet();
    ArrayList<Entry<String, Integer>> sortedMethodLocations = new ArrayList<Entry<String, Integer>>();
    sortedMethodLocations.addAll(entrySet);
    Collections.sort(sortedMethodLocations, new Comparator<Entry<String, Integer>>() {

        @Override
        public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
            if (o1.getValue() > o2.getValue()) {
                return -1;
            } else if (o1.getValue() == o2.getValue()) {
                return 0;
            } else {
                return 1;
            }
        }
    });
    //find the context class
    EObject classEObject = selectedEObject;
    while (classEObject != null && classEObject.eClass().getEAnnotation(JavaMappingInterpreter.CONTEXT_CLASS) == null) {
        classEObject = classEObject.eContainer();
    }
    if (classEObject != null) {
        List<IMarker> classEObjectMarker = Markers.INSTANCE.getMarkers(FSMLEcoreUtil.getFSMLId(classEObject, null));
        if (classEObjectMarker.size() > 0) {
            IResource resource = classEObjectMarker.get(0).getResource();
            ICompilationUnit cu = JavaCore.createCompilationUnitFrom(FileBuffers.getWorkspaceFileAtLocation(resource.getFullPath()));
            ;
            ASTParser parser = ASTParser.newParser(AST.JLS3);
            parser.setSource(cu);
            parser.setResolveBindings(true);
            parser.setBindingsRecovery(true);
            CompilationUnit astRoot = (CompilationUnit) parser.createAST(null);
            for (Entry<String, Integer> entry : sortedMethodLocations) {
                System.out.println(entry.getKey() + "\t(" + entry.getValue() + ")");
            }
            for (Entry<String, Integer> entry : sortedMethodLocations) {
                String targetMethodKey = "L" + astRoot.getPackage().getName().toString().replaceAll("\\.", "\\/") + "/" + resource.getName().replaceAll(resource.getFileExtension(), "").replaceAll("\\.", "") + ";." + entry.getKey();
                ASTNode targetMethod = astRoot.findDeclaringNode(targetMethodKey);
                if (targetMethod != null) {
                    try {
                        ResolvedSourceMethod resolvedSourceMethod = ((ResolvedSourceMethod) ((MethodDeclaration) targetMethod).resolveBinding().getJavaElement());
                        ISourceRange sourceRange = resolvedSourceMethod.getSourceRange();
                        int sourceStart = resolvedSourceMethod.getSource().indexOf("{") + 2;
                        IMarker codeLocationAssistMarker = resource.createMarker("fsml code location assist");
                        codeLocationAssistMarker.setAttribute(MarkerDescriptor.ATTRIBUTE_ID, targetMethodKey);
                        codeLocationAssistMarker.setAttribute(MarkerDescriptor.ATTRIBUTE_CHAR_START, sourceRange.getOffset() + sourceStart);
                        codeLocationAssistMarker.setAttribute(MarkerDescriptor.ATTRIBUTE_CHAR_END, sourceRange.getOffset() + sourceStart);
                        event.data = new Marker[] { (Marker) codeLocationAssistMarker };
                    } catch (CoreException e) {
                        e.printStackTrace();
                    }
                    break;
                }
            }
        }
    }
    if (event.data == null) {
        event.data = new Marker[] {};
    }
    try {
        IViewPart showView = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("ca.uwaterloo.gsd.fsml.codeLocationAssist.featureInstancesCodeLocatorView");
        if (showView != null && showView instanceof FeatureInstancesCodeLocatorView) {
            ((FeatureInstancesCodeLocatorView) showView).showMarker(markers, methodLocationNamesForMarkers);
        }
    } catch (PartInitException e) {
        e.printStackTrace();
    }
}
Example 26
Project: generator-master  File: JavaFileMerger.java View source code
@SuppressWarnings({ "unchecked", "rawtypes" })
public String getMergedSource() throws ShellException, InvalidExistingFileException {
    NewJavaFileVisitor newJavaFileVisitor = visitNewJavaFile();
    IDocument document = new Document(existingJavaSource);
    // delete generated stuff, and collect imports
    ExistingJavaFileVisitor visitor = new ExistingJavaFileVisitor(javaDocTags);
    CompilationUnit cu = getCompilationUnitFromSource(existingJavaSource);
    AST ast = cu.getAST();
    cu.recordModifications();
    cu.accept(visitor);
    TypeDeclaration typeDeclaration = visitor.getTypeDeclaration();
    if (typeDeclaration == null) {
        throw new InvalidExistingFileException(ErrorCode.NO_TYPES_DEFINED_IN_FILE);
    }
    // reconcile the superinterfaces
    List<Type> newSuperInterfaces = getNewSuperInterfaces(typeDeclaration.superInterfaceTypes(), newJavaFileVisitor);
    for (Type newSuperInterface : newSuperInterfaces) {
        typeDeclaration.superInterfaceTypes().add(ASTNode.copySubtree(ast, newSuperInterface));
    }
    // set the superclass
    if (newJavaFileVisitor.getSuperclass() != null) {
        typeDeclaration.setSuperclassType((Type) ASTNode.copySubtree(ast, newJavaFileVisitor.getSuperclass()));
    } else {
        typeDeclaration.setSuperclassType(null);
    }
    // interface or class?
    if (newJavaFileVisitor.isInterface()) {
        typeDeclaration.setInterface(true);
    } else {
        typeDeclaration.setInterface(false);
    }
    // reconcile the imports
    List<ImportDeclaration> newImports = getNewImports(cu.imports(), newJavaFileVisitor);
    for (ImportDeclaration newImport : newImports) {
        Name name = ast.newName(newImport.getName().getFullyQualifiedName());
        ImportDeclaration newId = ast.newImportDeclaration();
        newId.setName(name);
        cu.imports().add(newId);
    }
    TextEdit textEdit = cu.rewrite(document, null);
    try {
        textEdit.apply(document);
    } catch (BadLocationException e) {
        throw new ShellException("BadLocationException removing prior fields and methods");
    }
    // regenerate the CompilationUnit to reflect all the deletes and changes
    CompilationUnit strippedCu = getCompilationUnitFromSource(document.get());
    // find the top level public type declaration
    TypeDeclaration topLevelType = null;
    Iterator iter = strippedCu.types().iterator();
    while (iter.hasNext()) {
        TypeDeclaration td = (TypeDeclaration) iter.next();
        if (td.getParent().equals(strippedCu) && (td.getModifiers() & Modifier.PUBLIC) > 0) {
            topLevelType = td;
            break;
        }
    }
    // now add all the new methods and fields to the existing
    // CompilationUnit with a ListRewrite
    ASTRewrite rewrite = ASTRewrite.create(topLevelType.getRoot().getAST());
    ListRewrite listRewrite = rewrite.getListRewrite(topLevelType, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
    Iterator<ASTNode> astIter = newJavaFileVisitor.getNewNodes().iterator();
    int i = 0;
    while (astIter.hasNext()) {
        ASTNode node = astIter.next();
        if (node.getNodeType() == ASTNode.TYPE_DECLARATION) {
            String name = ((TypeDeclaration) node).getName().getFullyQualifiedName();
            if (visitor.containsInnerClass(name)) {
                continue;
            }
        } else if (node instanceof FieldDeclaration) {
            addExistsAnnotations((BodyDeclaration) node, visitor.getFieldAnnotations((FieldDeclaration) node));
        } else if (node instanceof MethodDeclaration) {
            addExistsAnnotations((BodyDeclaration) node, visitor.getMethodAnnotations((MethodDeclaration) node));
        }
        listRewrite.insertAt(node, i++, null);
    }
    textEdit = rewrite.rewriteAST(document, JavaCore.getOptions());
    try {
        textEdit.apply(document);
    } catch (BadLocationException e) {
        throw new ShellException("BadLocationException adding new fields and methods");
    }
    String newSource = document.get();
    return newSource;
}
Example 27
Project: GinTonic-master  File: Refactorator.java View source code
public TrackedStatement addAsLastStatementInMethod(MethodDeclaration method, String statement) {
    Statement bindingStatement = ASTParserUtils.parseStatementAst3(statement);
    Block methodBody = method.getBody();
    ASTRewrite astRewrite = getAstRewrite();
    ITrackedNodePosition track = astRewrite.track(bindingStatement);
    ListRewrite statementsListRewrite = astRewrite.getListRewrite(methodBody, Block.STATEMENTS_PROPERTY);
    statementsListRewrite.insertLast(bindingStatement, null);
    int startPosition = track.getStartPosition();
    int length = track.getLength();
    bindingStatement.setSourceRange(startPosition, length);
    return new TrackedStatement(bindingStatement, track);
}
Example 28
Project: mybatis-generator-master  File: JavaFileMerger.java View source code
@SuppressWarnings({ "unchecked", "rawtypes" })
public String getMergedSource() throws ShellException, InvalidExistingFileException {
    NewJavaFileVisitor newJavaFileVisitor = visitNewJavaFile();
    IDocument document = new Document(existingJavaSource);
    // delete generated stuff, and collect imports
    ExistingJavaFileVisitor visitor = new ExistingJavaFileVisitor(javaDocTags);
    CompilationUnit cu = getCompilationUnitFromSource(existingJavaSource);
    AST ast = cu.getAST();
    cu.recordModifications();
    cu.accept(visitor);
    TypeDeclaration typeDeclaration = visitor.getTypeDeclaration();
    if (typeDeclaration == null) {
        throw new InvalidExistingFileException(ErrorCode.NO_TYPES_DEFINED_IN_FILE);
    }
    // reconcile the superinterfaces
    List<Type> newSuperInterfaces = getNewSuperInterfaces(typeDeclaration.superInterfaceTypes(), newJavaFileVisitor);
    for (Type newSuperInterface : newSuperInterfaces) {
        typeDeclaration.superInterfaceTypes().add(ASTNode.copySubtree(ast, newSuperInterface));
    }
    // set the superclass
    if (newJavaFileVisitor.getSuperclass() != null) {
        typeDeclaration.setSuperclassType((Type) ASTNode.copySubtree(ast, newJavaFileVisitor.getSuperclass()));
    } else {
        typeDeclaration.setSuperclassType(null);
    }
    // interface or class?
    if (newJavaFileVisitor.isInterface()) {
        typeDeclaration.setInterface(true);
    } else {
        typeDeclaration.setInterface(false);
    }
    // reconcile the imports
    List<ImportDeclaration> newImports = getNewImports(cu.imports(), newJavaFileVisitor);
    for (ImportDeclaration newImport : newImports) {
        Name name = ast.newName(newImport.getName().getFullyQualifiedName());
        ImportDeclaration newId = ast.newImportDeclaration();
        newId.setName(name);
        cu.imports().add(newId);
    }
    TextEdit textEdit = cu.rewrite(document, null);
    try {
        textEdit.apply(document);
    } catch (BadLocationException e) {
        throw new ShellException("BadLocationException removing prior fields and methods");
    }
    // regenerate the CompilationUnit to reflect all the deletes and changes
    CompilationUnit strippedCu = getCompilationUnitFromSource(document.get());
    // find the top level public type declaration
    TypeDeclaration topLevelType = null;
    Iterator iter = strippedCu.types().iterator();
    while (iter.hasNext()) {
        TypeDeclaration td = (TypeDeclaration) iter.next();
        if (td.getParent().equals(strippedCu) && (td.getModifiers() & Modifier.PUBLIC) > 0) {
            topLevelType = td;
            break;
        }
    }
    // now add all the new methods and fields to the existing
    // CompilationUnit with a ListRewrite
    ASTRewrite rewrite = ASTRewrite.create(topLevelType.getRoot().getAST());
    ListRewrite listRewrite = rewrite.getListRewrite(topLevelType, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
    Iterator<ASTNode> astIter = newJavaFileVisitor.getNewNodes().iterator();
    int i = 0;
    while (astIter.hasNext()) {
        ASTNode node = astIter.next();
        if (node.getNodeType() == ASTNode.TYPE_DECLARATION) {
            String name = ((TypeDeclaration) node).getName().getFullyQualifiedName();
            if (visitor.containsInnerClass(name)) {
                continue;
            }
        } else if (node instanceof FieldDeclaration) {
            addExistsAnnotations((BodyDeclaration) node, visitor.getFieldAnnotations((FieldDeclaration) node));
        } else if (node instanceof MethodDeclaration) {
            addExistsAnnotations((BodyDeclaration) node, visitor.getMethodAnnotations((MethodDeclaration) node));
        }
        listRewrite.insertAt(node, i++, null);
    }
    textEdit = rewrite.rewriteAST(document, JavaCore.getOptions());
    try {
        textEdit.apply(document);
    } catch (BadLocationException e) {
        throw new ShellException("BadLocationException adding new fields and methods");
    }
    String newSource = document.get();
    return newSource;
}
Example 29
Project: Clean-Code-Method-Sorter-master  File: BodyDeclarationComparator.java View source code
/**
     * This comparator follows the contract defined in
     * CompilationUnitSorter.sort.
     *
     * @see Comparator#compare(java.lang.Object, java.lang.Object)
     * @see CompilationUnitSorter#sort(int,
     *      org.eclipse.jdt.core.ICompilationUnit, int[], java.util.Comparator,
     *      int, org.eclipse.core.runtime.IProgressMonitor)
     */
@Override
public int compare(BodyDeclaration bodyDeclaration1, BodyDeclaration bodyDeclaration2) {
    if (isSortPreserved(bodyDeclaration1) && isSortPreserved(bodyDeclaration2)) {
        final int preservedOrder = preserveRelativeOrder(bodyDeclaration1, bodyDeclaration2);
        logger.trace("Keeping preserved order: [{}] : [{}] = " + preservedOrder, bodyDeclaration1.toString(), bodyDeclaration2.toString());
        return preservedOrder;
    }
    final int cat1 = category(bodyDeclaration1);
    final int cat2 = category(bodyDeclaration2);
    if (cat1 != cat2) {
        final int categoryOrder = cat1 - cat2;
        logger.trace("Keeping category order: [{}] : [{}] = " + categoryOrder, bodyDeclaration1.toString(), bodyDeclaration2.toString());
        return categoryOrder;
    }
    if (bodyDeclaration1.getNodeType() == ASTNode.METHOD_DECLARATION) {
        final MethodDeclaration method1 = (MethodDeclaration) bodyDeclaration1;
        final MethodDeclaration method2 = (MethodDeclaration) bodyDeclaration2;
        final Signature signature1 = new Signature(method1);
        final Signature signature2 = new Signature(method2);
        if (this.knownMethodSignatures.contains(signature1) && this.knownMethodSignatures.contains(signature2)) {
            final int compare = this.methodDeclarationComparator.compare(signature1, signature2);
            logger.trace("Comparing methods [{}] : [{}] = " + compare, signature1, signature2);
            if (compare == 0)
                logger.warn("No absolute compare value between [{}] and [{}]", signature1, signature2);
            return compare;
        }
        logger.warn("A method signature was not known!");
        logger.warn("{} known={}", signature1, this.knownMethodSignatures.contains(signature1));
        logger.warn("{} known={}", signature2, this.knownMethodSignatures.contains(signature2));
    }
    final int relativeOrder = preserveRelativeOrder(bodyDeclaration1, bodyDeclaration2);
    logger.trace("Keeping relative order: [{}] : [{}]= " + relativeOrder, bodyDeclaration1.toString(), bodyDeclaration2.toString());
    return relativeOrder;
}
Example 30
Project: Diver-master  File: JavaMessageGrouper.java View source code
public IMessageGrouping[] calculateGroups2(UMLSequenceViewer viewer, Object activationElement, Object[] children) {
    HashMap<ASTNode, MappedMessageGrouping> groups = new HashMap<ASTNode, MappedMessageGrouping>();
    if (!(activationElement instanceof IAdaptable)) {
        return new IMessageGrouping[0];
    }
    ASTNode activationNode = (ASTNode) ((IAdaptable) activationElement).getAdapter(ASTNode.class);
    if (!(activationNode instanceof MethodDeclaration)) {
        return new IMessageGrouping[0];
    }
    for (int i = 0; i < children.length; i++) {
        if (children[i] instanceof IAdaptable) {
            ASTNode messageNode = (ASTNode) ((IAdaptable) children[i]).getAdapter(ASTNode.class);
            if (messageNode != null) {
                ASTNode currentParent = messageNode.getParent();
                while (currentParent != null && currentParent != activationNode) {
                    ASTNode block = null;
                    String text = null;
                    Color c = null;
                    Color bc = null;
                    String expressionString = "";
                    switch(currentParent.getNodeType()) {
                        case ASTNode.IF_STATEMENT:
                            block = checkIfSide((IfStatement) currentParent, messageNode);
                            if (block != null && block == ((IfStatement) currentParent).getElseStatement()) {
                                text = "else";
                            } else if (block == ((IfStatement) currentParent).getThenStatement()) {
                                text = "if (" + ((IfStatement) currentParent).getExpression().toString() + ")";
                            }
                            c = ISketchColorConstants.CONDITION_FG;
                            bc = ISketchColorConstants.CONDITION_FG;
                            break;
                        case ASTNode.WHILE_STATEMENT:
                            if (((WhileStatement) currentParent).getExpression() != null) {
                                expressionString = ((WhileStatement) currentParent).getExpression().toString();
                            }
                            text = "while (" + expressionString + ")";
                            block = currentParent;
                            c = ISketchColorConstants.LOOP_FG;
                            bc = ISketchColorConstants.LOOP_BG;
                            break;
                        case ASTNode.FOR_STATEMENT:
                            if (((ForStatement) currentParent).getExpression() != null) {
                                expressionString = ((ForStatement) currentParent).getExpression().toString();
                            } else {
                                expressionString = ";;";
                            }
                            text = "for (" + expressionString + ")";
                            block = currentParent;
                            c = ISketchColorConstants.LOOP_FG;
                            bc = ISketchColorConstants.LOOP_BG;
                            break;
                        case ASTNode.TRY_STATEMENT:
                            text = "try";
                            block = currentParent;
                            c = ISketchColorConstants.ERROR_FG;
                            bc = ISketchColorConstants.ERROR_BG;
                            break;
                        case ASTNode.CATCH_CLAUSE:
                            text = "catch (" + ((CatchClause) currentParent).getException().toString() + ")";
                            block = currentParent;
                            c = ISketchColorConstants.ERROR_FG;
                            bc = ISketchColorConstants.ERROR_BG;
                            break;
                        case ASTNode.DO_STATEMENT:
                            text = "do while (" + ((DoStatement) currentParent).getExpression().toString() + ")";
                            block = currentParent;
                            c = ISketchColorConstants.LOOP_FG;
                            bc = ISketchColorConstants.LOOP_BG;
                            break;
                    }
                    if (text != null) {
                        MappedMessageGrouping grouping = groups.get(block);
                        if (grouping == null) {
                            grouping = new MappedMessageGrouping(activationElement, i, 1, text, block);
                            grouping.setBackground(bc);
                            grouping.setForeground(c);
                            groups.put(block, grouping);
                        } else {
                            int length = (i - grouping.getOffset()) + 1;
                            grouping.setLength(length);
                        }
                    }
                    currentParent = currentParent.getParent();
                }
            }
        }
    }
    ArrayList<MappedMessageGrouping> groupList = new ArrayList<MappedMessageGrouping>(groups.values());
    Collections.sort(groupList, new Comparator<MappedMessageGrouping>() {

        public int compare(MappedMessageGrouping o1, MappedMessageGrouping o2) {
            ASTNode n1 = (ASTNode) o1.getKey();
            ASTNode n2 = (ASTNode) o2.getKey();
            int diff = n1.getStartPosition() - n2.getStartPosition();
            if (diff == 0) {
                diff = (n1.getStartPosition() + n1.getLength()) - (n2.getStartPosition() + n2.getLength());
            }
            return diff;
        }
    });
    return groupList.toArray(new IMessageGrouping[groupList.size()]);
}
Example 31
Project: eclipse-jmockit-master  File: MockMethodCompletionProposal.java View source code
@Override
protected final boolean updateReplacementString(final IDocument document, final char trigger, final int offset, final ImportRewrite importRw) throws CoreException, BadLocationException {
    try {
        Document recoveredDocument = new Document();
        CompilationUnit unit = getRecoveredAST(document, offset, recoveredDocument);
        initContext(offset, importRw, unit);
        ASTNode node = NodeFinder.perform(unit, offset, 1);
        AST ast = unit.getAST();
        ASTRewrite rewrite = ASTRewrite.create(ast);
        CodeGenerationSettings settings = getCodeGenSettings();
        MethodDeclaration stub = createMockMethodStub(ast, rewrite, settings);
        String methodDeclarationText = generateMethodDeclaration(document, recoveredDocument, node, rewrite, settings, stub);
        setReplacementString(methodDeclarationText);
    } catch (Exception exception) {
        Activator.log(exception);
    }
    return true;
}
Example 32
Project: FindBug-for-Domino-Designer-master  File: CreateDoPrivilegedBlockResolution.java View source code
protected void updateVariableReferences(ASTRewrite rewrite, ClassInstanceCreation classLoaderCreation) {
    Assert.isNotNull(rewrite);
    Assert.isNotNull(classLoaderCreation);
    MethodDeclaration method = findMethodDeclaration(classLoaderCreation);
    if (method != null) {
        final Set<String> variableReferences = findVariableReferences(classLoaderCreation.arguments());
        if (!variableReferences.isEmpty()) {
            updateMethodParams(rewrite, variableReferences, method.parameters());
            updateLocalVariableDeclarations(rewrite, variableReferences, method.getBody());
        }
    }
}
Example 33
Project: findbugs-rcp-master  File: CreateDoPrivilegedBlockResolution.java View source code
protected void updateVariableReferences(ASTRewrite rewrite, ClassInstanceCreation classLoaderCreation) {
    assert rewrite != null;
    assert classLoaderCreation != null;
    MethodDeclaration method = findMethodDeclaration(classLoaderCreation);
    if (method != null) {
        final Set<String> variableReferences = findVariableReferences(classLoaderCreation.arguments());
        if (!variableReferences.isEmpty()) {
            updateMethodParams(rewrite, variableReferences, method.parameters());
            updateLocalVariableDeclarations(rewrite, variableReferences, method.getBody());
        }
    }
}
Example 34
Project: flower-platform-3-master  File: JavaModelAdapterFactorySet.java View source code
@Override
public void initialize(Resource astCache, String limitedPath, boolean useUIDs) {
    super.initialize(astCache, limitedPath, useUIDs);
    // right - AST
    rightFactory = new ModelAdapterFactory();
    IFileAccessController fileAccessController = EditorPlugin.getInstance().getFileAccessController();
    // folder adapter
    FolderModelAdapter folderModelAdapter = (FolderModelAdapter) createAstModelAdapter(new FolderModelAdapter());
    folderModelAdapter.setLimitedPath(limitedPath);
    rightFactory.addModelAdapter(fileAccessController.getFileClass(), folderModelAdapter, "", CodeSyncPlugin.FOLDER);
    // java specific adapters
    JavaFileModelAdapter fileModelAdapter = (JavaFileModelAdapter) createAstModelAdapter(new JavaFileModelAdapter());
    rightFactory.addModelAdapter(fileAccessController.getFileClass(), fileModelAdapter, CodeSyncCodeJavaPlugin.TECHNOLOGY, CodeSyncPlugin.FILE);
    rightFactory.addModelAdapter(AbstractTypeDeclaration.class, createAstModelAdapter(new JavaTypeModelAdapter()), JavaTypeModelAdapter.CLASS);
    rightFactory.addModelAdapter(FieldDeclaration.class, createAstModelAdapter(new JavaAttributeModelAdapter()), JavaAttributeModelAdapter.ATTRIBUTE);
    rightFactory.addModelAdapter(MethodDeclaration.class, createAstModelAdapter(new JavaOperationModelAdapter()), JavaOperationModelAdapter.OPERATION);
    rightFactory.addModelAdapter(SingleVariableDeclaration.class, createAstModelAdapter(new JavaParameterModelAdapter()), JavaParameterModelAdapter.PARAMETER);
    rightFactory.addModelAdapter(Annotation.class, createAstModelAdapter(new JavaAnnotationModelAdapter()), JavaAnnotationModelAdapter.ANNOTATION);
    rightFactory.addModelAdapter(Modifier.class, createAstModelAdapter(new JavaModifierModelAdapter()), JavaModifierModelAdapter.MODIFIER);
    rightFactory.addModelAdapter(MemberValuePair.class, createAstModelAdapter(new JavaMemberValuePairModelAdapter()), JavaMemberValuePairModelAdapter.MEMBER_VALUE_PAIR);
    rightFactory.addModelAdapter(EnumConstantDeclaration.class, createAstModelAdapter(new JavaEnumConstantDeclarationModelAdapter()), JavaEnumConstantDeclarationModelAdapter.ENUM_CONSTANT);
    rightFactory.addModelAdapter(AnnotationTypeMemberDeclaration.class, createAstModelAdapter(new JavaAnnotationTypeMemberDeclarationModelAdapter()), JavaAnnotationTypeMemberDeclarationModelAdapter.ANNOTATION_MEMBER);
    rightFactory.addModelAdapter(String.class, createAstModelAdapter(new StringModelAdapter()), "String");
    // ancestor - CodeSyncElements
    this.ancestorFactory = createCodeSyncModelAdapterFactory(null, false);
    // left - CodeSyncElements
    leftFactory = createCodeSyncModelAdapterFactory(astCache, true);
    // feature providers
    CodeSyncElementFeatureProvider featureProvider = new CodeSyncElementFeatureProvider();
    addFeatureProvider(fileAccessController.getFileClass(), featureProvider);
    addFeatureProvider(CodeSyncPlugin.FOLDER, featureProvider);
    addFeatureProvider(fileAccessController.getFileClass(), featureProvider);
    addFeatureProvider(CodeSyncPlugin.FILE, featureProvider);
    JavaTypeFeatureProvider typeFeatureProvider = new JavaTypeFeatureProvider();
    addFeatureProvider(AbstractTypeDeclaration.class, typeFeatureProvider);
    addFeatureProvider(CLASS, typeFeatureProvider);
    addFeatureProvider(INTERFACE, typeFeatureProvider);
    addFeatureProvider(ENUM, typeFeatureProvider);
    addFeatureProvider(ANNOTATION, typeFeatureProvider);
    JavaAttributeFeatureProvider attributeFeatureProvider = new JavaAttributeFeatureProvider();
    addFeatureProvider(FieldDeclaration.class, attributeFeatureProvider);
    addFeatureProvider(ATTRIBUTE, attributeFeatureProvider);
    JavaOperationFeatureProvider operationFeatureProvider = new JavaOperationFeatureProvider();
    addFeatureProvider(MethodDeclaration.class, operationFeatureProvider);
    addFeatureProvider(OPERATION, operationFeatureProvider);
    JavaEnumConstantDeclarationFeatureProvider enumCtFeatureProvider = new JavaEnumConstantDeclarationFeatureProvider();
    addFeatureProvider(EnumConstantDeclaration.class, enumCtFeatureProvider);
    addFeatureProvider(ENUM_CONSTANT, enumCtFeatureProvider);
    JavaAnnotationTypeMemberDeclarationFeatureProvider annotationMemberFeatureProvider = new JavaAnnotationTypeMemberDeclarationFeatureProvider();
    addFeatureProvider(AnnotationTypeMemberDeclaration.class, annotationMemberFeatureProvider);
    addFeatureProvider(ANNOTATION_MEMBER, annotationMemberFeatureProvider);
    JavaAnnotationFeatureProvider annotationFeatureProvider = new JavaAnnotationFeatureProvider();
    addFeatureProvider(Annotation.class, annotationFeatureProvider);
    addFeatureProvider(com.crispico.flower.mp.model.astcache.code.Annotation.class, annotationFeatureProvider);
    JavaMemberValuePairFeatureProvider annotationValueFeatureProvider = new JavaMemberValuePairFeatureProvider();
    addFeatureProvider(MemberValuePair.class, annotationValueFeatureProvider);
    addFeatureProvider(AnnotationValue.class, annotationValueFeatureProvider);
    JavaModifierFeatureProvider modifierFeatureProvider = new JavaModifierFeatureProvider();
    addFeatureProvider(Modifier.class, modifierFeatureProvider);
    addFeatureProvider(com.crispico.flower.mp.model.astcache.code.Modifier.class, modifierFeatureProvider);
    JavaParameterFeatureProvider parameterFeatureProvider = new JavaParameterFeatureProvider();
    addFeatureProvider(SingleVariableDeclaration.class, parameterFeatureProvider);
    addFeatureProvider(Parameter.class, parameterFeatureProvider);
    addFeatureProvider(String.class, new StringFeatureProvider());
}
Example 35
Project: Green-UML-master  File: RelationshipModel.java View source code
/**
	 * @return A representation of the cardinality. 
	 * 
	 * @throws JavaModelException
	 * 
	 * @author Gene Wang
	 */
@SuppressWarnings("boxing")
public String getCardinality() throws JavaModelException {
    final String NPE = "Node is not a child of a MethodDeclaration or Initializer block.";
    final int INF = 999999;
    boolean isGeneric = false;
    int min = INF;
    int max = 0;
    int constructors = 0;
    int uConstructors = 0;
    Map<ASTNode, Integer> cardinality = new HashMap<ASTNode, Integer>();
    RelationshipKind flags = PlugIn.getRelationshipGroup(getPartClass()).getFlags();
    if (flags.equals(Single)) {
        return "1";
    }
    if (flags.equals(Cumulative)) {
        for (Relationship relationship : _relationships) {
            ASTNode locator = relationship.getFeatures().get(0);
            while ((!(locator instanceof MethodDeclaration) && !(locator instanceof Initializer)) && locator != null) {
                locator = locator.getParent();
            }
            if (locator == null) {
                //ever happen, so throw an NPE here just in case
                throw new NullPointerException(NPE);
            }
            if (locator.getNodeType() == METHOD_DECLARATION) {
                isGeneric = !((MethodDeclaration) locator).isConstructor();
            } else if (locator.getNodeType() == INITIALIZER) {
                //cannot have higher cardinality
                return "1";
            }
        }
    }
    for (IMethod method : _sourceType.getMethods()) {
        if (method.isConstructor()) {
            constructors++;
        }
    }
    for (Relationship relationship : _relationships) {
        ASTNode locator = relationship.getFeatures().get(0);
        int card;
        while ((!(locator instanceof MethodDeclaration) && !(locator instanceof Initializer)) && locator != null) {
            locator = locator.getParent();
        }
        if (locator == null) {
            throw new NullPointerException(NPE);
        }
        if (cardinality.get(locator) == null) {
            card = 0;
            uConstructors++;
        } else {
            card = cardinality.get(locator);
        }
        if ((locator.getNodeType() == METHOD_DECLARATION) && ((MethodDeclaration) locator).isConstructor()) {
            if (relationship.isGeneric()) {
                isGeneric = true;
                cardinality.put(locator, card + relationship.getFeatures().size() - 2);
            } else {
                cardinality.put(locator, card + 1);
            }
        }
    }
    for (Integer card : cardinality.values()) {
        if (card < min) {
            min = card;
        }
        if (card > max) {
            max = card;
        }
    }
    if (uConstructors < constructors) {
        min = 0;
    }
    if (min == INF) {
        min = 0;
    }
    if (isGeneric) {
        return min + "..*";
    } else if (min == max) {
        return "" + min;
    } else {
        return min + ".." + max;
    }
}
Example 36
Project: groovy-eclipse-master  File: CreateMethodOperation.java View source code
/**
 * Returns the type signatures of the parameter types of the
 * current <code>MethodDeclaration</code>
 */
protected String[] convertASTMethodTypesToSignatures() {
    if (this.parameterTypes == null) {
        if (this.createdNode != null) {
            MethodDeclaration methodDeclaration = (MethodDeclaration) this.createdNode;
            List parameters = methodDeclaration.parameters();
            int size = parameters.size();
            this.parameterTypes = new String[size];
            Iterator iterator = parameters.iterator();
            // convert the AST types to signatures
            for (int i = 0; i < size; i++) {
                SingleVariableDeclaration parameter = (SingleVariableDeclaration) iterator.next();
                String typeSig = Util.getSignature(parameter.getType());
                int extraDimensions = parameter.getExtraDimensions();
                if (methodDeclaration.isVarargs() && i == size - 1)
                    extraDimensions++;
                this.parameterTypes[i] = Signature.createArraySignature(typeSig, extraDimensions);
            }
        }
    }
    return this.parameterTypes;
}
Example 37
Project: mapstruct-eclipse-master  File: PropertyNameProposalCollector.java View source code
@Override
public void endVisit(MethodDeclaration node) {
    if (!inMethod) {
        return;
    }
    String pathWithoutLastElement = getPathWithoutLastElement(givenPrefix);
    Deque<String> pathToProposedType;
    if (pathWithoutLastElement.isEmpty()) {
        pathToProposedType = new LinkedList<String>();
        proposalPrefix = "";
    } else {
        pathToProposedType = new LinkedList<String>(Arrays.asList(pathWithoutLastElement.split("\\.")));
        proposalPrefix = pathWithoutLastElement + ".";
    }
    String propertyPrefix = getLastPathElement(givenPrefix);
    ITypeBinding proposalType = getTypeForPropertyProposals(node, pathToProposedType, propertyPrefix);
    if (proposalType != null) {
        proposePropertiesIfPrefixMatches(propertyPrefix, proposalType);
    }
}
Example 38
Project: ofbiz-eclipse-project-explorer-master  File: JavaHelper.java View source code
@Override
public boolean visit(final MethodDeclaration node) {
    final IMethodBinding resolveMethodBinding = node.resolveBinding();
    if (resolveMethodBinding == null) {
        return true;
    }
    String methodName = resolveMethodBinding.getName();
    if (methodName.equals(invoke)) {
        if (parameterNumber == -1 || parameterNumber == resolveMethodBinding.getParameterTypes().length) {
            final IFile file = (IFile) findType.getResource();
            hyperlinkMarkers.add(new HyperlinkMarker() {

                @Override
                public String getTypeLabel() {
                    // TODO Auto-generated method stub
                    return null;
                }

                @Override
                public String getHyperlinkText() {
                    StringBuilder types = new StringBuilder("");
                    int i = 0;
                    for (ITypeBinding type : resolveMethodBinding.getParameterTypes()) {
                        if (i != 0) {
                            types.append(", ");
                        }
                        types.append(type.getName());
                        i++;
                    }
                    return "Goto java: " + invoke + "parameters: (" + types.toString() + ")";
                }

                @Override
                public void open() {
                    try {
                        IMarker marker = file.createMarker(Plugin.TEXT_MARKER);
                        marker.setAttribute(IMarker.LINE_NUMBER, parse.getLineNumber(node.getStartPosition()));
                        IDE.openEditor(GoToFile.getActiveWorkbenchPage(), marker);
                    } catch (CoreException e) {
                    }
                }

                @Override
                public IRegion getHyperlinkRegion() {
                    try {
                        if (lineNumber == -1) {
                            return null;
                        }
                        return new Region(doc.getLineOffset(lineNumber) + offset - 1, length + 1);
                    } catch (BadLocationException e) {
                        e.printStackTrace();
                    }
                    return null;
                }
            });
        }
    }
    return true;
}
Example 39
Project: org.revisionfilter-master  File: CreateDoPrivilegedBlockResolution.java View source code
protected void updateVariableReferences(ASTRewrite rewrite, ClassInstanceCreation classLoaderCreation) {
    assert rewrite != null;
    assert classLoaderCreation != null;
    MethodDeclaration method = findMethodDeclaration(classLoaderCreation);
    if (method != null) {
        final Set<String> variableReferences = findVariableReferences(classLoaderCreation.arguments());
        if (!variableReferences.isEmpty()) {
            updateMethodParams(rewrite, variableReferences, method.parameters());
            updateLocalVariableDeclarations(rewrite, variableReferences, method.getBody());
        }
    }
}
Example 40
Project: platform_tools_motodev-master  File: ContentProviderClass.java View source code
/**
     * Adds the delete method to the content provider class
     */
@SuppressWarnings("unchecked")
private void addDeleteMethod() {
    final String SELECTION_PARAM = "selection";
    final String SELECTION_ARGS_PARAM = "selectionArgs";
    MethodDeclaration method = ast.newMethodDeclaration();
    method.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));
    method.setReturnType2(ast.newPrimitiveType(PrimitiveType.INT));
    method.setName(ast.newSimpleName(DELETE_METHOD_NAME));
    addMethodParameter(method, getName(URI_CLASS).toLowerCase(), uriType());
    addMethodParameter(method, SELECTION_PARAM, stringType());
    addMethodParameter(method, SELECTION_ARGS_PARAM, stringArrayType());
    addEmptyBlock(method);
    classDecl.bodyDeclarations().add(method);
    addComment(method, CodeUtilsNLS.MODEL_ContentProviderClass_DeleteMethodDescription);
    addMethodReference(method, CP_SUPERCLASS, DELETE_METHOD_NAME, new Type[] { uriType(), stringType(), stringArrayType() });
}
Example 41
Project: substeps-eclipse-plugin-master  File: JavaDocVisitor.java View source code
@SuppressWarnings("unchecked")
@Override
public void endVisit(final MethodDeclaration node) {
    // TODO Auto-generated method stub
    super.endVisit(node);
    if (isCorrectMethod(node)) {
        final List<Object> parameterProperties = ((List<Object>) node.getStructuralProperty(MethodDeclaration.PARAMETERS_PROPERTY));
        for (final Object prop : parameterProperties) {
            if (prop instanceof SingleVariableDeclaration) {
                this.parameterNames.add(((SingleVariableDeclaration) prop).getName().toString());
            }
        }
    }
}
Example 42
Project: tymore-master  File: BindingsResolver.java View source code
public void resolveBindings(ASTNode node) {
    if (node instanceof AbstractTypeDeclaration)
        resolveBindings((AbstractTypeDeclaration) node);
    else if (node instanceof AnnotationTypeMemberDeclaration)
        resolveBindings((AnnotationTypeMemberDeclaration) node);
    else if (node instanceof AnonymousClassDeclaration)
        resolveBindings((AnonymousClassDeclaration) node);
    else if (node instanceof EnumConstantDeclaration)
        resolveBindings((EnumConstantDeclaration) node);
    else if (node instanceof Expression)
        resolveBindings((Expression) node);
    else if (node instanceof FieldDeclaration)
        resolveBindings((FieldDeclaration) node);
    else if (node instanceof ImportDeclaration)
        resolveBindings((ImportDeclaration) node);
    else if (node instanceof MemberRef)
        resolveBindings((MemberRef) node);
    else if (node instanceof MethodDeclaration)
        resolveBindings((MethodDeclaration) node);
    else if (node instanceof MethodRef)
        resolveBindings((MethodRef) node);
    else if (node instanceof PackageDeclaration)
        resolveBindings((PackageDeclaration) node);
    else if (node instanceof Statement)
        resolveBindings((Statement) node);
    else if (node instanceof Type)
        resolveBindings((Type) node);
    else if (node instanceof TypeParameter)
        resolveBindings((TypeParameter) node);
    else if (node instanceof VariableDeclaration)
        resolveBindings((VariableDeclaration) node);
}
Example 43
Project: EasyMPermission-master  File: EclipsePatcher.java View source code
private static void patchExtractInterface(ScriptManager sm) {
    /* Fix sourceEnding for generated nodes to avoid null pointer */
    sm.addScript(ScriptBuilder.wrapMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.compiler.SourceElementNotifier", "notifySourceElementRequestor", "void", "org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration", "org.eclipse.jdt.internal.compiler.ast.TypeDeclaration", "org.eclipse.jdt.internal.compiler.ast.ImportReference")).methodToWrap(new Hook("org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt", "get", "int", "java.lang.Object")).wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getSourceEndFixed", "int", "int", "org.eclipse.jdt.internal.compiler.ast.ASTNode")).requestExtra(StackRequest.PARAM1).transplant().build());
    /* Make sure the generated source element is found instead of the annotation */
    sm.addScript(ScriptBuilder.wrapMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodDeclaration", "void", "org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite", "org.eclipse.jdt.core.dom.rewrite.ASTRewrite", "org.eclipse.jdt.core.dom.AbstractTypeDeclaration", "org.eclipse.jdt.core.dom.MethodDeclaration")).methodToWrap(new Hook("org.eclipse.jface.text.IDocument", "get", "java.lang.String", "int", "int")).wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationSource", "java.lang.String", "java.lang.String", "java.lang.Object", "org.eclipse.jdt.core.dom.MethodDeclaration")).requestExtra(StackRequest.THIS, StackRequest.PARAM4).transplant().build());
    /* get real generated node in stead of a random one generated by the annotation */
    sm.addScript(ScriptBuilder.replaceMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMemberDeclarations")).target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodComments")).methodToReplace(new Hook("org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil", "getMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit")).replacementMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit")).transplant().build());
    /* Do not add @Override's for generated methods */
    sm.addScript(ScriptBuilder.exitEarly().target(new MethodTarget("org.eclipse.jdt.core.dom.rewrite.ListRewrite", "insertFirst")).decisionMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "isListRewriteOnGeneratedNode", "boolean", "org.eclipse.jdt.core.dom.rewrite.ListRewrite")).request(StackRequest.THIS).transplant().build());
    /* Do not add comments for generated methods */
    sm.addScript(ScriptBuilder.exitEarly().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodComment")).decisionMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "isGenerated", "boolean", "org.eclipse.jdt.core.dom.ASTNode")).request(StackRequest.PARAM2).transplant().build());
}
Example 44
Project: lombok-master  File: EclipsePatcher.java View source code
private static void patchExtractInterface(ScriptManager sm) {
    /* Fix sourceEnding for generated nodes to avoid null pointer */
    sm.addScript(ScriptBuilder.wrapMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.compiler.SourceElementNotifier", "notifySourceElementRequestor", "void", "org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration", "org.eclipse.jdt.internal.compiler.ast.TypeDeclaration", "org.eclipse.jdt.internal.compiler.ast.ImportReference")).methodToWrap(new Hook("org.eclipse.jdt.internal.compiler.util.HashtableOfObjectToInt", "get", "int", "java.lang.Object")).wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getSourceEndFixed", "int", "int", "org.eclipse.jdt.internal.compiler.ast.ASTNode")).requestExtra(StackRequest.PARAM1).transplant().build());
    /* Make sure the generated source element is found instead of the annotation */
    sm.addScript(ScriptBuilder.wrapMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodDeclaration", "void", "org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite", "org.eclipse.jdt.core.dom.rewrite.ASTRewrite", "org.eclipse.jdt.core.dom.AbstractTypeDeclaration", "org.eclipse.jdt.core.dom.MethodDeclaration")).methodToWrap(new Hook("org.eclipse.jface.text.IDocument", "get", "java.lang.String", "int", "int")).wrapMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationSource", "java.lang.String", "java.lang.String", "java.lang.Object", "org.eclipse.jdt.core.dom.MethodDeclaration")).requestExtra(StackRequest.THIS, StackRequest.PARAM4).transplant().build());
    /* get real generated node in stead of a random one generated by the annotation */
    sm.addScript(ScriptBuilder.replaceMethodCall().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMemberDeclarations")).target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodComments")).methodToReplace(new Hook("org.eclipse.jdt.internal.corext.refactoring.structure.ASTNodeSearchUtil", "getMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit")).replacementMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "getRealMethodDeclarationNode", "org.eclipse.jdt.core.dom.MethodDeclaration", "org.eclipse.jdt.core.IMethod", "org.eclipse.jdt.core.dom.CompilationUnit")).transplant().build());
    /* Do not add @Override's for generated methods */
    sm.addScript(ScriptBuilder.exitEarly().target(new MethodTarget("org.eclipse.jdt.core.dom.rewrite.ListRewrite", "insertFirst")).decisionMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "isListRewriteOnGeneratedNode", "boolean", "org.eclipse.jdt.core.dom.rewrite.ListRewrite")).request(StackRequest.THIS).transplant().build());
    /* Do not add comments for generated methods */
    sm.addScript(ScriptBuilder.exitEarly().target(new MethodTarget("org.eclipse.jdt.internal.corext.refactoring.structure.ExtractInterfaceProcessor", "createMethodComment")).decisionMethod(new Hook("lombok.launch.PatchFixesHider$PatchFixes", "isGenerated", "boolean", "org.eclipse.jdt.core.dom.ASTNode")).request(StackRequest.PARAM2).transplant().build());
}
Example 45
Project: arquillian-eclipse-master  File: ArquillianResourceHyperlinkDetector.java View source code
@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
    ITextEditor textEditor = (ITextEditor) getAdapter(ITextEditor.class);
    if (region == null || textEditor == null)
        return null;
    IEditorSite site = textEditor.getEditorSite();
    if (site == null)
        return null;
    ITypeRoot javaElement = JavaUI.getEditorInputTypeRoot(textEditor.getEditorInput());
    if (javaElement == null)
        return null;
    if (!ArquillianSearchEngine.isArquillianJUnitTest(javaElement.findPrimaryType(), false, false)) {
        return null;
    }
    CompilationUnit ast = SharedASTProvider.getAST(javaElement, SharedASTProvider.WAIT_NO, null);
    if (ast == null)
        return null;
    ASTNode node = NodeFinder.perform(ast, region.getOffset(), 1);
    if (!(node instanceof StringLiteral))
        return null;
    if (node.getLocationInParent() == QualifiedName.QUALIFIER_PROPERTY)
        return null;
    ASTNode parent = node.getParent();
    if (!(parent instanceof MethodInvocation)) {
        return null;
    }
    MethodInvocation methodInvocation = (MethodInvocation) parent;
    SimpleName name = methodInvocation.getName();
    String methodName = name.getFullyQualifiedName();
    if (!ArquillianUIUtil.ADD_AS_RESOURCE_METHOD.equals(methodName) && !ArquillianUIUtil.ADD_AS_MANIFEST_RESOURCE_METHOD.equals(methodName) && !ArquillianUIUtil.ADD_AS_WEB_INF_RESOURCE_METHOD.equals(methodName)) {
        return null;
    }
    while (parent != null) {
        parent = parent.getParent();
        if (parent instanceof MethodDeclaration) {
            MethodDeclaration methodDeclaration = (MethodDeclaration) parent;
            int modifiers = methodDeclaration.getModifiers();
            if (Modifier.isPublic(modifiers) && Modifier.isStatic(modifiers)) {
                IMethodBinding binding = methodDeclaration.resolveBinding();
                IMethod method = (IMethod) binding.getJavaElement();
                try {
                    String signature = method.getSignature();
                    if (!//$NON-NLS-1$
                    "()QArchive<*>;".equals(//$NON-NLS-1$
                    signature)) {
                        break;
                    }
                } catch (JavaModelException e) {
                    ArquillianUIActivator.log(e);
                }
                IAnnotationBinding[] annotations = binding.getAnnotations();
                for (IAnnotationBinding annotationBinding : annotations) {
                    ITypeBinding typeBinding = annotationBinding.getAnnotationType();
                    if (ArquillianUtility.ORG_JBOSS_ARQUILLIAN_CONTAINER_TEST_API_DEPLOYMENT.equals(typeBinding.getQualifiedName())) {
                        StringLiteral stringLiteral = (StringLiteral) node;
                        String resource = stringLiteral.getLiteralValue();
                        IFile file = getFile(resource, javaElement);
                        if (file != null) {
                            int start = node.getStartPosition();
                            int length = node.getLength();
                            if (length > 2) {
                                start++;
                                length -= 2;
                            }
                            IRegion stringLiteralRegion = new Region(start, length);
                            return new IHyperlink[] { new ArquillianResourceHyperlink(resource, stringLiteralRegion, file) };
                        }
                        break;
                    }
                }
            }
        }
    }
    return null;
}
Example 46
Project: concurrencer-master  File: AccessAnalyzerForAtomicLong.java View source code
private boolean checkSynchronizedMethod(ASTNode node, Expression invocation, String accessType) {
    MethodDeclaration methodDecl = (MethodDeclaration) ASTNodes.getParent(node, MethodDeclaration.class);
    int modifiers = methodDecl.getModifiers();
    if (Modifier.isSynchronized(modifiers)) {
        List methodBodyStatements = methodDecl.getBody().statements();
        if (methodBodyStatements.size() == 1) {
            ModifierRewrite methodRewriter = ModifierRewrite.create(fRewriter, methodDecl);
            int synchronized1 = Modifier.SYNCHRONIZED;
            synchronized1 = ~synchronized1;
            int newModifiersWithoutSync = modifiers & synchronized1;
            methodRewriter.setModifiers(newModifiersWithoutSync, createGroupDescription(REMOVE_SYNCHRONIZED_MODIFIER));
        }
        fRewriter.replace(node, invocation, createGroupDescription(accessType));
        return true;
    }
    return false;
}
Example 47
Project: eclipse-pmd-master  File: UseUtilityClassQuickFix.java View source code
@SuppressWarnings("unchecked")
private void addPrivateConstructor(final TypeDeclaration typeDeclaration, final ASTRewrite rewrite) {
    final AST ast = typeDeclaration.getAST();
    final MethodDeclaration constructor = (MethodDeclaration) ast.createInstance(MethodDeclaration.class);
    constructor.setConstructor(true);
    final Modifier modifier = (Modifier) ast.createInstance(Modifier.class);
    modifier.setKeyword(ModifierKeyword.PRIVATE_KEYWORD);
    constructor.modifiers().add(modifier);
    constructor.setName(ASTUtil.copy(typeDeclaration.getName()));
    final Block body = (Block) ast.createInstance(Block.class);
    constructor.setBody(body);
    final ListRewrite statementRewrite = rewrite.getListRewrite(body, Block.STATEMENTS_PROPERTY);
    final ASTNode comment = rewrite.createStringPlaceholder("// hide constructor of utility class", ASTNode.EMPTY_STATEMENT);
    statementRewrite.insertFirst(comment, null);
    final int position = findConstructorPosition(typeDeclaration);
    final ListRewrite bodyDeclarationRewrite = rewrite.getListRewrite(typeDeclaration, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
    bodyDeclarationRewrite.insertAt(constructor, position, null);
}
Example 48
Project: Grindstone-master  File: BindingTestCase.java View source code
public void testMethodInInterface() throws Exception {
    String source = "interface Foo { void bar(); }" + "class Bar implements Foo { public void bar() {} }";
    CompilationUnit ast = createAST(source);
    MethodDeclaration fooBar = getType(ast, "Foo").getMethods()[0];
    MethodDeclaration barBar = getType(ast, "Bar").getMethods()[0];
    assertMethodDefinition(fooBar, barBar);
}
Example 49
Project: jbosstools-arquillian-master  File: FixInvalidDeploymentMethodMarkerResolution.java View source code
/* (non-Javadoc)
	 * @see org.eclipse.ui.IMarkerResolution#run(org.eclipse.core.resources.IMarker)
	 */
@Override
public void run(IMarker marker) {
    CompilationUnit root = getAST();
    final int markerStart = marker.getAttribute(IMarker.CHAR_START, 0);
    final int markerEnd = marker.getAttribute(IMarker.CHAR_END, 0);
    if (root == null || markerStart <= 0 || markerEnd <= markerStart) {
        ArquillianUIActivator.logWarning("Invalid Deployment method resolution");
        return;
    }
    root.accept(new ASTVisitor() {

        @Override
        public boolean visit(MethodDeclaration node) {
            int startPosition = node.getStartPosition();
            int length = node.getLength();
            if (markerStart >= startPosition && markerEnd <= startPosition + length) {
                deploymentMethod = node;
                node.resolveBinding();
                return false;
            }
            return true;
        }
    });
    if (deploymentMethod == null) {
        ArquillianUIActivator.logWarning("Invalid Deployment method resolution");
        return;
    }
    ASTRewrite rewriter = ASTRewrite.create(deploymentMethod.getAST());
    MethodDeclaration newMethodDeclaration = (MethodDeclaration) rewriter.createCopyTarget(deploymentMethod);
    ModifierRewrite listRewrite = ModifierRewrite.create(rewriter, deploymentMethod);
    listRewrite.setModifiers(Modifier.PUBLIC | Modifier.STATIC, Modifier.PRIVATE | Modifier.PROTECTED, null);
    rewriter.replace(deploymentMethod, newMethodDeclaration, null);
    IDocumentProvider provider = new TextFileDocumentProvider();
    try {
        provider.connect(file);
        IDocument doc = provider.getDocument(file);
        TextEdit edits = rewriter.rewriteAST(doc, icu.getJavaProject().getOptions(true));
        edits.apply(doc);
        CodeFormatter formatter = ToolFactory.createCodeFormatter(icu.getJavaProject().getOptions(true));
        TextEdit formatEdits = formatter.format(CodeFormatter.K_COMPILATION_UNIT, doc.get(), edits.getOffset(), edits.getLength(), 1, TextUtilities.getDefaultLineDelimiter(doc));
        formatEdits.apply(doc);
        icu.save(new NullProgressMonitor(), true);
        if (save) {
            provider.saveDocument(new NullProgressMonitor(), file, doc, false);
        }
    } catch (IllegalArgumentException e) {
        ArquillianUIActivator.log(e);
    } catch (MalformedTreeException e) {
        ArquillianUIActivator.log(e);
    } catch (CoreException e) {
        ArquillianUIActivator.log(e);
    } catch (BadLocationException e) {
        ArquillianUIActivator.log(e);
    } finally {
        provider.disconnect(file);
    }
}
Example 50
Project: KissMDA-master  File: JdtHelperTest.java View source code
@Test
public void testCreateReturnType() {
    Map<String, String> javaTypes = createJavaTypes();
    when(dataTypeUtils.getJavaTypes()).thenReturn(javaTypes);
    TypeDeclaration td = ast.newTypeDeclaration();
    MethodDeclaration md = ast.newMethodDeclaration();
    String umlTypeName = "Collection";
    String umlQualifiedTypeName = "Validation Profile::OCL Library::Collection";
    String sourceDirectoryPackageName = "Data";
    jdtHelper.createReturnType(ast, td, md, umlTypeName, umlQualifiedTypeName, sourceDirectoryPackageName);
    assertEquals("java.util.Collection", md.getReturnType2().toString());
}
Example 51
Project: PerformanceHat-master  File: CriticalLoopBuilderParticipant.java View source code
/**
   * {@inheritDoc}
   */
@Override
protected void buildFile(final FeedbackJavaProject project, final FeedbackJavaFile javaFile, final CompilationUnit astRoot) {
    astRoot.accept(new ASTVisitor() {

        private MethodDeclaration currentMethodDeclaration;

        @Override
        public boolean visit(final MethodDeclaration node) {
            currentMethodDeclaration = node;
            return true;
        }

        @Override
        public boolean visit(final EnhancedForStatement foreachStatement) {
            final Optional<CollectionSource> collectionSource = new CollectionSourceDetector().getSource(foreachStatement, currentMethodDeclaration);
            if (collectionSource.isPresent()) {
                final Procedure procedure = collectionSource.get().getProcedure();
                final String[] arguments = procedure.getArguments().toArray(new String[procedure.getArguments().size()]);
                final Double averageSize = feedbackHandlerClient.collectionSize(project, procedure.getClassName(), procedure.getName(), arguments, collectionSource.get().getPosition());
                final Map<Procedure, Double> procedureExecutionTimes = getProcedureExecutionTimes(foreachStatement);
                final Double avgExecTimePerIteration = getAverageExecutionTime(procedureExecutionTimes);
                if (averageSize != null && avgExecTimePerIteration != null) {
                    final Double avgTotalExecTime = averageSize * avgExecTimePerIteration;
                    final double threshold = project.getFeedbackProperties().getDouble(PerformanceFeedbackProperties.TRESHOLD__LOOPS, PerformanceConfigs.DEFAULT_THRESHOLD_LOOPS);
                    if (avgTotalExecTime >= threshold) {
                        final int startPosition = foreachStatement.getParameter().getStartPosition();
                        final Expression expression = foreachStatement.getExpression();
                        final int endPosition = expression.getStartPosition() + expression.getLength();
                        final int line = astRoot.getLineNumber(startPosition);
                        final String avgIterationsText = new Double(Numbers.round(averageSize, DECIMAL_PLACES)).toString();
                        final String avgExecTimePerIterationText = TimeValues.toText(avgExecTimePerIteration, DECIMAL_PLACES);
                        final String avgTotalExecTimeText = TimeValues.toText(avgTotalExecTime, DECIMAL_PLACES);
                        final String msg = String.format(MESSAGE_PATTERN, avgTotalExecTimeText, avgIterationsText);
                        final Map<String, Object> context = Maps.newHashMap();
                        context.put(AVG_TOTAL, avgTotalExecTimeText);
                        context.put(AVG_INTERATIONS, avgIterationsText);
                        context.put(AVG_TIME_PER_ITERATION, avgExecTimePerIterationText);
                        context.put(PROCEDURE_EXECUTIONS, getProcedureExecutionData(procedureExecutionTimes));
                        final String desc = templateHandler.getContent(LOOP, context);
                        final MarkerSpecification markerSpecification = MarkerSpecification.of(Ids.PERFORMANCE_MARKER, new MarkerPosition(line, startPosition, endPosition), IMarker.SEVERITY_WARNING, PerformanceMarkerTypes.COLLECTION_SIZE, msg).and(MarkerAttributes.DESCRIPTION, desc);
                        addMarker(javaFile, markerSpecification);
                    }
                }
            }
            return super.visit(foreachStatement);
        }

        @Override
        public boolean visit(final ForStatement forStatement) {
            // - node.updaters()
            return super.visit(forStatement);
        }

        private Map<Procedure, Double> getProcedureExecutionTimes(final EnhancedForStatement foreachStatement) {
            final List<Procedure> procedures = new ForLoopBodyVisitor().getProcedureInvocations(foreachStatement);
            final Map<Procedure, Double> procedureExecutionTimes = Maps.newHashMap();
            for (final Procedure procedure : procedures) {
                final String[] arguments = procedure.getArguments().toArray(new String[procedure.getArguments().size()]);
                final Double avgExecTimeResponse = feedbackHandlerClient.avgExecTime(project, procedure.getClassName(), procedure.getName(), arguments);
                final double avgExecTime = avgExecTimeResponse != null ? avgExecTimeResponse : 0;
                procedureExecutionTimes.put(procedure, avgExecTime);
            }
            return procedureExecutionTimes;
        }

        private List<ProcedureExecutionData> getProcedureExecutionData(final Map<Procedure, Double> procedureExecutionTimes) {
            final List<ProcedureExecutionData> data = Lists.newArrayList();
            for (final Map.Entry<Procedure, Double> entry : procedureExecutionTimes.entrySet()) {
                data.add(ProcedureExecutionData.of(entry.getKey(), entry.getValue()));
            }
            return data;
        }

        private Double getAverageExecutionTime(final Map<Procedure, Double> procedures) {
            double averageLoopTime = 0;
            for (final Entry<Procedure, Double> entry : procedures.entrySet()) {
                averageLoopTime += entry.getValue();
            }
            return averageLoopTime;
        }
    });
}
Example 52
Project: process-master  File: SourceUtils.java View source code
public static List<Edit> preprocessAST(CompilationUnit cu) {
    final List<Edit> edits = new ArrayList<>();
    // Walk the tree
    cu.accept(new ASTVisitor() {

        @Override
        public boolean visit(SimpleType node) {
            // replace "color" with "int"
            if ("color".equals(node.getName().toString())) {
                edits.add(Edit.replace(node.getStartPosition(), node.getLength(), "int"));
            }
            return super.visit(node);
        }

        @Override
        public boolean visit(NumberLiteral node) {
            // add 'f' to floats
            String s = node.getToken().toLowerCase();
            if (FLOATING_POINT_LITERAL_VERIFIER.matcher(s).matches() && !s.endsWith("f") && !s.endsWith("d")) {
                edits.add(Edit.insert(node.getStartPosition() + node.getLength(), "f"));
            }
            return super.visit(node);
        }

        @Override
        public boolean visit(MethodDeclaration node) {
            // add 'public' to methods with default visibility
            int accessModifiers = node.getModifiers() & ACCESS_MODIFIERS_MASK;
            if (accessModifiers == 0) {
                edits.add(Edit.insert(node.getStartPosition(), "public "));
            }
            return super.visit(node);
        }
    });
    return edits;
}
Example 53
Project: processing-master  File: SourceUtils.java View source code
public static List<Edit> preprocessAST(CompilationUnit cu) {
    final List<Edit> edits = new ArrayList<>();
    // Walk the tree
    cu.accept(new ASTVisitor() {

        @Override
        public boolean visit(SimpleType node) {
            // replace "color" with "int"
            if ("color".equals(node.getName().toString())) {
                edits.add(Edit.replace(node.getStartPosition(), node.getLength(), "int"));
            }
            return super.visit(node);
        }

        @Override
        public boolean visit(NumberLiteral node) {
            // add 'f' to floats
            String s = node.getToken().toLowerCase();
            if (FLOATING_POINT_LITERAL_VERIFIER.matcher(s).matches() && !s.endsWith("f") && !s.endsWith("d")) {
                edits.add(Edit.insert(node.getStartPosition() + node.getLength(), "f"));
            }
            return super.visit(node);
        }

        @Override
        public boolean visit(MethodDeclaration node) {
            // add 'public' to methods with default visibility
            int accessModifiers = node.getModifiers() & ACCESS_MODIFIERS_MASK;
            if (accessModifiers == 0) {
                edits.add(Edit.insert(node.getStartPosition(), "public "));
            }
            return super.visit(node);
        }
    });
    return edits;
}
Example 54
Project: recommenders-master  File: CallsApidocProvider.java View source code
private void handle(final IJavaElement variable, final String elementName, final String typeSignature, final JavaElementSelectionEvent event, final Composite parent) {
    final Optional<ASTNode> opt = event.getSelectedNode();
    if (!opt.isPresent()) {
        return;
    }
    final Optional<IType> varType = findVariableType(typeSignature, variable);
    if (!varType.isPresent()) {
        return;
    }
    receiverType = varType.get();
    baseName = pcProvider.toUniqueName(receiverType).orNull();
    if (baseName == null || !acquireModel()) {
        return;
    }
    try {
        final ASTNode node = opt.get();
        final Optional<MethodDeclaration> optAstMethod = findEnclosingMethod(node);
        final Optional<IMethod> optJdtMethod = resolveMethod(optAstMethod.orNull());
        if (!optJdtMethod.isPresent()) {
            return;
        }
        AstDefUseFinder defUse = new AstDefUseFinder(variable.getElementName(), optAstMethod.orNull());
        IMethod findFirstDeclaration = JdtUtils.findFirstDeclaration(optJdtMethod.get());
        IMethodName overrideContext = jdtResolver.toRecMethod(findFirstDeclaration).or(VmMethodName.NULL);
        Set<IMethodName> calls = Sets.newHashSet(defUse.getCalls());
        IMethodName definingMethod = defUse.getDefiningMethod().orNull();
        DefinitionKind kind = defUse.getDefinitionKind();
        // In the case of parameters we replace the defining method with the overridesContext
        if (PARAM == kind) {
            definingMethod = overrideContext;
        }
        if (kind == DefinitionKind.UNKNOWN) {
            // the context and try.
            if (definingMethod == null) {
                kind = FIELD;
            } else if (definingMethod.isInit()) {
                kind = DefinitionKind.NEW;
            } else {
                kind = RETURN;
            }
        }
        model.setObservedOverrideContext(overrideContext);
        model.setObservedDefiningMethod(definingMethod);
        model.setObservedCalls(calls);
        model.setObservedDefinitionKind(kind);
        Iterable<Recommendation<IMethodName>> methodCalls = sortByRelevance(Recommendations.filterRelevance(model.recommendCalls(), 0.01 / 100));
        runSyncInUiThread(new CallRecommendationsRenderer(overrideContext, methodCalls, calls, variable.getElementName(), definingMethod, kind, parent));
    } finally {
        releaseModel();
    }
}
Example 55
Project: tamiflex-master  File: MethodResolver.java View source code
private static void disambiguateMethodByLineNumber(String containerClassName, String methodName, IProject containerProject, int lineNumber) {
    IJavaProject javaProject = JavaCore.create(containerProject);
    try {
        IType type = javaProject.findType(containerClassName, (IProgressMonitor) null);
        ICompilationUnit compilationUnit = type.getCompilationUnit();
        if (compilationUnit != null) {
            ASTParser parser = ASTParser.newParser(AST.JLS3);
            parser.setSource(compilationUnit);
            parser.setResolveBindings(true);
            CompilationUnit cu = (CompilationUnit) parser.createAST(null);
            final int linePosition = cu.getPosition(lineNumber, 0);
            cu.accept(new ASTVisitor() {

                public boolean visit(MethodDeclaration method) {
                    if (method.getStartPosition() <= linePosition && method.getStartPosition() + method.getLength() >= linePosition) {
                        //method is resolved
                        resolvedMethods.clear();
                        resolvedMethods.add((IMethod) method.resolveBinding().getJavaElement());
                    }
                    return false;
                }
            });
        } else {
            IClassFile classFile = type.getClassFile();
            if (classFile != null) {
                IClassFileReader reader = ToolFactory.createDefaultClassFileReader(classFile, IClassFileReader.METHOD_INFOS | IClassFileReader.METHOD_BODIES);
                for (IMethodInfo method : reader.getMethodInfos()) {
                    String currMethodName = new String(method.getName());
                    if (!currMethodName.equals(methodName))
                        continue;
                    ICodeAttribute codeAttribute = method.getCodeAttribute();
                    ILineNumberAttribute lineNumberAttribute = codeAttribute.getLineNumberAttribute();
                    if (lineNumberAttribute != null) {
                        int[][] lineNumberTable = lineNumberAttribute.getLineNumberTable();
                        if (lineNumberTable != null && lineNumberTable.length > 0) {
                            int startLine = Integer.MAX_VALUE;
                            int endLine = 0;
                            for (int[] entry : lineNumberTable) {
                                int line = entry[1];
                                startLine = Math.min(startLine, line);
                                endLine = Math.max(endLine, line);
                            }
                            if (startLine >= lineNumber && endLine <= lineNumber) {
                                char[][] parameterTypes = Signature.getParameterTypes(method.getDescriptor());
                                String[] parameterTypeNames = new String[parameterTypes.length];
                                int i = 0;
                                for (char[] cs : parameterTypes) {
                                    parameterTypeNames[i] = new String(cs);
                                    i++;
                                }
                                IMethod iMethod = type.getMethod(currMethodName, parameterTypeNames);
                                //method resolved
                                resolvedMethods.clear();
                                resolvedMethods.add(iMethod);
                            }
                        }
                    }
                }
            }
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
}
Example 56
Project: eclipse.jdt.debug-master  File: JavaBreakpointImportParticipant.java View source code
/**
		 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.MethodDeclaration)
		 */
@Override
public boolean visit(MethodDeclaration node) {
    SimpleName name = node.getName();
    String typename = fTypeNameStack.peek();
    if (!fTypename.equals(typename) && !fTypename.startsWith(typename)) {
        return false;
    }
    if (name != null && name.getFullyQualifiedName().equals(fName)) {
        String sig = getMethodSignatureFromNode(node);
        if (sig != null) {
            //$NON-NLS-1$ //$NON-NLS-2$
            sig = sig.replaceAll("\\.", "/");
            if (sig.equals(fSignature)) {
                IMarker marker = fBreakpoint.getMarker();
                int currentstart = marker.getAttribute(IMarker.CHAR_START, -1);
                int charstart = name.getStartPosition();
                if (currentstart != charstart) {
                    try {
                        marker.setAttribute(IMarker.CHAR_START, charstart);
                        marker.setAttribute(IMarker.CHAR_END, charstart + name.getLength());
                    } catch (CoreException ce) {
                    }
                }
            }
        }
    }
    // local type
    return fBreakpoint instanceof JavaClassPrepareBreakpoint;
}
Example 57
Project: bundlemaker-master  File: JdtAstVisitor.java View source code
/*
   * (non-Javadoc)
   * 
   * @seeorg.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom. MethodDeclaration)
   */
@SuppressWarnings("unchecked")
@Override
public boolean visit(MethodDeclaration node) {
    // declared method return type
    resolveType(node.getReturnType2(), false, false, false);
    // declared method argument types
    List<SingleVariableDeclaration> variableDeclarations = node.parameters();
    for (SingleVariableDeclaration singleVariableDeclaration : variableDeclarations) {
        resolveType(singleVariableDeclaration.getType(), false, false, false);
    }
    // declared method exception types
    List<Name> exceptions = node.thrownExceptions();
    for (Name name : exceptions) {
        resolveTypeName(name, false, false, false);
    }
    // visit the child nodes
    return true;
}
Example 58
Project: ccvisu-master  File: FactUtils.java View source code
public static String getMethodFullName(MethodDeclaration md) {
    assert md != null;
    StringBuilder result = new StringBuilder();
    if (md.getParent() instanceof TypeDeclaration) {
        TypeDeclaration typeDeclaration = (TypeDeclaration) md.getParent();
        ITypeBinding typeBinding = typeDeclaration.resolveBinding();
        IPackageBinding packageBinding = typeBinding.getPackage();
        result.append(FactUtils.getPackageName(packageBinding));
        result.append('.');
        result.append(typeDeclaration.getName().getFullyQualifiedName());
        result.append('.');
    }
    result.append(md.getName().getFullyQualifiedName()).append("()");
    return result.toString();
}
Example 59
Project: com.idega.eclipse.ejbwizards-master  File: BeanCreator.java View source code
protected MethodDeclaration getMethodDeclaration(AST ast, IMethod method, String methodName, String returnType, Set imports, boolean addJavadoc) throws JavaModelException {
    String[] exceptions = method.getExceptionTypes();
    String[] parameterTypes = method.getParameterTypes();
    String[] parameterNames = method.getParameterNames();
    MethodDeclaration methodConstructor = ast.newMethodDeclaration();
    methodConstructor.setConstructor(false);
    methodConstructor.modifiers().addAll(ast.newModifiers(Modifier.PUBLIC));
    methodConstructor.setReturnType2(getType(ast, returnType));
    methodConstructor.setName(ast.newSimpleName(methodName));
    if (returnType != null) {
        imports.add(getImportSignature(returnType));
    }
    for (int i = 0; i < exceptions.length; i++) {
        methodConstructor.thrownExceptions().add(ast.newSimpleName(Signature.getSignatureSimpleName(exceptions[i])));
        imports.add(getImportSignature(Signature.toString(exceptions[i])));
    }
    for (int i = 0; i < parameterTypes.length; i++) {
        String parameterType = getReturnType(parameterTypes[i]);
        SingleVariableDeclaration variableDeclaration = ast.newSingleVariableDeclaration();
        variableDeclaration.modifiers().addAll(ast.newModifiers(Modifier.NONE));
        variableDeclaration.setType(getType(ast, parameterType));
        variableDeclaration.setName(ast.newSimpleName(parameterNames[i]));
        methodConstructor.parameters().add(variableDeclaration);
        imports.add(getImportSignature(Signature.toString(parameterTypes[i])));
    }
    if (addJavadoc) {
        methodConstructor.setJavadoc(getJavadoc(ast, method));
    }
    return methodConstructor;
}
Example 60
Project: Convert-For-Each-Loop-to-Lambda-Expression-Eclipse-Plugin-master  File: ForeachLoopToLambdaRefactoring.java View source code
// this method get the EnhancedForSrarement to check the precondition
private static Set<EnhancedForStatement> getEnhancedForStatements(IMethod method, IProgressMonitor pm) throws JavaModelException {
    ICompilationUnit iCompilationUnit = method.getCompilationUnit();
    // get the ASTParser of the method
    CompilationUnit compilationUnit = RefactoringASTParser.parseWithASTProvider(iCompilationUnit, true, new SubProgressMonitor(pm, 1));
    // get the method declaration ASTNode.
    MethodDeclaration methodDeclarationNode = ASTNodeSearchUtil.getMethodDeclarationNode(method, compilationUnit);
    final Set<EnhancedForStatement> statements = new LinkedHashSet<EnhancedForStatement>();
    // extract all enhanced for loop statements in the method.
    methodDeclarationNode.accept(new ASTVisitor() {

        @Override
        public boolean visit(EnhancedForStatement node) {
            statements.add(node);
            return super.visit(node);
        }
    });
    return statements;
}
Example 61
Project: dot-emacs-master  File: ASTUtils.java View source code
/**
   * Finds the node at the specified offset that matches up with the supplied
   * IJavaElement.
   *
   * @param cu The CompilationUnit.
   * @param offset The node offset in the compilation unit.
   * @param element The IJavaElement to match.
   * @return The node at the specified offset.
   */
public static ASTNode findNode(CompilationUnit cu, int offset, IJavaElement element) throws Exception {
    ASTNode node = findNode(cu, offset);
    if (node == null) {
        return null;
    }
    if (element.getElementType() == IJavaElement.TYPE_PARAMETER) {
        element = element.getParent();
    }
    switch(element.getElementType()) {
        case IJavaElement.PACKAGE_DECLARATION:
            node = resolveNode(node, PackageDeclaration.class);
            break;
        case IJavaElement.IMPORT_DECLARATION:
            node = resolveNode(node, ImportDeclaration.class);
            break;
        case IJavaElement.TYPE:
            node = resolveNode(node, AbstractTypeDeclaration.class);
            break;
        case IJavaElement.INITIALIZER:
            node = resolveNode(node, Initializer.class);
            break;
        case IJavaElement.FIELD:
            node = resolveNode(node, FieldDeclaration.class);
            break;
        case IJavaElement.METHOD:
            node = resolveNode(node, MethodDeclaration.class);
            break;
        default:
            logger.info("findNode(CompilationUnit,int,IJavaElement) - " + "unrecognized element type " + element.getElementType());
    }
    return node;
}
Example 62
Project: ecl-master  File: ASTUtils.java View source code
/**
   * Finds the node at the specified offset that matches up with the supplied
   * IJavaElement.
   *
   * @param cu The CompilationUnit.
   * @param offset The node offset in the compilation unit.
   * @param element The IJavaElement to match.
   * @return The node at the specified offset.
   */
public static ASTNode findNode(CompilationUnit cu, int offset, IJavaElement element) throws Exception {
    ASTNode node = findNode(cu, offset);
    if (node == null) {
        return null;
    }
    if (element.getElementType() == IJavaElement.TYPE_PARAMETER) {
        element = element.getParent();
    }
    switch(element.getElementType()) {
        case IJavaElement.PACKAGE_DECLARATION:
            node = resolveNode(node, PackageDeclaration.class);
            break;
        case IJavaElement.IMPORT_DECLARATION:
            node = resolveNode(node, ImportDeclaration.class);
            break;
        case IJavaElement.TYPE:
            node = resolveNode(node, AbstractTypeDeclaration.class);
            break;
        case IJavaElement.INITIALIZER:
            node = resolveNode(node, Initializer.class);
            break;
        case IJavaElement.FIELD:
            node = resolveNode(node, FieldDeclaration.class);
            break;
        case IJavaElement.METHOD:
            node = resolveNode(node, MethodDeclaration.class);
            break;
        default:
            logger.info("findNode(CompilationUnit,int,IJavaElement) - " + "unrecognized element type " + element.getElementType());
    }
    return node;
}
Example 63
Project: eclim-master  File: ASTUtils.java View source code
/**
   * Finds the node at the specified offset that matches up with the supplied
   * IJavaElement.
   *
   * @param cu The CompilationUnit.
   * @param offset The node offset in the compilation unit.
   * @param element The IJavaElement to match.
   * @return The node at the specified offset.
   */
public static ASTNode findNode(CompilationUnit cu, int offset, IJavaElement element) throws Exception {
    ASTNode node = findNode(cu, offset);
    if (node == null) {
        return null;
    }
    if (element.getElementType() == IJavaElement.TYPE_PARAMETER) {
        element = element.getParent();
    }
    switch(element.getElementType()) {
        case IJavaElement.PACKAGE_DECLARATION:
            node = resolveNode(node, PackageDeclaration.class);
            break;
        case IJavaElement.IMPORT_DECLARATION:
            node = resolveNode(node, ImportDeclaration.class);
            break;
        case IJavaElement.TYPE:
            node = resolveNode(node, AbstractTypeDeclaration.class);
            break;
        case IJavaElement.INITIALIZER:
            node = resolveNode(node, Initializer.class);
            break;
        case IJavaElement.FIELD:
            node = resolveNode(node, FieldDeclaration.class);
            break;
        case IJavaElement.METHOD:
            node = resolveNode(node, MethodDeclaration.class);
            break;
        default:
            logger.info("findNode(CompilationUnit,int,IJavaElement) - " + "unrecognized element type " + element.getElementType());
    }
    return node;
}
Example 64
Project: eclipse-tapestry5-plugin-master  File: TapestryServiceConfigurationCapturingVisitor.java View source code
@Override
public boolean visit(MethodDeclaration node) {
    //  Capture method arguments in a scope
    declarations.enterScope();
    for (Object arg : node.parameters()) {
        if (arg instanceof SingleVariableDeclaration) {
            SingleVariableDeclaration variableDeclaration = (SingleVariableDeclaration) arg;
            String className = EclipseUtils.toClassName(tapestryModule.getEclipseProject(), variableDeclaration.getType());
            if (StringUtils.isNotEmpty(className)) {
                declarations.add(new Declaration(variableDeclaration, variableDeclaration.getName().getIdentifier(), className));
            }
        }
    }
    return super.visit(node);
}
Example 65
Project: hawk-drivers-master  File: SService.java View source code
private void extractJavaDoc(Class<?> clazz) {
    ASTParser parser = ASTParser.newParser(AST.JLS4);
    parser.setSource(sourceCodeFetcher.get(clazz).toCharArray());
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    cu.accept(new ASTVisitor() {

        MethodDeclaration currentMethod = null;

        public boolean visit(Javadoc javaDoc) {
            if (currentMethod != null) {
                SMethod method = getSMethod(currentMethod.getName().getIdentifier());
                if (method == null) {
                    LOGGER.error("Method " + currentMethod.getName().getIdentifier() + " not found in class");
                } else {
                    for (Object tag : javaDoc.tags()) {
                        if (tag instanceof TagElement) {
                            TagElement tagElement = (TagElement) tag;
                            String tagName = tagElement.getTagName() == null ? null : tagElement.getTagName().trim();
                            if ("@param".equals(tagName)) {
                                SParameter parameter = null;
                                for (int i = 0; i < tagElement.fragments().size(); i++) {
                                    Object fragment = tagElement.fragments().get(i);
                                    if (i == 0 && fragment instanceof SimpleName) {
                                        parameter = method.getParameter(((SimpleName) fragment).getIdentifier());
                                    } else if (i == 1 && parameter != null && fragment instanceof TextElement) {
                                        parameter.setDoc(((TextElement) fragment).getText());
                                    }
                                }
                            } else if ("@return".equals(tagName)) {
                                method.setReturnDoc(extractFullText(tagElement));
                            } else if ("@throws".equals(tagName)) {
                            } else {
                                method.setDoc(extractFullText(tagElement));
                            }
                        }
                    }
                }
            }
            return super.visit(javaDoc);
        }

        @Override
        public boolean visit(MethodDeclaration node) {
            currentMethod = node;
            return super.visit(node);
        }

        @Override
        public void endVisit(MethodDeclaration node) {
            currentMethod = null;
            super.endVisit(node);
        }
    });
}
Example 66
Project: integrity-master  File: JavadocUtil.java View source code
private static MethodDeclaration getMethodDeclaration(JvmOperation aMethod, IJavaElementFinder anElementFinder) {
    IJavaElement tempSourceMethod = (IJavaElement) anElementFinder.findElementFor(aMethod);
    // no Javadoc anyway
    if (tempSourceMethod.getParent().getParent() instanceof ICompilationUnit) {
        ICompilationUnit tempCompilationUnit = (ICompilationUnit) tempSourceMethod.getParent().getParent();
        AbstractTypeDeclaration tempType = parseCompilationUnit(tempCompilationUnit);
        if (tempType instanceof TypeDeclaration) {
            for (MethodDeclaration tempMethod : ((TypeDeclaration) tempType).getMethods()) {
                // required to be unique per class
                if (aMethod.getSimpleName().equals(tempMethod.getName().getFullyQualifiedName())) {
                    return tempMethod;
                }
            }
        }
    }
    return null;
}
Example 67
Project: jbosstools-hibernate-master  File: Utils.java View source code
public static String getFieldNameByGetter(MethodDeclaration node) {
    if (node.parameters().size() != 0)
        return null;
    String methodName = node.getName().getIdentifier();
    if (//$NON-NLS-1$
    methodName.startsWith("get") && methodName.length() > 3) {
        methodName = methodName.substring(3);
        return Character.toLowerCase(methodName.charAt(0)) + methodName.substring(1);
    } else if (//$NON-NLS-1$
    methodName.startsWith("is") && methodName.length() > 2) {
        methodName = methodName.substring(2);
        return Character.toLowerCase(methodName.charAt(0)) + methodName.substring(1);
    }
    return null;
}
Example 68
Project: jbosstools-javaee-master  File: ComponentBuilder.java View source code
void processFactories() {
    for (AnnotatedASTNode<MethodDeclaration> n : annotatedMethods) {
        Annotation a = findAnnotation(n, FACTORY_ANNOTATION_TYPE);
        if (a == null)
            continue;
        MethodDeclaration m = n.getNode();
        ValueInfo factoryName = ValueInfo.getValueInfo(a, null);
        if (factoryName == null) {
            factoryName = new ValueInfo();
            factoryName.setValue(toPropertyName(m.getName().getIdentifier(), "get"));
            factoryName.valueLength = m.getName().getLength();
            factoryName.valueStartPosition = m.getName().getStartPosition();
        }
        ValueInfo scope = ValueInfo.getValueInfo(a, ISeamXmlComponentDeclaration.SCOPE);
        //$NON-NLS-1$
        ValueInfo autoCreate = ValueInfo.getValueInfo(a, "autoCreate");
        SeamAnnotatedFactory factory = new SeamAnnotatedFactory();
        factory.setParentDeclaration(component);
        IMethod im = findMethod(m);
        factory.setSourceMember(im);
        factory.setId(im);
        factory.setSourcePath(component.getSourcePath());
        factory.setName(factoryName);
        if (autoCreate != null)
            factory.setAutoCreate(true);
        if (scope != null) {
            factory.setScope(scope);
        }
        ValueInfo _a = new ValueInfo();
        _a.setValue(FACTORY_ANNOTATION_TYPE);
        _a.valueStartPosition = a.getStartPosition();
        _a.valueLength = a.getLength();
        factory.addAttribute(FACTORY_ANNOTATION_TYPE, _a);
        ds.getFactories().add(factory);
    }
}
Example 69
Project: LEADT-master  File: JDTCheckGenerator.java View source code
/* METHOD DECLARATION PART */
@Override
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    List<MethodPathItem> inhMethods = new ArrayList<MethodPathItem>();
    boolean foundInhMethods = initializeAndCollectInhData(binding, inhMethods);
    if (foundInhMethods) {
        handleInheritedAbstractMethodImplementation(node, binding, inhMethods);
        handleOverridingRelationshipViolation(node, binding, inhMethods);
    }
    return super.visit(node);
}
Example 70
Project: pdt-master  File: OverrideIndicatorManager.java View source code
/*
			 * @see
			 * org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core
			 * .dom.MethodDeclaration)
			 */
@Override
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveMethodBinding();
    if (binding != null) {
        IMethodBinding definingMethod = Bindings.findOverriddenMethod(binding, true);
        if (definingMethod != null) {
            ITypeBinding definingType = definingMethod.getDeclaringClass();
            String qualifiedMethodName = //$NON-NLS-1$ [TODO
            definingType.getName() + "." + //$NON-NLS-1$ [TODO
            binding.getName();
            // -
            // Use
            // definingType.getQualifiedName()]
            boolean isImplements = (Modifiers.AccAbstract & definingMethod.getModifiers()) != 0;
            String text;
            if (isImplements)
                text = Messages.format(PHPUIMessages.OverrideIndicatorManager_implements, // $NON-NLS-1$
                qualifiedMethodName);
            else
                text = Messages.format(PHPUIMessages.OverrideIndicatorManager_overrides, // $NON-NLS-1$
                qualifiedMethodName);
            Identifier name = node.getFunction().getFunctionName();
            Position position = new Position(name.getStart(), name.getLength());
            OverrideIndicator indicator = new OverrideIndicator(isImplements, text, definingMethod.getKey());
            annotationMap.put(indicator, position);
        }
    }
    return true;
}
Example 71
Project: quick-junit-master  File: LeaningAST.java View source code
//	@Test
//	public void learning_addSource() throws Exception {
//		String source = "public class TestClass{\n" +
//		"	/**\n" +
//		"	 *	@see test.TestClass\n" +
//		"    *  @see org.junit.Test\n" +
//		"	 */\n" +
//		"	@org.junit.Test\n" +
//		"	public void do_test() throws Exception{\n" +
//		"	}\n" +
//		"}\n";
//		ASTParser parser = ASTParser.newParser(AST.JLS3);
//		parser.setSource(source.toCharArray());
//		final ASTNode node = parser.createAST(null);
//		final List<String> actual = new ArrayList<String>();
//		ASTVisitor visitor = new ASTVisitor(){
//			public boolean visit(Javadoc doc){
//				AST ast = doc.getAST();
//				TagElement tag = ast.newTagElement();
//				tag.setTagName(TagElement.TAG_SEE);
//				doc.tags().add(tag);
//				MethodRef method = ast.newMethodRef();
//				tag.fragments().add(method);
//				SimpleName name = ast.newSimpleName("Test");
//				method.setQualifier(ast.newQualifiedName(ast.newQualifiedName(ast.newName("org"), ast.newSimpleName("junit")), name));
//				name = ast.newSimpleName("test");
//				method.setName(name);
//				return super.visit(doc);
//			}
//		};
//		node.accept(visitor);
//		System.out.println(node);
//	}
@Test
@Ignore
public /*
	 * resolveBindings�IProject��実際�JavaModel�関連付�る必���る。
	 * ソース����何�も出������。
	 */
void learning_ASTRewrite_use_resolveBindings() throws Exception {
    String source = "public class TestClass{\n" + //		"	@org.junit.Test\n" +
    "	public void do_test() throws Exception{\n" + "	}\n" + "}\n";
    Document doc = new Document(source);
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    // set source
    parser.setSource(source.toCharArray());
    // we need bindings later on
    parser.setResolveBindings(true);
    CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    //		List types = cu.structuralPropertiesForType();
    for (Object o : cu.types()) {
        AbstractTypeDeclaration dec = (AbstractTypeDeclaration) o;
        List bodyDeclarations = dec.bodyDeclarations();
        assertNotNull(dec.resolveBinding());
        for (Object body : bodyDeclarations) {
            MethodDeclaration methodDec = (MethodDeclaration) body;
            IMethodBinding binding = methodDec.resolveBinding();
            assertNotNull(binding);
            ASTNode node = cu.findDeclaringNode(binding);
            assertNotNull("can't find declaring node", node);
            System.out.println(node);
        }
    }
//		ASTRewrite rewriter = ASTRewrite.create(cu.getAST());
//		ListRewrite listRewrite = rewriter.getListRewrite(cu, Javadoc.TAGS_PROPERTY);
}
Example 72
Project: seam-forge-master  File: MethodImpl.java View source code
@Override
public Method<O> setBody(final String body) {
    String stub = "public class Stub { public void method() {" + body + "} }";
    JavaClass temp = (JavaClass) JavaParser.parse(stub);
    List<Method<JavaClass>> methods = temp.getMethods();
    Block block = ((MethodDeclaration) methods.get(0).getInternal()).getBody();
    block = (Block) ASTNode.copySubtree(method.getAST(), block);
    method.setBody(block);
    return this;
}
Example 73
Project: stlipse-master  File: BeanPropertyVisitor.java View source code
@Override
public boolean visit(MethodDeclaration node) {
    if (nestLevel != 1)
        return false;
    // Resolve binding first to support Lombok generated methods.
    // node.getModifiers() returns incorrect access modifiers for them.
    // https://github.com/harawata/stlipse/issues/2
    IMethodBinding method = node.resolveBinding();
    if (Modifier.isPublic(method.getModifiers())) {
        final String methodName = node.getName().toString();
        final int parameterCount = node.parameters().size();
        final Type returnType = node.getReturnType2();
        if (returnType == null) {
        // Ignore constructor
        } else if (isReturnVoid(returnType)) {
            if (isSetter(methodName, parameterCount)) {
                SingleVariableDeclaration param = (SingleVariableDeclaration) node.parameters().get(0);
                String qualifiedName = getQualifiedNameFromType(param.getType());
                String fieldName = getFieldNameFromAccessor(methodName);
                writableFields.put(fieldName, qualifiedName);
            }
        } else {
            if (isGetter(methodName, parameterCount)) {
                String fieldName = getFieldNameFromAccessor(methodName);
                String qualifiedName = getQualifiedNameFromType(returnType);
                readableFields.put(fieldName, qualifiedName);
            } else if (isEventHandler(returnType.toString(), parameterCount)) {
                ITypeBinding binding = returnType.resolveBinding();
                if (binding == null) {
                    Activator.log(Status.INFO, "Couldn't resolve binding for return type " + returnType.toString() + " of method " + methodName);
                } else {
                    String qualifiedName = binding.getQualifiedName();
                    try {
                        if (TypeCache.isResolution(project, project.findType(qualifiedName))) {
                            Object annotationValue = null;
                            boolean isDefaultHandler = false;
                            boolean isInterceptor = false;
                            for (IAnnotationBinding annotation : method.getAnnotations()) {
                                String name = annotation.getName();
                                isInterceptor |= ("Before".equals(name) || "After".equals(name));
                                if (isInterceptor)
                                    break;
                                isDefaultHandler |= "DefaultHandler".equals(name);
                                if ("HandlesEvent".equals(name)) {
                                    IMemberValuePairBinding[] valuePairs = annotation.getAllMemberValuePairs();
                                    for (IMemberValuePairBinding valuePair : valuePairs) {
                                        if ("value".equals(valuePair.getName())) {
                                            annotationValue = valuePair.getValue();
                                        }
                                    }
                                }
                            }
                            if (!isInterceptor) {
                                EventProperty eventProperty = new EventProperty();
                                eventProperty.setDefaultHandler(isDefaultHandler);
                                eventProperty.setMethodName(methodName);
                                String eventName = (String) (annotationValue == null ? methodName : annotationValue);
                                eventHandlers.put(eventName, eventProperty);
                            }
                        }
                    } catch (JavaModelException e) {
                        Activator.log(Status.WARNING, "Error occurred during event handler check", e);
                    }
                }
            }
        }
    }
    return false;
}
Example 74
Project: XobotOS-master  File: NativeBuilder.java View source code
public NativeMethodBuilder registerNativeMethod(MethodDeclaration node, NativeMethod template, NativeHandleBuilder nativeHandle) {
    final IMethodBinding binding = node.resolveBinding();
    String prefix = _config.getFunctionPrefix();
    if (prefix == null)
        prefix = "";
    String name;
    if (template.getKind() == Kind.DESTRUCTOR)
        name = "destructor";
    else if (template.getName() != null)
        name = template.getName();
    else
        name = binding.getName();
    String nativeName = template.getNativeName();
    if (nativeName == null)
        nativeName = name;
    String funcName = String.format("%s_%s_%s", prefix, binding.getDeclaringClass().getName(), name);
    if (_nativeMethods.containsKey(funcName)) {
        int index = 0;
        while (_nativeMethods.containsKey(funcName + "_" + index)) index++;
        funcName = funcName + "_" + index;
    }
    NativeMethodBuilder builder = new NativeMethodBuilder(this, node, template, nativeName, funcName, nativeHandle);
    _nativeMethods.put(funcName, builder);
    return builder;
}
Example 75
Project: eclipse3-master  File: SyntaxTranslator.java View source code
@Override
public void endVisit(SimpleName node) {
    IBinding nameBinding = node.resolveBinding();
    if (nameBinding instanceof org.eclipse.jdt.core.dom.IVariableBinding) {
        org.eclipse.jdt.core.dom.IVariableBinding variableBinding = (org.eclipse.jdt.core.dom.IVariableBinding) nameBinding;
        org.eclipse.jdt.core.dom.MethodDeclaration enclosingMethod = getEnclosingMethod(node);
        if (!variableBinding.isField() && enclosingMethod != null && variableBinding.getDeclaringMethod() != enclosingMethod.resolveBinding() && addedParameters.add(variableBinding)) {
            TypeName parameterTypeName = translateTypeName(variableBinding.getType());
            String parameterName = variableBinding.getName();
            SimpleIdentifier parameterNameNode = identifier(parameterName);
            innerClass.getMembers().add(index++, fieldDeclaration(parameterTypeName, variableDeclaration(parameterNameNode)));
            constructorParameters.add(fieldFormalParameter(null, null, parameterNameNode));
            arguments.add(parameterNameNode);
            context.putReference(parameterNameNode, variableBinding, null);
        }
    }
    super.endVisit(node);
}
Example 76
Project: srcrepo-master  File: JDTVisitor.java View source code
@Override
public boolean visit(final org.eclipse.jdt.core.dom.MethodDeclaration node) {
    AbstractMethodDeclaration element = null;
    if (this.isINCREMENTALDISCOVERING && !(node.getParent() instanceof org.eclipse.jdt.core.dom.AnonymousClassDeclaration)) {
        String qualifiedName = JDTVisitorUtils.getQualifiedName(node);
        element = (AbstractMethodDeclaration) getGlobalBindings().getTarget(qualifiedName);
        if (element != null) {
            unSetProxy(element);
        }
    }
    if (element == null) {
        if (node.isConstructor()) {
            element = this.factory.createConstructorDeclaration();
        } else {
            element = this.factory.createMethodDeclaration();
        }
    }
    this.binding.put(node, element);
    // anonymous class declared in a method body
    if (getLocalBindings() == null) {
        setLocalBindings(new BindingManager(this.factory));
    }
    return true;
}
Example 77
Project: iTrace-master  File: AstManager.java View source code
public boolean visit(MethodDeclaration node) {
    SourceCodeEntity sce = new SourceCodeEntity();
    sce.type = SCEType.METHOD;
    sce.how = SCEHow.DECLARE;
    sce.name = node.getName().getFullyQualifiedName();
    determineSCEPosition(compileUnit, node, sce);
    extractDataFromMethodBinding(node.resolveBinding(), sce);
    sourceCodeEntities.add(sce);
    return true;
}
Example 78
Project: blade.tools-master  File: JavaFileChecker.java View source code
@Override
public boolean visit(MethodDeclaration node) {
    boolean sameParmSize = true;
    String methodName = node.getName().toString();
    List<?> parmsList = node.parameters();
    if (name.equals(methodName) && params.length == parmsList.size()) {
        for (int i = 0; i < params.length; i++) {
            if (!(params[i].trim().equals(parmsList.get(i).toString().substring(0, params[i].trim().length())))) {
                sameParmSize = false;
                break;
            }
        }
    } else {
        sameParmSize = false;
    }
    if (sameParmSize) {
        final int startLine = _ast.getLineNumber(node.getName().getStartPosition());
        final int startOffset = node.getName().getStartPosition();
        node.accept(new ASTVisitor() {

            @Override
            public boolean visit(Block node) {
                // SimpleName parent can not be MarkerAnnotation and
                // SimpleType
                // SingleVariableDeclaration node contains the
                // parms's type
                int endLine = _ast.getLineNumber(node.getStartPosition());
                int endOffset = node.getStartPosition();
                searchResults.add(createSearchResult(startOffset, endOffset, startLine, endLine, true));
                return false;
            }

            ;
        });
    }
    return false;
}
Example 79
Project: emf.texo-master  File: ImportReferencesCollector.java View source code
/*
	 * @see ASTVisitor#visit(MethodDeclaration)
	 */
@Override
public boolean visit(final MethodDeclaration node) {
    doVisitNode(node.getJavadoc());
    if (node.getAST().apiLevel() >= AST.JLS3) {
        doVisitChildren(node.modifiers());
        doVisitChildren(node.typeParameters());
    }
    if (!node.isConstructor()) {
        doVisitNode(node.getReturnType2());
    }
    doVisitChildren(node.parameters());
    Iterator<?> iter = node.thrownExceptions().iterator();
    while (iter.hasNext()) {
        typeRefFound((Name) iter.next());
    }
    doVisitNode(node.getBody());
    return false;
}
Example 80
Project: FastIbatis-master  File: AbstractCodeBuilder.java View source code
@SuppressWarnings("unchecked")
private MethodDeclaration createMethodDeclaration(AST ast, TypeDeclaration type, FastIbatisConfig fc) {
    MethodDeclaration methodDeclaration = ast.newMethodDeclaration();
    methodDeclaration.setConstructor(false);
    List modifiers = methodDeclaration.modifiers();
    modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
    methodDeclaration.setName(ast.newSimpleName(fc.getMethodName()));
    String _str = fc.getReturnType();
    if (_str == null || _str.equalsIgnoreCase("void"))
        methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
    else
        methodDeclaration.setReturnType2(ast.newSimpleType(ast.newSimpleName(_str)));
    SingleVariableDeclaration variableDeclaration = ast.newSingleVariableDeclaration();
    variableDeclaration.setType(ast.newSimpleType(ast.newSimpleName(fc.getParamType())));
    variableDeclaration.setName(ast.newSimpleName("param"));
    methodDeclaration.parameters().add(variableDeclaration);
    return methodDeclaration;
}
Example 81
Project: Hindsight-master  File: OutCodeVisitor.java View source code
// check if getter or setter
@Override
public boolean visit(MethodDeclaration methodDeclaration) {
    methodMetrics(methodDeclaration);
    if (methodDeclaration.isConstructor())
        return true;
    if (methodDeclaration.getBody() == null || methodDeclaration.getBody().statements().size() != 1)
        return true;
    if (methodDeclaration.getName().getIdentifier().startsWith("get")) {
        Object object = methodDeclaration.getBody().statements().get(0);
        if (!(object instanceof ReturnStatement))
            return true;
        else {
            ReturnStatement returnStatement = (ReturnStatement) object;
            Expression expression = returnStatement.getExpression();
            if (expression == null)
                // method name starts with get but returns
                return true;
            // null
            if (isObjectFieldAccess(expression)) {
                if (methodDeclaration != null) {
                    IMethodBinding methodBinding = methodDeclaration.resolveBinding();
                    if (methodBinding != null) {
                        Node method = db.createIJavaElementNode(methodBinding.getJavaElement(), commit, commitID, added, removed);
                        method.setProperty("get", true);
                    }
                }
            }
        }
    } else if (methodDeclaration.getName().getIdentifier().startsWith("set")) {
        Object object = methodDeclaration.getBody().statements().get(0);
        if (!(object instanceof Assignment) && !(object instanceof ExpressionStatement))
            return true;
        if (object instanceof ExpressionStatement)
            object = ((ExpressionStatement) object).getExpression();
        if (!(object instanceof Assignment))
            return true;
        Assignment assignment = (Assignment) object;
        Expression leftExpression = assignment.getLeftHandSide();
        if (isObjectFieldAccess(leftExpression) && isParameterAccess(assignment.getRightHandSide())) {
            IMethodBinding methodBinding = methodDeclaration.resolveBinding();
            if (methodBinding != null) {
                IJavaElement methodJavaElement = methodBinding.getJavaElement();
                if (methodJavaElement != null) {
                    Node method = db.createIJavaElementNode(methodJavaElement, commit, commitID, added, removed);
                    method.setProperty("get", true);
                }
            }
        }
    }
    return true;
}
Example 82
Project: jenkins.py-master  File: AbstractTypeDeclFinder.java View source code
public boolean visit(MethodDeclaration node) {
    Type returnType = node.getReturnType2();
    if (returnType != null) {
        if (returnType.isSimpleType()) {
            node.setReturnType2(replaceType((SimpleType) returnType));
        } else if (returnType.isParameterizedType()) {
            node.setReturnType2(replaceType((ParameterizedType) returnType));
        }
    }
    for (int i = 0; i < node.parameters().size(); i++) {
        SingleVariableDeclaration svd = (SingleVariableDeclaration) node.parameters().get(i);
        Type varType = svd.getType();
        if (varType.isSimpleType()) {
            svd.setType(replaceType((SimpleType) varType));
        } else if (varType.isParameterizedType()) {
            svd.setType(replaceType((ParameterizedType) varType));
        }
    }
    return false;
}
Example 83
Project: juniversal-master  File: HeaderTypeDeclarationWriter.java View source code
private void writeMethods() {
    ArrayList<MethodDeclaration> publicMethods = new ArrayList<>();
    ArrayList<MethodDeclaration> protectedMethods = new ArrayList<>();
    ArrayList<MethodDeclaration> privateMethods = new ArrayList<>();
    for (Object bodyDeclaration : typeDeclaration.bodyDeclarations()) {
        if (bodyDeclaration instanceof MethodDeclaration) {
            MethodDeclaration MethodDeclaration = (MethodDeclaration) bodyDeclaration;
            AccessLevel accessLevel = ASTUtil.getAccessModifier(MethodDeclaration.modifiers());
            if (accessLevel == AccessLevel.PUBLIC || accessLevel == AccessLevel.PACKAGE)
                publicMethods.add(MethodDeclaration);
            else if (accessLevel == AccessLevel.PROTECTED)
                protectedMethods.add(MethodDeclaration);
            else
                privateMethods.add(MethodDeclaration);
        } else if (!(bodyDeclaration instanceof FieldDeclaration || bodyDeclaration instanceof TypeDeclaration))
            throw new JUniversalException("Unexpected bodyDeclaration type" + bodyDeclaration.getClass());
    }
    writeMethodsForAccessLevel(publicMethods, AccessLevel.PUBLIC);
    writeMethodsForAccessLevel(protectedMethods, AccessLevel.PROTECTED);
    writeMethodsForAccessLevel(privateMethods, AccessLevel.PRIVATE);
}
Example 84
Project: Manal-master  File: SuspectSearch.java View source code
private boolean createAST(IPackageFragment packageSearched, ApiDescriptor methodSearched) throws JavaModelException {
    String className = methodSearched.getClassNameFromSoot();
    if (className == null) {
        System.err.println("Can't search. Class name is NULL.");
        return false;
    }
    for (ICompilationUnit unit : packageSearched.getCompilationUnits()) {
        String unitName = unit.getElementName();
        if ((unitName != null) && unitName.contains(className)) {
            // now create the AST for the ICompilationUnits
            final CompilationUnit parse = parse(unit);
            methodSearched.setCompilationUnit(parse);
            return true;
        //				MethodVisitor visitor = new MethodVisitor();
        //				parse.accept(visitor);
        //	
        //				for (MethodDeclaration method : visitor.getMethods()) {
        //					System.out.print("Method name: " + method.getName()
        //							+ " Return type: " + method.getReturnType2());
        //					extractStatements(parse, method, methodSearched);
        //				}
        }
    }
    return false;
}
Example 85
Project: perconik-master  File: CompilationUnitDifferencer.java View source code
private static boolean isSimilar(final ASTNode original, final ASTNode revised) {
    if (original instanceof AbstractTypeDeclaration) {
        return isSimilar((AbstractTypeDeclaration) original, revised);
    }
    switch(NodeType.valueOf(original)) {
        case ANNOTATION_TYPE_MEMBER_DECLARATION:
            return isSimilar((AnnotationTypeMemberDeclaration) original, revised);
        case ENUM_CONSTANT_DECLARATION:
            return isSimilar((EnumConstantDeclaration) original, revised);
        case FIELD_DECLARATION:
            return isSimilar((FieldDeclaration) original, revised);
        case INITIALIZER:
            return isSimilar((Initializer) original, revised);
        case METHOD_DECLARATION:
            return isSimilar((MethodDeclaration) original, revised);
        default:
            return false;
    }
}
Example 86
Project: ptii-master  File: SortMembersUtility.java View source code
private int compareNodeType(BodyDeclaration bodyDeclaration1, BodyDeclaration bodyDeclaration2) {
    int typeCode1 = getNodeTypeCode(bodyDeclaration1);
    int typeCode2 = getNodeTypeCode(bodyDeclaration2);
    if (typeCode1 != typeCode2) {
        return typeCode1 - typeCode2;
    } else {
        switch(bodyDeclaration1.getNodeType()) {
            case ASTNode.METHOD_DECLARATION:
                MethodDeclaration method1 = (MethodDeclaration) bodyDeclaration1;
                MethodDeclaration method2 = (MethodDeclaration) bodyDeclaration2;
                if (method1.isConstructor() && !method2.isConstructor()) {
                    return -1;
                } else if (!method1.isConstructor() && method2.isConstructor()) {
                    return 1;
                }
                String methodName1 = method1.getName().getIdentifier();
                String methodName2 = method2.getName().getIdentifier();
                // method declarations (constructors) are sorted by name
                int nameResult = methodName1.compareTo(methodName2);
                if (nameResult != 0) {
                    return nameResult;
                }
                // if names equal, sort by parameter types
                List<?> parameters1 = method1.parameters();
                List<?> parameters2 = method2.parameters();
                int length1 = parameters1.size();
                int length2 = parameters2.size();
                int minLength = Math.min(length1, length2);
                for (int i = 0; i < minLength; i++) {
                    SingleVariableDeclaration param1i = (SingleVariableDeclaration) parameters1.get(i);
                    SingleVariableDeclaration param2i = (SingleVariableDeclaration) parameters2.get(i);
                    int paramResult = buildSignature(param1i.getType()).compareTo(buildSignature(param2i.getType()));
                    if (paramResult != 0) {
                        return paramResult;
                    }
                }
                if (length1 != length2) {
                    return length1 - length2;
                }
                return preserveRelativeOrder(bodyDeclaration1, bodyDeclaration2);
            case ASTNode.FIELD_DECLARATION:
                FieldDeclaration field1 = (FieldDeclaration) bodyDeclaration1;
                FieldDeclaration field2 = (FieldDeclaration) bodyDeclaration2;
                String fieldName1 = ((VariableDeclarationFragment) field1.fragments().get(0)).getName().getIdentifier();
                String fieldName2 = ((VariableDeclarationFragment) field2.fragments().get(0)).getName().getIdentifier();
                return compareNames(bodyDeclaration1, bodyDeclaration2, fieldName1, fieldName2);
            case ASTNode.INITIALIZER:
                return preserveRelativeOrder(bodyDeclaration1, bodyDeclaration2);
            case ASTNode.TYPE_DECLARATION:
            case ASTNode.ENUM_DECLARATION:
            case ASTNode.ANNOTATION_TYPE_DECLARATION:
                AbstractTypeDeclaration type1 = (AbstractTypeDeclaration) bodyDeclaration1;
                AbstractTypeDeclaration type2 = (AbstractTypeDeclaration) bodyDeclaration2;
                String typeName1 = type1.getName().getIdentifier();
                String typeName2 = type2.getName().getIdentifier();
                return compareNames(bodyDeclaration1, bodyDeclaration2, typeName1, typeName2);
            case ASTNode.ENUM_CONSTANT_DECLARATION:
                EnumConstantDeclaration enum1 = (EnumConstantDeclaration) bodyDeclaration1;
                EnumConstantDeclaration enum2 = (EnumConstantDeclaration) bodyDeclaration2;
                String enumName1 = enum1.getName().getIdentifier();
                String enumName2 = enum2.getName().getIdentifier();
                return compareNames(bodyDeclaration1, bodyDeclaration2, enumName1, enumName2);
            case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
                AnnotationTypeMemberDeclaration annotation1 = (AnnotationTypeMemberDeclaration) bodyDeclaration1;
                AnnotationTypeMemberDeclaration annotation2 = (AnnotationTypeMemberDeclaration) bodyDeclaration2;
                String annotationName1 = annotation1.getName().getIdentifier();
                String annotationName2 = annotation2.getName().getIdentifier();
                return compareNames(bodyDeclaration1, bodyDeclaration2, annotationName1, annotationName2);
            default:
                return preserveRelativeOrder(bodyDeclaration1, bodyDeclaration2);
        }
    }
}
Example 87
Project: swtbot-master  File: Recorder.java View source code
/**
	 * Adds a new line of code to the currently selected method and the editor
	 * which contains this method.
	 *
	 * @param code
	 *            The code to append.
	 */
private void insertInEditor(String code) {
    ICompilationUnit methodCompilationUnit = selectedMethod.getCompilationUnit();
    ASTParser parser = ASTParser.newParser(AST.JLS8);
    parser.setSource(methodCompilationUnit);
    parser.setResolveBindings(true);
    parser.setBindingsRecovery(true);
    ASTNode rootNode = parser.createAST(null);
    CompilationUnit compilationUnit = (CompilationUnit) rootNode;
    // Create a visitor which finds all method declarations
    MethodDeclarationVisitor methodDeclarationVisitor = new MethodDeclarationVisitor();
    compilationUnit.accept(methodDeclarationVisitor);
    // Search for the method declaration corresponding to selectedMethod
    MethodDeclaration method = methodDeclarationVisitor.findMethodDeclaration(selectedMethod);
    final ASTRewrite rewrite = ASTRewrite.create(rootNode.getAST());
    ListRewrite listRewrite = rewrite.getListRewrite(method.getBody(), Block.STATEMENTS_PROPERTY);
    Statement statement = (Statement) rewrite.createStringPlaceholder(code + ";", ASTNode.EMPTY_STATEMENT);
    listRewrite.insertLast(statement, null);
    Display.getDefault().syncExec(new Runnable() {

        @Override
        public void run() {
            try {
                TextEdit edits = rewrite.rewriteAST();
                try {
                    edits.apply(selectedMethodDocument);
                } catch (MalformedTreeException e) {
                    e.printStackTrace();
                } catch (BadLocationException e) {
                    e.printStackTrace();
                }
            } catch (JavaModelException e1) {
                e1.printStackTrace();
            } catch (IllegalArgumentException e1) {
                e1.printStackTrace();
            }
        }

        ;
    });
}
Example 88
Project: TBLips-master  File: ASTMethodExplorer.java View source code
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    if (binding != null) {
        ITypeBinding[] params = binding.getParameterTypes();
        String paramString = "(";
        for (int i = 0; i < params.length; i++) {
            paramString += params[i].getName();
            if (i < params.length - 1)
                paramString += ",";
        }
        paramString += ")";
        String key = binding.getDeclaringClass().getName() + "." + binding.getName() + paramString;
        ITypeBinding declaredClassBinding = binding.getDeclaringClass();
        // overrides super method
        ITypeBinding superClassBinding = declaredClassBinding.getSuperclass();
        boolean skip = checkSuperClass(binding, superClassBinding);
        // is implementation of interface
        ITypeBinding[] interfaceBindings = declaredClassBinding.getInterfaces();
        skip = skip || checkInterfaces(binding, interfaceBindings);
        if (superClassBinding != null) {
            // classDependencies
            classDependencies.put(declaredClassBinding.getName(), superClassBinding.getName());
            // WOComponent && title()
            boolean isWOComponent = superClassBinding.getName().equals("WOComponent");
            skip = skip || (isWOComponent && binding.getName().equals("title"));
        }
        // DirectAction.Action()
        boolean isDirectAction = declaredClassBinding.getName().equals("DirectAction");
        skip = skip || (isDirectAction && (binding.getName().endsWith("Action") || binding.getName().equals("performActionNamed")));
        // app || logic && Constructor
        IPackageBinding packageBinding = declaredClassBinding.getPackage();
        String[] comps = packageBinding.getNameComponents();
        if (comps.length > 0) {
            String comp = comps[comps.length - 1];
            skip = skip || ((comp.equals("app") || comp.equals("logic")) && binding.isConstructor());
        }
        if (!usedMethods.containsKey(key)) {
            List<String> value = new ArrayList<String>();
            value.add(iCompUnit.getHandleIdentifier());
            value.add(binding.getName());
            value.add(binding.getReturnType().getName());
            value.add(skip + "");
            declaredMethods.put(key, value);
        }
    }
    return true;
}
Example 89
Project: UML-Designer-master  File: JavaReverseCUVisitor.java View source code
/*
     * (non-Javadoc)
     * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.MethodDeclaration)
     */
@Override
public boolean visit(MethodDeclaration node) {
    boolean ret = false;
    entryNodeMap = new HashMap<Statement, ActivityNode>();
    exitNodeMap = new HashMap<Statement, ActivityNode>();
    innerExitMap = new HashMap<Statement, ActivityNode>();
    innerEntryMap = new HashMap<Statement, ActivityNode>();
    choiceMap = new HashMap<Statement, ActivityNode>();
    choiceThenFMap = new HashMap<Statement, Statement>();
    choiceElseFMap = new HashMap<Statement, Statement>();
    choiceThenMap = new HashMap<Statement, Statement>();
    choiceElseMap = new HashMap<Statement, Statement>();
    choiceOutMap = new HashMap<Statement, ActivityNode>();
    parentStatements = new ArrayList<Statement>();
    // add activity to current class
    String methodname = node.getName().toString();
    TypeDeclaration classnode = null;
    String classname = "";
    NamedElement specObject = null;
    if (node.getParent() instanceof TypeDeclaration) {
        classnode = (TypeDeclaration) node.getParent();
        classname = classnode.getName().toString();
        specObject = packageObject.getOwnedMember(classname);
    }
    if (specObject != null && specObject instanceof Class) {
        List<SingleVariableDeclaration> params = node.parameters();
        List<String> paramTypeNames = new ArrayList<String>();
        EList<Parameter> pset = null;
        for (SingleVariableDeclaration p : params) {
            paramTypeNames.add(p.getType().toString());
        }
        if (paramTypeNames.size() == 0) {
            paramTypeNames = null;
        }
        BehavioralFeature op = ((Class) specObject).getOwnedOperation(methodname, null, null);
        // check parameters
        if (op != null) {
            pset = op.getOwnedParameters();
            // parameters names
            boolean pnok = ctrlParamTypes(paramTypeNames, pset);
            List<Operation> ops2 = ((Class) specObject).getOperations();
            List<Operation> ops = new ArrayList<Operation>();
            for (Operation oo : ops2) {
                if (oo.getName().toString().equals(methodname)) {
                    ops.add(oo);
                }
            }
            while (!pnok && ops.size() > 1) {
                ops.remove(op);
                op = ops.get(0);
                pset = op.getOwnedParameters();
                pnok = ctrlParamTypes(paramTypeNames, pset);
            }
            if (!pnok) {
                op = null;
            }
        }
        if (op == null) {
            op = ((Class) specObject).getOwnedReception(methodname, null, null);
            if (op != null) {
                List<Reception> ops2 = ((Class) specObject).getOwnedReceptions();
                List<Reception> ops = new ArrayList<Reception>();
                for (Reception oo : ops2) {
                    if (oo.getName().toString().equals(methodname)) {
                        ops.add(oo);
                    }
                }
                pset = op.getOwnedParameters();
                boolean pnok = ctrlParamTypes(paramTypeNames, pset);
                while (!pnok && ops.size() > 1) {
                    ops.remove(op);
                    op = ops.get(0);
                    pset = op.getOwnedParameters();
                    pnok = ctrlParamTypes(paramTypeNames, pset);
                }
                if (!pnok) {
                    op = null;
                }
            }
        }
        // process only methods annotated @activity
        if (op != null && isAnnotatedOnly) {
            // list of modifiers and annotations
            List<IExtendedModifier> modifiers = node.modifiers();
            if (modifiers.isEmpty()) {
                op = null;
            } else {
                // list of annotations names
                List<String> flags = new ArrayList<String>();
                for (IExtendedModifier flag : modifiers) {
                    if (flag.isAnnotation()) {
                        flags.add(flag.toString());
                    }
                }
                // check annotation
                if (!flags.contains(ANNOTATION_ACTIVITY)) {
                    op = null;
                }
            }
        }
        if (op != null) {
            currentActivity = UMLFactory.eINSTANCE.createActivity();
            currentActivity.setName(node.getName().toString());
            LogUtils.logEntering(currentActivity, "Activity for " + methodname);
            currentActivity.setSpecification(op);
            ((BehavioredClassifier) specObject).getOwnedBehaviors().add(currentActivity);
            for (Parameter paramOp : pset) {
                ActivityParameterNode paramu = UMLFactory.eINSTANCE.createActivityParameterNode();
                paramu.setName(paramOp.getName());
                paramu.setActivity(currentActivity);
                paramu.setType(paramOp.getType());
                paramu.setParameter(paramOp);
            }
            initNode = UMLFactory.eINSTANCE.createInitialNode();
            initNode.setName("InitNode");
            initNode.setActivity(currentActivity);
            // create Final node (connections later)
            finalNode = UMLFactory.eINSTANCE.createActivityFinalNode();
            finalNode.setName("FinalNode");
            finalNode.setActivity(currentActivity);
            ret = true;
        }
    }
    return ret;
}
Example 90
Project: Virgo-Tooling-master  File: ArtifactAnalyserTypeVisitor.java View source code
/**
	 * {@inheritDoc}
	 */
@Override
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    if (binding == null) {
        return true;
    }
    // return value
    if (binding.getReturnType() != null) {
        String fqn = binding.getReturnType().getQualifiedName();
        if (!"void".equals(fqn)) {
            recordTypeBinding(binding.getReturnType());
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(binding.getReturnType());
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    // throws clause
    if (binding.getExceptionTypes() != null) {
        for (ITypeBinding exceptionBinding : binding.getExceptionTypes()) {
            recordTypeBinding(exceptionBinding);
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(exceptionBinding);
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    // parameter
    if (binding.getParameterTypes() != null) {
        for (ITypeBinding parameterBinding : binding.getParameterTypes()) {
            recordTypeBinding(parameterBinding);
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(parameterBinding);
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    return true;
}
Example 91
Project: virgo.ide-master  File: ArtifactAnalyserTypeVisitor.java View source code
/**
     * {@inheritDoc}
     */
@Override
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    if (binding == null) {
        return true;
    }
    // return value
    if (binding.getReturnType() != null) {
        String fqn = binding.getReturnType().getQualifiedName();
        if (!"void".equals(fqn)) {
            recordTypeBinding(binding.getReturnType());
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(binding.getReturnType());
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    // throws clause
    if (binding.getExceptionTypes() != null) {
        for (ITypeBinding exceptionBinding : binding.getExceptionTypes()) {
            recordTypeBinding(exceptionBinding);
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(exceptionBinding);
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    // parameter
    if (binding.getParameterTypes() != null) {
        for (ITypeBinding parameterBinding : binding.getParameterTypes()) {
            recordTypeBinding(parameterBinding);
            if (!Modifier.isPrivate(node.getModifiers())) {
                IPackageBinding packageBinding = getPackageBinding(parameterBinding);
                if (packageBinding != null) {
                    this.partialManifest.recordUsesPackage(this.typePackage, packageBinding.getName());
                }
            }
        }
    }
    return true;
}
Example 92
Project: webtools.javaee-master  File: CreateJavaEEArtifactTemplateModel.java View source code
public List<Constructor> getConstructors() {
    List<Constructor> constrs = new ArrayList<Constructor>();
    String superclass = dataModel.getStringProperty(SUPERCLASS);
    if (superclass != null && superclass.length() > 0) {
        IProject p = (IProject) dataModel.getProperty(PROJECT);
        IJavaProject javaProject = JavaCore.create(p);
        if (javaProject != null) {
            try {
                IType type = javaProject.findType(superclass);
                if (type != null) {
                    if (type.isBinary()) {
                        IMethod[] methods = type.getMethods();
                        for (IMethod method : methods) {
                            if (method.isConstructor())
                                constrs.add(new BinaryConstructor(method));
                        }
                    } else {
                        ICompilationUnit compilationUnit = type.getCompilationUnit();
                        TypeDeclaration declarationFromType = getTypeDeclarationFromType(superclass, compilationUnit);
                        if (declarationFromType != null) {
                            MethodDeclaration[] methods = declarationFromType.getMethods();
                            for (MethodDeclaration method : methods) {
                                if (method.isConstructor())
                                    constrs.add(new SourceConstructor(method));
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                J2EEPlugin.logError(e);
            }
        }
    }
    return constrs;
}
Example 93
Project: Wol-master  File: ASTMethodExplorer.java View source code
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    if (binding != null) {
        ITypeBinding[] params = binding.getParameterTypes();
        String paramString = "(";
        for (int i = 0; i < params.length; i++) {
            paramString += params[i].getName();
            if (i < params.length - 1)
                paramString += ",";
        }
        paramString += ")";
        String key = binding.getDeclaringClass().getName() + "." + binding.getName() + paramString;
        ITypeBinding declaredClassBinding = binding.getDeclaringClass();
        // overrides super method
        ITypeBinding superClassBinding = declaredClassBinding.getSuperclass();
        boolean skip = checkSuperClass(binding, superClassBinding);
        // is implementation of interface
        ITypeBinding[] interfaceBindings = declaredClassBinding.getInterfaces();
        skip = skip || checkInterfaces(binding, interfaceBindings);
        if (superClassBinding != null) {
            // classDependencies
            classDependencies.put(declaredClassBinding.getName(), superClassBinding.getName());
            // WOComponent && title()
            boolean isWOComponent = superClassBinding.getName().equals("WOComponent");
            skip = skip || (isWOComponent && binding.getName().equals("title"));
        }
        // DirectAction.Action()
        boolean isDirectAction = declaredClassBinding.getName().equals("DirectAction");
        skip = skip || (isDirectAction && (binding.getName().endsWith("Action") || binding.getName().equals("performActionNamed")));
        // app || logic && Constructor
        IPackageBinding packageBinding = declaredClassBinding.getPackage();
        String[] comps = packageBinding.getNameComponents();
        if (comps.length > 0) {
            String comp = comps[comps.length - 1];
            skip = skip || ((comp.equals("app") || comp.equals("logic")) && binding.isConstructor());
        }
        if (!usedMethods.containsKey(key)) {
            List<String> value = new ArrayList<String>();
            value.add(iCompUnit.getHandleIdentifier());
            value.add(binding.getName());
            value.add(binding.getReturnType().getName());
            value.add(skip + "");
            declaredMethods.put(key, value);
        }
    }
    return true;
}
Example 94
Project: wolips-master  File: ASTMethodExplorer.java View source code
public boolean visit(MethodDeclaration node) {
    IMethodBinding binding = node.resolveBinding();
    if (binding != null) {
        ITypeBinding[] params = binding.getParameterTypes();
        String paramString = "(";
        for (int i = 0; i < params.length; i++) {
            paramString += params[i].getName();
            if (i < params.length - 1)
                paramString += ",";
        }
        paramString += ")";
        String key = binding.getDeclaringClass().getName() + "." + binding.getName() + paramString;
        ITypeBinding declaredClassBinding = binding.getDeclaringClass();
        // overrides super method
        ITypeBinding superClassBinding = declaredClassBinding.getSuperclass();
        boolean skip = checkSuperClass(binding, superClassBinding);
        // is implementation of interface
        ITypeBinding[] interfaceBindings = declaredClassBinding.getInterfaces();
        skip = skip || checkInterfaces(binding, interfaceBindings);
        if (superClassBinding != null) {
            // classDependencies
            classDependencies.put(declaredClassBinding.getName(), superClassBinding.getName());
            // WOComponent && title()
            boolean isWOComponent = superClassBinding.getName().equals("WOComponent");
            skip = skip || (isWOComponent && binding.getName().equals("title"));
        }
        // DirectAction.Action()
        boolean isDirectAction = declaredClassBinding.getName().equals("DirectAction");
        skip = skip || (isDirectAction && (binding.getName().endsWith("Action") || binding.getName().equals("performActionNamed")));
        // app || logic && Constructor
        IPackageBinding packageBinding = declaredClassBinding.getPackage();
        String[] comps = packageBinding.getNameComponents();
        if (comps.length > 0) {
            String comp = comps[comps.length - 1];
            skip = skip || ((comp.equals("app") || comp.equals("logic")) && binding.isConstructor());
        }
        if (!usedMethods.containsKey(key)) {
            List<String> value = new ArrayList<String>();
            value.add(iCompUnit.getHandleIdentifier());
            value.add(binding.getName());
            value.add(binding.getReturnType().getName());
            value.add(skip + "");
            declaredMethods.put(key, value);
        }
    }
    return true;
}
Example 95
Project: Aorm-Eclipse-Plugin-master  File: SourceGenerator.java View source code
private static void merge(CompilationUnit unit, String pkgName, String typeName, String auth, String dbName, List<String> tableCreators) {
    unit.recordModifications();
    AST ast = unit.getAST();
    TypeDeclaration type = (TypeDeclaration) unit.types().get(0);
    ImportDeclaration id = ast.newImportDeclaration();
    id.setName(ast.newName("cn.ieclipse.aorm.Session"));
    unit.imports().add(id);
    id = ast.newImportDeclaration();
    id.setName(ast.newName("android.content.UriMatcher"));
    unit.imports().add(id);
    id = ast.newImportDeclaration();
    id.setName(ast.newName("android.database.sqlite.SQLiteDatabase"));
    unit.imports().add(id);
    id = ast.newImportDeclaration();
    id.setName(ast.newName("android.database.sqlite.SQLiteOpenHelper"));
    unit.imports().add(id);
    id = ast.newImportDeclaration();
    id.setName(ast.newName("java.net.Uri"));
    unit.imports().add(id);
    id = ast.newImportDeclaration();
    id.setName(ast.newName("android.content.ContentValue"));
    unit.imports().add(id);
    VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
    vdf.setName(ast.newSimpleName("AUTH"));
    StringLiteral sl = ast.newStringLiteral();
    sl.setLiteralValue(auth);
    vdf.setInitializer(sl);
    FieldDeclaration fd = ast.newFieldDeclaration(vdf);
    fd.modifiers().addAll(ast.newModifiers((Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL)));
    fd.setType(ast.newSimpleType(ast.newSimpleName("String")));
    int i = 0;
    type.bodyDeclarations().add(i++, fd);
    // URI = Uri.parse("content://" + AUTH);
    vdf = ast.newVariableDeclarationFragment();
    vdf.setName(ast.newSimpleName("URI"));
    MethodInvocation mi = ast.newMethodInvocation();
    mi.setExpression(ast.newSimpleName("Uri"));
    mi.setName(ast.newSimpleName("parse"));
    InfixExpression fix = ast.newInfixExpression();
    fix.setOperator(InfixExpression.Operator.PLUS);
    sl = ast.newStringLiteral();
    sl.setLiteralValue("content://");
    fix.setLeftOperand(sl);
    fix.setRightOperand(ast.newSimpleName("AUTH"));
    mi.arguments().add(fix);
    vdf.setInitializer(mi);
    fd = ast.newFieldDeclaration(vdf);
    fd.modifiers().addAll(ast.newModifiers((Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL)));
    fd.setType(ast.newSimpleType(ast.newSimpleName("Uri")));
    type.bodyDeclarations().add(i++, fd);
    // private mOpenHelper;
    vdf = ast.newVariableDeclarationFragment();
    vdf.setName(ast.newSimpleName("mOpenHelper"));
    fd = ast.newFieldDeclaration(vdf);
    fd.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD));
    fd.setType(ast.newSimpleType(ast.newName("SQLiteOpenHelper")));
    type.bodyDeclarations().add(i++, fd);
    // private static session;
    vdf = ast.newVariableDeclarationFragment();
    vdf.setName(ast.newSimpleName("session"));
    fd = ast.newFieldDeclaration(vdf);
    fd.modifiers().addAll(ast.newModifiers((Modifier.PRIVATE | Modifier.STATIC)));
    fd.setType(ast.newSimpleType(ast.newName("Session")));
    type.bodyDeclarations().add(i++, fd);
    // public static Session getSession(){
    // return session;
    // }
    MethodDeclaration md = ast.newMethodDeclaration();
    md.modifiers().addAll(ast.newModifiers((Modifier.PUBLIC | Modifier.STATIC)));
    md.setReturnType2(ast.newSimpleType(ast.newName("Session")));
    md.setName(ast.newSimpleName("getSession"));
    Block methodBlock = ast.newBlock();
    ReturnStatement returnStmt = ast.newReturnStatement();
    returnStmt.setExpression(ast.newSimpleName("session"));
    methodBlock.statements().add(returnStmt);
    md.setBody(methodBlock);
    type.bodyDeclarations().add(i, md);
    // modify onCreate
    rewriteOnCreate(unit, dbName, tableCreators);
}
Example 96
Project: Bracketeer-master  File: ClosingBracketHintVisitor.java View source code
@Override
public boolean visit(MethodDeclaration node) {
    // starting a function empties the stack... (which should already be empty on good flow)
    _scopeStack.clear();
    StringBuffer hint = new StringBuffer();
    hint.append(node.getName().getIdentifier());
    /* TODO: specific params: exclude function parameters (show only the name) */
    //$NON-NLS-1$
    hint.append("( ");
    for (@SuppressWarnings("rawtypes") Iterator iterator = node.parameters().iterator(); iterator.hasNext(); ) {
        SingleVariableDeclaration param = (SingleVariableDeclaration) iterator.next();
        hint.append(param.getName());
        if (iterator.hasNext())
            //$NON-NLS-1$
            hint.append(", ");
    }
    //$NON-NLS-1$
    hint.append(" )");
    int startLoc = node.getName().getStartPosition();
    int endLoc = node.getStartPosition() + node.getLength() - 1;
    try {
        //$NON-NLS-1$
        _container.add(new Hint("function", startLoc, endLoc, hint.toString()));
    } catch (BadLocationException e) {
        _cancelProcessing.set(true);
    }
    return shouldContinue();
}
Example 97
Project: eclipse-i18ntools-master  File: ResourceBundleWrapper.java View source code
/**
	 * Refactors the source code to replace selected source by literal.
	 * 
	 * @param nodeFinder
	 * @param literalName
	 * @param resolver
	 * @return
	 */
@SuppressWarnings("unchecked")
private boolean effectiveAddLiteral(final ASTNodeFinder nodeFinder, final String literalName, final ASTExpressionResolver resolver) {
    final ASTNode parent = nodeFinder.getParentNode();
    final AST ast = parent.getAST();
    final MethodInvocation replacement = ast.newMethodInvocation();
    replacement.setExpression(ast.newName(this.resourceBundleName + "." + literalName));
    replacement.setName(ast.newSimpleName("value"));
    final EnumDeclaration enumDeclaration = (EnumDeclaration) this.enumDomCompilationUnit.types().get(0);
    final EnumConstantDeclaration enumConstantDeclaration = enumDeclaration.getAST().newEnumConstantDeclaration();
    enumConstantDeclaration.setName(enumDeclaration.getAST().newSimpleName(literalName));
    enumDeclaration.enumConstants().add(enumConstantDeclaration);
    boolean hasMessageKeyConstructor = false;
    for (final Iterator<Object> iterator = enumDeclaration.bodyDeclarations().iterator(); iterator.hasNext() && !hasMessageKeyConstructor; ) {
        final Object next = iterator.next();
        if (next instanceof MethodDeclaration) {
            final MethodDeclaration methodDeclaration = (MethodDeclaration) next;
            if (methodDeclaration.isConstructor() && methodDeclaration.parameters().size() > 0) {
                hasMessageKeyConstructor = true;
            }
        }
    }
    if (hasMessageKeyConstructor) {
        final StringLiteral literal = enumDeclaration.getAST().newStringLiteral();
        literal.setLiteralValue(literalName);
        enumConstantDeclaration.arguments().add(literal);
    }
    StructuralPropertyDescriptor locationInParent = null;
    if (nodeFinder.getFoundNode() != null) {
        locationInParent = nodeFinder.getFoundNode().getLocationInParent();
    } else {
        // TODO
        return false;
    }
    ResourceBundleWrapper.addImportToCompilationUnitIfMissing(nodeFinder.getParentNode(), this.packageName + "." + this.resourceBundleName);
    if (locationInParent.isChildListProperty()) {
        final List<Object> list = (List<Object>) parent.getStructuralProperty(locationInParent);
        final int index = list.indexOf(nodeFinder.getFoundNode());
        list.remove(nodeFinder.getFoundNode());
        list.add(index, replacement);
    } else {
        parent.setStructuralProperty(locationInParent, replacement);
    }
    for (final Expression parameter : resolver.getMessageParameters()) {
        final Expression newParameter = ASTTreeCloner.clone(parameter);
        replacement.arguments().add(newParameter);
    }
    String messagePattern = resolver.getMessagePattern();
    if (this.prefixMessageByKey) {
        messagePattern = String.format("[%s] %s", literalName, messagePattern);
    }
    this.properties.put(literalName, messagePattern);
    return true;
}
Example 98
Project: j2objc-master  File: TreeConverter.java View source code
private static TreeNode convertInner(ASTNode jdtNode) {
    switch(jdtNode.getNodeType()) {
        case ASTNode.ANNOTATION_TYPE_DECLARATION:
            return convertAnnotationTypeDeclaration((org.eclipse.jdt.core.dom.AnnotationTypeDeclaration) jdtNode);
        case ASTNode.ANNOTATION_TYPE_MEMBER_DECLARATION:
            return convertAnnotationTypeMemberDeclaration((org.eclipse.jdt.core.dom.AnnotationTypeMemberDeclaration) jdtNode);
        case ASTNode.ARRAY_ACCESS:
            return convertArrayAccess((org.eclipse.jdt.core.dom.ArrayAccess) jdtNode);
        case ASTNode.ARRAY_CREATION:
            return convertArrayCreation((org.eclipse.jdt.core.dom.ArrayCreation) jdtNode);
        case ASTNode.ARRAY_INITIALIZER:
            return convertArrayInitializer((org.eclipse.jdt.core.dom.ArrayInitializer) jdtNode);
        case ASTNode.ARRAY_TYPE:
            return convertArrayType((org.eclipse.jdt.core.dom.ArrayType) jdtNode);
        case ASTNode.ASSERT_STATEMENT:
            return convertAssertStatement((org.eclipse.jdt.core.dom.AssertStatement) jdtNode);
        case ASTNode.ASSIGNMENT:
            return convertAssignment((org.eclipse.jdt.core.dom.Assignment) jdtNode);
        case ASTNode.BLOCK:
            return convertBlock((org.eclipse.jdt.core.dom.Block) jdtNode);
        case ASTNode.BLOCK_COMMENT:
            return new BlockComment();
        case ASTNode.BOOLEAN_LITERAL:
            return convertBooleanLiteral((org.eclipse.jdt.core.dom.BooleanLiteral) jdtNode);
        case ASTNode.BREAK_STATEMENT:
            return convertBreakStatement((org.eclipse.jdt.core.dom.BreakStatement) jdtNode);
        case ASTNode.CAST_EXPRESSION:
            return convertCastExpression((org.eclipse.jdt.core.dom.CastExpression) jdtNode);
        case ASTNode.CATCH_CLAUSE:
            return convertCatchClause((org.eclipse.jdt.core.dom.CatchClause) jdtNode);
        case ASTNode.CHARACTER_LITERAL:
            return convertCharacterLiteral((org.eclipse.jdt.core.dom.CharacterLiteral) jdtNode);
        case ASTNode.CLASS_INSTANCE_CREATION:
            return convertClassInstanceCreation((org.eclipse.jdt.core.dom.ClassInstanceCreation) jdtNode);
        case ASTNode.CONDITIONAL_EXPRESSION:
            return convertConditionalExpression((org.eclipse.jdt.core.dom.ConditionalExpression) jdtNode);
        case ASTNode.CONSTRUCTOR_INVOCATION:
            return convertConstructorInvocation((org.eclipse.jdt.core.dom.ConstructorInvocation) jdtNode);
        case ASTNode.CONTINUE_STATEMENT:
            return convertContinueStatement((org.eclipse.jdt.core.dom.ContinueStatement) jdtNode);
        case ASTNode.CREATION_REFERENCE:
            return convertCreationReference((org.eclipse.jdt.core.dom.CreationReference) jdtNode);
        case ASTNode.DIMENSION:
            return convertDimension((org.eclipse.jdt.core.dom.Dimension) jdtNode);
        case ASTNode.DO_STATEMENT:
            return convertDoStatement((org.eclipse.jdt.core.dom.DoStatement) jdtNode);
        case ASTNode.EMPTY_STATEMENT:
            return new EmptyStatement();
        case ASTNode.ENHANCED_FOR_STATEMENT:
            return convertEnhancedForStatement((org.eclipse.jdt.core.dom.EnhancedForStatement) jdtNode);
        case ASTNode.ENUM_CONSTANT_DECLARATION:
            return convertEnumConstantDeclaration((org.eclipse.jdt.core.dom.EnumConstantDeclaration) jdtNode);
        case ASTNode.ENUM_DECLARATION:
            return convertEnumDeclaration((org.eclipse.jdt.core.dom.EnumDeclaration) jdtNode);
        case ASTNode.EXPRESSION_METHOD_REFERENCE:
            return convertExpressionMethodReference((org.eclipse.jdt.core.dom.ExpressionMethodReference) jdtNode);
        case ASTNode.EXPRESSION_STATEMENT:
            return convertExpressionStatement((org.eclipse.jdt.core.dom.ExpressionStatement) jdtNode);
        case ASTNode.FIELD_ACCESS:
            return convertFieldAccess((org.eclipse.jdt.core.dom.FieldAccess) jdtNode);
        case ASTNode.FIELD_DECLARATION:
            return convertFieldDeclaration((org.eclipse.jdt.core.dom.FieldDeclaration) jdtNode);
        case ASTNode.FOR_STATEMENT:
            return convertForStatement((org.eclipse.jdt.core.dom.ForStatement) jdtNode);
        case ASTNode.IF_STATEMENT:
            return convertIfStatement((org.eclipse.jdt.core.dom.IfStatement) jdtNode);
        case ASTNode.INFIX_EXPRESSION:
            return convertInfixExpression((org.eclipse.jdt.core.dom.InfixExpression) jdtNode);
        case ASTNode.INTERSECTION_TYPE:
            return convertIntersectionType((org.eclipse.jdt.core.dom.IntersectionType) jdtNode);
        case ASTNode.INITIALIZER:
            return convertInitializer((org.eclipse.jdt.core.dom.Initializer) jdtNode);
        case ASTNode.INSTANCEOF_EXPRESSION:
            return convertInstanceofExpression((org.eclipse.jdt.core.dom.InstanceofExpression) jdtNode);
        case ASTNode.JAVADOC:
            return convertJavadoc((org.eclipse.jdt.core.dom.Javadoc) jdtNode);
        case ASTNode.LABELED_STATEMENT:
            return convertLabeledStatement((org.eclipse.jdt.core.dom.LabeledStatement) jdtNode);
        case ASTNode.LAMBDA_EXPRESSION:
            return convertLambdaExpression((org.eclipse.jdt.core.dom.LambdaExpression) jdtNode);
        case ASTNode.LINE_COMMENT:
            return new LineComment();
        case ASTNode.MARKER_ANNOTATION:
            return convertMarkerAnnotation((org.eclipse.jdt.core.dom.MarkerAnnotation) jdtNode);
        case ASTNode.MEMBER_VALUE_PAIR:
            return convertMemberValuePair((org.eclipse.jdt.core.dom.MemberValuePair) jdtNode);
        case ASTNode.METHOD_DECLARATION:
            return convertMethodDeclaration((org.eclipse.jdt.core.dom.MethodDeclaration) jdtNode);
        case ASTNode.METHOD_INVOCATION:
            return convertMethodInvocation((org.eclipse.jdt.core.dom.MethodInvocation) jdtNode);
        case ASTNode.NAME_QUALIFIED_TYPE:
            return convertNameQualifiedType((org.eclipse.jdt.core.dom.NameQualifiedType) jdtNode);
        case ASTNode.NORMAL_ANNOTATION:
            return convertNormalAnnotation((org.eclipse.jdt.core.dom.NormalAnnotation) jdtNode);
        case ASTNode.NULL_LITERAL:
            return new NullLiteral(BindingConverter.NULL_TYPE);
        case ASTNode.NUMBER_LITERAL:
            return convertNumberLiteral((org.eclipse.jdt.core.dom.NumberLiteral) jdtNode);
        case ASTNode.PACKAGE_DECLARATION:
            return convertPackageDeclaration((org.eclipse.jdt.core.dom.PackageDeclaration) jdtNode);
        case ASTNode.PARAMETERIZED_TYPE:
            return convertParameterizedType((org.eclipse.jdt.core.dom.ParameterizedType) jdtNode);
        case ASTNode.PARENTHESIZED_EXPRESSION:
            return convertParenthesizedExpression((org.eclipse.jdt.core.dom.ParenthesizedExpression) jdtNode);
        case ASTNode.POSTFIX_EXPRESSION:
            return convertPostfixExpression((org.eclipse.jdt.core.dom.PostfixExpression) jdtNode);
        case ASTNode.PREFIX_EXPRESSION:
            return convertPrefixExpression((org.eclipse.jdt.core.dom.PrefixExpression) jdtNode);
        case ASTNode.PRIMITIVE_TYPE:
            return convertPrimitiveType((org.eclipse.jdt.core.dom.PrimitiveType) jdtNode);
        case ASTNode.QUALIFIED_NAME:
            return convertQualifiedName((org.eclipse.jdt.core.dom.QualifiedName) jdtNode);
        case ASTNode.QUALIFIED_TYPE:
            return convertQualifiedType((org.eclipse.jdt.core.dom.QualifiedType) jdtNode);
        case ASTNode.RETURN_STATEMENT:
            return convertReturnStatement((org.eclipse.jdt.core.dom.ReturnStatement) jdtNode);
        case ASTNode.SIMPLE_NAME:
            return convertSimpleName((org.eclipse.jdt.core.dom.SimpleName) jdtNode);
        case ASTNode.SIMPLE_TYPE:
            return convertSimpleType((org.eclipse.jdt.core.dom.SimpleType) jdtNode);
        case ASTNode.SINGLE_MEMBER_ANNOTATION:
            return convertSingleMemberAnnotation((org.eclipse.jdt.core.dom.SingleMemberAnnotation) jdtNode);
        case ASTNode.SINGLE_VARIABLE_DECLARATION:
            return convertSingleVariableDeclaration((org.eclipse.jdt.core.dom.SingleVariableDeclaration) jdtNode);
        case ASTNode.STRING_LITERAL:
            return convertStringLiteral((org.eclipse.jdt.core.dom.StringLiteral) jdtNode);
        case ASTNode.SUPER_CONSTRUCTOR_INVOCATION:
            return convertSuperConstructorInvocation((org.eclipse.jdt.core.dom.SuperConstructorInvocation) jdtNode);
        case ASTNode.SUPER_FIELD_ACCESS:
            return convertSuperFieldAccess((org.eclipse.jdt.core.dom.SuperFieldAccess) jdtNode);
        case ASTNode.SUPER_METHOD_INVOCATION:
            return convertSuperMethodInvocation((org.eclipse.jdt.core.dom.SuperMethodInvocation) jdtNode);
        case ASTNode.SUPER_METHOD_REFERENCE:
            return convertSuperMethodReference((org.eclipse.jdt.core.dom.SuperMethodReference) jdtNode);
        case ASTNode.SWITCH_CASE:
            return convertSwitchCase((org.eclipse.jdt.core.dom.SwitchCase) jdtNode);
        case ASTNode.SWITCH_STATEMENT:
            return convertSwitchStatement((org.eclipse.jdt.core.dom.SwitchStatement) jdtNode);
        case ASTNode.SYNCHRONIZED_STATEMENT:
            return convertSynchronizedStatement((org.eclipse.jdt.core.dom.SynchronizedStatement) jdtNode);
        case ASTNode.TAG_ELEMENT:
            return convertTagElement((org.eclipse.jdt.core.dom.TagElement) jdtNode);
        case ASTNode.TEXT_ELEMENT:
            return convertTextElement(((org.eclipse.jdt.core.dom.TextElement) jdtNode).getText());
        case ASTNode.THIS_EXPRESSION:
            return convertThisExpression((org.eclipse.jdt.core.dom.ThisExpression) jdtNode);
        case ASTNode.THROW_STATEMENT:
            return convertThrowStatement((org.eclipse.jdt.core.dom.ThrowStatement) jdtNode);
        case ASTNode.TRY_STATEMENT:
            return convertTryStatement((org.eclipse.jdt.core.dom.TryStatement) jdtNode);
        case ASTNode.TYPE_DECLARATION:
            return convertTypeDeclaration((org.eclipse.jdt.core.dom.TypeDeclaration) jdtNode);
        case ASTNode.TYPE_DECLARATION_STATEMENT:
            return convertTypeDeclarationStatement((org.eclipse.jdt.core.dom.TypeDeclarationStatement) jdtNode);
        case ASTNode.TYPE_LITERAL:
            return convertTypeLiteral((org.eclipse.jdt.core.dom.TypeLiteral) jdtNode);
        case ASTNode.TYPE_METHOD_REFERENCE:
            return convertTypeMethodReference((org.eclipse.jdt.core.dom.TypeMethodReference) jdtNode);
        case ASTNode.UNION_TYPE:
            return convertUnionType((org.eclipse.jdt.core.dom.UnionType) jdtNode);
        case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
            return convertVariableDeclarationExpression((org.eclipse.jdt.core.dom.VariableDeclarationExpression) jdtNode);
        case ASTNode.VARIABLE_DECLARATION_FRAGMENT:
            return convertVariableDeclarationFragment((org.eclipse.jdt.core.dom.VariableDeclarationFragment) jdtNode);
        case ASTNode.VARIABLE_DECLARATION_STATEMENT:
            return convertVariableDeclarationStatement((org.eclipse.jdt.core.dom.VariableDeclarationStatement) jdtNode);
        case ASTNode.WHILE_STATEMENT:
            return convertWhileStatement((org.eclipse.jdt.core.dom.WhileStatement) jdtNode);
        // information from their subtree so we just convert them to TextElement.
        case ASTNode.MEMBER_REF:
        case ASTNode.METHOD_REF:
        case ASTNode.METHOD_REF_PARAMETER:
            return convertTextElement(jdtNode.toString());
        case ASTNode.COMPILATION_UNIT:
            throw new AssertionError("CompilationUnit must be converted using convertCompilationUnit()");
        default:
            throw new AssertionError("Unknown node type: " + jdtNode.getClass().getName());
    }
}
Example 99
Project: platform_sdk-master  File: AddSuppressAnnotation.java View source code
/**
     * Adds any applicable suppress lint fix resolutions into the given list
     *
     * @param marker the marker to create fixes for
     * @param id the issue id
     * @param resolutions a list to add the created resolutions into, if any
     */
public static void createFixes(IMarker marker, String id, List<IMarkerResolution> resolutions) {
    ITextEditor textEditor = AdtUtils.getActiveTextEditor();
    IDocumentProvider provider = textEditor.getDocumentProvider();
    IEditorInput editorInput = textEditor.getEditorInput();
    IDocument document = provider.getDocument(editorInput);
    if (document == null) {
        return;
    }
    IWorkingCopyManager manager = JavaUI.getWorkingCopyManager();
    ICompilationUnit compilationUnit = manager.getWorkingCopy(editorInput);
    int offset = 0;
    int length = 0;
    int start = marker.getAttribute(IMarker.CHAR_START, -1);
    int end = marker.getAttribute(IMarker.CHAR_END, -1);
    offset = start;
    length = end - start;
    CompilationUnit root = SharedASTProvider.getAST(compilationUnit, SharedASTProvider.WAIT_YES, null);
    if (root == null) {
        return;
    }
    int api = -1;
    if (id.equals(ApiDetector.UNSUPPORTED.getId())) {
        String message = marker.getAttribute(IMarker.MESSAGE, null);
        if (message != null) {
            //$NON-NLS-1$
            Pattern pattern = Pattern.compile("\\s(\\d+)\\s");
            Matcher matcher = pattern.matcher(message);
            if (matcher.find()) {
                api = Integer.parseInt(matcher.group(1));
            }
        }
    }
    Issue issue = EclipseLintClient.getRegistry().getIssue(id);
    boolean isClassDetector = issue != null && issue.getScope().contains(Scope.CLASS_FILE);
    // Don't offer to suppress (with an annotation) the annotation checks
    if (issue == AnnotationDetector.ISSUE) {
        return;
    }
    NodeFinder nodeFinder = new NodeFinder(root, offset, length);
    ASTNode coveringNode;
    if (offset <= 0) {
        // Error added on the first line of a Java class: typically from a class-based
        // detector which lacks line information. Map this to the top level class
        // in the file instead.
        coveringNode = root;
        if (root.types() != null && root.types().size() > 0) {
            Object type = root.types().get(0);
            if (type instanceof ASTNode) {
                coveringNode = (ASTNode) type;
            }
        }
    } else {
        coveringNode = nodeFinder.getCoveringNode();
    }
    for (ASTNode body = coveringNode; body != null; body = body.getParent()) {
        if (body instanceof BodyDeclaration) {
            BodyDeclaration declaration = (BodyDeclaration) body;
            String target = null;
            if (body instanceof MethodDeclaration) {
                //$NON-NLS-1$
                target = ((MethodDeclaration) body).getName().toString() + "()";
            } else if (body instanceof FieldDeclaration) {
                target = "field";
                FieldDeclaration field = (FieldDeclaration) body;
                if (field.fragments() != null && field.fragments().size() > 0) {
                    ASTNode first = (ASTNode) field.fragments().get(0);
                    if (first instanceof VariableDeclarationFragment) {
                        VariableDeclarationFragment decl = (VariableDeclarationFragment) first;
                        target = decl.getName().toString();
                    }
                }
            } else if (body instanceof AnonymousClassDeclaration) {
                target = "anonymous class";
            } else if (body instanceof TypeDeclaration) {
                target = ((TypeDeclaration) body).getName().toString();
            } else {
                target = body.getClass().getSimpleName();
            }
            // and on classes, not on variable declarations
            if (isClassDetector && !(body instanceof MethodDeclaration || body instanceof TypeDeclaration || body instanceof AnonymousClassDeclaration || body instanceof FieldDeclaration)) {
                continue;
            }
            String desc = String.format("Add @SuppressLint '%1$s\' to '%2$s'", id, target);
            resolutions.add(new AddSuppressAnnotation(id, marker, declaration, desc, null));
            if (api != -1 && // @TargetApi is only valid on methods and classes, not fields etc
            (body instanceof MethodDeclaration || body instanceof TypeDeclaration)) {
                String apiString = AdtUtils.getBuildCodes(api);
                if (apiString == null) {
                    apiString = Integer.toString(api);
                }
                desc = String.format("Add @TargetApi(%1$s) to '%2$s'", apiString, target);
                resolutions.add(new AddSuppressAnnotation(id, marker, declaration, desc, apiString));
            }
        }
    }
}
Example 100
Project: rascal-master  File: SourceConverter.java View source code
public void endVisit(MethodDeclaration node) {
    ownValue = scopeManager.pop();
    ASTNode parent = node.getParent();
    if (parent instanceof TypeDeclaration) {
        // TODO: why can this node.resolveBinding sometimes be null?
        fillOverrides(node.resolveBinding(), ((TypeDeclaration) parent).resolveBinding());
    } else if (parent instanceof AnonymousClassDeclaration) {
        fillOverrides(node.resolveBinding(), ((AnonymousClassDeclaration) parent).resolveBinding());
    }
    IConstructor type = bindingsResolver.resolveType(node.resolveBinding(), true);
    insert(types, ownValue, type);
}
Example 101
Project: swt-javafx-master  File: Check64CompilationParticipant.java View source code
void createBadOverwrittenMethodProblems(IJavaProject project, String root) throws CoreException {
    if (sources == null)
        return;
    IProject proj = project.getProject();
    HashMap<String, TypeDeclaration> cache = new HashMap<String, TypeDeclaration>();
    for (Iterator<String> iterator = sources.iterator(); iterator.hasNext(); ) {
        String path = iterator.next();
        IResource resource = getResourceWithoutErrors(proj, path, false);
        if (resource == null)
            continue;
        TypeDeclaration type = loadType(cache, path);
        MethodDeclaration[] methods = type.getMethods();
        List<TypeDeclaration> superclasses = new ArrayList<TypeDeclaration>();
        TypeDeclaration temp = type;
        while (true) {
            Type supertype = temp.getSuperclassType();
            if (supertype == null)
                break;
            TypeDeclaration stype = loadType(cache, resolvePath(path, supertype.toString()));
            if (stype == null)
                break;
            superclasses.add(stype);
            temp = stype;
        }
        for (int i = 0; i < methods.length; i++) {
            MethodDeclaration method = methods[i];
            for (Iterator<TypeDeclaration> iterator2 = superclasses.iterator(); iterator2.hasNext(); ) {
                TypeDeclaration supertype = iterator2.next();
                MethodDeclaration[] supermethods = supertype.getMethods();
                for (int j = 0; j < supermethods.length; j++) {
                    MethodDeclaration supermethod = supermethods[j];
                    if (method.getName().getIdentifier().equals(supermethod.getName().getIdentifier()) && method.parameters().size() == supermethod.parameters().size()) {
                        List<SingleVariableDeclaration> mParams = method.parameters();
                        List<SingleVariableDeclaration> sParams = supermethod.parameters();
                        for (int k = 0; k < sParams.size(); k++) {
                            SingleVariableDeclaration p1 = mParams.get(k);
                            SingleVariableDeclaration p2 = sParams.get(k);
                            String r1 = p1.getType().toString();
                            String r2 = p2.getType().toString();
                            if (is64Type(r1) && is64Type(r2)) {
                                if (!r1.equals(r2) && p1.getName().getIdentifier().equals(p2.getName().getIdentifier())) {
                                    String message = "\"" + p1.getName().getIdentifier() + "\" parameter type does not match super declaration";
                                    createProblem(resource, message, p1.getStartPosition(), p1.getStartPosition() + p1.toString().length());
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}