summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Clement <aclement@pivotal.io>2016-11-18 09:00:28 -0800
committerAndy Clement <aclement@pivotal.io>2016-11-18 09:00:28 -0800
commitb6f2b6337fbaf95b78c20862cd90f0e027509531 (patch)
treeda38bdf8ab392b0e6f49da7a676a75f885fe9b85
parente8be95bbfd291f93319d1a1e9920e44cd7eb7569 (diff)
downloadaspectj-b6f2b6337fbaf95b78c20862cd90f0e027509531.tar.gz
aspectj-b6f2b6337fbaf95b78c20862cd90f0e027509531.zip
Fix 500035: handling target only binding in @AJ pointcut
-rw-r--r--ajde/src/org/aspectj/ajde/Ajde.java2
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/generic/MethodGen.java2
-rw-r--r--bcel-builder/src/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.java6
-rw-r--r--bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ParameterAnnotationsTest.java2
-rw-r--r--bridge/src/org/aspectj/bridge/Version.java4
-rw-r--r--bridge/src/org/aspectj/bridge/context/PinpointingMessageHandler.java15
-rw-r--r--build/testsrc/org/aspectj/build/BuildModuleTests.java2
-rw-r--r--build/testsrc/org/aspectj/internal/build/BuildModuleTest.java2
-rw-r--r--build/testsrc/org/aspectj/internal/build/ModulesTest.java2
-rw-r--r--lib/aspectj/lib/aspectjrt.jarbin117093 -> 118776 bytes
-rw-r--r--lib/test/aspectjrt.jarbin117093 -> 118776 bytes
-rw-r--r--org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareParents.java4
-rw-r--r--runtime/src/org/aspectj/runtime/reflect/JoinPointImpl.java14
-rw-r--r--testing/src/org/aspectj/internal/tools/ant/taskdefs/Ajctest.java124
-rw-r--r--testing/src/org/aspectj/internal/tools/ant/taskdefs/MainWrapper.java4
-rw-r--r--testing/src/org/aspectj/testing/harness/bridge/AbstractRunSpec.java14
-rw-r--r--testing/src/org/aspectj/testing/harness/bridge/AjcMessageHandler.java6
-rw-r--r--testing/src/org/aspectj/testing/harness/bridge/DirChanges.java22
-rw-r--r--testing/src/org/aspectj/testing/harness/bridge/FlatSuiteReader.java16
-rw-r--r--tests/bugs1810/500035/Code.java30
-rw-r--r--tests/bugs1810/500035/Code2.java30
-rw-r--r--tests/bugs1810/500035/Code3.java76
-rw-r--r--tests/bugs1810/500035/Code4.java35
-rw-r--r--tests/bugs1810/501656/ApplicationException.java9
-rw-r--r--tests/bugs1810/501656/ApplicationExceptionHandler.java17
-rw-r--r--tests/bugs1810/501656/Code.java4
-rw-r--r--tests/bugs1810/501656/out/com/myapp/ApplicationException.classbin0 -> 499 bytes
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java5
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java7
-rw-r--r--tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java7
-rw-r--r--tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java13
-rw-r--r--tests/src/org/aspectj/systemtest/ajc180/AllTestsAspectJ180.java2
-rw-r--r--tests/src/org/aspectj/systemtest/ajc1810/Ajc1810Tests.java30
-rw-r--r--tests/src/org/aspectj/systemtest/ajc1810/ajc1810.xml68
-rw-r--r--tests/src/org/aspectj/systemtest/ajc182/AllTestsAspectJ182.java1
-rw-r--r--tests/src/org/aspectj/systemtest/ajc185/Ajc185Tests.java9
-rw-r--r--tests/src/org/aspectj/systemtest/ajc187/Ajc187Tests.java7
-rw-r--r--tests/src/org/aspectj/systemtest/ajc187/AllTestsAspectJ187.java1
-rw-r--r--tests/src/org/aspectj/systemtest/ajc188/AllTestsAspectJ188.java1
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/AjdeInteractionTestbed.java14
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/IncrementalOutputLocationManagerTests.java10
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java55
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/MultiProjTestOutputLocationManager.java6
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java13
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/OutputLocationManagerTests.java12
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelShadow.java16
46 files changed, 486 insertions, 233 deletions
diff --git a/ajde/src/org/aspectj/ajde/Ajde.java b/ajde/src/org/aspectj/ajde/Ajde.java
index bd1e77f42..2e25e50fc 100644
--- a/ajde/src/org/aspectj/ajde/Ajde.java
+++ b/ajde/src/org/aspectj/ajde/Ajde.java
@@ -101,7 +101,7 @@ public class Ajde {
INSTANCE.compilerConfig = compilerConfig;
INSTANCE.uiBuildMsgHandler = uiBuildMessageHandler;
INSTANCE.buildProgressMonitor = monitor;
- INSTANCE.asm = AsmManager.createNewStructureModel(Collections.EMPTY_MAP);
+ INSTANCE.asm = AsmManager.createNewStructureModel(Collections.<File,String>emptyMap());
INSTANCE.iconRegistry = iconRegistry;
INSTANCE.ideUIAdapter = ideUIAdapter;
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/generic/MethodGen.java b/bcel-builder/src/org/aspectj/apache/bcel/generic/MethodGen.java
index 21673dec0..3938beb35 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/generic/MethodGen.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/generic/MethodGen.java
@@ -1082,7 +1082,7 @@ public class MethodGen extends FieldGenOrMethodGen {
/**
* Return a list of AnnotationGen objects representing parameter annotations
*/
- public List getAnnotationsOnParameter(int i) {
+ public List<AnnotationGen> getAnnotationsOnParameter(int i) {
ensureExistingParameterAnnotationsUnpacked();
if (!hasParameterAnnotations || i > parameterTypes.length) {
return null;
diff --git a/bcel-builder/src/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.java b/bcel-builder/src/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.java
index 7a8c06224..a53b9dc35 100644
--- a/bcel-builder/src/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.java
+++ b/bcel-builder/src/org/aspectj/apache/bcel/util/NonCachingClassLoaderRepository.java
@@ -85,7 +85,7 @@ public class NonCachingClassLoaderRepository implements Repository {
private static java.lang.ClassLoader bootClassLoader = null;
private final ClassLoaderReference loaderRef;
- private final Map<String, JavaClass> loadedClasses = new SoftHashMap(); // CLASSNAME X JAVACLASS
+ private final Map<String, JavaClass> loadedClasses = new SoftHashMap();
public static class SoftHashMap extends AbstractMap {
private Map<Object, SpecialValue> map;
@@ -96,10 +96,10 @@ public class NonCachingClassLoaderRepository implements Repository {
}
public SoftHashMap() {
- this(new HashMap());
+ this(new HashMap<Object,SpecialValue>());
}
- public SoftHashMap(Map map, boolean b) {
+ public SoftHashMap(Map<Object,SpecialValue> map, boolean b) {
this(map);
}
diff --git a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ParameterAnnotationsTest.java b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ParameterAnnotationsTest.java
index 7dd83ddb7..093a4b6e4 100644
--- a/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ParameterAnnotationsTest.java
+++ b/bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/ParameterAnnotationsTest.java
@@ -262,7 +262,7 @@ public class ParameterAnnotationsTest extends BcelTestCase {
mg = new MethodGen(m,clg.getClassName(),clg.getConstantPool());
List<Attribute> as = mg.getAttributes();
assertTrue("Should be 2 (RIPA and RVPA) but there are "+mg.getAttributes().size(),mg.getAttributes().size()==2);
- List l = mg.getAnnotationsOnParameter(0);
+ List<AnnotationGen> l = mg.getAnnotationsOnParameter(0);
assertTrue("Should be 2 annotations on first parameter but there is only "+l.size()+":"+l.toString(),
l.size()==2);
assertTrue("Should be 0 but there are "+mg.getAttributes().size(),mg.getAttributes().size()==0);
diff --git a/bridge/src/org/aspectj/bridge/Version.java b/bridge/src/org/aspectj/bridge/Version.java
index 028cdd96d..835127c75 100644
--- a/bridge/src/org/aspectj/bridge/Version.java
+++ b/bridge/src/org/aspectj/bridge/Version.java
@@ -37,13 +37,13 @@ public class Version {
* Time text set by build script using SIMPLE_DATE_FORMAT.
* (if DEVELOPMENT version, invalid)
*/
- public static final String time_text = "";
+ public static final String time_text = "Friday Nov 18, 2016 at 16:34:52 GMT";
/**
* time in seconds-since-... format, used by programmatic clients.
* (if DEVELOPMENT version, NOTIME)
*/
- private static long time = -1; // -1 = uninitialized
+ private static long time = -1; // -1 == uninitialized
/** format used by build script to set time_text */
public static final String SIMPLE_DATE_FORMAT = "EEEE MMM d, yyyy 'at' HH:mm:ss z";
diff --git a/bridge/src/org/aspectj/bridge/context/PinpointingMessageHandler.java b/bridge/src/org/aspectj/bridge/context/PinpointingMessageHandler.java
index d9465c322..c54ff6789 100644
--- a/bridge/src/org/aspectj/bridge/context/PinpointingMessageHandler.java
+++ b/bridge/src/org/aspectj/bridge/context/PinpointingMessageHandler.java
@@ -102,15 +102,14 @@ public class PinpointingMessageHandler implements IMessageHandler {
public Throwable getThrown() { return delegate.getThrown();}
public ISourceLocation getSourceLocation() { return delegate.getSourceLocation();}
public String getDetails() { return delegate.getDetails();}
- public List getExtraSourceLocations() { return delegate.getExtraSourceLocations();}
+ public List<ISourceLocation> getExtraSourceLocations() { return delegate.getExtraSourceLocations();}
}
-
- private static class MessageIssued extends RuntimeException {
- private static final long serialVersionUID = 1L;
- public String getMessage() {
- return "message issued...";
- }
- }
+ private static class MessageIssued extends RuntimeException {
+ private static final long serialVersionUID = 1L;
+ public String getMessage() {
+ return "message issued...";
+ }
+ }
}
diff --git a/build/testsrc/org/aspectj/build/BuildModuleTests.java b/build/testsrc/org/aspectj/build/BuildModuleTests.java
index 073cf0f39..6c2e63dc4 100644
--- a/build/testsrc/org/aspectj/build/BuildModuleTests.java
+++ b/build/testsrc/org/aspectj/build/BuildModuleTests.java
@@ -196,7 +196,7 @@ public class BuildModuleTests extends TestCase {
// separate check to verify all file types (suffixes) are known
if (!"testsrc".equals(srcDir.getName())) {
- ArrayList unknownFiles = new ArrayList();
+ ArrayList<File> unknownFiles = new ArrayList<>();
UnknownFileCheck.SINGLETON.unknownFiles(srcDir, unknownFiles);
if (!unknownFiles.isEmpty()) {
String s = "unknown files (see readme-build-module.html to "
diff --git a/build/testsrc/org/aspectj/internal/build/BuildModuleTest.java b/build/testsrc/org/aspectj/internal/build/BuildModuleTest.java
index d0dfb55f2..c06e678e2 100644
--- a/build/testsrc/org/aspectj/internal/build/BuildModuleTest.java
+++ b/build/testsrc/org/aspectj/internal/build/BuildModuleTest.java
@@ -343,7 +343,7 @@ public class BuildModuleTest extends TestCase {
try {
zipFile = new ZipFile(weaverAllJar);
Enumeration e = zipFile.entries();
- ArrayList entryNames = new ArrayList();
+ ArrayList<String> entryNames = new ArrayList<>();
while (e.hasMoreElements()) {
ZipEntry entry = (ZipEntry) e.nextElement();
String name = entry.getName();
diff --git a/build/testsrc/org/aspectj/internal/build/ModulesTest.java b/build/testsrc/org/aspectj/internal/build/ModulesTest.java
index 0478c44c2..51a58142a 100644
--- a/build/testsrc/org/aspectj/internal/build/ModulesTest.java
+++ b/build/testsrc/org/aspectj/internal/build/ModulesTest.java
@@ -72,7 +72,7 @@ public class ModulesTest extends TestCase {
}
}
- ArrayList tempFiles = new ArrayList();
+ ArrayList<File> tempFiles = new ArrayList<>();
public ModulesTest(String name) {
super(name);
diff --git a/lib/aspectj/lib/aspectjrt.jar b/lib/aspectj/lib/aspectjrt.jar
index 536f947e6..ef06aa7fd 100644
--- a/lib/aspectj/lib/aspectjrt.jar
+++ b/lib/aspectj/lib/aspectjrt.jar
Binary files differ
diff --git a/lib/test/aspectjrt.jar b/lib/test/aspectjrt.jar
index 536f947e6..ef06aa7fd 100644
--- a/lib/test/aspectjrt.jar
+++ b/lib/test/aspectjrt.jar
Binary files differ
diff --git a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareParents.java b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareParents.java
index c11967fca..cf6ffbaab 100644
--- a/org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareParents.java
+++ b/org.aspectj.matcher/src/org/aspectj/weaver/patterns/DeclareParents.java
@@ -319,9 +319,9 @@ public class DeclareParents extends Declare {
}
ResolvedType newParentGenericType = newParent.getGenericType();
- Iterator iter = typeToVerify.getDirectSupertypes();
+ Iterator<ResolvedType> iter = typeToVerify.getDirectSupertypes();
while (iter.hasNext()) {
- ResolvedType supertype = (ResolvedType) iter.next();
+ ResolvedType supertype = iter.next();
if (((supertype.isRawType() && newParent.isParameterizedType()) || (supertype.isParameterizedType() && newParent
.isRawType()))
&& newParentGenericType.equals(supertype.getGenericType())) {
diff --git a/runtime/src/org/aspectj/runtime/reflect/JoinPointImpl.java b/runtime/src/org/aspectj/runtime/reflect/JoinPointImpl.java
index cae6cf577..69bff1e3c 100644
--- a/runtime/src/org/aspectj/runtime/reflect/JoinPointImpl.java
+++ b/runtime/src/org/aspectj/runtime/reflect/JoinPointImpl.java
@@ -197,9 +197,17 @@ class JoinPointImpl implements ProceedingJoinPoint {
} else {
// need to replace the target, and it is different to this, whether
// that means replacing state[0] or state[1] depends on whether
- // the join point has a this
- firstArgumentIndexIntoAdviceBindings = (hasThis ? 1 : 0) + 1;
- state[hasThis ? 1 : 0] = adviceBindings[hasThis ? 1 : 0];
+ // the join point has a this
+
+ // This previous variant doesn't seem to cope with only binding target at a joinpoint
+ // which has both this and target. It forces you to supply this even if you didn't bind
+ // it.
+// firstArgumentIndexIntoAdviceBindings = (hasThis ? 1 : 0) + 1;
+// state[hasThis ? 1 : 0] = adviceBindings[hasThis ? 1 : 0];
+
+ int targetPositionInAdviceBindings = (hasThis && bindsThis) ? 1 : 0;
+ firstArgumentIndexIntoAdviceBindings = ((hasThis&&bindsThis)?1:0)+((hasTarget&&bindsTarget&&!thisTargetTheSame)?1:0);
+ state[hasThis ? 1 : 0] = adviceBindings[targetPositionInAdviceBindings];
}
} else {
// leave state[0]/state[1] alone, they are OK
diff --git a/testing/src/org/aspectj/internal/tools/ant/taskdefs/Ajctest.java b/testing/src/org/aspectj/internal/tools/ant/taskdefs/Ajctest.java
index c3c93729c..2502bca0d 100644
--- a/testing/src/org/aspectj/internal/tools/ant/taskdefs/Ajctest.java
+++ b/testing/src/org/aspectj/internal/tools/ant/taskdefs/Ajctest.java
@@ -123,19 +123,19 @@ public class Ajctest extends Task implements PropertyChangeListener {
//fields
private String testId = NO_TESTID;
- private List args = new Vector();
- private List testsets = new Vector();
+ private List<Argument> args = new Vector<>();
+ private List<Testset> testsets = new Vector<>();
private Path classpath;
private Path internalclasspath;
private File destdir;
private File dir;
private File errorfile;
- private List testclasses = new Vector();
+ private List<Run> testclasses = new Vector<>();
private boolean nocompile;
private Ajdoc ajdoc = null;
private boolean noclean;
private boolean noverify;
- private List depends = new Vector();
+ private List<String> depends = new Vector<>();
//end-fields
public Argfile createArgfile() {
@@ -321,7 +321,7 @@ public class Ajctest extends Task implements PropertyChangeListener {
public static class Argument {
private String name;
- private List values = new Vector();
+ private List<String> values = new Vector<>();
private boolean always = true;
final boolean isj;
public Argument(boolean isj) {
@@ -332,14 +332,14 @@ public class Ajctest extends Task implements PropertyChangeListener {
("-" + (str.startsWith("J") ? str.substring(1) : str));
}
public void setValues(String str) {
- values = new Vector();
+ values = new Vector<>();
StringTokenizer tok = new StringTokenizer(str, ", ", false);
while (tok.hasMoreTokens()) {
values.add(tok.nextToken().trim());
}
}
public void setValue(String value) {
- (values = new Vector()).add(value);
+ (values = new Vector<>()).add(value);
}
public void setAlways(boolean always) {
this.always = always;
@@ -401,30 +401,30 @@ public class Ajctest extends Task implements PropertyChangeListener {
}
public class Testset extends FileSet {
- private List argfileNames = new Vector();
- public List argfiles;
- public List files;
- public List args = new Vector();
+ private List<Argfile> argfileNames = new Vector<>();
+ public List<File> argfiles;
+ public List<File> files;
+ public List<Argument> args = new Vector<>();
public String classname;
private boolean havecludes = false;
- private List testclasses = new Vector();
+ private List<Run> testclasses = new Vector<>();
private Path classpath;
private Path internalclasspath;
private Ajdoc ajdoc = null;
private boolean fork = false;
private boolean noclean;
- private List depends = new Vector();
+ private List<String> depends = new Vector<>();
public String toString() {
String str = "";
if (files.size() > 0) {
str += "files:" + "\n";
- for (Iterator i = files.iterator(); i.hasNext();) {
+ for (Iterator<File> i = files.iterator(); i.hasNext();) {
str += "\t" + i.next() + "\n";
}
}
if (argfiles.size() > 0) {
str += "argfiles:" + "\n";
- for (Iterator i = argfiles.iterator(); i.hasNext();) {
+ for (Iterator<File> i = argfiles.iterator(); i.hasNext();) {
str += "\t" + i.next() + "\n";
}
}
@@ -578,10 +578,10 @@ public class Ajctest extends Task implements PropertyChangeListener {
public void resolve() throws BuildException {
if (dir != null) this.setDir(dir);
File src = getDir(project);
- argfiles = new Vector();
- files = new Vector();
- for(Iterator iter = argfileNames.iterator(); iter.hasNext();) {
- String name = ((Argfile)iter.next()).name;
+ argfiles = new Vector<>();
+ files = new Vector<>();
+ for(Iterator<Argfile> iter = argfileNames.iterator(); iter.hasNext();) {
+ String name = iter.next().name;
File argfile = new File(src, name);
if (check(argfile, name, location)) argfiles.add(argfile);
}
@@ -610,8 +610,8 @@ public class Ajctest extends Task implements PropertyChangeListener {
this.ajdoc = Ajctest.this.ajdoc;
}
if (this.fork) {
- for (Iterator i = this.testclasses.iterator(); i.hasNext();) {
- ((Run)i.next()).setFork(fork);
+ for (Iterator<Run> i = this.testclasses.iterator(); i.hasNext();) {
+ i.next().setFork(fork);
}
}
if (!this.noclean) {
@@ -687,40 +687,36 @@ public class Ajctest extends Task implements PropertyChangeListener {
}
- private void log(String space, List list, String title) {
+ private void log(String space, List<?> list, String title) {
if (list == null || list.size() < 1) return;
log(space + title);
- for (Iterator i = list.iterator(); i.hasNext();) {
+ for (Iterator<?> i = list.iterator(); i.hasNext();) {
log(space + " " + i.next());
}
}
- private void execute(Testset testset, List args) throws BuildException {
+ private void execute(Testset testset, List<Arg> args) throws BuildException {
if (testset.files.size() > 0) {
log("\tfiles:");
- for (Iterator i = testset.files.iterator();
- i.hasNext();) {
+ for (Iterator<File> i = testset.files.iterator(); i.hasNext();) {
log("\t " + i.next());
}
}
if (testset.argfiles.size() > 0) {
log("\targfiles:");
- for (Iterator i = testset.argfiles.iterator();
- i.hasNext();) {
+ for (Iterator<File> i = testset.argfiles.iterator(); i.hasNext();) {
log("\t " + i.next());
}
}
if (args.size() > 0) {
log("\targs:");
- for (Iterator i = args.iterator();
- i.hasNext();) {
+ for (Iterator<Arg> i = args.iterator(); i.hasNext();) {
log("\t " + i.next());
}
}
if (testset.testclasses.size() > 0) {
log("\tclasses:");
- for (Iterator i = testset.testclasses.iterator();
- i.hasNext();) {
+ for (Iterator<Run> i = testset.testclasses.iterator(); i.hasNext();) {
log("\t " + i.next());
}
}
@@ -731,7 +727,7 @@ public class Ajctest extends Task implements PropertyChangeListener {
}
delete(workingdir);
make(workingdir);
- for (Iterator i = testset.depends.iterator(); i.hasNext();) {
+ for (Iterator<String> i = testset.depends.iterator(); i.hasNext();) {
String target = i.next()+"";
// todo: capture failures here?
project.executeTarget(target);
@@ -788,9 +784,8 @@ public class Ajctest extends Task implements PropertyChangeListener {
-1, "run");
} else if (!isSet("norun")) {
- for (Iterator i = testset.testclasses.iterator();
- i.hasNext();) {
- Run testclass = (Run)i.next();
+ for (Iterator<Run> i = testset.testclasses.iterator(); i.hasNext();) {
+ Run testclass = i.next();
log("\ttest..." + testclass.classname());
if (null != destdir) {
testclass.setClassesDir(destdir.getAbsolutePath());
@@ -812,27 +807,26 @@ public class Ajctest extends Task implements PropertyChangeListener {
prepare();
log(testsets.size() + " testset" + s(testsets),
Project.MSG_VERBOSE);
- Map testsetToArgcombo = new HashMap();
- List argcombos = new Vector();
- for (Iterator iter = testsets.iterator(); iter.hasNext();) {
- Testset testset = (Testset)iter.next();
+ Map<Testset,List<List<Arg>>> testsetToArgcombo = new HashMap<>();
+ List<Integer> argcombos = new Vector<>();
+ for (Testset testset: testsets) {
testset.resolve();
- List bothargs = new Vector(args);
+ List<Argument> bothargs = new Vector<>(args);
bothargs.addAll(testset.args);
- List argcombo = argcombo(bothargs);
+ List<List<Arg>> argcombo = argcombo(bothargs);
argcombos.add(new Integer(argcombo.size()));
testsetToArgcombo.put(testset, argcombo);
}
while (!testsetToArgcombo.isEmpty()) {
int _ = 1;
- for (Iterator iter = testsets.iterator(); iter.hasNext(); _++) {
- Testset testset = (Testset)iter.next();
- List argcombo = (List)testsetToArgcombo.get(testset);
+ for (Iterator<Testset> iter = testsets.iterator(); iter.hasNext(); _++) {
+ Testset testset = iter.next();
+ List<List<Arg>> argcombo = testsetToArgcombo.get(testset);
if (argcombo.size() == 0) {
testsetToArgcombo.remove(testset);
continue;
}
- List args = (List)argcombo.remove(0);
+ List<Arg> args = argcombo.remove(0);
final String startStr = "Testset " + _ + " of " + testsets.size();
String str = startStr + " / Combo " + _ + " of " + argcombos.size();
log("---------- " + str + " ----------");
@@ -1085,7 +1079,7 @@ public class Ajctest extends Task implements PropertyChangeListener {
// }
private static List allErrors = new Vector();
- private List errors = new Vector();
+ private List<Failure> errors = new Vector<>();
private void post(Testset testset, List args,
String msgs, int exit, String type) {
@@ -1290,11 +1284,11 @@ public class Ajctest extends Task implements PropertyChangeListener {
}
}
- private List argcombo(List arguments) {
- List combos = new Vector();
- List always = new Vector();
- for (Iterator iter = arguments.iterator(); iter.hasNext();) {
- Argument arg = (Argument)iter.next();
+ private List<List<Arg>> argcombo(List<Argument> arguments) {
+ List<Argument> combos = new Vector<>();
+ List<Arg> always = new Vector<>();
+ for (Iterator<Argument> iter = arguments.iterator(); iter.hasNext();) {
+ Argument arg = iter.next();
if (arg.values.size() == 0) arg.values.add("");
if (!arg.always && !arg.values.contains(null)) arg.values.add(null);
if (arg.values.size() > 0) {
@@ -1303,11 +1297,11 @@ public class Ajctest extends Task implements PropertyChangeListener {
always.add(new Arg(arg.name, arg.values.get(0)+"", arg.isj));
}
}
- List argcombo = combinations(combos);
- for (Iterator iter = always.iterator(); iter.hasNext();) {
- Arg arg = (Arg)iter.next();
- for (Iterator comboiter = argcombo.iterator(); comboiter.hasNext();) {
- ((List)comboiter.next()).add(arg);
+ List<List<Arg>> argcombo = combinations(combos);
+ for (Iterator<Arg> iter = always.iterator(); iter.hasNext();) {
+ Arg arg = iter.next();
+ for (Iterator<List<Arg>> comboiter = argcombo.iterator(); comboiter.hasNext();) {
+ comboiter.next().add(arg);
}
}
return argcombo;
@@ -1624,16 +1618,16 @@ public class Ajctest extends Task implements PropertyChangeListener {
log("done handling " + t);
}
- private List combinations(List arglist) {
- List result = new Vector();
- result.add(new Vector());
- for (Iterator iter = arglist.iterator(); iter.hasNext();) {
- Argument arg = (Argument)iter.next();
+ private List<List<Arg>> combinations(List<Argument> arglist) {
+ List<List<Arg>> result = new Vector<>();
+ result.add(new Vector<Arg>());
+ for (Iterator<Argument> iter = arglist.iterator(); iter.hasNext();) {
+ Argument arg = iter.next();
int N = result.size();
for (int i = 0; i < N; i++) {
- List to = (List)result.remove(0);
- for (Iterator valiter = arg.values.iterator(); valiter.hasNext();) {
- List newlist = new Vector(to);
+ List<Arg> to = result.remove(0);
+ for (Iterator<String> valiter = arg.values.iterator(); valiter.hasNext();) {
+ List<Arg> newlist = new Vector<>(to);
Object val = valiter.next();
if (val != null) newlist.add(new Arg(arg.name, val+"", arg.isj));
result.add(newlist);
diff --git a/testing/src/org/aspectj/internal/tools/ant/taskdefs/MainWrapper.java b/testing/src/org/aspectj/internal/tools/ant/taskdefs/MainWrapper.java
index 55d8dbed1..6ce22df24 100644
--- a/testing/src/org/aspectj/internal/tools/ant/taskdefs/MainWrapper.java
+++ b/testing/src/org/aspectj/internal/tools/ant/taskdefs/MainWrapper.java
@@ -81,8 +81,8 @@ public class MainWrapper {
// access classname from jvm arg
classname = System.getProperty(PROP_NAME);
// this will fail if the class is not available from this classloader
- Class cl = Class.forName(classname);
- final Class[] argTypes = new Class[] {String[].class};
+ Class<?> cl = Class.forName(classname);
+ final Class<?>[] argTypes = new Class[] {String[].class};
// will fail if no main method
main = cl.getMethod("main", argTypes);
if (!Modifier.isStatic(main.getModifiers())) {
diff --git a/testing/src/org/aspectj/testing/harness/bridge/AbstractRunSpec.java b/testing/src/org/aspectj/testing/harness/bridge/AbstractRunSpec.java
index d45037aac..4e61a512c 100644
--- a/testing/src/org/aspectj/testing/harness/bridge/AbstractRunSpec.java
+++ b/testing/src/org/aspectj/testing/harness/bridge/AbstractRunSpec.java
@@ -257,7 +257,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
// --------------- (String) paths
/** @return ArrayList of String paths */
- public ArrayList getPathsList() {
+ public ArrayList<String> getPathsList() {
return makeList(paths);
}
@@ -572,7 +572,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
*/
protected void writeChildren(XMLWriter out) {
if (0 < children.size()) {
- for (Iterator iter = children.iterator(); iter.hasNext();) {
+ for (Iterator<IRunSpec> iter = children.iterator(); iter.hasNext();) {
IXmlWritable self = (IXmlWritable) iter.next();
self.writeXml(out);
}
@@ -583,7 +583,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
public void printAll(PrintStream out, String prefix) {
out.println(prefix + toString());
- for (Iterator iter = children.iterator(); iter.hasNext();) {
+ for (Iterator<IRunSpec> iter = children.iterator(); iter.hasNext();) {
AbstractRunSpec child = (AbstractRunSpec) iter.next(); // IRunSpec
child.printAll(out, prefix + " ");
}
@@ -614,7 +614,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
addListCount("options", options, result);
addListCount("paths", paths, result);
// XXXXXunused addListCount("sourceLocations", sourceLocations, result);
- List messagesList = messages.getUnmodifiableListView();
+ List<IMessage> messagesList = messages.getUnmodifiableListView();
addListCount("messages", messagesList, result);
return result.toString().trim();
@@ -634,7 +634,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
addListEntries("options", options, result);
addListEntries("paths", paths, result);
// XXXXXunused addListEntries("sourceLocations", sourceLocations, result);
- List messagesList = messages.getUnmodifiableListView();
+ List<IMessage> messagesList = messages.getUnmodifiableListView();
addListEntries("messages", messagesList, result);
return result.toString();
@@ -683,7 +683,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
spec.xmlNames = ((AbstractRunSpec.XMLNames) xmlNames.clone());
}
- private static void addListCount(String name, List list, StringBuffer sink) {
+ private static void addListCount(String name, List<?> list, StringBuffer sink) {
int size = list.size();
if ((null != list) && (0 < size)) {
sink.append(" " + size + " ");
@@ -691,7 +691,7 @@ abstract public class AbstractRunSpec implements IRunSpec {
}
}
- private static void addListEntries(String name, List list, StringBuffer sink) {
+ private static void addListEntries(String name, List<?> list, StringBuffer sink) {
if ((null != list) && (0 < list.size())) {
sink.append(" " + list.size() + " ");
sink.append(name);
diff --git a/testing/src/org/aspectj/testing/harness/bridge/AjcMessageHandler.java b/testing/src/org/aspectj/testing/harness/bridge/AjcMessageHandler.java
index 1b147ebc4..f4a88c3b2 100644
--- a/testing/src/org/aspectj/testing/harness/bridge/AjcMessageHandler.java
+++ b/testing/src/org/aspectj/testing/harness/bridge/AjcMessageHandler.java
@@ -135,8 +135,8 @@ public class AjcMessageHandler extends MessageHandler {
/** Generate differences between expected and actual errors and warnings */
public CompilerDiffs getCompilerDiffs() {
if (null == diffs) {
- final List expected;
- final List actual;
+ final List<IMessage> expected;
+ final List<IMessage> actual;
if (!ignoreWarnings) {
expected = expectedMessages.getUnmodifiableListView();
actual = this.getUnmodifiableListView();
@@ -269,7 +269,7 @@ public class AjcMessageHandler extends MessageHandler {
private IMessage[] getMessagesWithoutExpectedFails() {
IMessage[] result = super.getMessages(null, true);
// remove all expected fail+ (COSTLY)
- ArrayList list = new ArrayList();
+ ArrayList<IMessage> list = new ArrayList<>();
int leftToFilter = numExpectedFailed;
for (int i = 0; i < result.length; i++) {
if ((0 == leftToFilter)
diff --git a/testing/src/org/aspectj/testing/harness/bridge/DirChanges.java b/testing/src/org/aspectj/testing/harness/bridge/DirChanges.java
index a57dde62d..13281607b 100644
--- a/testing/src/org/aspectj/testing/harness/bridge/DirChanges.java
+++ b/testing/src/org/aspectj/testing/harness/bridge/DirChanges.java
@@ -469,25 +469,25 @@ public class DirChanges {
boolean fastFail;
/** relative paths (String) of expected files added */
- final ArrayList added;
+ final ArrayList<String> added;
/** relative paths (String) of expected files removed/deleted */
- final ArrayList removed;
+ final ArrayList<String> removed;
/** relative paths (String) of expected files updated/changed */
- final ArrayList updated;
+ final ArrayList<String> updated;
/** relative paths (String) of expected files NOT
* added, removed, or changed
* XXX unchanged unimplemented
*/
- final ArrayList unchanged;
+ final ArrayList<String> unchanged;
public Spec() {
- added = new ArrayList();
- removed = new ArrayList();
- updated = new ArrayList();
- unchanged = new ArrayList();
+ added = new ArrayList<>();
+ removed = new ArrayList<>();
+ updated = new ArrayList<>();
+ unchanged = new ArrayList<>();
}
/**
@@ -595,13 +595,13 @@ public class DirChanges {
* @param out XMLWriter output sink
* @param dirChanges List of DirChanges.Spec to write
*/
- public static void writeXml(XMLWriter out, List dirChanges) {
+ public static void writeXml(XMLWriter out, List<DirChanges.Spec> dirChanges) {
if (LangUtil.isEmpty(dirChanges)) {
return;
}
LangUtil.throwIaxIfNull(out, "out");
- for (Iterator iter = dirChanges.iterator(); iter.hasNext();) {
- DirChanges.Spec spec = (DirChanges.Spec) iter.next();
+ for (Iterator<DirChanges.Spec> iter = dirChanges.iterator(); iter.hasNext();) {
+ DirChanges.Spec spec = iter.next();
if (null == spec) {
continue;
}
diff --git a/testing/src/org/aspectj/testing/harness/bridge/FlatSuiteReader.java b/testing/src/org/aspectj/testing/harness/bridge/FlatSuiteReader.java
index 5de765d1b..8d75d5620 100644
--- a/testing/src/org/aspectj/testing/harness/bridge/FlatSuiteReader.java
+++ b/testing/src/org/aspectj/testing/harness/bridge/FlatSuiteReader.java
@@ -17,7 +17,6 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import org.aspectj.bridge.AbortException;
@@ -151,7 +150,7 @@ public class FlatSuiteReader implements SFileReader.Maker {
throw new AbortException("expected sources at " + reader);
}
- ArrayList exp = new ArrayList();
+ ArrayList<Message> exp = new ArrayList<>();
// !compile || noerrors || className {runOption..}
String first = words[0];
if ("!compile".equals(first)) {
@@ -290,10 +289,9 @@ public class FlatSuiteReader implements SFileReader.Maker {
}
result.description = input;
- ArrayList newOptions = new ArrayList();
- ArrayList optionsCopy = result.getOptionsList();
- for (Iterator iter = optionsCopy.iterator(); iter.hasNext();) {
- String option = (String) iter.next();
+ ArrayList<String> newOptions = new ArrayList<>();
+ ArrayList<String> optionsCopy = result.getOptionsList();
+ for (String option: optionsCopy) {
if (option.startsWith("-")) {
newOptions.add("!" + option.substring(1));
} else {
@@ -325,9 +323,9 @@ public class FlatSuiteReader implements SFileReader.Maker {
* @param lastFile default file for source location if the input does not specify
* @return List
*/
- private List makeMessages(// XXX weak - also support expected exceptions, etc.
+ private List<Message> makeMessages(// XXX weak - also support expected exceptions, etc.
Kind kind, String[] words, int start, File lastFile) {
- ArrayList result = new ArrayList();
+ ArrayList<Message> result = new ArrayList<>();
for (int i = start; i < words.length; i++) {
ISourceLocation sl =
BridgeUtil.makeSourceLocation(words[i], lastFile);
@@ -340,7 +338,7 @@ public class FlatSuiteReader implements SFileReader.Maker {
result.add(new Message(text, kind, null, sl));
}
}
- return (0 == result.size() ? Collections.EMPTY_LIST : result);
+ return (0 == result.size() ? Collections.<Message>emptyList() : result);
}
/**
diff --git a/tests/bugs1810/500035/Code.java b/tests/bugs1810/500035/Code.java
new file mode 100644
index 000000000..58e738da4
--- /dev/null
+++ b/tests/bugs1810/500035/Code.java
@@ -0,0 +1,30 @@
+import org.aspectj.lang.annotation.*;
+import org.aspectj.lang.*;
+
+@Aspect
+public class Code {
+
+ @Around(value = "args(regex, replacement) && target(targetObject) " +
+ "&& call(public String String.replaceFirst(String, String)) "
+//, argNames = "proceedingJoinPoint,targetObject,regex,replacement,thisJoinPoint"
+)
+ public String replaceFirstAspect(ProceedingJoinPoint proceedingJoinPoint, String targetObject, String regex, String replacement) throws Throwable {
+System.out.println("targetObject = "+targetObject);
+System.out.println("regex = "+regex);
+System.out.println("replacement = "+replacement);
+ String returnObject = (String) proceedingJoinPoint.proceed(new Object[]{ targetObject, regex, replacement});
+ return returnObject;
+ }
+
+
+ public static void main(String []argv) {
+ new Code().run();
+ }
+
+ public void run() {
+ String s = "hello";
+ s = s.replaceFirst("l","7");
+ System.out.println(s);
+ }
+
+}
diff --git a/tests/bugs1810/500035/Code2.java b/tests/bugs1810/500035/Code2.java
new file mode 100644
index 000000000..23eddce7e
--- /dev/null
+++ b/tests/bugs1810/500035/Code2.java
@@ -0,0 +1,30 @@
+import org.aspectj.lang.annotation.*;
+import org.aspectj.lang.*;
+
+@Aspect
+public class Code2 {
+
+ @Around(value = "args(regex, replacement) && target(targetObject) " +
+ "&& call(public String String.replaceFirst(String, String)) && this(c)"
+//, argNames = "proceedingJoinPoint,targetObject,regex,replacement,thisJoinPoint"
+)
+ public String replaceFirstAspect(ProceedingJoinPoint proceedingJoinPoint, Code2 c, String targetObject, String regex, String replacement) throws Throwable {
+System.out.println("targetObject = "+targetObject);
+System.out.println("regex = "+regex);
+System.out.println("replacement = "+replacement);
+ String returnObject = (String) proceedingJoinPoint.proceed(new Object[]{ c, targetObject, regex, replacement});
+ return returnObject;
+ }
+
+
+ public static void main(String []argv) {
+ new Code2().run();
+ }
+
+ public void run() {
+ String s = "hello";
+ s = s.replaceFirst("l","8");
+ System.out.println(s);
+ }
+
+}
diff --git a/tests/bugs1810/500035/Code3.java b/tests/bugs1810/500035/Code3.java
new file mode 100644
index 000000000..48f672991
--- /dev/null
+++ b/tests/bugs1810/500035/Code3.java
@@ -0,0 +1,76 @@
+import org.aspectj.lang.annotation.*;
+import org.aspectj.lang.*;
+
+@Aspect
+public class Code3 {
+
+ @Around(value = "args(s) && target(targeto) && call(* Foo.run1(String))")
+ public void first(ProceedingJoinPoint proceedingJoinPoint, Foo targeto, String s) throws Throwable {
+ System.out.println("first: binding target, just passing everything through: target=Foo(1)");
+ proceedingJoinPoint.proceed(new Object[]{ targeto, s});
+ }
+
+ @Around(value = "args(s) && this(thiso) && target(targeto) && call(* run2(String))")
+ public void second(ProceedingJoinPoint proceedingJoinPoint, Foo thiso, Foo targeto, String s) throws Throwable {
+ System.out.println("second: binding this and target, just passing everything through: this=Foo(0) target=Foo(1)");
+ proceedingJoinPoint.proceed(new Object[]{ thiso, targeto, s});
+ }
+
+ @Around(value = "args(s) && this(thiso) && call(* run3(String))")
+ public void third(ProceedingJoinPoint proceedingJoinPoint, Foo thiso, String s) throws Throwable {
+ System.out.println("third: binding this, just passing everything through: this=Foo(0)");
+ proceedingJoinPoint.proceed(new Object[]{ thiso, s});
+ }
+
+ @Around(value = "args(s) && this(thiso) && call(* run4(String))")
+ public void fourth(ProceedingJoinPoint proceedingJoinPoint, Foo thiso, String s) throws Throwable {
+ System.out.println("fourth: binding this, switching from Foo(0) to Foo(3)");
+ proceedingJoinPoint.proceed(new Object[]{ new Foo(3), s});
+ }
+
+ @Around(value = "args(s) && target(targeto) && call(* run5(String))")
+ public void fifth(ProceedingJoinPoint proceedingJoinPoint, Foo targeto, String s) throws Throwable {
+ System.out.println("fifth: binding target, switching from Foo(1) to Foo(4)");
+ proceedingJoinPoint.proceed(new Object[]{ new Foo(4), s});
+ }
+
+ @Around(value = "args(s) && this(thiso) && target(targeto) && call(* run6(String))")
+ public void sixth(ProceedingJoinPoint proceedingJoinPoint, Foo thiso, Foo targeto, String s) throws Throwable {
+ System.out.println("sixth: binding this and target, switching them around (before this=Foo(0) target=Foo(1))");
+ proceedingJoinPoint.proceed(new Object[]{ targeto, thiso, s});
+ }
+
+ public static void main(String []argv) {
+ new Foo(0).execute1();
+ new Foo(0).execute2();
+ new Foo(0).execute3();
+ new Foo(0).execute4();
+ new Foo(0).execute5();
+ new Foo(0).execute6();
+ }
+}
+
+class Foo {
+ int i;
+ public Foo(int i) {
+ this.i = i;
+ }
+
+ public void execute1() { new Foo(1).run1("abc"); }
+ public void execute2() { new Foo(1).run2("abc"); }
+ public void execute3() { new Foo(1).run3("abc"); }
+ public void execute4() { new Foo(1).run4("abc"); }
+ public void execute5() { new Foo(1).run5("abc"); }
+ public void execute6() { new Foo(1).run6("abc"); }
+
+ public void run1(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+ public void run2(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+ public void run3(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+ public void run4(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+ public void run5(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+ public void run6(String s) { System.out.println("Executing run("+s+") on "+this.toString()); }
+
+ public String toString() {
+ return ("Foo(i="+i+")");
+ }
+}
diff --git a/tests/bugs1810/500035/Code4.java b/tests/bugs1810/500035/Code4.java
new file mode 100644
index 000000000..176ce2011
--- /dev/null
+++ b/tests/bugs1810/500035/Code4.java
@@ -0,0 +1,35 @@
+import org.aspectj.lang.annotation.*;
+import org.aspectj.lang.*;
+
+public aspect Code4 {
+
+ void around(Foo targeto, String s): call(* Foo.run(String)) && args(s) && target(targeto) {
+ System.out.println("first: binding target, just passing everything through");
+ proceed(targeto, s);
+ }
+
+ public static void main(String []argv) {
+ new Foo(0).execute();
+ }
+}
+
+class Foo {
+ int i;
+ public Foo(int i) {
+ this.i = i;
+ }
+
+ public void execute() {
+ Foo f1 = new Foo(1);
+ Foo f2 = new Foo(2);
+ f1.run("abc");
+ }
+
+ public void run(String s) {
+ System.out.println("Executing run("+s+") on "+this.toString());
+ }
+
+ public String toString() {
+ return ("Foo(i="+i+")");
+ }
+}
diff --git a/tests/bugs1810/501656/ApplicationException.java b/tests/bugs1810/501656/ApplicationException.java
new file mode 100644
index 000000000..5392eeaef
--- /dev/null
+++ b/tests/bugs1810/501656/ApplicationException.java
@@ -0,0 +1,9 @@
+package com.myapp;
+
+public class ApplicationException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ public ApplicationException(String message) {
+ super(message);
+ }
+}
diff --git a/tests/bugs1810/501656/ApplicationExceptionHandler.java b/tests/bugs1810/501656/ApplicationExceptionHandler.java
new file mode 100644
index 000000000..bd96e1c27
--- /dev/null
+++ b/tests/bugs1810/501656/ApplicationExceptionHandler.java
@@ -0,0 +1,17 @@
+package com.myapp.aspect;
+
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Aspect;
+
+import com.myapp.ApplicationException;
+
+@Aspect
+public abstract class ApplicationExceptionHandler<EX extends ApplicationException> {
+ @AfterThrowing(
+ pointcut = "execution(* com.myapp.*.facade.*.*(..))",
+ throwing = "exception"
+, argNames="exception"
+ )
+ public abstract void handleFacadeException(EX exception);
+
+}
diff --git a/tests/bugs1810/501656/Code.java b/tests/bugs1810/501656/Code.java
new file mode 100644
index 000000000..c8e603a9e
--- /dev/null
+++ b/tests/bugs1810/501656/Code.java
@@ -0,0 +1,4 @@
+public abstract class Code {
+ public void m(String str1) {}
+ public abstract void m2(String str2);
+}
diff --git a/tests/bugs1810/501656/out/com/myapp/ApplicationException.class b/tests/bugs1810/501656/out/com/myapp/ApplicationException.class
new file mode 100644
index 000000000..fbbbdda19
--- /dev/null
+++ b/tests/bugs1810/501656/out/com/myapp/ApplicationException.class
Binary files differ
diff --git a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
index 1ec2b21c1..ff08047d1 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
@@ -5,11 +5,8 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
-import junit.framework.Test;
-
import org.aspectj.apache.bcel.classfile.Attribute;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.apache.bcel.classfile.Signature;
@@ -19,6 +16,8 @@ import org.aspectj.testing.XMLBasedAjcTestCase;
import org.aspectj.tools.ajc.Ajc;
import org.aspectj.util.LangUtil;
+import junit.framework.Test;
+
public class GenericsTests extends XMLBasedAjcTestCase {
/*==========================================
diff --git a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
index 5b3c795d4..8928678c8 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java
@@ -12,17 +12,14 @@ package org.aspectj.systemtest.ajc151;
import java.io.File;
import java.io.IOException;
-import java.io.PrintWriter;
-import junit.framework.Test;
-
-import org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IHierarchy;
import org.aspectj.asm.IProgramElement;
import org.aspectj.systemtest.ajc150.GenericsTests;
import org.aspectj.testing.XMLBasedAjcTestCase;
-import org.aspectj.weaver.UnresolvedType.TypeKind;
+
+import junit.framework.Test;
public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
diff --git a/tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java b/tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java
index 4b21319d0..9c92f8488 100644
--- a/tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc151/NewarrayJoinpointTests.java
@@ -17,6 +17,7 @@ import junit.framework.Test;
import org.aspectj.asm.AsmManager;
import org.aspectj.asm.IProgramElement;
+import org.aspectj.asm.IRelationship;
import org.aspectj.testing.XMLBasedAjcTestCase;
/*
@@ -102,14 +103,14 @@ public class NewarrayJoinpointTests extends XMLBasedAjcTestCase {
runTest("structure model");
IProgramElement ipe = AsmManager.lastActiveStructureModel.getHierarchy().findElementForType("", "Five");
assertTrue("Couldnt find 'Five' type in the model", ipe != null);
- List kids = ipe.getChildren();
+ List<IProgramElement> kids = ipe.getChildren();
assertTrue("Couldn't find 'main' method in the 'Five' type", kids != null && kids.size() == 1);
- List codenodes = ((IProgramElement) kids.get(0)).getChildren();
+ List<IProgramElement> codenodes = ((IProgramElement) kids.get(0)).getChildren();
assertTrue("Couldn't find nodes below 'main' method", codenodes != null && codenodes.size() == 1);
IProgramElement arrayCtorCallNode = (IProgramElement) codenodes.get(0);
String exp = "constructor-call(void java.lang.Integer[].<init>(int))";
assertTrue("Expected '" + exp + "' but found " + arrayCtorCallNode.toString(), arrayCtorCallNode.toString().equals(exp));
- List rels = AsmManager.lastActiveStructureModel.getRelationshipMap().get(arrayCtorCallNode);
+ List<IRelationship> rels = AsmManager.lastActiveStructureModel.getRelationshipMap().get(arrayCtorCallNode);
assertTrue("Should have a relationship from the ctorcall node, but didn't find one?", rels != null && rels.size() == 1);
}
diff --git a/tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java b/tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java
index 64fa5a174..922f4c5b4 100644
--- a/tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc152/SynchronizationTransformTests.java
@@ -181,9 +181,8 @@ public class SynchronizationTransformTests extends XMLBasedAjcTestCase {
private LazyMethodGen getMethod(String typename, String methodname) {
BcelObjectType type = getBcelObjectFor(typename);
LazyClassGen lcg = type.getLazyClassGen();
- List /* LazyMethodGen */methods = lcg.getMethodGens();
- for (Iterator iter = methods.iterator(); iter.hasNext();) {
- LazyMethodGen element = (LazyMethodGen) iter.next();
+ List<LazyMethodGen> methods = lcg.getMethodGens();
+ for (LazyMethodGen element: methods) {
if (element.getName().equals(methodname)) {
return element;
}
@@ -234,7 +233,7 @@ public class SynchronizationTransformTests extends XMLBasedAjcTestCase {
// Load the file in
fr = new BufferedReader(new FileReader(f));
String line = null;
- List originalFileContents = new ArrayList();
+ List<String> originalFileContents = new ArrayList<>();
while ((line = fr.readLine()) != null)
originalFileContents.add(line);
String[] fileContents = (String[]) originalFileContents.toArray(new String[] {});
@@ -256,10 +255,10 @@ public class SynchronizationTransformTests extends XMLBasedAjcTestCase {
}
}
- private String stringify(List l) {
+ private String stringify(List<String> l) {
StringBuffer result = new StringBuffer();
- for (Iterator iter = l.iterator(); iter.hasNext();) {
- String str = (String) iter.next();
+ for (Iterator<String> iter = l.iterator(); iter.hasNext();) {
+ String str = iter.next();
result.append(str);
result.append("\n");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc180/AllTestsAspectJ180.java b/tests/src/org/aspectj/systemtest/ajc180/AllTestsAspectJ180.java
index 6feff4445..453c057eb 100644
--- a/tests/src/org/aspectj/systemtest/ajc180/AllTestsAspectJ180.java
+++ b/tests/src/org/aspectj/systemtest/ajc180/AllTestsAspectJ180.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc180;
-import org.aspectj.systemtest.ajc181.Ajc181Tests;
-
import junit.framework.Test;
import junit.framework.TestSuite;
diff --git a/tests/src/org/aspectj/systemtest/ajc1810/Ajc1810Tests.java b/tests/src/org/aspectj/systemtest/ajc1810/Ajc1810Tests.java
index 6122b1638..3cae1378c 100644
--- a/tests/src/org/aspectj/systemtest/ajc1810/Ajc1810Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc1810/Ajc1810Tests.java
@@ -12,24 +12,38 @@ package org.aspectj.systemtest.ajc1810;
import java.io.File;
-import junit.framework.Test;
-
import org.aspectj.apache.bcel.Constants;
import org.aspectj.apache.bcel.classfile.Attribute;
-import org.aspectj.apache.bcel.classfile.Constant;
-import org.aspectj.apache.bcel.classfile.ConstantClass;
-import org.aspectj.apache.bcel.classfile.ConstantPool;
-import org.aspectj.apache.bcel.classfile.ConstantUtf8;
-import org.aspectj.apache.bcel.classfile.InnerClass;
-import org.aspectj.apache.bcel.classfile.InnerClasses;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import junit.framework.Test;
+
/**
* @author Andy Clement
*/
public class Ajc1810Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
+ public void testBinding_500035() {
+ runTest("ataspectj binding");
+ }
+
+ public void testBinding_500035_2() {
+ runTest("ataspectj binding 2");
+ }
+
+ public void testBinding_500035_3() {
+ runTest("ataspectj binding 3 -XnoInline");
+ }
+
+ public void testBinding_500035_4() {
+ runTest("ataspectj binding 4");
+ }
+
+ public void testGenericsException_501656() {
+ runTest("generics exception");
+ }
+
public void testAIOOBE_502807() {
runTest("unexpected aioobe");
}
diff --git a/tests/src/org/aspectj/systemtest/ajc1810/ajc1810.xml b/tests/src/org/aspectj/systemtest/ajc1810/ajc1810.xml
index 065420da3..7485c1c20 100644
--- a/tests/src/org/aspectj/systemtest/ajc1810/ajc1810.xml
+++ b/tests/src/org/aspectj/systemtest/ajc1810/ajc1810.xml
@@ -2,6 +2,74 @@
<suite>
+ <ajc-test dir="bugs1810/500035" title="ataspectj binding">
+ <compile options="-1.8" files="Code.java"/>
+ <run class="Code">
+ <stdout>
+ <line text="targetObject = hello"/>
+ <line text="regex = l"/>
+ <line text="replacement = 7"/>
+ <line text="he7lo"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs1810/500035" title="ataspectj binding 2">
+ <compile options="-1.8" files="Code2.java"/>
+ <run class="Code2">
+ <stdout>
+ <line text="targetObject = hello"/>
+ <line text="regex = l"/>
+ <line text="replacement = 8"/>
+ <line text="he8lo"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs1810/500035" title="ataspectj binding 3 -XnoInline">
+ <compile options="-1.8 -XnoInline" files="Code3.java"/>
+ <run class="Code3">
+ <stdout>
+ <line text="first: binding target, just passing everything through: target=Foo(1)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="second: binding this and target, just passing everything through: this=Foo(0) target=Foo(1)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="third: binding this, just passing everything through: this=Foo(0)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="fourth: binding this, switching from Foo(0) to Foo(3)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="fifth: binding target, switching from Foo(1) to Foo(4)"/>
+ <line text="Executing run(abc) on Foo(i=4)"/>
+ <line text="sixth: binding this and target, switching them around (before this=Foo(0) target=Foo(1))"/>
+ <line text="Executing run(abc) on Foo(i=0)"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs1810/500035" title="ataspectj binding 4">
+ <compile options="-1.8" files="Code3.java"/>
+ <run class="Code3">
+ <stdout>
+ <line text="first: binding target, just passing everything through: target=Foo(1)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="second: binding this and target, just passing everything through: this=Foo(0) target=Foo(1)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="third: binding this, just passing everything through: this=Foo(0)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="fourth: binding this, switching from Foo(0) to Foo(3)"/>
+ <line text="Executing run(abc) on Foo(i=1)"/>
+ <line text="fifth: binding target, switching from Foo(1) to Foo(4)"/>
+ <line text="Executing run(abc) on Foo(i=4)"/>
+ <line text="sixth: binding this and target, switching them around (before this=Foo(0) target=Foo(1))"/>
+ <line text="Executing run(abc) on Foo(i=0)"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs1810/501656" title="generics exception">
+ <compile options="-1.8 -parameters" files="ApplicationException.java ApplicationExceptionHandler.java"/>
+ </ajc-test>
+
<ajc-test dir="bugs1810/490315" title="indy">
<compile options="-1.8" files="FailingAspect.java SomeAnno.java SomeContext.java SomeCriteria.java SomeDTO.java SomeEnum.java SomePiece.java SomePropertyDTO.java SomeService.java SomeServiceImpl.java"/>
</ajc-test>
diff --git a/tests/src/org/aspectj/systemtest/ajc182/AllTestsAspectJ182.java b/tests/src/org/aspectj/systemtest/ajc182/AllTestsAspectJ182.java
index 10551687d..c0323f0ef 100644
--- a/tests/src/org/aspectj/systemtest/ajc182/AllTestsAspectJ182.java
+++ b/tests/src/org/aspectj/systemtest/ajc182/AllTestsAspectJ182.java
@@ -12,7 +12,6 @@ package org.aspectj.systemtest.ajc182;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.aspectj.systemtest.apt.AptTests;
public class AllTestsAspectJ182 {
diff --git a/tests/src/org/aspectj/systemtest/ajc185/Ajc185Tests.java b/tests/src/org/aspectj/systemtest/ajc185/Ajc185Tests.java
index cc9800043..77b453188 100644
--- a/tests/src/org/aspectj/systemtest/ajc185/Ajc185Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc185/Ajc185Tests.java
@@ -10,17 +10,12 @@
*******************************************************************************/
package org.aspectj.systemtest.ajc185;
-import java.io.BufferedInputStream;
import java.io.File;
-import java.io.FileInputStream;
-import junit.framework.Test;
-
-import org.aspectj.apache.bcel.classfile.JavaClass;
-import org.aspectj.apache.bcel.classfile.annotation.AnnotationGen;
-import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import junit.framework.Test;
+
/**
* @author Andy Clement
*/
diff --git a/tests/src/org/aspectj/systemtest/ajc187/Ajc187Tests.java b/tests/src/org/aspectj/systemtest/ajc187/Ajc187Tests.java
index 754864fd7..4ff34b28e 100644
--- a/tests/src/org/aspectj/systemtest/ajc187/Ajc187Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc187/Ajc187Tests.java
@@ -11,14 +11,11 @@
package org.aspectj.systemtest.ajc187;
import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import junit.framework.Test;
import org.aspectj.testing.XMLBasedAjcTestCase;
+import junit.framework.Test;
+
/**
* @author Andy Clement
*/
diff --git a/tests/src/org/aspectj/systemtest/ajc187/AllTestsAspectJ187.java b/tests/src/org/aspectj/systemtest/ajc187/AllTestsAspectJ187.java
index 79634df8c..ef8ff0a1c 100644
--- a/tests/src/org/aspectj/systemtest/ajc187/AllTestsAspectJ187.java
+++ b/tests/src/org/aspectj/systemtest/ajc187/AllTestsAspectJ187.java
@@ -12,7 +12,6 @@ package org.aspectj.systemtest.ajc187;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.aspectj.systemtest.apt.AptTests;
public class AllTestsAspectJ187 {
diff --git a/tests/src/org/aspectj/systemtest/ajc188/AllTestsAspectJ188.java b/tests/src/org/aspectj/systemtest/ajc188/AllTestsAspectJ188.java
index 8867d9174..32d3c12bf 100644
--- a/tests/src/org/aspectj/systemtest/ajc188/AllTestsAspectJ188.java
+++ b/tests/src/org/aspectj/systemtest/ajc188/AllTestsAspectJ188.java
@@ -12,7 +12,6 @@ package org.aspectj.systemtest.ajc188;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.aspectj.systemtest.apt.AptTests;
public class AllTestsAspectJ188 {
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/AjdeInteractionTestbed.java b/tests/src/org/aspectj/systemtest/incremental/tools/AjdeInteractionTestbed.java
index cfe4495a4..01426d923 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/AjdeInteractionTestbed.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/AjdeInteractionTestbed.java
@@ -99,7 +99,7 @@ public class AjdeInteractionTestbed extends TestCase {
((MultiProjTestCompilerConfiguration) compiler.getCompilerConfiguration()).setNonStandardOptions(options);
}
- public void configureAspectPath(String projectName, Set aspectpath) {
+ public void configureAspectPath(String projectName, Set<File> aspectpath) {
AjCompiler compiler = CompilerFactory.getCompilerForProjectWithDir(sandboxDir + File.separator + projectName);
((MultiProjTestCompilerConfiguration) compiler.getCompilerConfiguration()).setAspectPath(aspectpath);
}
@@ -121,12 +121,12 @@ public class AjdeInteractionTestbed extends TestCase {
((MultiProjTestCompilerConfiguration) compiler.getCompilerConfiguration()).setAspectPath(s);
}
- public void configureResourceMap(String projectName, Map resourcesMap) {
+ public void configureResourceMap(String projectName, Map<String,File> resourcesMap) {
AjCompiler compiler = CompilerFactory.getCompilerForProjectWithDir(sandboxDir + File.separator + projectName);
((MultiProjTestCompilerConfiguration) compiler.getCompilerConfiguration()).setSourcePathResources(resourcesMap);
}
- public void configureJavaOptionsMap(String projectName, Map options) {
+ public void configureJavaOptionsMap(String projectName, Map<String,String> options) {
AjCompiler compiler = CompilerFactory.getCompilerForProjectWithDir(sandboxDir + File.separator + projectName);
((MultiProjTestCompilerConfiguration) compiler.getCompilerConfiguration()).setJavaOptions(options);
}
@@ -240,7 +240,7 @@ public class AjdeInteractionTestbed extends TestCase {
private void addSourceFilesToBuild(String pname, AjCompiler compiler) {
File projectBase = new File(sandboxDir, pname);
ICompilerConfiguration icc = compiler.getCompilerConfiguration();
- List currentFiles = icc.getProjectSourceFiles();
+ List<String> currentFiles = icc.getProjectSourceFiles();
List<String> filesForCompilation = new ArrayList<String>();
collectUpFiles(projectBase, projectBase, filesForCompilation);
boolean changed = false;
@@ -392,12 +392,10 @@ public class AjdeInteractionTestbed extends TestCase {
if (getCompiledFiles(projectName).size() == 0 && getWovenClasses(projectName).size() == 0) {
sb.append("No files were compiled or woven\n");
}
- for (Iterator iter = getCompiledFiles(projectName).iterator(); iter.hasNext();) {
- Object element = iter.next();
+ for (String element: getCompiledFiles(projectName)) {
sb.append("compiled: " + element + "\n");
}
- for (Iterator iter = getWovenClasses(projectName).iterator(); iter.hasNext();) {
- Object element = iter.next();
+ for (String element: getWovenClasses(projectName)) {
sb.append("woven: " + element + "\n");
}
return sb.toString();
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/IncrementalOutputLocationManagerTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/IncrementalOutputLocationManagerTests.java
index 0c13b154b..3f2afc409 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/IncrementalOutputLocationManagerTests.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/IncrementalOutputLocationManagerTests.java
@@ -40,7 +40,7 @@ public class IncrementalOutputLocationManagerTests extends AbstractMultiProjectI
private String projectDir;
private int numberOfSrcDirs;
- private List allOutputDirs;
+ private List<File> allOutputDirs;
public MyOutputLocationManager(String projectName, int numberOfSrcDirs) {
projectDir = getWorkingDir() + File.separator + projectName;
@@ -53,8 +53,8 @@ public class IncrementalOutputLocationManagerTests extends AbstractMultiProjectI
public void reportFileRemove(String outputfile, int filetype) {
}
- public Map getInpathMap() {
- return Collections.EMPTY_MAP;
+ public Map<File,String> getInpathMap() {
+ return Collections.emptyMap();
}
public File getOutputLocationForClass(File compilationUnit) {
@@ -72,9 +72,9 @@ public class IncrementalOutputLocationManagerTests extends AbstractMultiProjectI
return getOutputLocationForClass(resource);
}
- public List getAllOutputLocations() {
+ public List<File> getAllOutputLocations() {
if (allOutputDirs == null) {
- allOutputDirs = new ArrayList();
+ allOutputDirs = new ArrayList<>();
for (int i = 0; i < numberOfSrcDirs + 1; i++) {
File f = null;
if (i == 0) {
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
index 3299ee833..308ed42d5 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/MoreOutputLocationManagerTests.java
@@ -64,12 +64,12 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
build("inpathTesting");
AjState state = getState();
- Map classNameToFileMap = state.getClassNameToFileMap();
+ Map<String,File> classNameToFileMap = state.getClassNameToFileMap();
assertFalse("expected there to be classes ", classNameToFileMap.isEmpty());
- Set entrySet = classNameToFileMap.entrySet();
- for (Iterator iterator = entrySet.iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- String className = (String) entry.getKey();
+ Set<Map.Entry<String,File>> entrySet = classNameToFileMap.entrySet();
+ for (Iterator<Map.Entry<String,File>> iterator = entrySet.iterator(); iterator.hasNext();) {
+ Map.Entry<String,File> entry = iterator.next();
+ String className = entry.getKey();
String fullClassName = expectedOutputDir + File.separator + className.replace('.', File.separatorChar) + ".class";
File file = (File) entry.getValue();
assertEquals("expected file to have path \n" + fullClassName + ", but" + " found path \n" + file.getAbsolutePath(),
@@ -105,15 +105,14 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
// the classes onthe inpath are recorded against the AjBuildManager
// (they are deleted from the ajstate whilst cleaning up after a build)
- Map binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave();
+ Map<String,List<UnwovenClassFile>> binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave();
assertFalse("expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty());
- List unwovenClassFiles = (List) binarySources.get(inpathDir + File.separator + "InpathClass.class");
- List fileNames = new ArrayList();
+ List<UnwovenClassFile> unwovenClassFiles = binarySources.get(inpathDir + File.separator + "InpathClass.class");
+ List<String> fileNames = new ArrayList<>();
// the unwovenClassFiles should have filenames that point to the output dir
// (which in this case is the sandbox dir) and not where they came from.
- for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext();) {
- UnwovenClassFile ucf = (UnwovenClassFile) iterator.next();
+ for (UnwovenClassFile ucf: unwovenClassFiles) {
if (ucf.getFilename().indexOf(expectedOutputDir) == -1) {
fileNames.add(ucf.getFilename());
}
@@ -145,15 +144,14 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
AjBuildConfig buildConfig = state.getBuildConfig();
state.prepareForNextBuild(buildConfig);
- Map binarySources = state.getBinaryFilesToCompile(true);
+ Map<String, List<UnwovenClassFile>> binarySources = state.getBinaryFilesToCompile(true);
assertFalse("expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty());
- List unwovenClassFiles = (List) binarySources.get(inpathDir + File.separator + "InpathClass.class");
- List fileNames = new ArrayList();
+ List<UnwovenClassFile> unwovenClassFiles = binarySources.get(inpathDir + File.separator + "InpathClass.class");
+ List<String> fileNames = new ArrayList<>();
// the unwovenClassFiles should have filenames that point to the output dir
// (which in this case is the sandbox dir) and not where they came from.
- for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext();) {
- UnwovenClassFile ucf = (UnwovenClassFile) iterator.next();
+ for (UnwovenClassFile ucf: unwovenClassFiles) {
if (ucf.getFilename().indexOf(expectedOutputDir) == -1) {
fileNames.add(ucf.getFilename());
}
@@ -177,14 +175,13 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
AjState state = getState();
// tests AjState.createUnwovenClassFile(BinarySourceFile)
- Map binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave();
+ Map<String,List<UnwovenClassFile>> binarySources = state.getAjBuildManager().getBinarySourcesForThisWeave();
assertFalse("expected there to be binary sources from the inpath setting but didn't find any", binarySources.isEmpty());
- List unwovenClassFiles = (List) binarySources.get(inpathDir);
- List fileNames = new ArrayList();
+ List<UnwovenClassFile> unwovenClassFiles = binarySources.get(inpathDir);
+ List<String> fileNames = new ArrayList<>();
- for (Iterator iterator = unwovenClassFiles.iterator(); iterator.hasNext();) {
- UnwovenClassFile ucf = (UnwovenClassFile) iterator.next();
+ for (UnwovenClassFile ucf: unwovenClassFiles) {
if (ucf.getFilename().indexOf(expectedOutputDir) == -1) {
fileNames.add(ucf.getFilename());
}
@@ -312,7 +309,7 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
return;
}
File f = new File(entry);
- Set s = new HashSet();
+ Set<File> s = new HashSet<>();
s.add(f);
configureInPath("inpathTesting", s);
}
@@ -325,14 +322,14 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
private File classOutputLoc;
private File resourceOutputLoc;
private String testProjectOutputPath;
- private List allOutputLocations;
+ private List<File> allOutputLocations;
private File outputLoc;
public SingleDirOutputLocMgr(String testProjectPath) {
this.testProjectOutputPath = testProjectPath + File.separator + "bin";
outputLoc = new File(testProjectOutputPath);
- allOutputLocations = new ArrayList();
+ allOutputLocations = new ArrayList<>();
allOutputLocations.add(outputLoc);
}
@@ -340,8 +337,8 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
return outputLoc;
}
- public Map getInpathMap() {
- return Collections.EMPTY_MAP;
+ public Map<File,String> getInpathMap() {
+ return Collections.emptyMap();
}
@@ -349,7 +346,7 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
return outputLoc;
}
- public List /* File */getAllOutputLocations() {
+ public List<File> getAllOutputLocations() {
return allOutputLocations;
}
@@ -364,13 +361,11 @@ public class MoreOutputLocationManagerTests extends AbstractMultiProjectIncremen
}
public String getSourceFolderForFile(File sourceFile) {
- // TODO Auto-generated method stub
- return null;
+ return null; // no impl
}
public int discoverChangesSince(File dir, long buildtime) {
- // TODO Auto-generated method stub
- return 0;
+ return 0; // no impl
}
}
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjTestOutputLocationManager.java b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjTestOutputLocationManager.java
index a5e93a824..bb04e515b 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjTestOutputLocationManager.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjTestOutputLocationManager.java
@@ -31,7 +31,7 @@ public class MultiProjTestOutputLocationManager implements IOutputLocationManage
private File classOutputLoc;
private File resourceOutputLoc;
private final Map sourceFolders = new HashMap();
- private List allOutputLocations;
+ private List<File> allOutputLocations;
public MultiProjTestOutputLocationManager(String testProjectPath) {
this.testProjectOutputPath = testProjectPath + File.separator + "bin";
@@ -52,9 +52,9 @@ public class MultiProjTestOutputLocationManager implements IOutputLocationManage
return resourceOutputLoc;
}
- public List getAllOutputLocations() {
+ public List<File> getAllOutputLocations() {
if (allOutputLocations == null) {
- allOutputLocations = new ArrayList();
+ allOutputLocations = new ArrayList<>();
initLocations();
allOutputLocations.add(classOutputLoc);
if (!classOutputLoc.equals(resourceOutputLoc)) {
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java
index 36001fe6a..779143bd1 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java
@@ -1233,7 +1233,7 @@ public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementa
alter(p, "inc2"); // whitespace change on affected file
build(p);
checkWasntFullBuild();
- List l = getCompilerErrorMessages(p);
+ List<String> l = getCompilerErrorMessages(p);
assertEquals("Unexpected compiler error", 0, l.size());
}
@@ -2646,7 +2646,7 @@ public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementa
configureShowWeaveInfoMessages("PR157054", true);
build("PR157054");
checkWasFullBuild();
- List weaveMessages = getWeavingMessages("PR157054");
+ List<IMessage> weaveMessages = getWeavingMessages("PR157054");
assertTrue("Should be two weaving messages but there are " + weaveMessages.size(), weaveMessages.size() == 2);
alter("PR157054", "inc1");
build("PR157054");
@@ -2827,7 +2827,7 @@ public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementa
initialiseProject("PR152257");
configureNonStandardCompileOptions("PR152257", "-XnoInline");
build("PR152257");
- List errors = getErrorMessages("PR152257");
+ List<IMessage> errors = getErrorMessages("PR152257");
assertTrue("Should be no warnings, but there are #" + errors.size(), errors.size() == 0);
checkWasFullBuild();
alter("PR152257", "inc1");
@@ -2965,10 +2965,9 @@ public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementa
}
private void checkCompiled(String projectName, String typeNameSubstring) {
- List files = getCompiledFiles(projectName);
+ List<String> files = getCompiledFiles(projectName);
boolean found = false;
- for (Iterator iterator = files.iterator(); iterator.hasNext();) {
- String object = (String) iterator.next();
+ for (String object: files) {
if (object.indexOf(typeNameSubstring) != -1) {
found = true;
}
@@ -3302,7 +3301,7 @@ public class MultiProjectIncrementalTests extends AbstractMultiProjectIncrementa
// Step2. Quick check that the advice points to something...
IProgramElement nodeForTypeA = checkForNode(model, "pkg", "A", true);
IProgramElement nodeForAdvice = findAdvice(nodeForTypeA);
- List relatedElements = getRelatedElements(model, nodeForAdvice, 1);
+ List<String> relatedElements = getRelatedElements(model, nodeForAdvice, 1);
// Step3. Check the advice applying at the first 'code' join point
// in pkg.C is from aspect pkg.A, line 7
diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/OutputLocationManagerTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/OutputLocationManagerTests.java
index 2de3976db..333495399 100644
--- a/tests/src/org/aspectj/systemtest/incremental/tools/OutputLocationManagerTests.java
+++ b/tests/src/org/aspectj/systemtest/incremental/tools/OutputLocationManagerTests.java
@@ -50,7 +50,7 @@ public class OutputLocationManagerTests extends AbstractMultiProjectIncrementalA
}
public void testResourceCopying() {
- Map resourceMap = new HashMap();
+ Map<String,File> resourceMap = new HashMap<>();
resourceMap.put("resourceOne.txt", new File(getFile(PROJECT_NAME, "srcRootOne/resourceOne.txt")));
resourceMap.put("resourceTwo.txt", new File(getFile(PROJECT_NAME, "srcRootTwo/resourceTwo.txt")));
configureResourceMap(PROJECT_NAME, resourceMap);
@@ -93,7 +93,7 @@ public class OutputLocationManagerTests extends AbstractMultiProjectIncrementalA
private static class MyOutputLocationManager implements IOutputLocationManager {
private File projectHome;
- private List allOutputDirs;
+ private List<File> allOutputDirs;
public MyOutputLocationManager(File projectHome) {
this.projectHome = projectHome;
@@ -106,8 +106,8 @@ public class OutputLocationManagerTests extends AbstractMultiProjectIncrementalA
public void reportFileRemove(String outputfile, int filetype) {
}
- public Map getInpathMap() {
- return Collections.EMPTY_MAP;
+ public Map<File,String> getInpathMap() {
+ return Collections.emptyMap();
}
@@ -132,9 +132,9 @@ public class OutputLocationManagerTests extends AbstractMultiProjectIncrementalA
return getOutputLocationForClass(resource);
}
- public List getAllOutputLocations() {
+ public List<File> getAllOutputLocations() {
if (allOutputDirs == null) {
- allOutputDirs = new ArrayList();
+ allOutputDirs = new ArrayList<>();
allOutputDirs.add(new File(projectHome, "target/main/classes"));
allOutputDirs.add(new File(projectHome, "target/test/classes"));
allOutputDirs.add(new File(projectHome, "target/anotherTest/classes"));
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
index 94462d5ff..10fdbd05c 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelShadow.java
@@ -2586,11 +2586,11 @@ public class BcelShadow extends Shadow {
ret.append(InstructionFactory.createArrayLoad(Type.OBJECT));
ret.append(Utility.createConversion(fact, Type.OBJECT, callbackMethod.getArgumentTypes()[0]));
} else {
- int position = (hasThis()/* && pointcutBindsThis */? 1 : 0);
+ int position = (hasThis() && pointcutBindsThis)? 1 : 0;
ret.append(InstructionFactory.createLoad(objectArrayType, theObjectArrayLocalNumber));
ret.append(Utility.createConstant(fact, position));
ret.append(InstructionFactory.createArrayLoad(Type.OBJECT));
- ret.append(Utility.createConversion(fact, Type.OBJECT, callbackMethod.getArgumentTypes()[position]));
+ ret.append(Utility.createConversion(fact, Type.OBJECT, callbackMethod.getArgumentTypes()[nextArgumentToProvideForCallback]));
}
nextArgumentToProvideForCallback++;
} else {
@@ -3049,12 +3049,9 @@ public class BcelShadow extends Shadow {
/**
*
- *
* @param callbackMethod the method we will call back to when our run method gets called.
- *
* @param proceedMap A map from state position to proceed argument position. May be non covering on state position.
*/
-
private LazyMethodGen makeClosureClassAndReturnConstructor(String closureClassName, LazyMethodGen callbackMethod,
IntMap proceedMap) {
String superClassName = "org.aspectj.runtime.internal.AroundClosure";
@@ -3076,7 +3073,7 @@ public class BcelShadow extends Shadow {
closureClass.addMethodGen(constructor);
- // method
+ // Create the 'Object run(Object[])' method
LazyMethodGen runMethod = new LazyMethodGen(Modifier.PUBLIC, Type.OBJECT, "run", new Type[] { objectArrayType },
new String[] {}, closureClass);
InstructionList mbody = runMethod.getBody();
@@ -3092,12 +3089,11 @@ public class BcelShadow extends Shadow {
Type[] stateTypes = callbackMethod.getArgumentTypes();
for (int i = 0, len = stateTypes.length; i < len; i++) {
- Type stateType = stateTypes[i];
- ResolvedType stateTypeX = BcelWorld.fromBcel(stateType).resolve(world);
+ ResolvedType resolvedStateType = BcelWorld.fromBcel(stateTypes[i]).resolve(world);
if (proceedMap.hasKey(i)) {
- mbody.append(proceedVar.createConvertableArrayLoad(fact, proceedMap.get(i), stateTypeX));
+ mbody.append(proceedVar.createConvertableArrayLoad(fact, proceedMap.get(i), resolvedStateType));
} else {
- mbody.append(stateVar.createConvertableArrayLoad(fact, i, stateTypeX));
+ mbody.append(stateVar.createConvertableArrayLoad(fact, i, resolvedStateType));
}
}