From 8e14f28e1ee8658507c2fa7caf2f458a1adac436 Mon Sep 17 00:00:00 2001 From: aclement Date: Wed, 17 Sep 2008 18:36:11 +0000 Subject: [PATCH] jdt like handle fixes: anonymous inner classes --- .../core/builder/AsmHierarchyBuilder.java | 326 ++++++------------ 1 file changed, 111 insertions(+), 215 deletions(-) diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java index 6fae24ac3..19327ed80 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AsmHierarchyBuilder.java @@ -72,16 +72,13 @@ import org.aspectj.weaver.patterns.Pointcut; import org.aspectj.weaver.patterns.ReferencePointcut; /** - * At each iteration of processCompilationUnit the declarations for - * a particular compilation unit are added to the hierarchy passed as a a - * parameter. + * At each iteration of processCompilationUnit the declarations for a particular compilation unit are added to the + * hierarchy passed as a a parameter. *

- * Clients who extend this class need to ensure that they do not override any of - * the existing behavior. If they do, the structure model will not be built - * properly and tools such as IDE structure views and ajdoc will fail. + * Clients who extend this class need to ensure that they do not override any of the existing behavior. If they do, the structure + * model will not be built properly and tools such as IDE structure views and ajdoc will fail. *

- * Note: this class is not considered public API and the overridable - * methods are subject to change. + * Note: this class is not considered public API and the overridable methods are subject to change. * * @author Mik Kersten */ @@ -112,12 +109,10 @@ public class AsmHierarchyBuilder extends ASTVisitor { * * @param cuDeclaration * @param buildConfig - * @param structureModel - * hiearchy to add this unit's declarations to + * @param structureModel hiearchy to add this unit's declarations to */ - public void buildStructureForCompilationUnit( - CompilationUnitDeclaration cuDeclaration, - IHierarchy structureModel, AjBuildConfig buildConfig) { + public void buildStructureForCompilationUnit(CompilationUnitDeclaration cuDeclaration, IHierarchy structureModel, + AjBuildConfig buildConfig) { currCompilationResult = cuDeclaration.compilationResult(); filename = new String(currCompilationResult.fileName); lineseps = currCompilationResult.lineSeparatorPositions; @@ -132,8 +127,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // throw new RuntimeException("not implemented"); } - private void internalBuild(CompilationUnitDeclaration unit, - IHierarchy structureModel) { + private void internalBuild(CompilationUnitDeclaration unit, IHierarchy structureModel) { LangUtil.throwIaxIfNull(structureModel, "structureModel"); // if (!currCompilationResult.equals(unit.compilationResult())) { // throw new IllegalArgumentException("invalid unit: " + unit); @@ -152,24 +146,18 @@ public class AsmHierarchyBuilder extends ASTVisitor { // AMC - use the source start and end from the compilation unit decl int startLine = getStartLine(unit); int endLine = getEndLine(unit); - SourceLocation sourceLocation = new SourceLocation(file, startLine, - endLine); + SourceLocation sourceLocation = new SourceLocation(file, startLine, endLine); sourceLocation.setOffset(unit.sourceStart); - cuNode = new ProgramElement(new String(file.getName()), - IProgramElement.Kind.FILE_JAVA, sourceLocation, 0, null, - null); + cuNode = new ProgramElement(new String(file.getName()), IProgramElement.Kind.FILE_JAVA, sourceLocation, 0, null, null); } - cuNode.addChild(new ProgramElement("import declarations", - IProgramElement.Kind.IMPORT_REFERENCE, null, 0, null, null)); + cuNode.addChild(new ProgramElement("import declarations", IProgramElement.Kind.IMPORT_REFERENCE, null, 0, null, null)); - final IProgramElement addToNode = genAddToNode(file, unit, - structureModel); + final IProgramElement addToNode = genAddToNode(file, unit, structureModel); // -- remove duplicates before adding (XXX use them instead?) if (addToNode != null && addToNode.getChildren() != null) { - for (ListIterator itt = addToNode.getChildren().listIterator(); itt - .hasNext();) { + for (ListIterator itt = addToNode.getChildren().listIterator(); itt.hasNext();) { IProgramElement child = (IProgramElement) itt.next(); ISourceLocation childLoc = child.getSourceLocation(); if (null == childLoc) { @@ -189,30 +177,26 @@ public class AsmHierarchyBuilder extends ASTVisitor { try { structureModel.addToFileMap(file.getCanonicalPath(), cuNode); } catch (IOException e) { - System.err.println("IOException " + e.getMessage() - + " creating path for " + file); + System.err.println("IOException " + e.getMessage() + " creating path for " + file); // XXX signal IOException when canonicalizing file path } } - private IProgramElement findOrCreateChildSourceFolder(String sourceFolder, - IHierarchy structureModel) { + private IProgramElement findOrCreateChildSourceFolder(String sourceFolder, IHierarchy structureModel) { IProgramElement root = structureModel.getRoot(); // Check if already there IProgramElement sourceFolderNode = null; List kids = root.getChildren(); for (Iterator iterator = kids.iterator(); iterator.hasNext();) { IProgramElement child = (IProgramElement) iterator.next(); - if (child.getKind() == IProgramElement.Kind.SOURCE_FOLDER - && child.getName().equals(sourceFolder)) { + if (child.getKind() == IProgramElement.Kind.SOURCE_FOLDER && child.getName().equals(sourceFolder)) { sourceFolderNode = child; break; } } if (sourceFolderNode == null) { - sourceFolderNode = new ProgramElement(sourceFolder, - IProgramElement.Kind.SOURCE_FOLDER, new ArrayList()); + sourceFolderNode = new ProgramElement(sourceFolder, IProgramElement.Kind.SOURCE_FOLDER, new ArrayList()); root.addChild(sourceFolderNode); } return sourceFolderNode; @@ -221,15 +205,12 @@ public class AsmHierarchyBuilder extends ASTVisitor { /** * Get/create the node (package or root) to add to. */ - private IProgramElement genAddToNode(File sourceFile, - CompilationUnitDeclaration unit, IHierarchy structureModel) { + private IProgramElement genAddToNode(File sourceFile, CompilationUnitDeclaration unit, IHierarchy structureModel) { final IProgramElement addToNode; { - CompilationResultDestinationManager manager = buildConfig - .getCompilationResultDestinationManager(); - String sourceFolder = (manager == null ? null : manager - .getSourceFolderForFile(sourceFile)); + CompilationResultDestinationManager manager = buildConfig.getCompilationResultDestinationManager(); + String sourceFolder = (manager == null ? null : manager.getSourceFolderForFile(sourceFile)); ImportReference unitPackage = unit.currentPackage; @@ -238,15 +219,13 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (sourceFolder == null) { addToNode = structureModel.getRoot(); } else { - addToNode = findOrCreateChildSourceFolder(sourceFolder, - structureModel); + addToNode = findOrCreateChildSourceFolder(sourceFolder, structureModel); } } else { IProgramElement rootForSource = structureModel.getRoot(); if (sourceFolder != null) { - rootForSource = findOrCreateChildSourceFolder(sourceFolder, - structureModel); + rootForSource = findOrCreateChildSourceFolder(sourceFolder, structureModel); } String pkgName; { @@ -263,10 +242,8 @@ public class AsmHierarchyBuilder extends ASTVisitor { } IProgramElement pkgNode = null; - if (structureModel != null && structureModel.getRoot() != null - && rootForSource.getChildren() != null) { - for (Iterator it = rootForSource.getChildren().iterator(); it - .hasNext();) { + if (structureModel != null && structureModel.getRoot() != null && rootForSource.getChildren() != null) { + for (Iterator it = rootForSource.getChildren().iterator(); it.hasNext();) { IProgramElement currNode = (IProgramElement) it.next(); if (pkgName.equals(currNode.getName())) { pkgNode = currNode; @@ -276,8 +253,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { } if (pkgNode == null) { // note packages themselves have no source location - pkgNode = new ProgramElement(pkgName, - IProgramElement.Kind.PACKAGE, new ArrayList()); + pkgNode = new ProgramElement(pkgName, IProgramElement.Kind.PACKAGE, new ArrayList()); rootForSource.addChild(pkgNode); } addToNode = pkgNode; @@ -286,8 +262,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { return addToNode; } - public boolean visit(TypeDeclaration typeDeclaration, - CompilationUnitScope scope) { + public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) { String name = new String(typeDeclaration.name); IProgramElement.Kind kind = IProgramElement.Kind.CLASS; if (typeDeclaration instanceof AspectDeclaration) @@ -303,14 +278,12 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (typeDeclaration.annotations != null) { for (int i = 0; i < typeDeclaration.annotations.length; i++) { Annotation annotation = typeDeclaration.annotations[i]; - if (Arrays.equals(annotation.type.getTypeBindingPublic(scope) - .signature(), "Lorg/aspectj/lang/annotation/Aspect;" + if (Arrays.equals(annotation.type.getTypeBindingPublic(scope).signature(), "Lorg/aspectj/lang/annotation/Aspect;" .toCharArray())) { kind = IProgramElement.Kind.ASPECT; } else { // Creating the char[][] needed for ImportReference - String[] temp = (new String(annotation.resolvedType - .constantPoolName())).split("/"); + String[] temp = (new String(annotation.resolvedType.constantPoolName())).split("/"); if (temp.length > 1) { char[][] path = new char[temp.length][]; for (int k = 0; k < temp.length; k++) { @@ -319,17 +292,12 @@ public class AsmHierarchyBuilder extends ASTVisitor { // Create the ImportReference needed to add a // ProgramElement - ImportReference importRef = new ImportReference(path, - new long[] { 0 }, false, 0); - ProgramElement ceNode = new ProgramElement(importRef - .toString(), - IProgramElement.Kind.IMPORT_REFERENCE, + ImportReference importRef = new ImportReference(path, new long[] { 0 }, false, 0); + ProgramElement ceNode = new ProgramElement(importRef.toString(), IProgramElement.Kind.IMPORT_REFERENCE, makeLocation(importRef), 0, null, null); - ceNode - .setSourceSignature(genSourceSignature(importRef)); + ceNode.setSourceSignature(genSourceSignature(importRef)); // Add Element to Imports of Current Class - ProgramElement imports = (ProgramElement) ((ProgramElement) stack - .peek()).getChildren().get(0); + ProgramElement imports = (ProgramElement) ((ProgramElement) stack.peek()).getChildren().get(0); imports.addChild(0, ceNode); } } @@ -338,12 +306,10 @@ public class AsmHierarchyBuilder extends ASTVisitor { int typeModifiers = typeDeclaration.modifiers; if (typeDeclaration instanceof AspectDeclaration) { - typeModifiers = ((AspectDeclaration) typeDeclaration) - .getDeclaredModifiers(); + typeModifiers = ((AspectDeclaration) typeDeclaration).getDeclaredModifiers(); } - IProgramElement peNode = new ProgramElement(name, kind, - makeLocation(typeDeclaration), typeModifiers, null, null); + IProgramElement peNode = new ProgramElement(name, kind, makeLocation(typeDeclaration), typeModifiers, null, null); peNode.setSourceSignature(genSourceSignature(typeDeclaration)); peNode.setFormalComment(generateJavadocComment(typeDeclaration)); @@ -352,8 +318,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { return true; } - public void endVisit(TypeDeclaration typeDeclaration, - CompilationUnitScope scope) { + public void endVisit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) { stack.pop(); } @@ -362,8 +327,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { String name = new String(memberTypeDeclaration.name); IProgramElement.Kind kind = IProgramElement.Kind.CLASS; - int typeDeclarationKind = TypeDeclaration - .kind(memberTypeDeclaration.modifiers); + int typeDeclarationKind = TypeDeclaration.kind(memberTypeDeclaration.modifiers); if (memberTypeDeclaration instanceof AspectDeclaration) kind = IProgramElement.Kind.ASPECT; else if (typeDeclarationKind == TypeDeclaration.INTERFACE_DECL) @@ -377,8 +341,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (memberTypeDeclaration.annotations != null) { for (int i = 0; i < memberTypeDeclaration.annotations.length; i++) { Annotation annotation = memberTypeDeclaration.annotations[i]; - if (Arrays.equals(annotation.type.getTypeBindingPublic(scope) - .signature(), "Lorg/aspectj/lang/annotation/Aspect;" + if (Arrays.equals(annotation.type.getTypeBindingPublic(scope).signature(), "Lorg/aspectj/lang/annotation/Aspect;" .toCharArray())) { kind = IProgramElement.Kind.ASPECT; } @@ -387,12 +350,10 @@ public class AsmHierarchyBuilder extends ASTVisitor { int typeModifiers = memberTypeDeclaration.modifiers; if (memberTypeDeclaration instanceof AspectDeclaration) { - typeModifiers = ((AspectDeclaration) memberTypeDeclaration) - .getDeclaredModifiers(); + typeModifiers = ((AspectDeclaration) memberTypeDeclaration).getDeclaredModifiers(); } - IProgramElement peNode = new ProgramElement(name, kind, - makeLocation(memberTypeDeclaration), typeModifiers, null, null); + IProgramElement peNode = new ProgramElement(name, kind, makeLocation(memberTypeDeclaration), typeModifiers, null, null); peNode.setSourceSignature(genSourceSignature(memberTypeDeclaration)); peNode.setFormalComment(generateJavadocComment(memberTypeDeclaration)); @@ -407,18 +368,15 @@ public class AsmHierarchyBuilder extends ASTVisitor { public boolean visit(TypeDeclaration memberTypeDeclaration, BlockScope scope) { String fullName = ""; - if (memberTypeDeclaration.allocation != null - && memberTypeDeclaration.allocation.type != null) { + if (memberTypeDeclaration.allocation != null && memberTypeDeclaration.allocation.type != null) { // Create a name something like 'new Runnable() {..}' - fullName = "new " - + memberTypeDeclaration.allocation.type.toString() - + "() {..}"; - } else if (memberTypeDeclaration.binding != null - && memberTypeDeclaration.binding.constantPoolName() != null) { + fullName = "new " + memberTypeDeclaration.allocation.type.toString() + "() {..}"; + } else if (memberTypeDeclaration.binding != null && memberTypeDeclaration.binding.constantPoolName() != null) { // If we couldn't find a nice name like 'new Runnable() {..}' then // use the number after the $ - fullName = new String(memberTypeDeclaration.binding - .constantPoolName()); + fullName = new String(memberTypeDeclaration.name); + // fullName = new String(memberTypeDeclaration.binding + // .constantPoolName()); int dollar = fullName.indexOf('$'); fullName = fullName.substring(dollar + 1); @@ -436,8 +394,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (memberTypeDeclaration.annotations != null) { for (int i = 0; i < memberTypeDeclaration.annotations.length; i++) { Annotation annotation = memberTypeDeclaration.annotations[i]; - if (Arrays.equals(annotation.type.getTypeBindingPublic(scope) - .signature(), "Lorg/aspectj/lang/annotation/Aspect;" + if (Arrays.equals(annotation.type.getTypeBindingPublic(scope).signature(), "Lorg/aspectj/lang/annotation/Aspect;" .toCharArray())) { kind = IProgramElement.Kind.ASPECT; break; @@ -445,19 +402,16 @@ public class AsmHierarchyBuilder extends ASTVisitor { } } - IProgramElement peNode = new ProgramElement(fullName, kind, - makeLocation(memberTypeDeclaration), + IProgramElement peNode = new ProgramElement(fullName, kind, makeLocation(memberTypeDeclaration), memberTypeDeclaration.modifiers, null, null); peNode.setSourceSignature(genSourceSignature(memberTypeDeclaration)); peNode.setFormalComment(generateJavadocComment(memberTypeDeclaration)); // if we're something like 'new Runnable(){..}' then set the // bytecodeSignature to be the typename so we can match it later // when creating the structure model - if (peNode.getBytecodeSignature() == null - && memberTypeDeclaration.binding != null + if (peNode.getBytecodeSignature() == null && memberTypeDeclaration.binding != null && memberTypeDeclaration.binding.constantPoolName() != null) { - StringTokenizer st = new StringTokenizer(new String( - memberTypeDeclaration.binding.constantPoolName()), "/"); + StringTokenizer st = new StringTokenizer(new String(memberTypeDeclaration.binding.constantPoolName()), "/"); while (st.hasMoreTokens()) { String s = st.nextToken(); if (!st.hasMoreTokens()) { @@ -500,13 +454,11 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (methodDeclaration instanceof InterTypeDeclaration) { InterTypeDeclaration itd = (InterTypeDeclaration) methodDeclaration; ResolvedMember sig = itd.getSignature(); - peNode = new ProgramElement(null, IProgramElement.Kind.ERROR, - makeLocation(methodDeclaration), (sig != null ? sig - .getModifiers() : 0), null, null); + peNode = new ProgramElement(null, IProgramElement.Kind.ERROR, makeLocation(methodDeclaration), (sig != null ? sig + .getModifiers() : 0), null, null); } else { - peNode = new ProgramElement(null, IProgramElement.Kind.ERROR, - makeLocation(methodDeclaration), + peNode = new ProgramElement(null, IProgramElement.Kind.ERROR, makeLocation(methodDeclaration), methodDeclaration.modifiers, null, null); } formatter.genLabelAndKind(methodDeclaration, peNode); // will set the @@ -514,21 +466,17 @@ public class AsmHierarchyBuilder extends ASTVisitor { genBytecodeInfo(methodDeclaration, peNode); List namedPointcuts = genNamedPointcuts(methodDeclaration); if (shouldAddUsesPointcut) - addUsesPointcutRelationsForNode(peNode, namedPointcuts, - methodDeclaration); + addUsesPointcutRelationsForNode(peNode, namedPointcuts, methodDeclaration); if (methodDeclaration.returnType != null) { // if we don't make the distinction between ITD fields and other // methods, then we loose the type, for example int, for the field // and instead get "void". if (peNode.getKind().equals(IProgramElement.Kind.INTER_TYPE_FIELD)) { - peNode.setCorrespondingType(methodDeclaration.returnType - .toString()); + peNode.setCorrespondingType(methodDeclaration.returnType.toString()); } else { if (methodDeclaration.returnType.resolvedType != null) - peNode - .setCorrespondingType(methodDeclaration.returnType.resolvedType - .debugName()); + peNode.setCorrespondingType(methodDeclaration.returnType.resolvedType.debugName()); else peNode.setCorrespondingType(null); } @@ -541,12 +489,10 @@ public class AsmHierarchyBuilder extends ASTVisitor { // TODO: add return type test if (peNode.getKind().equals(IProgramElement.Kind.METHOD)) { if ((peNode.getName().charAt(0) == 'm') - && (peNode.toLabelString().equals("main(String[])") || peNode - .toLabelString().equals("main(java.lang.String[])")) - && peNode.getModifiers().contains( - IProgramElement.Modifiers.STATIC) - && peNode.getAccessibility().equals( - IProgramElement.Accessibility.PUBLIC)) { + && (peNode.toLabelString().equals("main(String[])") || peNode.toLabelString() + .equals("main(java.lang.String[])")) + && peNode.getModifiers().contains(IProgramElement.Modifiers.STATIC) + && peNode.getAccessibility().equals(IProgramElement.Accessibility.PUBLIC)) { ((IProgramElement) stack.peek()).setRunnable(true); } } @@ -555,37 +501,27 @@ public class AsmHierarchyBuilder extends ASTVisitor { return true; } - private void addUsesPointcutRelationsForNode(IProgramElement peNode, - List namedPointcuts, MethodDeclaration declaration) { + private void addUsesPointcutRelationsForNode(IProgramElement peNode, List namedPointcuts, MethodDeclaration declaration) { for (Iterator it = namedPointcuts.iterator(); it.hasNext();) { ReferencePointcut rp = (ReferencePointcut) it.next(); ResolvedMember member = getPointcutDeclaration(rp, declaration); if (member != null) { - IRelationship foreward = AsmManager.getDefault() - .getRelationshipMap().get(peNode.getHandleIdentifier(), - IRelationship.Kind.USES_POINTCUT, - "uses pointcut", false, true); - IProgramElement forwardIPE = AsmManager.getDefault() - .getHierarchy().findElementForSourceLine( - member.getSourceLocation()); - foreward.addTarget(AsmManager.getDefault().getHandleProvider() - .createHandleIdentifier(forwardIPE)); - - IRelationship back = AsmManager.getDefault() - .getRelationshipMap().get( - AsmManager.getDefault().getHandleProvider() - .createHandleIdentifier(forwardIPE), - IRelationship.Kind.USES_POINTCUT, - "pointcut used by", false, true); + IRelationship foreward = AsmManager.getDefault().getRelationshipMap().get(peNode.getHandleIdentifier(), + IRelationship.Kind.USES_POINTCUT, "uses pointcut", false, true); + IProgramElement forwardIPE = AsmManager.getDefault().getHierarchy().findElementForSourceLine( + member.getSourceLocation()); + foreward.addTarget(AsmManager.getDefault().getHandleProvider().createHandleIdentifier(forwardIPE)); + + IRelationship back = AsmManager.getDefault().getRelationshipMap().get( + AsmManager.getDefault().getHandleProvider().createHandleIdentifier(forwardIPE), + IRelationship.Kind.USES_POINTCUT, "pointcut used by", false, true); back.addTarget(peNode.getHandleIdentifier()); } } } - private ResolvedMember getPointcutDeclaration(ReferencePointcut rp, - MethodDeclaration declaration) { - EclipseFactory factory = ((AjLookupEnvironment) declaration.scope - .environment()).factory; + private ResolvedMember getPointcutDeclaration(ReferencePointcut rp, MethodDeclaration declaration) { + EclipseFactory factory = ((AjLookupEnvironment) declaration.scope.environment()).factory; World world = factory.getWorld(); UnresolvedType onType = rp.onType; if (onType == null) { @@ -609,29 +545,23 @@ public class AsmHierarchyBuilder extends ASTVisitor { /** * @param methodDeclaration - * @return all of the named pointcuts referenced by the PCD of this - * declaration + * @return all of the named pointcuts referenced by the PCD of this declaration */ private List genNamedPointcuts(MethodDeclaration methodDeclaration) { List pointcuts = new ArrayList(); if (methodDeclaration instanceof AdviceDeclaration) { if (((AdviceDeclaration) methodDeclaration).pointcutDesignator != null) - addAllNamed( - ((AdviceDeclaration) methodDeclaration).pointcutDesignator - .getPointcut(), pointcuts); + addAllNamed(((AdviceDeclaration) methodDeclaration).pointcutDesignator.getPointcut(), pointcuts); } else if (methodDeclaration instanceof PointcutDeclaration) { if (((PointcutDeclaration) methodDeclaration).pointcutDesignator != null) - addAllNamed( - ((PointcutDeclaration) methodDeclaration).pointcutDesignator - .getPointcut(), pointcuts); + addAllNamed(((PointcutDeclaration) methodDeclaration).pointcutDesignator.getPointcut(), pointcuts); } return pointcuts; } /** * @param left - * @param pointcuts - * accumulator for named pointcuts + * @param pointcuts accumulator for named pointcuts */ private void addAllNamed(Pointcut pointcut, List pointcuts) { if (pointcut == null) @@ -667,8 +597,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { output.append("> "); } - methodDeclaration.printReturnType(0, output).append( - methodDeclaration.selector).append('('); + methodDeclaration.printReturnType(0, output).append(methodDeclaration.selector).append('('); if (methodDeclaration.arguments != null) { for (int i = 0; i < methodDeclaration.arguments.length; i++) { if (i > 0) @@ -710,14 +639,11 @@ public class AsmHierarchyBuilder extends ASTVisitor { // } // ((IProgramElement)stack.peek()).addChild(peNode); // } - protected void genBytecodeInfo(MethodDeclaration methodDeclaration, - IProgramElement peNode) { + protected void genBytecodeInfo(MethodDeclaration methodDeclaration, IProgramElement peNode) { if (methodDeclaration.binding != null) { try { - EclipseFactory factory = ((AjLookupEnvironment) methodDeclaration.scope - .environment()).factory; - Member member = factory - .makeResolvedMember(methodDeclaration.binding); + EclipseFactory factory = ((AjLookupEnvironment) methodDeclaration.scope.environment()).factory; + Member member = factory.makeResolvedMember(methodDeclaration.binding); peNode.setBytecodeName(member.getName()); peNode.setBytecodeSignature(member.getSignature()); } catch (BCException bce) { // bad type name @@ -739,11 +665,9 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (dotIndex != -1) { currPackageImport = importRef.toString().substring(0, dotIndex); } - if (!((ProgramElement) stack.peek()).getPackageName().equals( - currPackageImport)) { + if (!((ProgramElement) stack.peek()).getPackageName().equals(currPackageImport)) { - ProgramElement peNode = new ProgramElement(new String(importRef - .toString()), IProgramElement.Kind.IMPORT_REFERENCE, + ProgramElement peNode = new ProgramElement(new String(importRef.toString()), IProgramElement.Kind.IMPORT_REFERENCE, makeLocation(importRef), 0,// could set static here, but for // some reason the info is // private @@ -755,8 +679,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // create Source signature for import peNode.setSourceSignature(genSourceSignature(importRef)); - ProgramElement imports = (ProgramElement) ((ProgramElement) stack - .peek()).getChildren().get(0); + ProgramElement imports = (ProgramElement) ((ProgramElement) stack.peek()).getChildren().get(0); imports.addChild(0, peNode); stack.push(peNode); } @@ -769,8 +692,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (dotIndex != -1) { currPackageImport = importRef.toString().substring(0, dotIndex); } - if (!((ProgramElement) stack.peek()).getPackageName().equals( - currPackageImport)) { + if (!((ProgramElement) stack.peek()).getPackageName().equals(currPackageImport)) { stack.pop(); } } @@ -788,16 +710,12 @@ public class AsmHierarchyBuilder extends ASTVisitor { IProgramElement peNode = null; if (fieldDeclaration.type == null) { // The field represents an enum // value - peNode = new ProgramElement(new String(fieldDeclaration.name), - IProgramElement.Kind.ENUM_VALUE, - makeLocation(fieldDeclaration), fieldDeclaration.modifiers, - null, null); - peNode.setCorrespondingType(fieldDeclaration.binding.type - .debugName()); + peNode = new ProgramElement(new String(fieldDeclaration.name), IProgramElement.Kind.ENUM_VALUE, + makeLocation(fieldDeclaration), fieldDeclaration.modifiers, null, null); + peNode.setCorrespondingType(fieldDeclaration.binding.type.debugName()); } else { - peNode = new ProgramElement(new String(fieldDeclaration.name), - IProgramElement.Kind.FIELD, makeLocation(fieldDeclaration), - fieldDeclaration.modifiers, null, null); + peNode = new ProgramElement(new String(fieldDeclaration.name), IProgramElement.Kind.FIELD, + makeLocation(fieldDeclaration), fieldDeclaration.modifiers, null, null); peNode.setCorrespondingType(fieldDeclaration.type.toString()); } peNode.setSourceSignature(genSourceSignature(fieldDeclaration)); @@ -835,23 +753,20 @@ public class AsmHierarchyBuilder extends ASTVisitor { if (startIndex == -1) { return null; } else if (currCompilationResult.compilationUnit.getContents()[startIndex] == '/') { - char[] comment = CharOperation.subarray( - currCompilationResult.compilationUnit.getContents(), - startIndex, astNode.sourceStart); + char[] comment = CharOperation.subarray(currCompilationResult.compilationUnit.getContents(), startIndex, + astNode.sourceStart); while (comment.length > 2) { int star = CharOperation.indexOf('*', comment); if (star == -1) return null; // looking for '/**' and not '//' or '//*' - if (star != 0 && (comment[star - 1] == '/') - && (comment[star + 1] == '*') + if (star != 0 && (comment[star - 1] == '/') && (comment[star + 1] == '*') && (star - 2 < 0 || comment[star - 2] != '/')) { boolean completed = false; StringBuffer sb = new StringBuffer(); for (int i = 0; i < comment.length && !completed; i++) { char curr = comment[i]; - if (curr == '/' && sb.length() > 2 - && sb.charAt(sb.length() - 1) == '*') { + if (curr == '/' && sb.length() > 2 && sb.charAt(sb.length() - 1) == '*') { completed = true; // found */ } sb.append(comment[i]); @@ -859,13 +774,11 @@ public class AsmHierarchyBuilder extends ASTVisitor { // The following will remove any non-javadoc comments // preceeding a javadoc comment in this block if (sb.toString().indexOf("/**") != 0) { - return sb.toString().substring( - sb.toString().indexOf("/**")); + return sb.toString().substring(sb.toString().indexOf("/**")); } return sb.toString(); } - comment = CharOperation.subarray(comment, star + 1, - comment.length); + comment = CharOperation.subarray(comment, star + 1, comment.length); } } return null; @@ -883,12 +796,10 @@ public class AsmHierarchyBuilder extends ASTVisitor { return output.toString(); } else { FieldDeclaration.printModifiers(fieldDeclaration.modifiers, output); - fieldDeclaration.type.print(0, output).append(' ').append( - fieldDeclaration.name); + fieldDeclaration.type.print(0, output).append(' ').append(fieldDeclaration.name); } - if (fieldDeclaration.initialization != null - && !(fieldDeclaration.initialization instanceof QualifiedAllocationExpression)) { + if (fieldDeclaration.initialization != null && !(fieldDeclaration.initialization instanceof QualifiedAllocationExpression)) { output.append(" = "); //$NON-NLS-1$ if (fieldDeclaration.initialization instanceof ExtendedStringLiteral) { output.append("\"\""); @@ -926,8 +837,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // stack.pop(); // } - public boolean visit(ConstructorDeclaration constructorDeclaration, - ClassScope scope) { + public boolean visit(ConstructorDeclaration constructorDeclaration, ClassScope scope) { if ((constructorDeclaration.bits & ASTNode.IsDefaultConstructor) != 0) { stack.push(null); // a little weird but does the job return true; @@ -936,18 +846,14 @@ public class AsmHierarchyBuilder extends ASTVisitor { argumentsSignature.append("("); if (constructorDeclaration.arguments != null) { for (int i = 0; i < constructorDeclaration.arguments.length; i++) { - argumentsSignature - .append(constructorDeclaration.arguments[i].type); + argumentsSignature.append(constructorDeclaration.arguments[i].type); if (i + 1 < constructorDeclaration.arguments.length) argumentsSignature.append(","); } } argumentsSignature.append(")"); - IProgramElement peNode = new ProgramElement(new String( - constructorDeclaration.selector), - IProgramElement.Kind.CONSTRUCTOR, - makeLocation(constructorDeclaration), - constructorDeclaration.modifiers, null, null); + IProgramElement peNode = new ProgramElement(new String(constructorDeclaration.selector), IProgramElement.Kind.CONSTRUCTOR, + makeLocation(constructorDeclaration), constructorDeclaration.modifiers, null, null); formatter.setParameters(constructorDeclaration, peNode); peNode.setModifiers(constructorDeclaration.modifiers); peNode.setSourceSignature(genSourceSignature(constructorDeclaration)); @@ -958,10 +864,8 @@ public class AsmHierarchyBuilder extends ASTVisitor { String memberName = ""; String memberBytecodeSignature = ""; try { - EclipseFactory factory = ((AjLookupEnvironment) constructorDeclaration.scope - .environment()).factory; - Member member = factory - .makeResolvedMember(constructorDeclaration.binding); + EclipseFactory factory = ((AjLookupEnvironment) constructorDeclaration.scope.environment()).factory; + Member member = factory.makeResolvedMember(constructorDeclaration.binding); memberName = member.getName(); memberBytecodeSignature = member.getSignature(); } catch (BCException bce) { // bad type name @@ -978,13 +882,11 @@ public class AsmHierarchyBuilder extends ASTVisitor { return true; } - public void endVisit(ConstructorDeclaration constructorDeclaration, - ClassScope scope) { + public void endVisit(ConstructorDeclaration constructorDeclaration, ClassScope scope) { stack.pop(); } - private String genSourceSignature( - ConstructorDeclaration constructorDeclaration) { + private String genSourceSignature(ConstructorDeclaration constructorDeclaration) { StringBuffer output = new StringBuffer(); ASTNode.printModifiers(constructorDeclaration.modifiers, output); @@ -1047,8 +949,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { return false; inInitializer = initializer; - IProgramElement peNode = new ProgramElement("...", - IProgramElement.Kind.INITIALIZER, makeLocation(initializer), + IProgramElement peNode = new ProgramElement("...", IProgramElement.Kind.INITIALIZER, makeLocation(initializer), initializer.modifiers, null, null); // "", // new ArrayList()); @@ -1091,8 +992,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // (AbstractMethodDeclaration)n); // if ( n instanceof TypeDeclaration ) return getStartLine( // (TypeDeclaration)n); - return Util.getLineNumber(n.sourceStart, lineseps, 0, - lineseps.length - 1); + return Util.getLineNumber(n.sourceStart, lineseps, 0, lineseps.length - 1); // return ProblemHandler.searchLineNumber(lineseps, // currCompilationResult.lineSeparatorPositions, // n.sourceStart); @@ -1108,8 +1008,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { return getEndLine((AbstractMethodDeclaration) n); if (n instanceof TypeDeclaration) return getEndLine((TypeDeclaration) n); - return Util - .getLineNumber(n.sourceEnd, lineseps, 0, lineseps.length - 1); + return Util.getLineNumber(n.sourceEnd, lineseps, 0, lineseps.length - 1); // return ProblemHandler.searchLineNumber(lineseps, // currCompilationResult.lineSeparatorPositions, // n.sourceEnd); @@ -1128,8 +1027,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // various ASTNode types. They have no common ancestor in the // hierarchy!! private int getEndLine(AbstractVariableDeclaration avd) { - return Util.getLineNumber(avd.declarationSourceEnd, lineseps, 0, - lineseps.length - 1); + return Util.getLineNumber(avd.declarationSourceEnd, lineseps, 0, lineseps.length - 1); } // AMC - overloaded set of methods to get start and end lines for @@ -1145,8 +1043,7 @@ public class AsmHierarchyBuilder extends ASTVisitor { // various ASTNode types. They have no common ancestor in the // hierarchy!! private int getEndLine(AbstractMethodDeclaration amd) { - return Util.getLineNumber(amd.declarationSourceEnd, lineseps, 0, - lineseps.length - 1); + return Util.getLineNumber(amd.declarationSourceEnd, lineseps, 0, lineseps.length - 1); } // AMC - overloaded set of methods to get start and end lines for @@ -1162,7 +1059,6 @@ public class AsmHierarchyBuilder extends ASTVisitor { // various ASTNode types. They have no common ancestor in the // hierarchy!! private int getEndLine(TypeDeclaration td) { - return Util.getLineNumber(td.declarationSourceEnd, lineseps, 0, - lineseps.length - 1); + return Util.getLineNumber(td.declarationSourceEnd, lineseps, 0, lineseps.length - 1); } } -- 2.39.5