Author: toad
Date: 2006-03-10 17:35:44 +0000 (Fri, 10 Mar 2006)
New Revision: 8218
Added:
trunk/freenet/src/freenet/client/async/ManifestElement.java
Modified:
trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
trunk/freenet/src/freenet/node/Version.java
Log:
519:
Change API of SimpleManifestPutter to allow for MIME type overrides.
PUTDIR should still work.
Preparatory to FCP putdir.
Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
2006-03-10 17:21:09 UTC (rev 8217)
+++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
2006-03-10 17:35:44 UTC (rev 8218)
@@ -129,7 +129,7 @@
public FreenetURI insertManifest(FreenetURI insertURI, HashMap
bucketsByName, String defaultName) throws InserterException {
PutWaiter pw = new PutWaiter();
SimpleManifestPutter putter =
- new SimpleManifestPutter(pw, node.chkPutScheduler,
node.sskPutScheduler, bucketsByName, priorityClass, insertURI, defaultName,
getInserterContext(), false, this);
+ new SimpleManifestPutter(pw, node.chkPutScheduler,
node.sskPutScheduler,
SimpleManifestPutter.bucketsByNameToManifestEntries(bucketsByName),
priorityClass, insertURI, defaultName, getInserterContext(), false, this);
return pw.waitForCompletion();
}
Added: trunk/freenet/src/freenet/client/async/ManifestElement.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ManifestElement.java 2006-03-10
17:21:09 UTC (rev 8217)
+++ trunk/freenet/src/freenet/client/async/ManifestElement.java 2006-03-10
17:35:44 UTC (rev 8218)
@@ -0,0 +1,36 @@
+package freenet.client.async;
+
+import freenet.support.Bucket;
+
+/**
+ * Represents an element in a manifest. Fed to SimpleManifestPutter.
+ */
+public class ManifestElement {
+
+ /** Filename */
+ final String name;
+
+ /** Data to be inserted */
+ final Bucket data;
+
+ /** MIME type override. null => use default for filename */
+ final String mimeOverride;
+
+ public ManifestElement(String name, Bucket data, String mimeOverride) {
+ this.name = name;
+ this.data = data;
+ this.mimeOverride = mimeOverride;
+ }
+
+ public int hashCode() {
+ return name.hashCode();
+ }
+
+ public boolean equals(Object o) {
+ if(this == o) return true;
+ if(o instanceof ManifestElement) {
+ if(((ManifestElement)o).name.equals(name)) return true;
+ }
+ return false;
+ }
+}
Modified: trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
2006-03-10 17:21:09 UTC (rev 8217)
+++ trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
2006-03-10 17:35:44 UTC (rev 8218)
@@ -158,7 +158,7 @@
new String[] { "index.html", "index.htm", "default.html",
"default.htm" };
public SimpleManifestPutter(ClientCallback cb, ClientRequestScheduler
chkSched,
- ClientRequestScheduler sskSched, HashMap bucketsByName,
short prioClass, FreenetURI target,
+ ClientRequestScheduler sskSched, HashSet
manifestElements, short prioClass, FreenetURI target,
String defaultName, InserterContext ctx, boolean
getCHKOnly, Object clientContext) throws InserterException {
super(prioClass, chkSched, sskSched, clientContext);
this.defaultName = defaultName;
@@ -170,11 +170,14 @@
runningPutHandlers = new HashSet();
putHandlersWaitingForMetadata = new HashSet();
waitingForBlockSets = new HashSet();
- Iterator it = bucketsByName.keySet().iterator();
+ Iterator it = manifestElements.iterator();
while(it.hasNext()) {
- String name = (String) it.next();
- Bucket data = (Bucket) bucketsByName.get(name);
- String mimeType = DefaultMIMETypes.guessMIMEType(name);
+ ManifestElement element = (ManifestElement) it.next();
+ String name = element.name;
+ Bucket data = element.data;
+ String mimeType = element.mimeOverride;
+ if(mimeType == null)
+ mimeType = DefaultMIMETypes.guessMIMEType(name);
ClientMetadata cm;
if(mimeType.equals(DefaultMIMETypes.DEFAULT_MIME_TYPE))
cm = null;
@@ -335,4 +338,20 @@
this.blockSetFinalized();
}
+ /**
+ * Convert a HashMap of name -> bucket to a HashSet of ManifestEntry's.
+ * All are to have mimeOverride=null, i.e. we use the auto-detected
mime type
+ * from the filename.
+ */
+ public static HashSet bucketsByNameToManifestEntries(HashMap
bucketsByName) {
+ HashSet manifestEntries = new HashSet();
+ Iterator i = bucketsByName.keySet().iterator();
+ while(i.hasNext()) {
+ String name = (String) i.next();
+ Bucket data = (Bucket) bucketsByName.get(name);
+ manifestEntries.add(new ManifestElement(name, data,
null));
+ }
+ return manifestEntries;
+ }
+
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-03-10 17:21:09 UTC (rev
8217)
+++ trunk/freenet/src/freenet/node/Version.java 2006-03-10 17:35:44 UTC (rev
8218)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 518;
+ private static final int buildNumber = 519;
/** Oldest build of Fred we will talk to */
private static final int lastGoodBuild = 507;