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 {