diff options
Diffstat (limited to 'org.aspectj.ajdt.core')
4 files changed, 72 insertions, 76 deletions
diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java index 08bf00d54..75f8c36cd 100644 --- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java +++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java @@ -1045,6 +1045,13 @@ public class AjBuildManager implements IOutputClassFileNameProvider, IBinarySour classpaths[i] = cps.get(i); } FileSystem fileSystem = getLibraryAccess(classpaths, filenames); + + // Use upstream method to generate '--add-reads', '--add-exports' info and copy it into our FileSystem instance. + // See https://github.com/eclipse/org.aspectj/issues/145. + FileSystem fileSystemTemp = buildConfig.getBuildArgParser().getLibraryAccess(); + fileSystem.moduleUpdates = fileSystemTemp.moduleUpdates; + fileSystemTemp.cleanup(); + environment = new StatefulNameEnvironment(fileSystem, state.getClassNameToFileMap(), state); state.setFileSystem(fileSystem); state.setNameEnvironment(environment); diff --git a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java index 0af411be3..dad61e7b2 100644 --- a/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java +++ b/org.aspectj.ajdt.core/src/main/java/org/aspectj/ajdt/internal/core/builder/StatefulNameEnvironment.java @@ -27,6 +27,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.classfmt.ClassFormatExcepti import org.aspectj.org.eclipse.jdt.internal.compiler.env.IBinaryType; import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModule; import org.aspectj.org.eclipse.jdt.internal.compiler.env.IModuleAwareNameEnvironment; +import org.aspectj.org.eclipse.jdt.internal.compiler.env.IUpdatableModule; import org.aspectj.org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer; import org.aspectj.util.FileUtil; @@ -152,6 +153,16 @@ public class StatefulNameEnvironment implements IModuleAwareNameEnvironment { } @Override + public void applyModuleUpdates(IUpdatableModule module, IUpdatableModule.UpdateKind kind) { + baseEnvironment.applyModuleUpdates(module, kind); + } + + @Override + public char[][] getUniqueModulesDeclaringPackage(char[][] packageName, char[] moduleName) { + return baseEnvironment.getUniqueModulesDeclaringPackage(packageName, moduleName); + } + + @Override public char[][] getAllAutomaticModules() { return baseEnvironment.getAllAutomaticModules(); } diff --git a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java index 7a1ad855b..e50ea9757 100644 --- a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java +++ b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/AjcTestCase.java @@ -256,29 +256,16 @@ public abstract class AjcTestCase extends TestCase { public String toString() { StringBuilder buff = new StringBuilder(); buff.append("message "); - if (sourceFileName != null) { - buff.append("in file "); - buff.append(sourceFileName); - buff.append(" "); - } - if (line != -1) { - buff.append("on line "); - buff.append(line); - buff.append(" "); - } - if (text != null) { - buff.append("containing text '"); - buff.append(text); - buff.append("' "); - } + if (sourceFileName != null) + buff.append("in file ").append(sourceFileName).append(" "); + if (line != -1) + buff.append("on line ").append(line).append(" "); + if (text != null) + buff.append("containing text '").append(text).append("' "); if (seeAlsos != null) { buff.append("\n\twith see alsos:"); - for (ISourceLocation seeAlso : seeAlsos) { - buff.append("\t\t"); - buff.append(seeAlso.getSourceFile().getPath()); - buff.append(":"); - buff.append(seeAlso.getLine()); - } + for (ISourceLocation seeAlso : seeAlsos) + buff.append("\t\t").append(seeAlso.getSourceFile().getPath()).append(":").append(seeAlso.getLine()); } return buff.toString(); } @@ -483,12 +470,10 @@ public abstract class AjcTestCase extends TestCase { addExtra(failureReport, "error", extraErrors); addExtra(failureReport, "fail", extraFails); addExtra(failureReport, "weaveInfo", extraWeaves); - failureReport.append("\ncommand was: 'ajc"); + failureReport.append("\nCommand: 'ajc"); String[] args = result.getArgs(); - for (String arg : args) { - failureReport.append(" "); - failureReport.append(arg); - } + for (String arg : args) + failureReport.append(" ").append(arg); String report = failureReport.toString(); System.err.println(failureReport); fail(assertionFailedMessage + "'\n" + report); @@ -603,8 +588,7 @@ public abstract class AjcTestCase extends TestCase { StringBuilder cp = new StringBuilder(); if (classpath != null) { // allow replacing this special variable, rather than copying all files to allow tests of jars that don't end in .jar - cp.append(substituteSandbox(classpath)); - cp.append(pathSeparator); + cp.append(substituteSandbox(classpath)).append(pathSeparator); } if (moduleName == null) { // When running modules, we want more control so don't try to be helpful by adding all jars @@ -612,10 +596,8 @@ public abstract class AjcTestCase extends TestCase { getAnyJars(ajc.getSandboxDirectory(), cp); } StringBuilder mp = new StringBuilder(); - if (modulepath != null) { - mp.append(substituteSandbox(modulepath)); - mp.append(pathSeparator); - } + if (modulepath != null) + mp.append(substituteSandbox(modulepath)).append(pathSeparator); URLClassLoader sandboxLoader; ClassLoader parentLoader = getClass().getClassLoader().getParent(); @@ -637,7 +619,8 @@ public abstract class AjcTestCase extends TestCase { URL[] sandboxUrls = getURLs(cp.toString()); sandboxLoader = createWeavingClassLoader(sandboxUrls, aspectjLoader); // sandboxLoader = createWeavingClassLoader(sandboxUrls,testLoader); - } else if(useFullLTW && useLTW) { + } + else if(useFullLTW && useLTW) { if(vmargs == null){ vmargs =""; } @@ -654,6 +637,8 @@ public abstract class AjcTestCase extends TestCase { " -classpath " + cp + pathSeparator + defaultCpAbsolute + " -javaagent:" + javaagent + " " + className + " " + String.join(" ", args); + if (Ajc.verbose) + System.out.println("\nCommand: '" + command + "'\n"); // Command is executed using ProcessBuilder to allow setting CWD for ajc sandbox compliance ProcessBuilder pb = new ProcessBuilder(tokenizeCommand(command)); pb.directory( new File(ajc.getSandboxDirectory().getAbsolutePath())); @@ -667,7 +652,8 @@ public abstract class AjcTestCase extends TestCase { e.printStackTrace(); } return lastRunResult; - } else if (moduleName != null) { + } + else if (moduleName != null) { // CODE FOR RUNNING MODULES if(vmargs == null){ vmargs =""; @@ -679,13 +665,11 @@ public abstract class AjcTestCase extends TestCase { if (mp.indexOf("$runtime") != -1) { mp = mp.replace(mp.indexOf("$runtime"),"$runtime".length(),TestUtil.aspectjrtPath().toString()); } - if (cp.indexOf("aspectjrt")==-1) { + if (cp.indexOf("aspectjrt") == -1) cp.append(TestUtil.aspectjrtPath().getPath()).append(pathSeparator); - } - String command = LangUtil.getJavaExecutable().getAbsolutePath() + " " +vmargs+ (cp.length()==0?"":" -classpath " + cp) + " -p "+mp+" --module "+moduleName ; - if (Ajc.verbose) { - System.out.println("Command is "+command); - } + String command = LangUtil.getJavaExecutable().getAbsolutePath() + " " + vmargs + (cp.length() == 0 ? "" : " -classpath " + cp) + " -p " + mp + " --module " + moduleName; + if (Ajc.verbose) + System.out.println("\nCommand: '" + command + "'\n"); // Command is executed using ProcessBuilder to allow setting CWD for ajc sandbox compliance ProcessBuilder pb = new ProcessBuilder(tokenizeCommand(command)); pb.directory( new File(ajc.getSandboxDirectory().getAbsolutePath())); @@ -699,7 +683,16 @@ public abstract class AjcTestCase extends TestCase { e.printStackTrace(); } return lastRunResult; - } else if (vmargs!=null && (vmargs.contains("--enable-preview") || vmargs.contains("--add-modules") || vmargs.contains("--limit-modules") || vmargs.contains("--add-reads"))) { + } + else if ( + vmargs != null && ( + vmargs.contains("--enable-preview") || + vmargs.contains("--add-modules") || + vmargs.contains("--limit-modules") || + vmargs.contains("--add-reads") || + vmargs.contains("--add-exports") + ) + ) { // If --add-modules supplied, need to fork the test try { // if (mp.indexOf("$runtime") != -1) { @@ -709,9 +702,8 @@ public abstract class AjcTestCase extends TestCase { cp.append(pathSeparator).append(TestUtil.aspectjrtPath().getPath()); } String command = LangUtil.getJavaExecutable().getAbsolutePath() + " " +vmargs+ (cp.length()==0?"":" -classpath " + cp) + " " + className ; - if (Ajc.verbose) { - System.out.println("\nCommand is "+command); - } + if (Ajc.verbose) + System.out.println("\nCommand: '" + command + "'\n"); // Command is executed using ProcessBuilder to allow setting CWD for ajc sandbox compliance ProcessBuilder pb = new ProcessBuilder(tokenizeCommand(command)); pb.directory( new File(ajc.getSandboxDirectory().getAbsolutePath())); @@ -725,7 +717,8 @@ public abstract class AjcTestCase extends TestCase { e.printStackTrace(); } return lastRunResult; - } else { + } + else { cp.append(DEFAULT_CLASSPATH_ENTRIES); URL[] urls = getURLs(cp.toString()); sandboxLoader = new URLClassLoader(urls, parentLoader); @@ -733,16 +726,13 @@ public abstract class AjcTestCase extends TestCase { ByteArrayOutputStream baosOut = new ByteArrayOutputStream(); ByteArrayOutputStream baosErr = new ByteArrayOutputStream(); - StringBuilder command = new StringBuilder(); - command.append("java -classpath "); - command.append(cp.toString()); - command.append(" "); - command.append(className); - for (String arg : args) { - command.append(" "); - command.append(arg); - } + command.append("java -classpath ").append(cp).append(" ").append(className); + for (String arg : args) + command.append(" ").append(arg); + if (Ajc.verbose) + System.out.println("\nCommand: '" + command + "'\n"); + // try { // // Enable the security manager // Policy.setPolicy(new MyPolicy()); @@ -1015,27 +1005,17 @@ public abstract class AjcTestCase extends TestCase { private void addMissing(StringBuilder buff, String type, List<AjcTestCase.Message> messages) { if (!messages.isEmpty()) { - buff.append("Missing expected "); - buff.append(type); - buff.append(" messages:\n"); - for (Message message : messages) { - buff.append("\t"); - buff.append(message.toString()); - buff.append("\n"); - } + buff.append("Missing expected ").append(type).append(" messages:\n"); + for (Message message : messages) + buff.append("\t").append(message.toString()).append("\n"); } } private void addExtra(StringBuilder buff, String type, List messages) { if (!messages.isEmpty()) { - buff.append("Unexpected "); - buff.append(type); - buff.append(" messages:\n"); - for (Object message : messages) { - buff.append("\t"); - buff.append(message.toString()); - buff.append("\n"); - } + buff.append("Unexpected ").append(type).append(" messages:\n"); + for (Object message : messages) + buff.append("\t").append(message.toString()).append("\n"); } } @@ -1043,12 +1023,10 @@ public abstract class AjcTestCase extends TestCase { private void getAnyJars(File dir, StringBuilder buff) { File[] files = dir.listFiles(); for (File file : files) { - if (file.getName().endsWith(".jar")) { - buff.append(pathSeparator); - buff.append(file.getAbsolutePath()); - } else if (file.isDirectory()) { + if (file.getName().endsWith(".jar")) + buff.append(pathSeparator).append(file.getAbsolutePath()); + else if (file.isDirectory()) getAnyJars(file, buff); - } } } diff --git a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/CompilationResult.java b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/CompilationResult.java index 612f16539..f2757bdaa 100644 --- a/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/CompilationResult.java +++ b/org.aspectj.ajdt.core/src/test/java/org/aspectj/tools/ajc/CompilationResult.java @@ -212,7 +212,7 @@ public class CompilationResult { buff.append(weaveMessage.toString()); buff.append("\n"); } - buff.append("\ncommand was: 'ajc"); + buff.append("\nCommand: 'ajc"); for (String arg : args) { buff.append(' '); buff.append(arg); |