aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ajde/testdata/bug-36071a/input1.jarbin1489 -> 1895 bytes
-rw-r--r--ajde/testdata/bug-36071a/input2.jarbin153 -> 162 bytes
-rw-r--r--ajde/testsrc/org/aspectj/ajde/ResourceCopyTestCase.java45
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java22
4 files changed, 29 insertions, 38 deletions
diff --git a/ajde/testdata/bug-36071a/input1.jar b/ajde/testdata/bug-36071a/input1.jar
index 83abbbaa1..cc7183fdd 100644
--- a/ajde/testdata/bug-36071a/input1.jar
+++ b/ajde/testdata/bug-36071a/input1.jar
Binary files differ
diff --git a/ajde/testdata/bug-36071a/input2.jar b/ajde/testdata/bug-36071a/input2.jar
index d55b84dfe..ff8b20a65 100644
--- a/ajde/testdata/bug-36071a/input2.jar
+++ b/ajde/testdata/bug-36071a/input2.jar
Binary files differ
diff --git a/ajde/testsrc/org/aspectj/ajde/ResourceCopyTestCase.java b/ajde/testsrc/org/aspectj/ajde/ResourceCopyTestCase.java
index 016ebef92..bd02c18db 100644
--- a/ajde/testsrc/org/aspectj/ajde/ResourceCopyTestCase.java
+++ b/ajde/testsrc/org/aspectj/ajde/ResourceCopyTestCase.java
@@ -61,9 +61,7 @@ public class ResourceCopyTestCase extends AjdeTestCase {
File outjar = openFile(outjarName);
ideManager.getProjectProperties().setOutJar(outjar.getAbsolutePath());
assertTrue("Build failed",doSynchronousBuild("config2.lst"));
- assertFalse("No build warnings",ideManager.getCompilationSourceLineTasks().isEmpty());
- List msgs = NullIdeManager.getIdeManager().getCompilationSourceLineTasks();
- assertTrue("Wrong message",((NullIdeTaskListManager.SourceLineTask)msgs.get(0)).message.getMessage().startsWith("manifest not copied: "));
+ assertTrue("Build warnings",ideManager.getCompilationSourceLineTasks().isEmpty());
compareJars(injar1,"src",outjar);
}
@@ -76,10 +74,11 @@ public class ResourceCopyTestCase extends AjdeTestCase {
ideManager.getProjectProperties().setInJars(injars);
File outjar = openFile(outjarName);
ideManager.getProjectProperties().setOutJar(outjar.getAbsolutePath());
- assertFalse("Build should have failed",doSynchronousBuild("config2.lst"));
- assertFalse("No build errors",ideManager.getCompilationSourceLineTasks().isEmpty());
+ assertTrue("Build should have suceeded",doSynchronousBuild("config2.lst"));
+ assertFalse("Build warnings for duplicate resource expected",ideManager.getCompilationSourceLineTasks().isEmpty());
List msgs = NullIdeManager.getIdeManager().getCompilationSourceLineTasks();
- assertTrue("Wrong message",((NullIdeTaskListManager.SourceLineTask)msgs.get(1)).message.getMessage().startsWith("duplicate resource: "));
+ assertTrue("Wrong message",((NullIdeTaskListManager.SourceLineTask)msgs.get(0)).message.getMessage().startsWith("duplicate resource: "));
+ compareJars(injar1,"src",outjar);
}
public void testSrcToOutjar () {
@@ -95,9 +94,7 @@ public class ResourceCopyTestCase extends AjdeTestCase {
injars.add(injar1);
ideManager.getProjectProperties().setInJars(injars);
assertTrue("Build failed",doSynchronousBuild("config2.lst"));
- assertFalse("No build warnings",ideManager.getCompilationSourceLineTasks().isEmpty());
- List msgs = NullIdeManager.getIdeManager().getCompilationSourceLineTasks();
- assertTrue("Wrong message",((NullIdeTaskListManager.SourceLineTask)msgs.get(0)).message.getMessage().startsWith("manifest not copied: "));
+ assertTrue("Build warnings",ideManager.getCompilationSourceLineTasks().isEmpty());
compareInjarsToBin(injar1,"src","bin");
}
@@ -114,10 +111,10 @@ public class ResourceCopyTestCase extends AjdeTestCase {
for (int i = 0; i < toResources.length; i++) {
String fileName = FileUtil.normalizedPath(toResources[i],binBase);
boolean b = resources.remove(fileName);
- assertTrue("Extraneous resoures:" + fileName,b);
+ assertTrue("Extraneous resources: " + fileName,b);
}
- assertTrue("Missing resources:" + resources.toString(), resources.isEmpty());
+ assertTrue("Missing resources: " + resources.toString(), resources.isEmpty());
}
/*
@@ -138,10 +135,10 @@ public class ResourceCopyTestCase extends AjdeTestCase {
String fileName = entry.getName();
if (!fileName.endsWith(".class")) {
- /* Ensure we didn't copy any JAR manifests */
- if (fileName.toLowerCase().startsWith("meta-inf")) {
+ /* Ensure we copied right JAR manifest */
+ if (fileName.equalsIgnoreCase("meta-inf/Manifest.mf")) {
byte[] outManifest = FileUtil.readAsByteArray(outjar);
- assertFalse("Manifest has been copied",Arrays.equals(inManifest,outManifest));
+ assertTrue("Wrong manifest has been copied",Arrays.equals(inManifest,outManifest));
}
boolean b = resources.remove(fileName);
@@ -179,7 +176,7 @@ public class ResourceCopyTestCase extends AjdeTestCase {
}
outjar.close();
- assertTrue("Missing resources:" + resources.toString(), resources.isEmpty());
+ assertTrue("Missing resources: " + resources.toString(), resources.isEmpty());
}
catch (IOException ex) {
fail(ex.toString());
@@ -202,16 +199,16 @@ public class ResourceCopyTestCase extends AjdeTestCase {
for (int i = 0; i < toResources.length; i++) {
String fileName = FileUtil.normalizedPath(toResources[i],binBase);
- /* Ensure we didn't copy any JAR manifests */
- if (fileName.toLowerCase().startsWith("meta-inf")) {
+ /* Ensure we copied the right JAR manifest */
+ if (fileName.equalsIgnoreCase("meta-inf/Manifest.mf")) {
byte[] outManifest = FileUtil.readAsByteArray(toResources[i]);
- assertFalse("Manifest has been copied",Arrays.equals(inManifest,outManifest));
+ assertTrue("Wrong manifest has been copied",Arrays.equals(inManifest,outManifest));
}
boolean b = resources.remove(fileName);
- assertTrue("Extraneous resoures:" + fileName,b);
+ assertTrue("Extraneous resources: " + fileName,b);
}
- assertTrue("Missing resources:" + resources.toString(), resources.isEmpty());
+ assertTrue("Missing resources: " + resources.toString(), resources.isEmpty());
}
catch (IOException ex) {
fail(ex.toString());
@@ -237,15 +234,13 @@ public class ResourceCopyTestCase extends AjdeTestCase {
ZipEntry entry;
while (null != (entry = injar.getNextEntry())) {
String fileName = entry.getName();
- if (!fileName.endsWith(".class")) {
+ if (!entry.isDirectory() && !fileName.endsWith(".class")) {
/* JAR manifests shouldn't be copied */
- if (fileName.toLowerCase().startsWith("meta-inf")) {
+ if (fileName.equalsIgnoreCase("meta-inf/Manifest.mf")) {
manifest = FileUtil.readAsByteArray(injar);
}
- else {
- resources.add(fileName);
- }
+ resources.add(fileName);
}
injar.closeEntry();
}
diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
index 9730bbdec..51b5333ed 100644
--- a/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
+++ b/weaver/src/org/aspectj/weaver/bcel/BcelWeaver.java
@@ -128,16 +128,9 @@ public class BcelWeaver implements IWeaver {
this.addClassFile(classFile);
}
else if (!entry.isDirectory()) {
-// System.err.println("? addJarFile() filename='" + filename + "'");
-
- /* Don't copy JAR manifests */
- if (filename.toLowerCase().startsWith("meta-inf")) {
- world.showMessage(IMessage.WARNING, "manifest not copied: '" + filename +
- "' in JAR '" + inFile + "'", null, null);
- }
- else {
- addResource(filename,classFile);
- }
+
+ /* bug-44190 Copy meta-data */
+ addResource(filename,classFile);
}
inStream.closeEntry();
@@ -179,9 +172,12 @@ public class BcelWeaver implements IWeaver {
}
public void addResource (String name, UnwovenClassFile resourceFile) {
- Object previous = resources.put(name, resourceFile);
- if (null != previous) {
- world.showMessage(IMessage.ERROR, "duplicate resource: '" + name + "'",
+ /* bug-44190 Change error to warning and copy first resource */
+ if (!resources.containsKey(name)) {
+ resources.put(name, resourceFile);
+ }
+ else {
+ world.showMessage(IMessage.WARNING, "duplicate resource: '" + name + "'",
null, null);
}
}