From 1f7b0c361adf4e7b4e4ca5ea920c12b1b8fcb4b1 Mon Sep 17 00:00:00 2001 From: Brian Remedios Date: Tue, 5 Oct 2010 03:54:59 +0000 Subject: [PATCH] !!! git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@7156 51baf565-9d33-0410-a72c-fc3788e3496d --- .../ui/views/ast/NodeImageDeriver.java | 55 +++++++++++++++---- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/NodeImageDeriver.java b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/NodeImageDeriver.java index 1bc8b3fe90..1c9f75539a 100644 --- a/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/NodeImageDeriver.java +++ b/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/NodeImageDeriver.java @@ -3,12 +3,15 @@ package net.sourceforge.pmd.eclipse.ui.views.ast; import java.util.HashMap; import java.util.Map; -import net.sourceforge.pmd.lang.ast.AbstractNode; +import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTAnnotation; +import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration; +import net.sourceforge.pmd.lang.java.ast.ASTLocalVariableDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration; -import net.sourceforge.pmd.lang.java.ast.ASTName; +import net.sourceforge.pmd.lang.java.ast.ASTThrowStatement; +import net.sourceforge.pmd.lang.java.ast.Comment; /** * For nodes higher in the tree that don't have any identifying information @@ -25,37 +28,65 @@ public class NodeImageDeriver { target = theASTClass; } - public String deriveFrom(AbstractNode node) { + public String deriveFrom(Node node) { return null; // failed to implement! } + + private static void dumpComments(ASTCompilationUnit node) { + + for (Comment comment : node.getComments()) { + System.out.println(comment.getClass().getName()); + System.out.println(comment.getImage()); + } + } + + private static NodeImageDeriver compilationUnitDeriver = new NodeImageDeriver(ASTCompilationUnit.class) { + public String deriveFrom(Node node) { + dumpComments((ASTCompilationUnit)node); + return "Comments: " + ((ASTCompilationUnit)node).getComments().size(); + } + }; private static NodeImageDeriver importDeriver = new NodeImageDeriver(ASTImportDeclaration.class) { - public String deriveFrom(AbstractNode node) { - AbstractNode nameNode = node.getFirstChildOfType(ASTName.class); - return nameNode == null ? "??" : nameNode.getImage(); + public String deriveFrom(Node node) { + // TODO show package name as well? + return ((ASTImportDeclaration)node).getImportedName(); } }; private static NodeImageDeriver methodDeclarationDeriver = new NodeImageDeriver(ASTMethodDeclaration.class) { - public String deriveFrom(AbstractNode node) { - return ASTUtil.getMethodLabel((ASTMethodDeclaration)node); + public String deriveFrom(Node node) { + return ASTUtil.getMethodLabel((ASTMethodDeclaration)node, true); + } + }; + + private static NodeImageDeriver throwStatementDeriver = new NodeImageDeriver(ASTThrowStatement.class) { + public String deriveFrom(Node node) { + return ((ASTThrowStatement)node).getFirstClassOrInterfaceTypeImage(); } }; private static NodeImageDeriver fieldDeclarationDeriver = new NodeImageDeriver(ASTFieldDeclaration.class) { - public String deriveFrom(AbstractNode node) { + public String deriveFrom(Node node) { return ASTUtil.getFieldLabel((ASTFieldDeclaration)node); } }; + private static NodeImageDeriver localVariableDeclarationDeriver = new NodeImageDeriver(ASTLocalVariableDeclaration.class) { + public String deriveFrom(Node node) { + return ASTUtil.getLocalVarDeclarationLabel((ASTLocalVariableDeclaration)node); + } + }; + private static NodeImageDeriver annotationDeriver = new NodeImageDeriver(ASTAnnotation.class) { - public String deriveFrom(AbstractNode node) { + public String deriveFrom(Node node) { return ASTUtil.getAnnotationLabel((ASTAnnotation)node); } }; private static final NodeImageDeriver[] AllDerivers = new NodeImageDeriver[] { - importDeriver, methodDeclarationDeriver, fieldDeclarationDeriver, annotationDeriver + importDeriver, methodDeclarationDeriver, localVariableDeclarationDeriver, fieldDeclarationDeriver, annotationDeriver, + compilationUnitDeriver, throwStatementDeriver }; private static final Map, NodeImageDeriver>DeriversByType = new HashMap, NodeImageDeriver>(NodeImageDeriver.AllDerivers.length); @@ -66,7 +97,7 @@ public class NodeImageDeriver { } } - public static String derivedTextFor(AbstractNode node) { + public static String derivedTextFor(Node node) { NodeImageDeriver deriver = DeriversByType.get(node.getClass()); return deriver == null ? null : deriver.deriveFrom(node);