summaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core
diff options
context:
space:
mode:
authoraclement <aclement>2005-07-26 14:15:32 +0000
committeraclement <aclement>2005-07-26 14:15:32 +0000
commita3dd516b80debb7dfd0c45fa2b0e8ad7959b4b91 (patch)
treec190ee75eb281833b9ccaf889eae96eacb08a74e /org.aspectj.ajdt.core
parent8db7e37a1b2a2c81f977157a9c8e9470a3ff72e6 (diff)
downloadaspectj-a3dd516b80debb7dfd0c45fa2b0e8ad7959b4b91.tar.gz
aspectj-a3dd516b80debb7dfd0c45fa2b0e8ad7959b4b91.zip
minor versioning improvement. dont add the version attribute if someone else already has.
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
index 580020a2e..ac88e4a07 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
@@ -27,6 +27,7 @@ import org.aspectj.ajdt.internal.compiler.lookup.EclipseTypeMunger;
import org.aspectj.ajdt.internal.compiler.lookup.HelperInterfaceBinding;
import org.aspectj.ajdt.internal.compiler.lookup.InlineAccessFieldBinding;
import org.aspectj.ajdt.internal.compiler.lookup.PrivilegedHandler;
+import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
import org.aspectj.org.eclipse.jdt.internal.compiler.ClassFile;
import org.aspectj.org.eclipse.jdt.internal.compiler.CompilationResult;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
@@ -272,7 +273,7 @@ public class AspectDeclaration extends TypeDeclaration {
generateInlineAccessMembers(classFile);
- classFile.extraAttributes.add(new EclipseAttributeAdapter(new AjAttribute.WeaverVersionInfo()));
+ addVersionAttributeIfNecessary(classFile);
classFile.extraAttributes.add(
new EclipseAttributeAdapter(new AjAttribute.Aspect(perClause)));
@@ -292,6 +293,18 @@ public class AspectDeclaration extends TypeDeclaration {
super.generateAttributes(classFile);
}
+ /**
+ * A pointcut might have already added the attribute, let's not add it again.
+ */
+ private void addVersionAttributeIfNecessary(ClassFile classFile) {
+ for (Iterator iter = classFile.extraAttributes.iterator(); iter.hasNext();) {
+ EclipseAttributeAdapter element = (EclipseAttributeAdapter) iter.next();
+ if (CharOperation.equals(element.getNameChars(),weaverVersionChars)) return;
+ }
+ classFile.extraAttributes.add(new EclipseAttributeAdapter(new AjAttribute.WeaverVersionInfo()));
+ }
+ private static char[] weaverVersionChars = "org.aspectj.weaver.WeaverVersion".toCharArray();
+
private void generateInlineAccessMembers(ClassFile classFile) {
for (Iterator i = superAccessForInline.values().iterator(); i.hasNext(); ) {
AccessForInlineVisitor.SuperAccessMethodPair pair = (AccessForInlineVisitor.SuperAccessMethodPair)i.next();