Fix for FELIX-3466.
directoryManipulation() fixed to take supplied MANIFEST file's location into account while updating it.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1346631 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
index 5fcee7b..7cf9d34 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/Pojoization.java
@@ -216,10 +216,12 @@
}
ManifestProvider manifestProvider;
+ File selectedManifestFile;
if (manifestFile != null) {
if (manifestFile.isFile()) {
try {
manifestProvider = new FileManifestProvider(manifestFile);
+ selectedManifestFile = manifestFile;
} catch (IOException e) {
m_reporter.error("Cannot read Manifest from '" + manifestFile.getAbsolutePath() + "'");
return;
@@ -235,6 +237,7 @@
if (original.isFile()) {
try {
manifestProvider = new FileManifestProvider(original);
+ selectedManifestFile = original;
} catch (IOException e) {
m_reporter.error("Cannot read Manifest from '" + original.getAbsolutePath() + "'");
return;
@@ -254,6 +257,7 @@
store.setResourceMapper(new WABResourceMapper());
}
store.setManifest(manifestProvider.getManifest());
+ store.setManifestFile(selectedManifestFile);
DefaultManifestBuilder dmb = new DefaultManifestBuilder();
dmb.setMetadataRenderer(new MetadataRenderer());
store.setManifestBuilder(dmb);
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/store/DirectoryResourceStore.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/store/DirectoryResourceStore.java
index b1af78f..a38dc29 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/store/DirectoryResourceStore.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/store/DirectoryResourceStore.java
@@ -61,6 +61,11 @@
* Original manifest to be updated.
*/
private Manifest m_manifest;
+
+ /**
+ * Location of the manifest file to update.
+ */
+ private File m_manifest_file;
/**
* Resource Mapper.
@@ -87,6 +92,10 @@
public void setManifest(Manifest manifest) {
m_manifest = manifest;
}
+
+ public void setManifestFile(File manifestFile){
+ m_manifest_file = manifestFile;
+ }
public byte[] read(String path) throws IOException {
File resource = new File(m_source, m_mapper.internalize(path));
@@ -119,11 +128,9 @@
// Update the manifest
Manifest updated = m_manifestBuilder.build(m_manifest);
-
- // Write it on disk
- File metaInf = new File(m_target, "META-INF");
- File resource = new File(metaInf, "MANIFEST.MF");
- OutputStream os = new FileOutputStream(resource);
+
+ // Write it to disk
+ OutputStream os = new FileOutputStream(m_manifest_file);
try {
updated.write(os);
} finally {