diff --git a/apitools/org.eclipse.pde.api.tools.tests/API Tools Test Suite.launch b/apitools/org.eclipse.pde.api.tools.tests/API Tools Test Suite.launch index d5f098e..c690f6b 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/API Tools Test Suite.launch +++ b/apitools/org.eclipse.pde.api.tools.tests/API Tools Test Suite.launch @@ -14,7 +14,7 @@ - + diff --git a/apitools/org.eclipse.pde.api.tools.tests/META-INF/MANIFEST.MF b/apitools/org.eclipse.pde.api.tools.tests/META-INF/MANIFEST.MF index 4985616..78fe116 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/META-INF/MANIFEST.MF +++ b/apitools/org.eclipse.pde.api.tools.tests/META-INF/MANIFEST.MF @@ -22,7 +22,7 @@ org.eclipse.jdt.core.tests.builder;bundle-version="[3.8.0,4.0.0)", org.eclipse.jdt.core.tests.compiler;bundle-version="[3.8.0,4.0.0)", org.eclipse.ant.core, - org.objectweb.asm;bundle-version="[3.2.0,4.0.0)", + org.objectweb.asm;bundle-version="5.0.0", org.eclipse.jface;bundle-version="3.8.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Export-Package: org.eclipse.pde.api.tools.anttasks.tests, diff --git a/apitools/org.eclipse.pde.api.tools/META-INF/MANIFEST.MF b/apitools/org.eclipse.pde.api.tools/META-INF/MANIFEST.MF index ff54acb..0e7a4e2 100644 --- a/apitools/org.eclipse.pde.api.tools/META-INF/MANIFEST.MF +++ b/apitools/org.eclipse.pde.api.tools/META-INF/MANIFEST.MF @@ -14,7 +14,7 @@ org.eclipse.text;bundle-version="[3.4.0,4.0.0)", org.eclipse.core.filebuffers;bundle-version="[3.4.0,4.0.0)", org.eclipse.ant.core;bundle-version="[3.1.300,4.0.0)", - org.objectweb.asm;bundle-version="[3.2.0,4.0.0)", + org.objectweb.asm;bundle-version="5.0.0", org.eclipse.team.core;bundle-version="[3.4.0,4.0.0)", org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)", org.eclipse.equinox.frameworkadmin;bundle-version="[2.0.0,3.0.0)", diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java index f269577..b206096 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/builder/ReferenceExtractor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2013 IBM Corporation and others. + * Copyright (c) 2007, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -34,11 +34,10 @@ import org.eclipse.pde.api.tools.internal.provisional.model.IApiType; import org.eclipse.pde.api.tools.internal.util.Signatures; import org.eclipse.pde.api.tools.internal.util.Util; -import org.objectweb.asm.ClassAdapter; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.Label; -import org.objectweb.asm.MethodAdapter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; @@ -51,7 +50,7 @@ * * @since 1.0.0 */ -public class ReferenceExtractor extends ClassAdapter { +public class ReferenceExtractor extends ClassVisitor { /** * A visitor for visiting java 5+ signatures @@ -61,7 +60,7 @@ * MethodSignature = (visitFormalTypeParameter visitClassBound? visitInterfaceBound* )* (visitParameterType visitReturnType visitExceptionType* ) * TypeSignature = visitBaseType | visitTypeVariable | visitArrayType | (visitClassType visitTypeArgument* (visitInnerClassType visitTypeArgument* )* visitEnd ) ) */ - class ClassFileSignatureVisitor implements SignatureVisitor { + class ClassFileSignatureVisitor extends SignatureVisitor { protected int kind = -1; protected int originalkind = -1; @@ -72,6 +71,7 @@ protected List references; public ClassFileSignatureVisitor() { + super(Opcodes.ASM5); this.references = new ArrayList(); } @@ -222,7 +222,7 @@ * Visitor used to visit the methods of a type * [ visitCode ( visitFrame | visitXInsn | visitLabel | visitTryCatchBlock | visitLocalVariable | visitLineNumber)* visitMaxs ] visitEnd */ - class ClassFileMethodVisitor extends MethodAdapter { + class ClassFileMethodVisitor extends MethodVisitor { int argumentcount = 0; LinePositionTracker linePositionTracker; /** @@ -241,7 +241,7 @@ * @param mv */ public ClassFileMethodVisitor(MethodVisitor mv, String name, int argumentcount) { - super(mv); + super(Opcodes.ASM5, mv); this.argumentcount = argumentcount; this.linePositionTracker = new LinePositionTracker(); this.lastLineNumber = -1; @@ -909,7 +909,7 @@ * @param referenceKinds kinds of references to extract as defined by {@link ReferenceModifiers} */ public ReferenceExtractor(IApiType type, Set collector, int referenceKinds) { - super(new ClassNode()); + super(Opcodes.ASM5, new ClassNode()); fType = type; this.collector = collector; fReferenceKinds = referenceKinds; @@ -925,7 +925,7 @@ * @param tracker */ protected ReferenceExtractor(IApiType type, Set collector, int referenceKinds, FieldTracker tracker) { - super(new ClassNode()); + super(Opcodes.ASM5, new ClassNode()); fType = type; this.collector = collector; fReferenceKinds = referenceKinds; diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java index 0f861c7..7209c81 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 IBM Corporation and others. + * Copyright (c) 2007, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,12 +10,13 @@ *******************************************************************************/ package org.eclipse.pde.api.tools.internal.comparator; +import org.objectweb.asm.Opcodes; import org.objectweb.asm.signature.SignatureVisitor; /** * This class is used to decode a generic signature for class or method */ -final class SignatureDecoder implements SignatureVisitor { +final class SignatureDecoder extends SignatureVisitor { static final int CLASS_BOUND = 1; static final int DEFAULT = 0; static final int INTERFACE_BOUND = 2; @@ -28,6 +29,7 @@ SignatureDescriptor signatureDescriptor; public SignatureDecoder(SignatureDescriptor signatureDescriptor) { + super(Opcodes.ASM5); this.signatureDescriptor = signatureDescriptor; } public SignatureVisitor visitArrayType() { @@ -59,6 +61,8 @@ case SUPER_TYPE_ARGUMENT : case NORMAL_TYPE_ARGUMENT : this.signatureDescriptor.addTypeArgument(classTypeName); + break; + default: break; } this.mode = DEFAULT; @@ -115,6 +119,9 @@ break; case SignatureVisitor.INSTANCEOF : this.mode= NORMAL_TYPE_ARGUMENT; + break; + default: + break; } return this; } diff --git a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java index 8275598..13af270 100644 --- a/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java +++ b/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2013 IBM Corporation and others. + * Copyright (c) 2007, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,8 +14,6 @@ import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.HashMap; import java.util.Map; @@ -30,21 +28,18 @@ import org.eclipse.pde.api.tools.internal.provisional.model.IApiType; import org.eclipse.pde.api.tools.internal.provisional.model.IApiTypeRoot; import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.ClassAdapter; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.Label; -import org.objectweb.asm.MethodAdapter; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; import org.objectweb.asm.tree.ClassNode; -import org.objectweb.asm.util.TraceAnnotationVisitor; /** * Class adapter used to create an API type structure */ -public class TypeStructureBuilder extends ClassAdapter { +public class TypeStructureBuilder extends ClassVisitor { ApiType fType; IApiComponent fComponent; IApiTypeRoot fFile; @@ -59,13 +54,13 @@ * @param component originating API component or null if unknown */ TypeStructureBuilder(ClassVisitor cv, IApiComponent component, IApiTypeRoot file) { - super(cv); + super(Opcodes.ASM5, cv); fComponent = component; fFile = file; } - /** - * @see org.objectweb.asm.ClassAdapter#visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) + /* (non-Javadoc) + * @see org.objectweb.asm.ClassVisitor#visit(int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) */ public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { StringBuffer simpleSig = new StringBuffer(); @@ -96,8 +91,9 @@ } super.visit(version, laccess, name, signature, superName, interfaces); } - /** - * @see org.objectweb.asm.ClassAdapter#visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) + + /* (non-Javadoc) + * @see org.objectweb.asm.ClassVisitor#visitInnerClass(java.lang.String, java.lang.String, java.lang.String, int) */ public void visitInnerClass(String name, String outerName, String innerName, int access) { super.visitInnerClass(name, outerName, innerName, access); @@ -127,14 +123,14 @@ } /* (non-Javadoc) - * @see org.objectweb.asm.ClassAdapter#visitOuterClass(java.lang.String, java.lang.String, java.lang.String) + * @see org.objectweb.asm.ClassVisitor#visitOuterClass(java.lang.String, java.lang.String, java.lang.String) */ public void visitOuterClass(String owner, String name, String desc) { fType.setEnclosingMethodInfo(name, desc); } /* (non-Javadoc) - * @see org.objectweb.asm.ClassAdapter#visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) + * @see org.objectweb.asm.ClassVisitor#visitField(int, java.lang.String, java.lang.String, java.lang.String, java.lang.Object) */ public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { int laccess = access; @@ -147,7 +143,7 @@ } /* (non-Javadoc) - * @see org.objectweb.asm.ClassAdapter#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) + * @see org.objectweb.asm.ClassVisitor#visitMethod(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) */ public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { String[] names = null; @@ -163,7 +159,7 @@ } } final ApiMethod method = fType.addMethod(name, desc, signature, laccess, names); - return new MethodAdapter(super.visitMethod(laccess, name, desc, signature, exceptions)) { + return new MethodVisitor(Opcodes.ASM5, super.visitMethod(laccess, name, desc, signature, exceptions)) { public AnnotationVisitor visitAnnotation(String sig, boolean visible) { if (visible && "Ljava/lang/invoke/MethodHandle$PolymorphicSignature;".equals(sig)) { //$NON-NLS-1$ method.isPolymorphic(); @@ -171,18 +167,7 @@ return super.visitAnnotation(sig, visible); } public AnnotationVisitor visitAnnotationDefault() { - return new TraceAnnotationVisitor() { - public void visitEnd() { - super.visitEnd(); - StringWriter stringWriter = new StringWriter(); - PrintWriter writer = new PrintWriter(stringWriter); - print(writer); - writer.flush(); - writer.close(); - String def = String.valueOf(stringWriter.getBuffer()); - method.setDefaultValue(def); - } - }; + return new AnnotationDefaultVisitor(method); } }; } @@ -241,14 +226,32 @@ } } } - static class EnclosingMethodSetter extends ClassAdapter { + /** + * Visit the default value for an annotation + */ + static class AnnotationDefaultVisitor extends AnnotationVisitor { + ApiMethod method; + Object value; + + public AnnotationDefaultVisitor(ApiMethod method) { + super(Opcodes.ASM5); + this.method = method; + } + public void visit(String name, Object value) { + this.value = value; + } + public void visitEnd() { + method.setDefaultValue(this.value == null ? null : this.value.toString()); + } + } + static class EnclosingMethodSetter extends ClassVisitor { String name; String signature; boolean found = false; String typeName; public EnclosingMethodSetter(ClassVisitor cv, String typeName) { - super(cv); + super(Opcodes.ASM5, cv); this.typeName = typeName.replace('.', '/'); } public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { @@ -274,11 +277,11 @@ return null; } } - static class TypeNameFinder extends MethodAdapter { + static class TypeNameFinder extends MethodVisitor { protected EnclosingMethodSetter setter; public TypeNameFinder(MethodVisitor mv, EnclosingMethodSetter enclosingMethodSetter) { - super(mv); + super(Opcodes.ASM5, mv); this.setter = enclosingMethodSetter; } public void visitTypeInsn(int opcode, String type) {