]> source.dussan.org Git - aspectj.git/commitdiff
add apt tests
authorhsestupin <stupin.sergey@gmail.com>
Tue, 1 Jul 2014 08:13:30 +0000 (12:13 +0400)
committerhsestupin <stupin.sergey@gmail.com>
Fri, 1 Aug 2014 17:25:23 +0000 (20:25 +0300)
Signed-off-by: hsestupin <stupin.sergey@gmail.com>
99 files changed:
ajdoc/src/org/aspectj/tools/ajdoc/StructureUtil.java
testing/newsrc/org/aspectj/testing/XMLBasedAjcTestCase.java
tests/apt/apt_service_description.jar [new file with mode: 0644]
tests/apt/processor/Event.java [new file with mode: 0644]
tests/apt/processor/SimpleProcessor.java [new file with mode: 0644]
tests/apt/src/Some.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc10x/Ajc10xTests.java
tests/src/org/aspectj/systemtest/ajc11/Ajc11Tests.java
tests/src/org/aspectj/systemtest/ajc120/Ajc120Tests.java
tests/src/org/aspectj/systemtest/ajc121/Ajc121Tests.java
tests/src/org/aspectj/systemtest/ajc150/AccBridgeMethods.java
tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
tests/src/org/aspectj/systemtest/ajc150/AnnotationBinding.java
tests/src/org/aspectj/systemtest/ajc150/AnnotationPointcutsTests.java
tests/src/org/aspectj/systemtest/ajc150/AnnotationRuntimeTests.java
tests/src/org/aspectj/systemtest/ajc150/AnnotationsBinaryWeaving.java
tests/src/org/aspectj/systemtest/ajc150/Autoboxing.java
tests/src/org/aspectj/systemtest/ajc150/CovarianceTests.java
tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java
tests/src/org/aspectj/systemtest/ajc150/Enums.java
tests/src/org/aspectj/systemtest/ajc150/GenericITDsDesign.java
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
tests/src/org/aspectj/systemtest/ajc150/HasMember.java
tests/src/org/aspectj/systemtest/ajc150/MigrationTests.java
tests/src/org/aspectj/systemtest/ajc150/PerTypeWithinTests.java
tests/src/org/aspectj/systemtest/ajc150/RuntimeAnnotations.java
tests/src/org/aspectj/systemtest/ajc150/StaticImports.java
tests/src/org/aspectj/systemtest/ajc150/SuppressedWarnings.java
tests/src/org/aspectj/systemtest/ajc150/VarargsTests.java
tests/src/org/aspectj/systemtest/ajc150/ataspectj/AtAjAnnotationGenTests.java
tests/src/org/aspectj/systemtest/ajc150/ataspectj/AtAjLTWTests.java
tests/src/org/aspectj/systemtest/ajc150/ataspectj/AtAjMisuseTests.java
tests/src/org/aspectj/systemtest/ajc150/ataspectj/AtAjSyntaxTests.java
tests/src/org/aspectj/systemtest/ajc150/ltw/LTWServerTests.java
tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java
tests/src/org/aspectj/systemtest/ajc150/ltw/ltw.xml
tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
tests/src/org/aspectj/systemtest/ajc151/AtAroundTests.java
tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java
tests/src/org/aspectj/systemtest/ajc151/SerialVersionUIDTests.java
tests/src/org/aspectj/systemtest/ajc152/Ajc152Tests.java
tests/src/org/aspectj/systemtest/ajc152/SynchronizationTests.java
tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java
tests/src/org/aspectj/systemtest/ajc153/Ajc153Tests.java
tests/src/org/aspectj/systemtest/ajc153/JDTLikeHandleProviderTests.java
tests/src/org/aspectj/systemtest/ajc153/LTWServer153Tests.java
tests/src/org/aspectj/systemtest/ajc153/PipeliningTests.java
tests/src/org/aspectj/systemtest/ajc154/Ajc154Tests.java
tests/src/org/aspectj/systemtest/ajc160/Ajc160Tests.java
tests/src/org/aspectj/systemtest/ajc160/AnnotationValueMatchingTests.java
tests/src/org/aspectj/systemtest/ajc160/NewFeatures.java
tests/src/org/aspectj/systemtest/ajc160/ParameterAnnotationMatchingTests.java
tests/src/org/aspectj/systemtest/ajc160/SanityTests.java
tests/src/org/aspectj/systemtest/ajc161/Ajc161Tests.java
tests/src/org/aspectj/systemtest/ajc161/OptimizedAnnotationFieldBinding.java
tests/src/org/aspectj/systemtest/ajc1610/Ajc1610Tests.java
tests/src/org/aspectj/systemtest/ajc1610/NewFeatures.java
tests/src/org/aspectj/systemtest/ajc1611/Ajc1611Tests.java
tests/src/org/aspectj/systemtest/ajc1611/NewFeatures.java
tests/src/org/aspectj/systemtest/ajc1612/Ajc1612Tests.java
tests/src/org/aspectj/systemtest/ajc162/Ajc162Tests.java
tests/src/org/aspectj/systemtest/ajc163/Ajc163Tests.java
tests/src/org/aspectj/systemtest/ajc164/Ajc164Tests.java
tests/src/org/aspectj/systemtest/ajc164/DeclareMixinTests.java
tests/src/org/aspectj/systemtest/ajc164/JointpointIdTests.java
tests/src/org/aspectj/systemtest/ajc165/Ajc165Tests.java
tests/src/org/aspectj/systemtest/ajc166/Ajc166Tests.java
tests/src/org/aspectj/systemtest/ajc167/Ajc167Tests.java
tests/src/org/aspectj/systemtest/ajc167/OverweavingTests.java
tests/src/org/aspectj/systemtest/ajc169/Ajc169Tests.java
tests/src/org/aspectj/systemtest/ajc169/IntertypeTests.java
tests/src/org/aspectj/systemtest/ajc169/TransparentWeavingTests.java
tests/src/org/aspectj/systemtest/ajc171/Ajc171Tests.java
tests/src/org/aspectj/systemtest/ajc172/Ajc172Tests.java
tests/src/org/aspectj/systemtest/ajc173/Ajc173Tests.java
tests/src/org/aspectj/systemtest/ajc174/Ajc174Tests.java
tests/src/org/aspectj/systemtest/ajc175/Ajc175Tests.java
tests/src/org/aspectj/systemtest/ajc180/Ajc180Tests.java
tests/src/org/aspectj/systemtest/ajc181/Ajc181Tests.java
tests/src/org/aspectj/systemtest/ajc181/AllTestsAspectJ181.java
tests/src/org/aspectj/systemtest/apt/AllTestsApt.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/apt/AptTests.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/apt/apt-spec.xml [new file with mode: 0644]
tests/src/org/aspectj/systemtest/aspectpath/AspectPathTests.java
tests/src/org/aspectj/systemtest/base/BaseTests.java
tests/src/org/aspectj/systemtest/design/DesignTests.java
tests/src/org/aspectj/systemtest/incremental/IncrementalTests.java
tests/src/org/aspectj/systemtest/incremental/model/IncrementalModelTests.java
tests/src/org/aspectj/systemtest/inpath/InPathTests.java
tests/src/org/aspectj/systemtest/java14/Java14Tests.java
tests/src/org/aspectj/systemtest/model/Model5Tests.java
tests/src/org/aspectj/systemtest/model/ModelTests.java
tests/src/org/aspectj/systemtest/options/OptionsTests.java
tests/src/org/aspectj/systemtest/pre10x/AjcPre10xTests.java
tests/src/org/aspectj/systemtest/serialVerUID/SUIDTests.java
tests/src/org/aspectj/systemtest/tracing/TracingTests.java
tests/src/org/aspectj/systemtest/xlint/XLint5Tests.java
tests/src/org/aspectj/systemtest/xlint/XLintTests.java
util/src/org/aspectj/util/FileUtil.java

index e38538f201193a3c76048bb876c70b6633eeddd2..6f9ad7790af592b34ef644076e664e6d6cccec7f 100644 (file)
@@ -148,7 +148,7 @@ public class StructureUtil {
                if (node.getParameterTypes() != null) {
                        sb.append('(');
                        for (int i = 0; i < node.getParameterTypes().size(); i++) {
-                               sb.append((String) node.getParameterTypes().get(i));
+                               sb.append(String.valueOf(node.getParameterTypes().get(i)));
                                sb.append(' ');
                                sb.append((String) node.getParameterNames().get(i));
                                if (i < node.getParameterTypes().size() - 1) {
index 30e6dd55fb4985303c3f2be24fec357bc1b195ac..652839a5b9d167ae6213120fc956bee3193fc977 100644 (file)
@@ -429,5 +429,9 @@ public abstract class XMLBasedAjcTestCase extends AjcTestCase {
                return null;
        }
 
+  protected File getClassResource(String resourceName) {
+    return new File(getClass().getResource(resourceName).getFile());
+  }
+
        
 }
diff --git a/tests/apt/apt_service_description.jar b/tests/apt/apt_service_description.jar
new file mode 100644 (file)
index 0000000..f823b17
Binary files /dev/null and b/tests/apt/apt_service_description.jar differ
diff --git a/tests/apt/processor/Event.java b/tests/apt/processor/Event.java
new file mode 100644 (file)
index 0000000..9ac973f
--- /dev/null
@@ -0,0 +1,20 @@
+package test;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.CLASS)
+@Target(ElementType.METHOD)
+public @interface Event {
+
+    enum Order {
+        Before,
+        After
+    }
+
+    Order value() default Order.Before;
+
+    boolean treadSafe() default false;
+}
\ No newline at end of file
diff --git a/tests/apt/processor/SimpleProcessor.java b/tests/apt/processor/SimpleProcessor.java
new file mode 100644 (file)
index 0000000..292dcd8
--- /dev/null
@@ -0,0 +1,253 @@
+package test;
+
+import javax.annotation.Generated;
+import javax.annotation.processing.AbstractProcessor;
+import javax.annotation.processing.RoundEnvironment;
+import javax.annotation.processing.SupportedSourceVersion;
+import javax.lang.model.SourceVersion;
+import javax.lang.model.element.*;
+import javax.lang.model.type.TypeMirror;
+import javax.tools.Diagnostic;
+import javax.tools.FileObject;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardLocation;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.util.*;
+
+@SupportedSourceVersion(SourceVersion.RELEASE_7)
+public final class SimpleProcessor extends AbstractProcessor {
+
+    private final Map<TypeElement, List<Item>> collectedElements = new HashMap<>();
+    private static String callbacksClassName(TypeElement ce) {
+        return ce.getSimpleName() + "Callbacks";
+    }
+
+    private static String capitalize(String str) {
+        char[] chars = str.toCharArray();
+        return String.valueOf(chars[0]).toUpperCase() + String.valueOf(Arrays.copyOfRange(chars, 1, chars.length));
+    }
+
+    private static String callbacksSubClassName(Item item) {
+        return "On" + capitalize(item.element.getSimpleName().toString());
+    }
+
+    private static String callbackName(TypeElement ce, Item item) {
+        return callbacksClassName(ce) + '.' + callbacksSubClassName(item);
+    }
+
+    private static String eventName(TypeElement ce, Item item) {
+        return ce.getSimpleName() + fieldName(item);
+    }
+
+    private static String fieldName(Item item) {
+        return "On" + capitalize(item.element.getSimpleName().toString()) + "Event";
+    }
+
+    private static String toString(VariableElement var, boolean printNames) {
+        final StringBuilder builder = new StringBuilder();
+        if (printNames) {
+            for (final AnnotationMirror annotation : var.getAnnotationMirrors())
+                builder.append(annotation).append(' ');
+        }
+        builder.append(var.asType());
+        if (printNames)
+            builder.append(' ').append(var);
+
+        return builder.toString();
+    }
+
+    private static void generateEmit(BufferedWriter bw, TypeElement ce, Item item) throws IOException {
+        bw.append("  private static void emit(").append(eventName(ce, item)).append(" event, ").append(ce.getSimpleName()).append(" emmiter");
+        for (final VariableElement variableElement : item.element.getParameters())
+            bw.append(", ").append(toString(variableElement, true));
+        bw.append(") {\n");
+        bw.append("    final Collection<").append(callbackName(ce, item)).append("> callbacksSafe = event.callbacks;\n");
+        bw.append("    if (callbacksSafe == null)\n");
+        bw.append("      return;\n");
+        bw.append("    for (final ").append(callbackName(ce, item)).append(" callback : new ArrayList<>(callbacksSafe))\n");
+        bw.append("      callback.changed(emmiter");
+        for (final VariableElement variableElement : item.element.getParameters())
+            bw.append(", ").append(variableElement.getSimpleName());
+        bw.append(");\n");
+        bw.append("  }\n");
+        bw.newLine();
+    }
+
+    private static void generateEvent(BufferedWriter bw, TypeElement ce, Item item) throws IOException {
+        bw.append("  public static final class ").append(eventName(ce, item)).append(" {\n");
+        bw.append("    private Collection<").append(callbackName(ce, item)).append("> callbacks = null;\n");
+        bw.append("\n");
+        bw.append("    ").append(eventName(ce, item)).append("() {\n");
+        bw.append("    }\n");
+        bw.append("\n");
+        bw.append("    public void add(").append(callbackName(ce, item)).append(" callback) {\n");
+        bw.append("      Collection<").append(callbackName(ce, item)).append("> callbacksSafe = callbacks;\n");
+        bw.append("      if (callbacksSafe == null) {\n");
+        bw.append("        callbacksSafe = new ArrayList<>(1);\n");
+        bw.append("        callbacks = callbacksSafe;\n");
+        bw.append("      }\n");
+        bw.append("      callbacksSafe.add(callback);\n");
+        bw.append("    }\n");
+        bw.append("\n");
+        bw.append("    public void clean() {\n");
+        bw.append("      callbacks = null;\n");
+        bw.append("    }\n");
+        bw.append("  }");
+        bw.newLine();
+        bw.newLine();
+    }
+
+    private static void generateField(BufferedWriter bw, TypeElement ce, Item item) throws IOException {
+        bw.append("  @SuppressWarnings(\"PublicField\")\n");
+        bw.append("  public final ").append(eventName(ce, item)).append(' ').append(ce.getQualifiedName()).append('.').append(fieldName(item))
+                .append(" = new ").append(eventName(ce, item)).append("();\n");
+        bw.newLine();
+    }
+
+    private static void generatePointcut(BufferedWriter bw, TypeElement ce, Item item) throws IOException {
+        bw.append("  ").append(item.description.value().name().toLowerCase()).append("(): execution(").append(item.element.getReturnType().toString()).append(' ').append(ce.getQualifiedName()).append('.')
+                .append(item.element.getSimpleName()).append('(');
+        for (final Iterator<? extends TypeParameterElement> i = item.element.getTypeParameters().iterator(); i.hasNext(); ) {
+            bw.append(i.next().getSimpleName());
+            if (i.hasNext())
+                bw.append(", ");
+        }
+        bw.append(")) {\n");
+        bw.append("    final ").append(ce.getQualifiedName()).append(" emmiter = (").append(ce.getQualifiedName()).append(") thisJoinPoint.getThis();\n");
+        bw.append("    emit(emmiter.").append(fieldName(item)).append(", emmiter");
+        final List<? extends VariableElement> parameters = item.element.getParameters();
+        for (int i = 0, s = parameters.size(); i < s; i++) {
+            final VariableElement element = parameters.get(i);
+            final TypeMirror type = element.asType();
+            bw.append(", ").append('(').append(type.toString()).append(") thisJoinPoint.getArgs()[").append(Integer.toString(i)).append(']');
+        }
+        bw.append(");\n");
+        bw.append("  }");
+        bw.newLine();
+        bw.newLine();
+    }
+
+    @Override
+    public Set<String> getSupportedAnnotationTypes() {
+        return Collections.singleton(Event.class.getName());
+    }
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        if (roundEnv.processingOver()) {
+            generateAll();
+            return true;
+        }
+
+        for (final Element elem : roundEnv.getElementsAnnotatedWith(Event.class)) {
+            final Event description = elem.getAnnotation(Event.class);
+            if (description == null)
+                continue;
+
+            if (elem.getKind() == ElementKind.FIELD) {
+                // TODO(yushkovskiy): implement this
+                continue;
+            }
+
+            if (elem.getKind() != ElementKind.METHOD)
+                continue;
+
+            final ExecutableElement exeElement = (ExecutableElement) elem;
+            final Element enclosingElement = exeElement.getEnclosingElement();
+            final TypeElement classElement = (TypeElement) enclosingElement;
+
+            List<Item> items = collectedElements.get(classElement);
+            if (items == null) {
+                items = new ArrayList<>();
+                collectedElements.put(classElement, items);
+            }
+            items.add(new Item(exeElement, description));
+        }
+
+        return true; // no further processing of this annotation type
+    }
+
+    private void generateCallbacks(TypeElement ce, List<Item> items) throws IOException {
+        final PackageElement packageElement = (PackageElement) ce.getEnclosingElement();
+        final JavaFileObject jfo = processingEnv.getFiler().createSourceFile(packageElement.getQualifiedName().toString() + '.' + callbacksClassName(ce));
+        try (final BufferedWriter bw = new BufferedWriter(jfo.openWriter())) {
+            bw.append("package ").append(packageElement.getQualifiedName()).append(";");
+            bw.newLine();
+            bw.newLine();
+            bw.append("/**\n").append(" * Events' callbacks for ").append(ce.getQualifiedName()).append(".\n").append(" *\n").append(" * @author ").append(SimpleProcessor.class.getCanonicalName()).append("\n").append(" */");
+            bw.newLine();
+
+            bw.append("public final class ").append(callbacksClassName(ce)).append(" {");
+            bw.newLine();
+
+            for (final Item item : items) {
+                bw.append("  public interface ").append(callbacksSubClassName(item)).append(" {\n");
+                bw.append("    void changed(").append(ce.getSimpleName()).append(" emmiter");
+                for (final VariableElement var : item.element.getParameters())
+                    bw.append(", ").append(toString(var, true));
+                bw.append(");\n");
+                bw.append("  }");
+                bw.newLine();
+                bw.newLine();
+            }
+
+            bw.append("}");
+            bw.newLine();
+            bw.newLine();
+        }
+    }
+
+    private void generateAll() {
+        for (final Map.Entry<TypeElement, List<Item>> entry : collectedElements.entrySet()) {
+            final TypeElement classElement = entry.getKey();
+            final PackageElement packageElement = (PackageElement) classElement.getEnclosingElement();
+            try {
+                final FileObject jfo = processingEnv.getFiler().createResource(
+                        StandardLocation.SOURCE_OUTPUT,
+                        packageElement.getQualifiedName(),
+                        classElement.getSimpleName() + "EventsAspect.aj");
+
+                try (final BufferedWriter bw = new BufferedWriter(jfo.openWriter())) {
+                    bw.append("package ").append(packageElement.getQualifiedName()).append(";");
+                    bw.newLine();
+                    bw.append("import java.util.ArrayList;\n");
+                    bw.append("import java.util.Collection;");
+                    bw.newLine();
+                    bw.newLine();
+                    bw.append("/**\n").append(" * Events for ").append(classElement.getQualifiedName()).append(".\n").append(" *\n").append(" * @author ").append(SimpleProcessor.class.getCanonicalName()).append("\n").append(" */");
+                    bw.newLine();
+                    bw.append("@").append(Generated.class.getCanonicalName()).append("(\"").append(SimpleProcessor.class.getCanonicalName()).append("\")");
+                    bw.newLine();
+                    bw.append("final aspect ").append(classElement.getSimpleName()).append("EventsAspect").append(" {");
+                    bw.newLine();
+                    bw.newLine();
+
+                    generateCallbacks(classElement, entry.getValue());
+                    for (final Item item : entry.getValue()) {
+                        generateEvent(bw, classElement, item);
+                        generateEmit(bw, classElement, item);
+                        generateField(bw, classElement, item);
+                        generatePointcut(bw, classElement, item);
+                    }
+
+                    bw.append("}");
+                    bw.newLine();
+                    bw.newLine();
+                }
+            } catch (final Throwable e) {
+                processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR, e.getMessage());
+            }
+        }
+    }
+
+    private static final class Item {
+        private final ExecutableElement element;
+        private final Event description;
+
+        private Item(ExecutableElement element, Event description) {
+            this.element = element;
+            this.description = description;
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/apt/src/Some.java b/tests/apt/src/Some.java
new file mode 100644 (file)
index 0000000..b47aa78
--- /dev/null
@@ -0,0 +1,17 @@
+package test;
+
+public class Some {
+
+    public static void main(String[] args) {
+        Some some = new Some();
+        some.OnMethod1Event.add((emmiter) -> {
+            System.out.println("callback registered from before aspect");
+        });
+        some.method1();
+    }
+
+    @Event(Event.Order.Before)
+    public void method1() {
+        System.out.println("method1 is invoked");
+    }
+}
index 8128fcdaa6928c404458f35459ef92c6851da7bf..1fb6b704518ff44fa1604391d63854d2f123c9b9 100644 (file)
@@ -23,7 +23,7 @@ public class Ajc10xTests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc10x/ajc10x.xml");
+               return getClassResource("ajc10x.xml");
        }
 
        public void test001() {
index 06fa8b6a4d6bf1235a5ec7f6c66f74dc85911fd8..01ea96560e283775980d0c9062468029b7032c16 100644 (file)
@@ -22,7 +22,7 @@ public class Ajc11Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc11/ajc11.xml");
+               return getClassResource("ajc11.xml");
        }
 
        public void test001() {
index da8a40cc6e858daba5a711707d93f738563596cc..8e1ef8789961f0b84a9b77f8e63340f6b708a2aa 100644 (file)
@@ -20,7 +20,7 @@ public class Ajc120Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc120/ajc120.xml");
+    return getClassResource("ajc120.xml");
   }
 
 
index bc5abcc62c3f0deb66b76fbaa313094ad2e2d45c..e1ae534bffd37814a3cd7c3a87ffb6d0a6d910df 100644 (file)
@@ -25,7 +25,7 @@ public class Ajc121Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc121/ajc121.xml");
+    return getClassResource("ajc121.xml");
   }
 
 
index 8a8505d8ad0770c43d806577c7dc02b4a3888429..e9348f49c24938255a01ae6fcb0a11df9b1b35ed 100644 (file)
@@ -49,7 +49,7 @@ public class AccBridgeMethods extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+    return getClassResource("ajc150.xml");
   }
 
   
index 592747c625eb2b7d9cc20a7869639f39ff45fe03..0c21e3fcce865b287cc9c53da95d40d75873207b 100644 (file)
@@ -31,7 +31,7 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
 
        public void testMixingCodeStyles_pr121385() {
index 7d5bd2a6b69edffd4d2e03931867eea61cbee0b1..63cebdb06ff59e25596335baa44543fe55ce6860 100644 (file)
@@ -28,7 +28,7 @@ public class AnnotationBinding extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
 
        // /////////////////////////////////// @ANNOTATION and CALL
index 44a4b5cdd0d6b11f3fce6a7de0f2b7a316eff441..4301a44c05b2e8f4cd99c6b521901cd0c503ba5d 100644 (file)
@@ -27,7 +27,7 @@ public class AnnotationPointcutsTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
          
   // before(): call(@SimpleAnnotation * *(..)) { }
index 13d3d7f66c421f64ac29ac68db63d52353235880..e1d83a6cc665378adda8a20a574dbd526ae49ecd 100644 (file)
@@ -26,7 +26,7 @@ public class AnnotationRuntimeTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
     
 //    No longer a limitation ASC 31Jan05
index ad7036f0cadad2b96b251fba89e285797afc45c7..cec4665a7148a2a79eec02b1fa7cb364c22e6efb 100644 (file)
@@ -35,7 +35,7 @@ public class AnnotationsBinaryWeaving extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
        
   // Cannot make ITD (c/m/f) on an annotation
index 47b2c1bb33d36bcf7f17cc1c35ef0b3fddf85624..46a261e244eba146cdf48f75c8b38d91d92dd934 100644 (file)
@@ -27,7 +27,7 @@ public class Autoboxing extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
        
        public void testSimpleBoxing() {
index 6d92eaacac68fce4e2416308960435a5650477f7..6623949690a5f81e41b598c687d843eccacdafb7 100644 (file)
@@ -63,7 +63,7 @@ public class CovarianceTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
        private boolean verbose = false;
 
index 6ccca0e1558bcc211fde310fdf099ee4f3638fe8..28d48c6ca0b159416d829d791feb0eac9206449b 100644 (file)
@@ -28,7 +28,7 @@ public class DeclareAnnotationTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
 
        // parsing the various forms of declare @
index 1696b3dd51f81c2ba5e1831d48d610c6a7122e33..7f7f8bac4674635e391cab217330dcc06604e545 100644 (file)
@@ -37,7 +37,7 @@ public class Enums extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
          
   // Cannot make ITDC on an enum
index 542c47554f7895879f4c881a9939318df3b53e89..dfedf65a016649ba6db267248851b6d4b93c0c59 100644 (file)
@@ -36,7 +36,7 @@ public class GenericITDsDesign extends XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
 
        private void verifyDebugString(ResolvedMember theMember, String string) {
index b7e20f2cb8660425a87600ac0f28a1d9d95e8696..21efa3328beebef71c5cf52b3506bf1532aecf63 100644 (file)
@@ -185,7 +185,7 @@ public class GenericsTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
        
        public void testITDReturningParameterizedType() {
index 5539133279931e806162965c2d946ab1c5450571..57e053b9b1f886ed2f9247900338580f58627587 100644 (file)
@@ -23,7 +23,7 @@ public class HasMember extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
 
          public void testSimpleDecPHasMethod() {
index 1d3f43afa329ea8f66483ae831424011c31649bb..a9322b0866e202fb6910bc1c1281ad6f4c042bd2 100644 (file)
@@ -27,7 +27,7 @@ public class MigrationTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
   /**
    * Compile a simple java class with an aspect library built with aspectj 1.2.1 - this
index 0de905919540e80ef07115fb516a43320869b744..5ad7894854cfdaa50def041a8327df709de0414d 100644 (file)
@@ -26,7 +26,7 @@ public class PerTypeWithinTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
   
   /**
@@ -67,10 +67,10 @@ public class PerTypeWithinTests extends XMLBasedAjcTestCase {
    * infrastructure is properly hidden in ajc$ or synthetic members)
    */
   public void testPervasivenessOfWeaving() {
-       CompilationResult cR = ajc(new File("../tests/java5/pertypewithin"),new String[]{"U.java","-showWeaveInfo"});
+       CompilationResult cR = ajc(new File("tests/java5/pertypewithin"),new String[]{"U.java","-showWeaveInfo"});
        int weavingMessagesFromNormalDeploymentModel = cR.getWeaveMessages().size();
 
-    cR = ajc(new File("../tests/java5/pertypewithin"),new String[]{"V.java","-showWeaveInfo"});
+    cR = ajc(new File("tests/java5/pertypewithin"),new String[]{"V.java","-showWeaveInfo"});
        int weavingMessagesFromPerTypeWithin = cR.getWeaveMessages().size();
 
        assertEquals("Expected same number of messages regardless of perclause",
index 0ece3bd0b1a399498b1396b96401d2d183201749..676c2b01417dbad2477d2372de1cc0220c632f3a 100644 (file)
@@ -16,7 +16,7 @@ public class RuntimeAnnotations extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+               return getClassResource("ajc150.xml");
        }
 
        public void test01() {
index ff57458f0a751952c56147a0d40fef48fe43db46..71b82f4e43da866e2d1b13fbdf70d6566084eee0 100644 (file)
@@ -23,7 +23,7 @@ public class StaticImports extends XMLBasedAjcTestCase {
    }
 
    protected File getSpecFile() {
-     return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+     return getClassResource("ajc150.xml");
    }
    
   public void testImportStaticSystemDotOut() {
index 2e8c3f05fd390e201f99743d898680645ec0a65e..0a830018e28412ff32bd3b1cf2649b8edf0512f8 100644 (file)
@@ -23,7 +23,7 @@ public class SuppressedWarnings extends XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+    return getClassResource("ajc150.xml");
   }
   
   // Check basic suppression
index fea81bd36633d2daeaa8906cb76b55e8fc09f8af..7592f7c6df788056084fe0322a50a6b586c6a0b6 100644 (file)
@@ -30,7 +30,7 @@ public class VarargsTests extends XMLBasedAjcTestCase {
          }
 
          protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+           return getClassResource("ajc150.xml");
          }
          
   // check when signature is from a call PCD
index 78c70596d1fb7b01e87c63e89cd294b9c3ca3dac..bfbc289f6e1b7337b2760db4082dc7438a66a2a1 100644 (file)
@@ -6,7 +6,7 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- * initial development             Jonas Bonér, Alexandre Vasseur 
+ * initial development             Jonas Bon�r, Alexandre Vasseur 
  *******************************************************************************/
 package org.aspectj.systemtest.ajc150.ataspectj;
 
@@ -28,7 +28,7 @@ public class AtAjAnnotationGenTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-         return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/annotationgen.xml");
+         return getClassResource("annotationgen.xml");
        }
        
        public void testSimpleAspect() {
index e28d1af4eb3b44306a3d475023ad7acad40684ec..966642da27d4c2654f01f40a7ddea00f625b1678 100644 (file)
@@ -28,7 +28,7 @@ public class AtAjLTWTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/ltw.xml");
+    return getClassResource("ltw.xml");
        }
 
        public void testRunThemAllWithJavacCompiledAndLTW() {
index 037615be3e35cc7d53eabf0cd098fe74030afaaf..0f13e8f8b290295e7e633c1032655a1764f25eff 100644 (file)
@@ -22,7 +22,7 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
 public class AtAjMisuseTests extends XMLBasedAjcTestCase {
 
     protected File getSpecFile() {
-        return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/misuse.xml");
+        return getClassResource("misuse.xml");
     }
 
     public static Test suite() {
index 10c3fd9aed2b76169dbd6bbc880afe9997c2b0ce..794fce907acf438f86a207f03f54b5d9ddba0f8d 100644 (file)
@@ -29,7 +29,7 @@ public class AtAjSyntaxTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ataspectj/syntax.xml");
+               return getClassResource("syntax.xml");
        }
 
        public void testSimpleBefore() {
index b187c609bd0bc044d78135f202f1d49358a1b4d4..d73e594b9ed84714f52af78801c495ae73cc8318 100644 (file)
@@ -13,7 +13,7 @@ public class LTWServerTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc150/ltw/ltw.xml");
+               return getClassResource("ltw.xml");
        }
     
        public void testServerWithHelloWorld () {
index 443018bb6f58feae6a102234cf8d5d2535ec17d0..2b35896b9029705b1102877eedfc072fefda7b50 100644 (file)
@@ -27,7 +27,7 @@ public class LTWTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc150/ltw/ltw.xml");
+    return getClassResource("ltw.xml");
   }
   
   public void testInclusionAndPattern() {
index 311872c098d2d1623c74e3e38381d893c27fec0c..24c9057c37f0a6163634dcb5fb773a3c949ab438 100644 (file)
@@ -1,5 +1,5 @@
 <!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[
-<!ENTITY tests SYSTEM "../tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml">
+<!ENTITY tests SYSTEM "tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml">
 ]>
 
 <!-- Load-time weaving tests -->
index c24b5bddc9adc79c5d16b556a3335d2c8f90b27a..5b3c795d4c5695b572ca96c6f232e312d76399dc 100644 (file)
@@ -279,7 +279,7 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc151/ajc151.xml");
+               return getClassResource("ajc151.xml");
        }
 
 }
\ No newline at end of file
index e64b8945b3e7c191b1e441fc28f1f3ad7c3e789a..9512e8db4e0622f5c64fea655f77d146439a048e 100644 (file)
@@ -83,7 +83,7 @@ public class AtAroundTests extends XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc151/ataround.xml");
+    return getClassResource("ataround.xml");
   }
        
 }
index d1627196062199d936840c8dbb5d94efafc92902..4b21319d04862ac77b128f7881d0c66740a8f5f6 100644 (file)
@@ -119,7 +119,7 @@ public class NewarrayJoinpointTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc151/newarray_joinpoint.xml");
+               return getClassResource("newarray_joinpoint.xml");
        }
 
 }
index 8767922428c63b0e4bb5fc9b95b53a4a3837d4f5..c1bf294754efb78cf72252926a317266047e7b65 100644 (file)
@@ -31,7 +31,7 @@ public class SerialVersionUIDTests extends XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc151/serialversionuid.xml");
+    return getClassResource("serialversionuid.xml");
   }
        
 }
index 228824e6d853029c30afb0179a0381773b30056c..d0ced61799f011d6c3573c7e5afbabdbddba099e 100644 (file)
@@ -378,7 +378,7 @@ public class Ajc152Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc152/ajc152.xml");
+               return getClassResource("ajc152.xml");
        }
 
 }
\ No newline at end of file
index 6e9e3dd425d05bcfe26877cfb42ae43f54cf6059..47baa29402b848ee4c83baf17d18766442bf7e67 100644 (file)
@@ -255,7 +255,7 @@ public class SynchronizationTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc152/synchronization.xml");
+               return getClassResource("synchronization.xml");
        }
 
 }
index 5b5b8b2902f14ae9b6013a8d07a5efc15d11bc61..64fa5a17425f1393c92f34dbc01b6b1a5e4959a4 100644 (file)
@@ -301,7 +301,7 @@ public class SynchronizationTransformTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc152/synchronization.xml");
+    return getClassResource("synchronization.xml");
        }
 
        public void tearDown() {
index a25c6f91de66428662200a948802b9083b5cef56..304e34898ac36a5f1cb00e5e0aef764ef275ef71 100644 (file)
@@ -502,7 +502,7 @@ public class Ajc153Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc153/ajc153.xml");
+               return getClassResource("ajc153.xml");
        }
 
 }
\ No newline at end of file
index c2f586b4aeb45bf9926efc8a313d294232723ee8..e26c8c90b5adc69a763fd99d63a6197a03c48e1e 100644 (file)
@@ -547,7 +547,7 @@ public class JDTLikeHandleProviderTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc153/jdtlikehandleprovider.xml");
+               return getClassResource("jdtlikehandleprovider.xml");
        }
 
 }
index 151af029dc5a7909c8888429292fe321940b969c..b307cb30abe97e5c4c08e232485226b107defbf7 100644 (file)
@@ -13,7 +13,7 @@ public class LTWServer153Tests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc153/ajc153.xml");
+           return getClassResource("ajc153.xml");
        }
     
        public void testHandleDuplicateConfiguration_pr157474 () {
index 1e93e77404dd854b28026e2a42a56d568b3e9d7b..9edd0451526b975a2f294ecfc8824b823c2a5eec 100644 (file)
@@ -84,6 +84,6 @@ public class PipeliningTests extends org.aspectj.testing.XMLBasedAjcTestCase {
     return XMLBasedAjcTestCase.loadSuite(PipeliningTests.class);
   }
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc153/pipelining.xml");
+    return getClassResource("pipelining.xml");
   }
 }
\ No newline at end of file
index 6c9be21ff12189d5320c507f1a5f9b559820820c..7a025d7969cd467f6583e76091620ca6526380ed 100644 (file)
@@ -354,7 +354,7 @@ public class Ajc154Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc154/ajc154.xml");
+               return getClassResource("ajc154.xml");
        }
 
        // ---
index 6a93f3a531646431fe306b9421f3135f5f26667b..5f5162b0dbabb2cfa532e440f48ae1a2770f1761 100644 (file)
@@ -148,7 +148,7 @@ public class Ajc160Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc160/ajc160.xml");
+               return getClassResource("ajc160.xml");
        }
 
 }
\ No newline at end of file
index 85df301249de73038c1f275b3a46546a46408353..d26cb9856e265e2c2bc684e2302860816b1dfb56 100644 (file)
@@ -50,6 +50,6 @@ public class AnnotationValueMatchingTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc160/annotationValueMatching.xml");
+           return getClassResource("annotationValueMatching.xml");
        }
 }
index 0fbb0e661da6f07de6ff316326ae9d9f75f46292..03c8d4f503ace33d46d4f46010e742b2abd6b18b 100644 (file)
@@ -28,7 +28,7 @@ public class NewFeatures extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/ajc160/newfeatures-tests.xml");
+    return getClassResource("newfeatures-tests.xml");
   }
 
   
index 166ad09eba7263d1847de226c6fc992aff897b54..95a3f218f81b6ac57db9c8c898b22380d7588b8a 100644 (file)
@@ -93,6 +93,6 @@ public class ParameterAnnotationMatchingTests extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc160/parameterAnnotations.xml");
+           return getClassResource("parameterAnnotations.xml");
        }
 }
index 07cdbc83b6ac50f6daedcd86934a94aa329c5a8e..5d0462c99094f61e136ba1489e1575c9fbf7c5ac 100644 (file)
@@ -156,7 +156,7 @@ public class SanityTests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc160/sanity-tests.xml");
+               return getClassResource("sanity-tests.xml");
        }
 
 }
index 72f29fe17dfdc9d4b798a8a57c6c9d7606f1edb9..cbe5e788b19cccad834ea55c5277680c3c358615 100644 (file)
@@ -198,7 +198,7 @@ public class Ajc161Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc161/ajc161.xml");
+               return getClassResource("ajc161.xml");
        }
 
 }
\ No newline at end of file
index 6f8ec319f97ed96314a3b396601a3e9a4e7780b8..6755a3ef61603d3598b81e2645af665dbc63f72a 100644 (file)
@@ -67,6 +67,6 @@ public class OptimizedAnnotationFieldBinding extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-           return new File("../tests/src/org/aspectj/systemtest/ajc161/annotationFieldBinding.xml");
+           return getClassResource("annotationFieldBinding.xml");
        }
 }
index f71420923c7e4cd40584b9883c89efde6bb3bea9..80d85d9e8fb1165ca2bf29caf168ab37acf8963d 100644 (file)
@@ -61,7 +61,7 @@ public class Ajc1610Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc1610/ajc1610.xml");
+               return getClassResource("ajc1610.xml");
        }
 
 }
\ No newline at end of file
index 68f1384ad86b929ffa14597b5add386f721478dd..b9de3dff7a003eaa4b486d21d5a5530420706c35 100644 (file)
@@ -145,7 +145,7 @@ public class NewFeatures extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc1610/newfeatures-tests.xml");
+               return getClassResource("newfeatures-tests.xml");
        }
 
 }
\ No newline at end of file
index c55eb47efdb744684940ca0fea3dad5ace7fe84c..1c857eb826dc2b6ae11b70c7d36d0119d1690a7e 100644 (file)
@@ -123,7 +123,7 @@ public class Ajc1611Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc1611/ajc1611.xml");
+               return getClassResource("ajc1611.xml");
        }
 
 }
\ No newline at end of file
index 3df8d1a00293e8c4aa9091ac50964ccd2b2a5e27..58a8f0ae251f0f3ae365e4b044d2621a5105deb1 100644 (file)
@@ -71,7 +71,7 @@ public class NewFeatures extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc1611/newfeatures-tests.xml");
+               return getClassResource("newfeatures-tests.xml");
        }
 
 }
\ No newline at end of file
index eb5c5b36b34d93daf09e27f91b9dd2f4016e6358..347b63e1726fb876e41abf66b60f244b53aead4c 100644 (file)
@@ -414,7 +414,7 @@ public class Ajc1612Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc1612/ajc1612.xml");
+               return getClassResource("ajc1612.xml");
        }
 
 }
\ No newline at end of file
index 957c50aa95caad14733dcc6d3ee5a3380a4f5584..fb42a63510fcce95456e472aee6f157624ec64c9 100644 (file)
@@ -217,7 +217,7 @@ public class Ajc162Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc162/ajc162.xml");
+               return getClassResource("ajc162.xml");
        }
 
 }
\ No newline at end of file
index 2b2f5c70aed6594c66dfc291677990b3d310cb17..224f695efb18e353c314c83623184a7358b25b9c 100644 (file)
@@ -306,7 +306,7 @@ public class Ajc163Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc163/ajc163.xml");
+               return getClassResource("ajc163.xml");
        }
 
        // ---
index 155792ca013c71c64c338ac175cac6e23a523f1a..58de6b44772e40250638956e547ff70699e10d0e 100644 (file)
@@ -417,7 +417,7 @@ public class Ajc164Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc164/ajc164.xml");
+               return getClassResource("ajc164.xml");
        }
 
        private IProgramElement findElementAtLine(IProgramElement whereToLook, int line) {
index ec5030f1497b634ff8b366ac8d6446a733b90554..a8e9b6875d6b6edd00198be04d0816e94b070558 100644 (file)
@@ -151,7 +151,7 @@ public class DeclareMixinTests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc164/declareMixin.xml");
+               return getClassResource("declareMixin.xml");
        }
 
 }
\ No newline at end of file
index 32716e66cfe3fea11587a9a5cb34a20c935391df..68f769af62ea1eea6ec852711d66708831a540de 100644 (file)
@@ -33,7 +33,7 @@ public class JointpointIdTests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc164/joinpointid.xml");
+               return getClassResource("joinpointid.xml");
        }
 
 }
\ No newline at end of file
index 1f13e3603991c37b6e69c6d06de8ea0e637a8db3..441e0b4e6282ba31db3408094e727cb177ac283d 100644 (file)
@@ -116,7 +116,7 @@ public class Ajc165Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc165/ajc165.xml");
+               return getClassResource("ajc165.xml");
        }
 
 }
\ No newline at end of file
index 59265110e20cb7e8ab0ed8bef348c84c148e208b..4622ae49252d2e3f229f8a339d591e4d7e7250eb 100644 (file)
@@ -99,7 +99,7 @@ public class Ajc166Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc166/ajc166.xml");
+               return getClassResource("ajc166.xml");
        }
 
 }
\ No newline at end of file
index 28e1bd918ccc54313638e88706f72a0d0542e1a1..7360222ba7a06e799e59832c4d1ec72fbd95f4fc 100644 (file)
@@ -83,7 +83,7 @@ public class Ajc167Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc167/ajc167.xml");
+               return getClassResource("ajc167.xml");
        }
 
 }
\ No newline at end of file
index daff188425cad76d3ed837efaa67d50bf52869e1..ebd66a0b59f57b656054323c36995727cbc80edc 100644 (file)
@@ -78,7 +78,7 @@ public class OverweavingTests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc167/overweaving.xml");
+               return getClassResource("overweaving.xml");
        }
 
 }
\ No newline at end of file
index cfbcefcd465474035d9479bb5b83eb369f0d155a..3aff31ca8279032efcfb682e9824f1ded8064616 100644 (file)
@@ -247,7 +247,7 @@ public class Ajc169Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc169/ajc169.xml");
+               return getClassResource("ajc169.xml");
        }
 
 }
\ No newline at end of file
index 8a8df7cb43629c5d103b1e6bc023a157aaadf39d..5099a929bc4b8fd2e3464bbb4510275b6d2467b9 100644 (file)
@@ -208,7 +208,7 @@ public class IntertypeTests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc169/intertype.xml");
+               return getClassResource("intertype.xml");
        }
 
 }
\ No newline at end of file
index a64c390da90981f21844ab6fb1ecc3a0268e76a4..a32f4f15e412506883195fb1d81346895792a0b1 100644 (file)
@@ -238,7 +238,7 @@ public class TransparentWeavingTests extends org.aspectj.testing.XMLBasedAjcTest
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc169/transparentweaving.xml");
+               return getClassResource("transparentweaving.xml");
        }
 
 }
\ No newline at end of file
index c21fc77b29f5c72ac69786c57f528c9791075a54..922ac483a07b2e7ce0bd12ea3afb79788fa55be8 100644 (file)
@@ -69,7 +69,7 @@ public class Ajc171Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc171/ajc171.xml");
+               return getClassResource("ajc171.xml");
        }
 
 }
index 083c56caf07b2be9b8cbb2d74be0ae178a5d114b..c4c10d1fa72754d2d54e6eea18baefbaa7046226 100644 (file)
@@ -204,7 +204,7 @@ public class Ajc172Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc172/ajc172.xml");
+               return getClassResource("ajc172.xml");
        }
 
 }
index 774cb84e6cf0691e76e887e599a4d1a3fbde58e9..5e007441f508725d99e979645f245b03ef488470 100644 (file)
@@ -78,7 +78,7 @@ public class Ajc173Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc173/ajc173.xml");
+               return getClassResource("ajc173.xml");
        }
 
 }
index e647532fd4769c3e347ac0f294d59e4ce2c56596..274fc892c14fe8f0188dce18b6ed89d389e5feae 100644 (file)
@@ -90,7 +90,7 @@ public class Ajc174Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc174/ajc174.xml");
+               return getClassResource("ajc174.xml");
        }
 
 }
index 7a31126c5991a40e663323f15006e3bc46fd9493..2296c8e59023f95e8bab05d85258f7edd1906326 100644 (file)
@@ -36,7 +36,7 @@ public class Ajc175Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc175/ajc175.xml");
+               return getClassResource("ajc175.xml");
        }
 
        public static void main(String[] args) {
index 24a05d4c55e8f42a1cce46d64c472b052ea2fa76..558179f0aec90f635b6b38286f9e0c2a067c874e 100644 (file)
@@ -53,7 +53,7 @@ public class Ajc180Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc180/ajc180.xml");
+               return getClassResource("ajc180.xml");
        }
 
 }
index 24c07b03f5c35ab05ec5d0c11b95b620ea472d4b..a15231dcf544f7ccb8d1f0460916be29974226fc 100644 (file)
@@ -60,7 +60,7 @@ public class Ajc181Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
 
        @Override
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/ajc181/ajc181.xml");
+        return getClassResource("ajc181.xml");
        }
 
 }
index f06fccc32ba7e58787cfe558b2b4d2352fd31af9..a6c89f895c6995fc998d59f9952cb73a2062aff2 100644 (file)
@@ -12,6 +12,7 @@ package org.aspectj.systemtest.ajc181;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
+import org.aspectj.systemtest.apt.AptTests;
 
 public class AllTestsAspectJ181 {
 
@@ -19,6 +20,7 @@ public class AllTestsAspectJ181 {
                TestSuite suite = new TestSuite("AspectJ 1.8.1 tests");
                // $JUnit-BEGIN$
                suite.addTest(Ajc181Tests.suite());
+               suite.addTest(AptTests.suite());
                // $JUnit-END$
                return suite;
        }
diff --git a/tests/src/org/aspectj/systemtest/apt/AllTestsApt.java b/tests/src/org/aspectj/systemtest/apt/AllTestsApt.java
new file mode 100644 (file)
index 0000000..fbba0be
--- /dev/null
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Contributors
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Andy Clement - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.systemtest.apt;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTestsApt {
+
+       public static Test suite() {
+               TestSuite suite = new TestSuite("Annotation processing tests");
+               // $JUnit-BEGIN$
+               suite.addTest(AptTests.suite());
+               // $JUnit-END$
+               return suite;
+       }
+}
diff --git a/tests/src/org/aspectj/systemtest/apt/AptTests.java b/tests/src/org/aspectj/systemtest/apt/AptTests.java
new file mode 100644 (file)
index 0000000..74df34e
--- /dev/null
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Contributors
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Andy Clement - initial API and implementation
+ *******************************************************************************/
+package org.aspectj.systemtest.apt;
+
+import junit.framework.Test;
+import org.aspectj.apache.bcel.classfile.Method;
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+import java.io.File;
+import java.nio.file.Files;
+
+/**
+ * Annotation processing tool tests.
+ *
+ * @author Sergey Stupin.
+ */
+public class AptTests extends XMLBasedAjcTestCase {
+
+       public void testAptWithSpecifiedProcessor() {
+               runTest("annotation processing with specified processor");
+       }
+
+    /**
+     * SPI - http://docs.oracle.com/javase/tutorial/sound/SPI-intro.html
+     */
+    public void testAptUsingSPI() {
+        runTest("annotation processing in action using SPI");
+    }
+
+    public void testDisabledApt() {
+        runTest("disabled annotation processing");
+    }
+
+       public static Test suite() {
+               return XMLBasedAjcTestCase.loadSuite(AptTests.class);
+       }
+
+       @Override
+       protected File getSpecFile() {
+        return getClassResource("apt-spec.xml");
+       }
+
+}
diff --git a/tests/src/org/aspectj/systemtest/apt/apt-spec.xml b/tests/src/org/aspectj/systemtest/apt/apt-spec.xml
new file mode 100644 (file)
index 0000000..c1d34bd
--- /dev/null
@@ -0,0 +1,88 @@
+<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd"[]>
+
+<suite>
+
+    <ajc-test dir="apt" title="annotation processing with specified processor">
+        <compile options="-1.8" files="processor/Event.java processor/SimpleProcessor.java"
+                 outjar="annotation_processor.jar"/>
+        <!--
+                SimpleProcessor should generate 2 files for each java class that utilizes @Event annotation:
+                    - {className}EventsAspect.aj - this file describes aspect with advices to weaving method annotated with @Event.
+                    - {className}Callbacks.java - this file contains callback interfaces for methods annotated with @Event. Example:
+                            public final class SomeCallbacks {
+                                public interface OnMethod1 {
+                                    void changed(Some emmiter);
+                                }
+                            }
+         -->
+        <compile options="-1.8 -processor test.SimpleProcessor -s generated -showWeaveInfo" files="src/Some.java"
+                 classpath="annotation_processor.jar" outjar="code.jar">
+            <message kind="weave"
+                     text="Type 'test.Some' (Some.java) has intertyped field from 'test.SomeEventsAspect' (SomeEventsAspect.aj:'test.SomeEventsAspect$SomeOnMethod1Event test.Some.OnMethod1Event')"/>
+            <message kind="weave"
+                     text="Join point 'method-execution(void test.Some.method1())' in Type 'test.Some' (Some.java:14) advised by before advice from 'test.SomeEventsAspect' (SomeEventsAspect.aj:44)"/>
+        </compile>
+        <run class="test.Some">
+            <stdout>
+                <line text="callback registered from before aspect"/>
+                <line text="method1 is invoked"/>
+            </stdout>
+        </run>
+    </ajc-test>
+
+    <ajc-test dir="apt" title="annotation processing in action using SPI">
+        <!--
+        what is SPI is described here - http://docs.oracle.com/javase/tutorial/sound/SPI-intro.html
+        -->
+        <!--<compile options="-1.8" files="processor/Event.java processor/SimpleProcessor.java" outjar="annotation_processors_with_spi.jar"/>-->
+        <compile options="-1.8 -sourceroots processor" inpath="processor/" outjar="annotation_processor.jar"/>
+        <!--
+                SimpleProcessor should generate 2 files for each java class that utilizes @Event annotation:
+                    - {className}EventsAspect.aj - this file describes aspect with advices to weaving method annotated with @Event.
+                    - {className}Callbacks.java - this file contains callback interfaces for methods annotated with @Event. Example:
+                            public final class SomeCallbacks {
+                                public interface OnMethod1 {
+                                    void changed(Some emmiter);
+                                }
+                            }
+         -->
+
+        <!--apt_service_description.jar contains only SPI descrition file - META-INF/services/javax.annotation.processing.Processor-->
+        <compile options="-1.8 -s generated -showWeaveInfo" files="src/Some.java"
+                 classpath="annotation_processor.jar;apt_service_description.jar" outjar="code.jar">
+            <message kind="weave"
+                     text="Type 'test.Some' (Some.java) has intertyped field from 'test.SomeEventsAspect' (SomeEventsAspect.aj:'test.SomeEventsAspect$SomeOnMethod1Event test.Some.OnMethod1Event')"/>
+            <message kind="weave"
+                     text="Join point 'method-execution(void test.Some.method1())' in Type 'test.Some' (Some.java:14) advised by before advice from 'test.SomeEventsAspect' (SomeEventsAspect.aj:44)"/>
+        </compile>
+
+        <run class="test.Some">
+            <stdout>
+                <line text="callback registered from before aspect"/>
+                <line text="method1 is invoked"/>
+            </stdout>
+        </run>
+    </ajc-test>
+
+    <ajc-test dir="apt" title="disabled annotation processing">
+        <compile options="-1.8" files="processor/Event.java processor/SimpleProcessor.java"
+                 outjar="annotation_processor.jar"/>
+        <!--
+                SimpleProcessor should generate 2 files for each java class that utilizes @Event annotation:
+                    - {className}EventsAspect.aj - this file describes aspect with advices to weaving method annotated with @Event.
+                    - {className}Callbacks.java - this file contains callback interfaces for methods annotated with @Event. Example:
+                            public final class SomeCallbacks {
+                                public interface OnMethod1 {
+                                    void changed(Some emmiter);
+                                }
+                            }
+         -->
+
+        <compile options="-1.8 -s generated -showWeaveInfo -proc:none" files="src/Some.java"
+                 classpath="annotation_processor.jar" outjar="code.jar">
+            <!--field was not injected, so error should occur-->
+            <message kind="error" text="OnMethod1Event cannot be resolved or is not a field"/>
+        </compile>
+    </ajc-test>
+
+</suite>
index f7388ee7fd2f893fd54224cea009507ddefbea88..3a77d2778065462a8d0b7748c09ba0f86b3e2c28 100644 (file)
@@ -20,7 +20,7 @@ public class AspectPathTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/aspectpath/aspectpath.xml");
+    return getClassResource("aspectpath.xml");
   }
 
 
index 23f450897bdc2c36d5687dd7d47ca446be959df2..e85d327c7f0ef9d6d66cf9235c37ddd83a255f26 100644 (file)
@@ -20,7 +20,7 @@ public class BaseTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/base/baseTests.xml");
+    return getClassResource("baseTests.xml");
   }
 
 
index 52d2f07c324b61003df02722307ef70f162e6a75..3a19663a6d4dd730f49ac148f1075612151bbc7b 100644 (file)
@@ -20,7 +20,7 @@ public class DesignTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/design/design.xml");
+    return getClassResource("design.xml");
   }
 
 
index c977cd8135ade07cae22b182cf988505bc9573d8..a499e14216507862413c2b28686efc28cfd05801 100644 (file)
@@ -25,7 +25,7 @@ public class IncrementalTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/incremental/incremental.xml");
+    return getClassResource("incremental.xml");
   }
 
 
index a9f1199733eead100a0d5142fc9f1d6f762be937..a2ce02c0cbe67a1e07a3b8ad6ebbcb1da4f812cd 100644 (file)
@@ -24,7 +24,7 @@ public class IncrementalModelTests extends org.aspectj.testing.XMLBasedAjcTestCa
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/incremental/model/incremental-model.xml");
+               return getClassResource("incremental-model.xml");
        }
 
        // This first test doesnt do a lot currently, but is ready too...
index 3d177260b83f2df03a2dddde4799bc7d5bbe9278..ec2fd8d7b40219adb8f5ff26a7825ce4fde3e3e8 100644 (file)
@@ -20,7 +20,7 @@ public class InPathTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/inpath/inpath.xml");
+    return getClassResource("inpath.xml");
   }
 
 
index 3b56286d30ad7ecb00a96be177c4f553a8e0169d..d71b2ba4f6d0b40329ae026b0772425b1fe0587f 100644 (file)
@@ -23,7 +23,7 @@ public class Java14Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/java14/java14.xml");
+    return getClassResource("java14.xml");
   }
 
 
index edfb853e9888ea009065b736612d7a579ef28d89..3176803e4ce63cb7b07b1e0ac19a30af297d62e3 100644 (file)
@@ -87,7 +87,7 @@ public class Model5Tests extends ModelTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/model/model.xml");
+               return getClassResource("model.xml");
        }
 
 }
index 3031b27318b8e4c057d78af74c612db324355ea0..26b3887f7ef15dabe0fd90bd1565177a71c2a993 100644 (file)
@@ -108,7 +108,7 @@ public class ModelTests extends ModelTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/model/model.xml");
+               return getClassResource("model.xml");
        }
 
 }
index 08b5a5af20905c600b66eb4b8c2bb0190dad9840..80710a6ed054ce1ef2b5489686ffae34cc0bc51c 100644 (file)
@@ -20,7 +20,7 @@ public class OptionsTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/options/options.xml");
+    return getClassResource("options.xml");
   }
 
 
index 15f8fd824a0b1d72d4bba35ac824d03f7de9f039..be240a9beeb1da65b61f3ce637815be248c791a8 100644 (file)
@@ -20,7 +20,7 @@ public class AjcPre10xTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/pre10x/pre10x.xml");
+    return getClassResource("pre10x.xml");
   }
 
 
index add1e5909f236c29e63517af207801e0e9c76324..50c5dc216957fee614d639b73bf7dc8fd77d10a7 100644 (file)
@@ -20,7 +20,7 @@ public class SUIDTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/serialVerUID/serialVerUID.xml");
+    return getClassResource("serialVerUID.xml");
   }
 
 
index c144e48e89310c54d47acfba56d6b7234bfce14a..3e8b6d8dbefa5ddf9bacd1c79d813817ae6f41b1 100644 (file)
@@ -23,7 +23,7 @@ public class TracingTests extends org.aspectj.testing.XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/tracing/tracing.xml");
+               return getClassResource("tracing.xml");
        }
        
        public void testTracing () {
index e146b0280bbefab6aa83dc84f15c7d720e475064..35e5b05cadef0cb29aaf6a24f8673b5450f24308 100644 (file)
@@ -23,7 +23,7 @@ public class XLint5Tests  extends XMLBasedAjcTestCase {
        }
 
        protected File getSpecFile() {
-               return new File("../tests/src/org/aspectj/systemtest/xlint/xlint.xml");
+               return getClassResource("xlint.xml");
        }
          
        public void testBug99136(){
index 61942fef4b729278af15b2c7c0c4cde1cac0e356..c5a2b7fdfe0cc87de6a6d21218584bb4528bb9ef 100644 (file)
@@ -23,7 +23,7 @@ public class XLintTests extends org.aspectj.testing.XMLBasedAjcTestCase {
   }
 
   protected File getSpecFile() {
-    return new File("../tests/src/org/aspectj/systemtest/xlint/xlint.xml");
+    return getClassResource("xlint.xml");
   }
 
 
index 5269b50a601fdac242712e006d29c3330664996a..56b55042f3a4e4f01cb1d1ed9767a2032a0544bb 100644 (file)
@@ -245,7 +245,7 @@ public class FileUtil {
        /**
         * Extract the name of a class from the path to its file. If the basedir is null, then the class is assumed to be in the default
         * package unless the classFile has one of the top-level suffixes { com, org, java, javax } as a parent directory.
-        * 
+        *
         * @param basedir the File of the base directory (prefix of classFile)
         * @param classFile the File of the class to extract the name for
         * @throws IllegalArgumentException if classFile is null or does not end with ".class" or a non-null basedir is not a prefix of
@@ -288,7 +288,7 @@ public class FileUtil {
 
        /**
         * Normalize path for comparisons by rendering absolute, clipping basedir prefix, trimming and changing '\\' to '/'
-        * 
+        *
         * @param file the File with the path to normalize
         * @param basedir the File for the prefix of the file to normalize - ignored if null
         * @return "" if null or normalized path otherwise
@@ -310,7 +310,7 @@ public class FileUtil {
 
        /**
         * Render a set of files to String as a path by getting absolute paths of each and delimiting with infix.
-        * 
+        *
         * @param files the File[] to flatten - may be null or empty
         * @param infix the String delimiter internally between entries (if null, then use File.pathSeparator). (alias to
         *        <code>flatten(getAbsolutePaths(files), infix)</code>
@@ -325,7 +325,7 @@ public class FileUtil {
 
        /**
         * Flatten File[] to String.
-        * 
+        *
         * @param files the File[] of paths to flatten - null ignored
         * @param infix the String infix to use - null treated as File.pathSeparator
         */
@@ -352,7 +352,7 @@ public class FileUtil {
 
        /**
         * Normalize path for comparisons by rendering absolute trimming and changing '\\' to '/'
-        * 
+        *
         * @return "" if null or normalized path otherwise
         */
        public static String normalizedPath(File file) {
@@ -372,7 +372,7 @@ public class FileUtil {
        /**
         * Get best File for the first-readable path in input paths, treating entries prefixed "sp:" as system property keys. Safe to
         * call in static initializers.
-        * 
+        *
         * @param paths the String[] of paths to check.
         * @return null if not found, or valid File otherwise
         */
@@ -410,7 +410,7 @@ public class FileUtil {
 
        /**
         * Render as best file, canonical or absolute.
-        * 
+        *
         * @param file the File to get the best File for (not null)
         * @return File of the best-available path
         * @throws IllegalArgumentException if file is null
@@ -430,7 +430,7 @@ public class FileUtil {
 
        /**
         * Render as best path, canonical or absolute.
-        * 
+        *
         * @param file the File to get the path for (not null)
         * @return String of the best-available path
         * @throws IllegalArgumentException if file is null
@@ -464,7 +464,7 @@ public class FileUtil {
 
        /**
         * Recursively delete the contents of dir, but not the dir itself
-        * 
+        *
         * @return the total number of files deleted
         */
        public static int deleteContents(File dir) {
@@ -474,7 +474,7 @@ public class FileUtil {
        /**
         * Recursively delete some contents of dir, but not the dir itself. This deletes any subdirectory which is empty after its files
         * are deleted.
-        * 
+        *
         * @return the total number of files deleted
         */
        public static int deleteContents(File dir, FileFilter filter) {
@@ -484,7 +484,7 @@ public class FileUtil {
        /**
         * Recursively delete some contents of dir, but not the dir itself. If deleteEmptyDirs is true, this deletes any subdirectory
         * which is empty after its files are deleted.
-        * 
+        *
         * @param dir the File directory (if a file, the the file is deleted)
         * @return the total number of files deleted
         */
@@ -499,21 +499,28 @@ public class FileUtil {
                        dir.delete();
                        return 1;
                }
-               String[] fromFiles = dir.list();
-               int result = 0;
-               for (int i = 0; i < fromFiles.length; i++) {
-                       String string = fromFiles[i];
-                       File file = new File(dir, string);
-                       if ((null == filter) || filter.accept(file)) {
-                               if (file.isDirectory()) {
-                                       result += deleteContents(file, filter, deleteEmptyDirs);
-                                       if (deleteEmptyDirs && (0 == file.list().length)) {
-                                               file.delete();
-                                       }
-                               } else {
-                                       /* boolean ret = */file.delete();
-                                       result++;
-                               }
+    String[] fromFiles = dir.list();
+    if (fromFiles == null) {
+      return 0;
+    }
+    int result = 0;
+    for (int i = 0; i < fromFiles.length; i++) {
+      String string = fromFiles[i];
+      File file = new File(dir, string);
+      if ((null == filter) || filter.accept(file)) {
+        if (file.isDirectory()) {
+          result += deleteContents(file, filter, deleteEmptyDirs);
+          String[] fileContent = file.list();
+          if (deleteEmptyDirs &&
+                  fileContent != null &&
+                  0 == fileContent.length) {
+            file.delete();
+          }
+        } else {
+          /* boolean ret = */
+          file.delete();
+          result++;
+        }
                        }
                }
                return result;
@@ -521,7 +528,7 @@ public class FileUtil {
 
        /**
         * Copy contents of fromDir into toDir
-        * 
+        *
         * @param fromDir must exist and be readable
         * @param toDir must exist or be creatable and be writable
         * @return the total number of files copied
@@ -534,7 +541,7 @@ public class FileUtil {
         * Recursively copy files in fromDir (with any fromSuffix) to toDir, replacing fromSuffix with toSuffix if any. This silently
         * ignores dirs and files that are not readable but throw IOException for directories that are not writable. This does not clean
         * out the original contents of toDir. (subdirectories are not renamed per directory rules)
-        * 
+        *
         * @param fromSuffix select files with this suffix - select all if null or empty
         * @param toSuffix replace fromSuffix with toSuffix in the destination file name - ignored if null or empty, appended to name if
         *        fromSuffix is null or empty
@@ -584,7 +591,7 @@ public class FileUtil {
         * ignores dirs and files that are not readable but throw IOException for directories that are not writable. This does not clean
         * out the original contents of toDir. (subdirectories are not renamed per directory rules) This calls any delegate
         * FilenameFilter to collect any selected file.
-        * 
+        *
         * @param fromSuffix select files with this suffix - select all if null or empty
         * @param toSuffix replace fromSuffix with toSuffix in the destination file name - ignored if null or empty, appended to name if
         *        fromSuffix is null or empty
@@ -641,7 +648,7 @@ public class FileUtil {
 
        /**
         * Recursively list files in srcDir.
-        * 
+        *
         * @return ArrayList with String paths of File under srcDir (relative to srcDir)
         */
        public static String[] listFiles(File srcDir) {
@@ -661,7 +668,7 @@ public class FileUtil {
 
        /**
         * Recursively list files in srcDir.
-        * 
+        *
         * @return ArrayList with String paths of File under srcDir (relative to srcDir)
         */
        public static File[] listFiles(File srcDir, FileFilter fileFilter) {
@@ -674,7 +681,7 @@ public class FileUtil {
 
        /**
         * Recursively list .class files in specified directory
-        * 
+        *
         * @return List of File objects
         */
        public static List<File> listClassFiles(File dir) {
@@ -687,7 +694,7 @@ public class FileUtil {
 
        /**
         * Convert String[] paths to File[] as offset of base directory
-        * 
+        *
         * @param basedir the non-null File base directory for File to create with paths
         * @param paths the String[] of paths to create
         * @return File[] with same length as paths
@@ -698,7 +705,7 @@ public class FileUtil {
 
        /**
         * Convert String[] paths to File[] as offset of base directory
-        * 
+        *
         * @param basedir the non-null File base directory for File to create with paths
         * @param paths the String[] of paths to create
         * @param suffixes the String[] of suffixes to limit sources to - ignored if null
@@ -731,7 +738,7 @@ public class FileUtil {
 
        /**
         * Create a new File, resolving paths ".." and "." specially.
-        * 
+        *
         * @param dir the File for the parent directory of the file
         * @param path the path in the parent directory (filename only?)
         * @return File for the new file.
@@ -755,7 +762,7 @@ public class FileUtil {
         * Copy files from source dir into destination directory, creating any needed directories. This differs from copyDir in not
         * being recursive; each input with the source dir creates a full path. However, if the source is a directory, it is copied as
         * such.
-        * 
+        *
         * @param srcDir an existing, readable directory containing relativePaths files
         * @param relativePaths a set of paths relative to srcDir to readable File to copy
         * @param destDir an existing, writable directory to copy files to
@@ -785,7 +792,7 @@ public class FileUtil {
 
        /**
         * Copy fromFile to toFile, handling file-file, dir-dir, and file-dir copies.
-        * 
+        *
         * @param fromFile the File path of the file or directory to copy - must be readable
         * @param toFile the File path of the target file or directory - must be writable (will be created if it does not exist)
         */
@@ -825,7 +832,7 @@ public class FileUtil {
        /**
         * Ensure that the parent directory to path can be written. If the path has a null parent, DEFAULT_PARENT is tested. If the path
         * parent does not exist, this tries to create it.
-        * 
+        *
         * @param path the File path whose parent should be writable
         * @return the File path of the writable parent directory
         * @throws IllegalArgumentException if parent cannot be written or path is null.
@@ -845,7 +852,7 @@ public class FileUtil {
 
        /**
         * Copy file to file.
-        * 
+        *
         * @param fromFile the File to copy (readable, non-null file)
         * @param toFile the File to copy to (non-null, parent dir exists)
         * @throws IOException
@@ -896,7 +903,7 @@ public class FileUtil {
 
        /**
         * Make a new child directory of parent
-        * 
+        *
         * @param parent a File for the parent (writable)
         * @param child a prefix for the child directory
         * @return a File dir that exists with parentDir as the parent file or null
@@ -924,7 +931,7 @@ public class FileUtil {
        /**
         * Make a new temporary directory in the same directory that the system uses for temporary files, or if that files, in the
         * current directory.
-        * 
+        *
         * @param name the preferred (simple) name of the directory - may be null.
         * @return File of an existing new temp dir, or null if unable to create
         */
@@ -963,7 +970,7 @@ public class FileUtil {
 
        /**
         * Get URL for a File. This appends "/" for directories. prints errors to System.err
-        * 
+        *
         * @param file the File to convert to URL (not null)
         */
        @SuppressWarnings("deprecation")
@@ -988,7 +995,7 @@ public class FileUtil {
        /**
         * Write contents to file, returning null on success or error message otherwise. This tries to make any necessary parent
         * directories first.
-        * 
+        *
         * @param file the File to write (not null)
         * @param contents the String to write (use "" if null)
         * @return String null on no error, error otherwise
@@ -1221,7 +1228,7 @@ public class FileUtil {
 
        /**
         * Do line-based search for literal text in source files, returning file:line where found.
-        * 
+        *
         * @param sought the String text to seek in the file
         * @param sources the List of String paths to the source files
         * @param listAll if false, only list first match in file
@@ -1248,7 +1255,7 @@ public class FileUtil {
         * Do line-based search for literal text in source file, returning line where found as a String in the form
         * {sourcePath}:line:column submitted to the collecting parameter sink. Any error is rendered to String and returned as the
         * result.
-        * 
+        *
         * @param sought the String text to seek in the file
         * @param sources the List of String paths to the source files
         * @param listAll if false, only list first match in file
@@ -1305,7 +1312,7 @@ public class FileUtil {
 
        /**
         * Sleep until after the last last-modified stamp from the files.
-        * 
+        *
         * @param files the File[] of files to inspect for last modified times (this ignores null or empty files array and null or
         *        non-existing components of files array)
         * @return true if succeeded without 100 interrupts
@@ -1402,7 +1409,7 @@ public class FileUtil {
                        return url.toURI().getPath();
                } catch (URISyntaxException e) {
                        System.err.println("Warning!! Malformed URL may cause problems: "+url); // TODO: Better way to report this?
-                       // In this case it was likely not using properly escaped 
+                       // In this case it was likely not using properly escaped
                        // characters so we just use the 'bad' method that doesn't decode
                        // special chars
                        return url.getPath();
@@ -1411,7 +1418,7 @@ public class FileUtil {
 
        /**
         * A pipe when run reads from an input stream to an output stream, optionally sleeping between reads.
-        * 
+        *
         * @see #copyStream(InputStream, OutputStream)
         */
        public static class Pipe implements Runnable {
@@ -1437,7 +1444,7 @@ public class FileUtil {
 
                /**
                 * alias for <code>Pipe(in, out, 100l, false, false)</code>
-                * 
+                *
                 * @param in the InputStream source to read
                 * @param out the OutputStream sink to write
                 */
@@ -1523,7 +1530,7 @@ public class FileUtil {
 
                /**
                 * Tell the pipe to halt the next time it gains control.
-                * 
+                *
                 * @param wait if true, this waits synchronously until pipe is done
                 * @param finishStream if true, then continue until a read from the input stream returns no bytes, then halt.
                 * @return true if <code>run()</code> will return the next time it gains control