diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
index 520087a..bd9b765 100644
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -1859,7 +1859,7 @@
                 try
                 {
                     // Add the bundle to the cache.
-                    m_cache.create(id, location);
+                    m_cache.create(id, location, is);
                 }
                 catch (Exception ex)
                 {
@@ -3925,4 +3925,4 @@
             m_bundleLock.notifyAll();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleArchive.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleArchive.java
index fbdeea9..c44881d 100644
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleArchive.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleArchive.java
@@ -105,18 +105,21 @@
      * <p>
      * This constructor is used for creating new archives when a bundle is
      * installed into the framework. Each archive receives a logger, a root
-     * directory, its associated bundle identifier, and the associated bundle
-     * location string. The root directory is where any required state can be
-     * stored.
+     * directory, its associated bundle identifier, the associated bundle
+     * location string, and an input stream from which to read the bundle
+     * content. The root directory is where any required state can be
+     * stored. The input stream may be null, in which case the location is
+     * used as an URL to the bundle content.
      * </p>
      * @param logger the logger to be used by the archive.
      * @param archiveRootDir the archive root directory for storing state.
      * @param id the bundle identifier associated with the archive.
      * @param location the bundle location string associated with the archive.
+     * @param is input stream from which to read the bundle content.
      * @throws Exception if any error occurs.
     **/
     public DefaultBundleArchive(
-        Logger logger, File archiveRootDir, long id, String location)    
+        Logger logger, File archiveRootDir, long id, String location, InputStream is)    
         throws Exception
     {
         m_logger = logger;
@@ -133,7 +136,7 @@
         initialize();
 
         // Add a revision for the content.
-        revise(getCurrentLocation(), null);
+        revise(getCurrentLocation(), is);
     }
 
     /**
@@ -958,4 +961,4 @@
             if (os != null) os.close();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleCache.java b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleCache.java
index b45cd54..bd9044f 100644
--- a/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleCache.java
+++ b/org.apache.felix.framework/src/main/java/org/apache/felix/framework/cache/DefaultBundleCache.java
@@ -131,7 +131,8 @@
         return -1;
     }
 
-    public synchronized DefaultBundleArchive create(long id, String location)
+    public synchronized DefaultBundleArchive create(
+        long id, String location, InputStream is)
         throws Exception
     {
         // Construct archive root directory.
@@ -141,7 +142,8 @@
         try
         {
             // Create the archive and add it to the list of archives.
-            DefaultBundleArchive ba = new DefaultBundleArchive(m_logger, archiveRootDir, id, location);
+            DefaultBundleArchive ba =
+                new DefaultBundleArchive(m_logger, archiveRootDir, id, location, is);
             DefaultBundleArchive[] tmp = new DefaultBundleArchive[m_archives.length + 1];
             System.arraycopy(m_archives, 0, tmp, 0, m_archives.length);
             tmp[m_archives.length] = ba;
@@ -342,4 +344,4 @@
         m_archives = (DefaultBundleArchive[])
             archiveList.toArray(new DefaultBundleArchive[archiveList.size()]);
     }
-}
\ No newline at end of file
+}
