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()) {