Author: toad
Date: 2007-06-16 13:36:37 +0000 (Sat, 16 Jun 2007)
New Revision: 13623

Modified:
   trunk/freenet/src/freenet/client/ClientMetadata.java
   trunk/freenet/src/freenet/client/Metadata.java
   trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
Log:
Implicit container support. Not tested.

Modified: trunk/freenet/src/freenet/client/ClientMetadata.java
===================================================================
--- trunk/freenet/src/freenet/client/ClientMetadata.java        2007-06-16 
13:19:29 UTC (rev 13622)
+++ trunk/freenet/src/freenet/client/ClientMetadata.java        2007-06-16 
13:36:37 UTC (rev 13623)
@@ -52,4 +52,8 @@
        public String toString() {
                return getMIMEType();
        }
+
+       public void clear() {
+               mimeType = null;
+       }
 }

Modified: trunk/freenet/src/freenet/client/Metadata.java
===================================================================
--- trunk/freenet/src/freenet/client/Metadata.java      2007-06-16 13:19:29 UTC 
(rev 13622)
+++ trunk/freenet/src/freenet/client/Metadata.java      2007-06-16 13:36:37 UTC 
(rev 13623)
@@ -916,4 +916,10 @@
        public boolean isResolved() {
                return resolvedURI != null;
        }
+
+       public void setArchiveManifest() {
+               archiveType = 
ArchiveManager.getArchiveType(clientMetadata.getMIMEType());
+               clientMetadata.clear();
+               documentType = ZIP_MANIFEST;
+       }
 }

Modified: trunk/freenet/src/freenet/client/async/SingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2007-06-16 13:19:29 UTC (rev 13622)
+++ trunk/freenet/src/freenet/client/async/SingleFileFetcher.java       
2007-06-16 13:36:37 UTC (rev 13623)
@@ -373,7 +373,13 @@
                        } else if(metadata.isSingleFileRedirect()) {
                                if(logMINOR) Logger.minor(this, "Is single-file 
redirect");
                                
clientMetadata.mergeNoOverwrite(metadata.getClientMetadata()); // even 
splitfiles can have mime types!
-                               // FIXME implement implicit archive support
+
+                               String mimeType = clientMetadata.getMIMEType();
+                               if(ArchiveManager.isUsableArchiveType(mimeType) 
&& metaStrings.size() > 0) {
+                                       // Looks like an implicit archive, 
handle as such
+                                       metadata.setArchiveManifest();
+                                       continue;
+                               }

                                // Simple redirect
                                // Just create a new SingleFileFetcher
@@ -417,10 +423,16 @@
                                return;
                        } else if(metadata.isSplitfile()) {
                                if(logMINOR) Logger.minor(this, "Fetching 
splitfile");
-                               // FIXME implicit archive support

                                
clientMetadata.mergeNoOverwrite(metadata.getClientMetadata()); // even 
splitfiles can have mime types!

+                               String mimeType = clientMetadata.getMIMEType();
+                               if(ArchiveManager.isUsableArchiveType(mimeType) 
&& metaStrings.size() > 0) {
+                                       // Looks like an implicit archive, 
handle as such
+                                       metadata.setArchiveManifest();
+                                       continue;
+                               }
+                               
                                // Splitfile (possibly compressed)

                                if(metadata.isCompressed()) {


Reply via email to