Author: toad
Date: 2006-08-03 19:10:17 +0000 (Thu, 03 Aug 2006)
New Revision: 9869

Modified:
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   trunk/freenet/src/freenet/config/FilePersistentConfig.java
   trunk/freenet/src/freenet/config/SubConfig.java
   trunk/freenet/src/freenet/crypt/DSAGroup.java
   trunk/freenet/src/freenet/crypt/DSAPrivateKey.java
   trunk/freenet/src/freenet/crypt/DSAPublicKey.java
   trunk/freenet/src/freenet/node/FNPPacketMangler.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/PeerManager.java
   trunk/freenet/src/freenet/node/PeerNode.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/AddPeer.java
   trunk/freenet/src/freenet/node/fcp/AllDataMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
   trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientHelloMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
   trunk/freenet/src/freenet/node/fcp/ClientRequest.java
   
trunk/freenet/src/freenet/node/fcp/CloseConnectionDuplicateClientNameMessage.java
   trunk/freenet/src/freenet/node/fcp/DataFoundMessage.java
   trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java
   trunk/freenet/src/freenet/node/fcp/EndListPersistentRequestsMessage.java
   trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
   trunk/freenet/src/freenet/node/fcp/FinishedCompressionMessage.java
   trunk/freenet/src/freenet/node/fcp/GenerateSSKMessage.java
   trunk/freenet/src/freenet/node/fcp/GetFailedMessage.java
   trunk/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
   trunk/freenet/src/freenet/node/fcp/IdentifierCollisionMessage.java
   trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
   trunk/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
   trunk/freenet/src/freenet/node/fcp/ModifyPeer.java
   trunk/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
   trunk/freenet/src/freenet/node/fcp/NodeHelloMessage.java
   trunk/freenet/src/freenet/node/fcp/PeerRemoved.java
   trunk/freenet/src/freenet/node/fcp/PersistentGet.java
   trunk/freenet/src/freenet/node/fcp/PersistentPut.java
   trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
   trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
   trunk/freenet/src/freenet/node/fcp/PutFailedMessage.java
   trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
   trunk/freenet/src/freenet/node/fcp/RemovePeer.java
   trunk/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
   trunk/freenet/src/freenet/node/fcp/SSKKeypairMessage.java
   trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java
   trunk/freenet/src/freenet/node/fcp/SimpleProgressMessage.java
   trunk/freenet/src/freenet/node/fcp/StartedCompressionMessage.java
   trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java
   trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java
   trunk/freenet/src/freenet/node/fcp/URIGeneratedMessage.java
   trunk/freenet/src/freenet/node/fcp/WatchGlobal.java
   trunk/freenet/src/freenet/support/SimpleFieldSet.java
   trunk/freenet/src/freenet/support/io/FileBucket.java
   trunk/freenet/src/freenet/support/io/NullBucket.java
   trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
   trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java
   trunk/freenet/src/freenet/support/io/ReadOnlyFileSliceBucket.java
Log:
922: Rewrite a lot of SimpleFieldSet: Allows value with the same name as a 
subset, separate hashmap for subsets, etc.

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-03 19:10:17 UTC (rev 9869)
@@ -294,7 +294,7 @@
                                throw new ResumeException("No 
SplitFileInserter");
                        ClientPutState newSFI, newMetaPutter = null;
                        newSFI = new SplitFileInserter(parent, this, 
block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, sfiFS);
-                       fs.remove("SplitFileInserter");
+                       fs.removeSubset("SplitFileInserter");
                        SimpleFieldSet metaFS = fs.subset("MetadataPutter");
                        if(metaFS != null) {
                                try {
@@ -310,7 +310,7 @@
                                        // Ignore, it will be reconstructed 
later
                                }
                        }
-                       fs.remove("MetadataPutter");
+                       fs.removeSubset("MetadataPutter");
                        synchronized(this) {
                                sfi = newSFI;
                                metadataPutter = newMetaPutter;
@@ -493,7 +493,7 @@
                                curSFI = sfi;
                                curMetadataPutter = metadataPutter;
                        }
-                       SimpleFieldSet fs = new SimpleFieldSet(true);
+                       SimpleFieldSet fs = new SimpleFieldSet();
                        fs.put("Type", "SplitHandler");
                        if(curSFI != null)
                                fs.put("SplitFileInserter", 
curSFI.getProgressFieldset());

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-08-03 19:10:17 UTC (rev 9869)
@@ -39,7 +39,7 @@
        final boolean insertAsArchiveManifest;

        public SimpleFieldSet getProgressFieldset() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                // don't save basic infrastructure such as ctx and parent
                // only save details of the request
                fs.put("Type", "SplitFileInserter");
@@ -49,7 +49,7 @@
                fs.put("Finished", Boolean.toString(finished));
                fs.put("SegmentSize", Integer.toString(segmentSize));
                fs.put("CheckSegmentSize", Integer.toString(checkSegmentSize));
-               SimpleFieldSet segs = new SimpleFieldSet(true);
+               SimpleFieldSet segs = new SimpleFieldSet();
                for(int i=0;i<segments.length;i++) {
                        segs.put(Integer.toString(i), 
segments[i].getProgressFieldset());
                }
@@ -161,7 +161,7 @@
                for(int i=0;i<segments.length;i++) {
                        String index = Integer.toString(i);
                        SimpleFieldSet segment = segFS.subset(index);
-                       segFS.remove(index);
+                       segFS.removeSubset(index);
                        if(segment == null) throw new ResumeException("No 
segment "+i);
                        segments[i] = new SplitFileInserterSegment(this, 
segment, splitfileAlgorithm, ctx, getCHKOnly, i);
                        dataBlocks += segments[i].countDataBlocks();

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-08-03 19:10:17 UTC (rev 9869)
@@ -217,7 +217,7 @@
        }

        public synchronized SimpleFieldSet getProgressFieldset() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "SplitFileInserterSegment");
                fs.put("Finished", Boolean.toString(finished));
                // If true, check blocks which are null are finished 
@@ -225,10 +225,10 @@
                // If true, data blocks which are null are finished
                fs.put("Started", Boolean.toString(started));
                errors.copyToFieldSet(fs, "Errors.", false);
-               SimpleFieldSet dataFS = new SimpleFieldSet(true);
+               SimpleFieldSet dataFS = new SimpleFieldSet();
                dataFS.put("Count", Integer.toString(dataBlocks.length));
                for(int i=0;i<dataBlocks.length;i++) {
-                       SimpleFieldSet block = new SimpleFieldSet(true);
+                       SimpleFieldSet block = new SimpleFieldSet();
                        if(dataURIs[i] != null)
                                block.put("URI", dataURIs[i].toString());
                        SingleBlockInserter sbi =
@@ -257,10 +257,10 @@
                                dataFS.put(Integer.toString(i), block);
                }
                fs.put("DataBlocks", dataFS);
-               SimpleFieldSet checkFS = new SimpleFieldSet(true);
+               SimpleFieldSet checkFS = new SimpleFieldSet();
                checkFS.put("Count", Integer.toString(checkBlocks.length));
                for(int i=0;i<checkBlocks.length;i++) {
-                       SimpleFieldSet block = new SimpleFieldSet(true);
+                       SimpleFieldSet block = new SimpleFieldSet();
                        if(checkURIs[i] != null)
                                block.put("URI", checkURIs[i].toString());
                        SingleBlockInserter sbi =

Modified: trunk/freenet/src/freenet/config/FilePersistentConfig.java
===================================================================
--- trunk/freenet/src/freenet/config/FilePersistentConfig.java  2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/config/FilePersistentConfig.java  2006-08-03 
19:10:17 UTC (rev 9869)
@@ -82,7 +82,7 @@
                        LineReadingInputStream lis = new 
LineReadingInputStream(bis);
                        // Config file is UTF-8 too!
                        synchronized (this) {
-                               origConfigFileContents = new 
SimpleFieldSet(lis, 32768, 128, true, true, true); 
+                               origConfigFileContents = new 
SimpleFieldSet(lis, 32768, 128, true, true);       
                        }
                } finally {
                        try {
@@ -137,7 +137,7 @@
        }

        private synchronized SimpleFieldSet exportFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                SubConfig[] configs;
                synchronized(this) {
                        configs = (SubConfig[]) 
configsByPrefix.values().toArray(new SubConfig[configsByPrefix.size()]);
@@ -155,7 +155,7 @@
                        if(origConfigFileContents == null) return;
                        name = 
config.prefix+SimpleFieldSet.MULTI_LEVEL_CHAR+o.name;
                        val = origConfigFileContents.get(name);
-                       origConfigFileContents.remove(name);
+                       origConfigFileContents.removeValue(name);
                        if(val == null) return;
                }
                try {

Modified: trunk/freenet/src/freenet/config/SubConfig.java
===================================================================
--- trunk/freenet/src/freenet/config/SubConfig.java     2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/config/SubConfig.java     2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -178,7 +178,7 @@
        }

        public SimpleFieldSet exportFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                Set entrySet = map.entrySet();
                Iterator i = entrySet.iterator();
                while(i.hasNext()) {

Modified: trunk/freenet/src/freenet/crypt/DSAGroup.java
===================================================================
--- trunk/freenet/src/freenet/crypt/DSAGroup.java       2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/crypt/DSAGroup.java       2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -329,7 +329,7 @@
     }

        public SimpleFieldSet asFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("p", Base64.encode(p.toByteArray()));
                fs.put("q", Base64.encode(q.toByteArray()));
                fs.put("g", Base64.encode(g.toByteArray()));

Modified: trunk/freenet/src/freenet/crypt/DSAPrivateKey.java
===================================================================
--- trunk/freenet/src/freenet/crypt/DSAPrivateKey.java  2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/crypt/DSAPrivateKey.java  2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -65,7 +65,7 @@
     }

        public SimpleFieldSet asFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("x", Base64.encode(x.toByteArray()));
                return fs;
        }

Modified: trunk/freenet/src/freenet/crypt/DSAPublicKey.java
===================================================================
--- trunk/freenet/src/freenet/crypt/DSAPublicKey.java   2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/crypt/DSAPublicKey.java   2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -188,7 +188,7 @@
     }

        public SimpleFieldSet asFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("y", Base64.encode(y.toByteArray()));
                return fs;
        }

Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java        2006-08-03 
19:10:17 UTC (rev 9869)
@@ -143,7 +143,7 @@
      */
     private boolean tryProcessAuth(byte[] buf, int offset, int length, 
PeerNode opn, Peer peer) {
         BlockCipher authKey = opn.incomingSetupCipher;
-        Logger.minor(this, "Decrypt key: 
"+HexUtil.bytesToHex(opn.incomingSetupKey));
+        Logger.minor(this, "Decrypt key: 
"+HexUtil.bytesToHex(opn.incomingSetupKey)+" for "+peer+" : "+opn);
         // Does the packet match IV E( H(data) data ) ?
         PCFBMode pcfb = new PCFBMode(authKey);
         int ivLength = pcfb.lengthIV();

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-08-03 18:48:45 UTC (rev 
9868)
+++ trunk/freenet/src/freenet/node/Node.java    2006-08-03 19:10:17 UTC (rev 
9869)
@@ -227,8 +227,8 @@
                        // Remove some unnecessary fields that only cause 
collisions.

                        // Delete entire ark.* field for now. Changing this and 
automatically moving to the new may be supported in future.
-                       fs.remove("ark");
-                       fs.remove("location");
+                       fs.removeSubset("ark");
+                       fs.removeValue("location");
                        //fs.remove("version"); - keep version because of its 
significance in reconnection

                        String s = fs.toString();
@@ -748,7 +748,7 @@
                FileInputStream fis = new FileInputStream(filename);
                InputStreamReader isr = new InputStreamReader(fis);
                BufferedReader br = new BufferedReader(isr);
-               SimpleFieldSet fs = new SimpleFieldSet(br, true);
+               SimpleFieldSet fs = new SimpleFieldSet(br);
                br.close();
                // Read contents
                String[] udp = fs.getAll("physical.udp");
@@ -2396,7 +2396,7 @@
         * @return
         */
        public SimpleFieldSet exportPublicFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                Peer[] ips = getPrimaryIPAddress();
                fs.put("base64", "true");
                if(ips != null) {

Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java     2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/PeerManager.java     2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -69,7 +69,7 @@
                 while(true) {
                     // Read a single NodePeer
                     SimpleFieldSet fs;
-                    fs = new SimpleFieldSet(br, true);
+                    fs = new SimpleFieldSet(br);
                     PeerNode pn;
                     try {
                         pn = new PeerNode(fs, node, true);

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -1477,7 +1477,7 @@
         BufferedReader br = new BufferedReader(isr);
         SimpleFieldSet fs;
         try {
-            fs = new SimpleFieldSet(br, false);
+            fs = new SimpleFieldSet(br);
         } catch (IOException e) {
             Logger.error(this, "Impossible: e", e);
             return;
@@ -1679,7 +1679,7 @@
      * Export metadata about the node as a SimpleFieldSet
      */
     public synchronized SimpleFieldSet exportMetadataFieldSet() {
-       SimpleFieldSet fs = new SimpleFieldSet(true);
+       SimpleFieldSet fs = new SimpleFieldSet();
        if(getDetectedPeer() != null)
                fs.put("detected.udp", detectedPeer.toString());
        if(lastReceivedPacketTime() > 0)
@@ -1707,7 +1707,7 @@
      * Export volatile data about the node as a SimpleFieldSet
      */
     public SimpleFieldSet exportVolatileFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                long now = System.currentTimeMillis();
                synchronized(this) {
                        fs.put("averagePingTime", 
Double.toString(averagePingTime()));
@@ -1733,7 +1733,7 @@
      * Export the peer's noderef as a SimpleFieldSet
      */
     public synchronized SimpleFieldSet exportFieldSet() {
-        SimpleFieldSet fs = new SimpleFieldSet(true);
+        SimpleFieldSet fs = new SimpleFieldSet();
         if(getLastGoodVersion() != null)
                fs.put("lastGoodVersion", lastGoodVersion);
                for(int i=0;i<nominalPeer.size();i++) {

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-03 18:48:45 UTC (rev 
9868)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-03 19:10:17 UTC (rev 
9869)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 921;
+       private static final int buildNumber = 922;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 874;

Modified: trunk/freenet/src/freenet/node/fcp/AddPeer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/AddPeer.java     2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/AddPeer.java     2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -27,7 +27,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/AllDataMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/AllDataMessage.java      2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/AllDataMessage.java      2006-08-03 
19:10:17 UTC (rev 9869)
@@ -25,7 +25,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("DataLength", Long.toString(dataLength));
                fs.put("Identifier", identifier);
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -423,7 +423,7 @@
        // This is distinct from the ClientGetMessage code, as later on it will 
be radically
        // different (it can store detailed state).
        public synchronized SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true); // we will need 
multi-level later...
+               SimpleFieldSet fs = new SimpleFieldSet(); // we will need 
multi-level later...
                fs.put("Type", "GET");
                fs.put("URI", uri.toString(false));
                fs.put("Identifier", identifier);

Modified: trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientGetMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -182,7 +182,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("IgnoreDS", Boolean.toString(ignoreDS));
                fs.put("URI", uri.toString(false));
                fs.put("Identifier", identifier);

Modified: trunk/freenet/src/freenet/node/fcp/ClientHelloMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientHelloMessage.java  2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientHelloMessage.java  2006-08-03 
19:10:17 UTC (rev 9869)
@@ -26,7 +26,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("Name", clientName);
                sfs.put("ExpectedVersion", clientExpectedVersion);
                return sfs;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutBase.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutBase.java       2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutBase.java       2006-08-03 
19:10:17 UTC (rev 9869)
@@ -218,7 +218,7 @@
        protected abstract FCPMessage persistentTagMessage();

        public synchronized SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true); // we will need 
multi-level later...
+               SimpleFieldSet fs = new SimpleFieldSet(); // we will need 
multi-level later...
                fs.put("Type", getTypeName());
                fs.put("URI", uri.toString(false));
                fs.put("Identifier", identifier);

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-08-03 
19:10:17 UTC (rev 9869)
@@ -186,7 +186,7 @@
        public SimpleFieldSet getFieldSet() {
                SimpleFieldSet fs = super.getFieldSet();
                // Translate manifestElements directly into a fieldset
-               SimpleFieldSet files = new SimpleFieldSet(true);
+               SimpleFieldSet files = new SimpleFieldSet();
                // Flatten the hierarchy, it can be reconstructed on restarting.
                // Storing it directly would be a PITA.
                ManifestElement[] elements = 
SimpleManifestPutter.flatten(manifestElements);
@@ -196,7 +196,7 @@
                        ManifestElement e = elements[i];
                        String name = e.getName();
                        String mimeOverride = e.getMimeTypeOverride();
-                       SimpleFieldSet subset = new SimpleFieldSet(true);
+                       SimpleFieldSet subset = new SimpleFieldSet();
                        subset.put("Name", name);
                        if(mimeOverride != null)
                                subset.put("Metadata.ContentType", 
mimeOverride);

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java 2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDirMessage.java 2006-08-03 
19:10:17 UTC (rev 9869)
@@ -108,7 +108,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("URI", uri.toString());
                sfs.put("Identifier", identifier);
                sfs.put("Verbosity", Integer.toString(verbosity));

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -165,7 +165,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("URI", uri.toString());
                sfs.put("Identifier", identifier);
                sfs.put("Verbosity", Integer.toString(verbosity));

Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java       2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java       2006-08-03 
19:10:17 UTC (rev 9869)
@@ -138,7 +138,7 @@
        }

        public static ClientRequest readAndRegister(BufferedReader br, 
FCPServer server) throws IOException {
-               SimpleFieldSet fs = new SimpleFieldSet(br, true);
+               SimpleFieldSet fs = new SimpleFieldSet(br);
                String clientName = fs.get("ClientName");
                boolean isGlobal = Fields.stringToBool(fs.get("Global"), false);
                FCPClient client;

Modified: 
trunk/freenet/src/freenet/node/fcp/CloseConnectionDuplicateClientNameMessage.java
===================================================================
--- 
trunk/freenet/src/freenet/node/fcp/CloseConnectionDuplicateClientNameMessage.java
   2006-08-03 18:48:45 UTC (rev 9868)
+++ 
trunk/freenet/src/freenet/node/fcp/CloseConnectionDuplicateClientNameMessage.java
   2006-08-03 19:10:17 UTC (rev 9869)
@@ -10,7 +10,7 @@
 public class CloseConnectionDuplicateClientNameMessage extends FCPMessage {

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/DataFoundMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/DataFoundMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/DataFoundMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -23,7 +23,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Metadata.ContentType", mimeType);
                fs.put("DataLength", Long.toString(dataLength));

Modified: trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java 2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/EndListPeersMessage.java 2006-08-03 
19:10:17 UTC (rev 9869)
@@ -8,7 +8,7 @@
        static final String name = "EndListPeers";

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(true);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: 
trunk/freenet/src/freenet/node/fcp/EndListPersistentRequestsMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/EndListPersistentRequestsMessage.java    
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/EndListPersistentRequestsMessage.java    
2006-08-03 19:10:17 UTC (rev 9869)
@@ -8,7 +8,7 @@
        static final String name = "EndListPersistentRequests";

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(true);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java   
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionInputHandler.java   
2006-08-03 19:10:17 UTC (rev 9869)
@@ -49,7 +49,7 @@
                                return;
                        }
                        if(messageType.equals("")) continue;
-                       fs = new SimpleFieldSet(lis, 4096, 128, true, false, 
true);
+                       fs = new SimpleFieldSet(lis, 4096, 128, true, true);
                        FCPMessage msg;
                        try {
                                msg = FCPMessage.create(messageType, fs, 
handler.bf, handler.server.node.persistentTempBucketFactory);

Modified: trunk/freenet/src/freenet/node/fcp/FinishedCompressionMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FinishedCompressionMessage.java  
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/FinishedCompressionMessage.java  
2006-08-03 19:10:17 UTC (rev 9869)
@@ -19,7 +19,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Codec", Integer.toString(codec));
                fs.put("OriginalSize", Long.toString(origSize));

Modified: trunk/freenet/src/freenet/node/fcp/GenerateSSKMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/GenerateSSKMessage.java  2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/GenerateSSKMessage.java  2006-08-03 
19:10:17 UTC (rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/GetFailedMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/GetFailedMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/GetFailedMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -93,7 +93,7 @@
         * or another node).
         */
        public SimpleFieldSet getFieldSet(boolean verbose) {
-               SimpleFieldSet sfs = new SimpleFieldSet(true);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("Code", Integer.toString(code));
                if(verbose)
                        sfs.put("CodeDescription", codeDescription);

Modified: trunk/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java     
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/GetRequestStatusMessage.java     
2006-08-03 19:10:17 UTC (rev 9869)
@@ -18,7 +18,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                return fs;
        }

Modified: trunk/freenet/src/freenet/node/fcp/IdentifierCollisionMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/IdentifierCollisionMessage.java  
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/IdentifierCollisionMessage.java  
2006-08-03 19:10:17 UTC (rev 9869)
@@ -12,7 +12,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("Identifier", identifier);
                return sfs;
        }

Modified: trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ListPeersMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -17,7 +17,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java       
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ListPersistentRequestsMessage.java       
2006-08-03 19:10:17 UTC (rev 9869)
@@ -12,7 +12,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/ModifyPeer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ModifyPeer.java  2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ModifyPeer.java  2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -16,7 +16,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java     
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java     
2006-08-03 19:10:17 UTC (rev 9869)
@@ -48,7 +48,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Global", Boolean.toString(global));
                fs.put("PriorityClass", Short.toString(priorityClass));

Modified: trunk/freenet/src/freenet/node/fcp/NodeHelloMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/NodeHelloMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/NodeHelloMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -23,7 +23,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                // FIXME
                sfs.put("FCPVersion", "2.0");
                sfs.put("Node", "Fred");

Modified: trunk/freenet/src/freenet/node/fcp/PeerRemoved.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PeerRemoved.java 2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PeerRemoved.java 2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identity", identity);
                fs.put("NodeIdentifier", nodeIdentifier);
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/PersistentGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PersistentGet.java       2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PersistentGet.java       2006-08-03 
19:10:17 UTC (rev 9869)
@@ -44,7 +44,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("URI", uri.toString(false));
                fs.put("Verbosity", Integer.toString(verbosity));

Modified: trunk/freenet/src/freenet/node/fcp/PersistentPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PersistentPut.java       2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PersistentPut.java       2006-08-03 
19:10:17 UTC (rev 9869)
@@ -44,7 +44,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("URI", uri.toString(false));
                fs.put("Verbosity", verbosity);

Modified: trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -42,7 +42,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("URI", uri.toString(false));
                fs.put("Verbosity", Integer.toString(verbosity));
@@ -50,7 +50,7 @@
                fs.put("Persistence", 
ClientRequest.persistenceTypeString(persistenceType));
                fs.put("PriorityClass", Short.toString(priorityClass));
                fs.put("Global", Boolean.toString(global));
-               SimpleFieldSet files = new SimpleFieldSet(true);
+               SimpleFieldSet files = new SimpleFieldSet();
                // Flatten the hierarchy, it can be reconstructed on restarting.
                // Storing it directly would be a PITA.
                ManifestElement[] elements = 
SimpleManifestPutter.flatten(manifestElements);
@@ -59,7 +59,7 @@
                        String num = Integer.toString(i);
                        ManifestElement e = elements[i];
                        String mimeOverride = e.getMimeTypeOverride();
-                       SimpleFieldSet subset = new SimpleFieldSet(true);
+                       SimpleFieldSet subset = new SimpleFieldSet();
                        FreenetURI tempURI = e.getTargetURI();
                        subset.put("Name", e.getName());
                        if(tempURI != null) {

Modified: trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java        
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ProtocolErrorMessage.java        
2006-08-03 19:10:17 UTC (rev 9869)
@@ -117,7 +117,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                if(ident != null)
                        sfs.put("Identifier", ident);
                sfs.put("Code", Integer.toString(code));

Modified: trunk/freenet/src/freenet/node/fcp/PutFailedMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PutFailedMessage.java    2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PutFailedMessage.java    2006-08-03 
19:10:17 UTC (rev 9869)
@@ -73,7 +73,7 @@
        }

        public SimpleFieldSet getFieldSet(boolean verbose) {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Code", Integer.toString(code));
                if(verbose)

Modified: trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java        
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/PutSuccessfulMessage.java        
2006-08-03 19:10:17 UTC (rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("URI", uri.toString());
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/RemovePeer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/RemovePeer.java  2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/RemovePeer.java  2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/RemovePersistentRequest.java     
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/RemovePersistentRequest.java     
2006-08-03 19:10:17 UTC (rev 9869)
@@ -22,7 +22,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                return fs;
        }

Modified: trunk/freenet/src/freenet/node/fcp/SSKKeypairMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SSKKeypairMessage.java   2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/SSKKeypairMessage.java   2006-08-03 
19:10:17 UTC (rev 9869)
@@ -17,7 +17,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet sfs = new SimpleFieldSet(false);
+               SimpleFieldSet sfs = new SimpleFieldSet();
                sfs.put("InsertURI", insertURI.toString());
                sfs.put("RequestURI", requestURI.toString());
                if(identifier != null) // is optional on these two only

Modified: trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java     2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/ShutdownMessage.java     2006-08-03 
19:10:17 UTC (rev 9869)
@@ -11,7 +11,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               return new SimpleFieldSet(false);
+               return new SimpleFieldSet();
        }

        public String getName() {

Modified: trunk/freenet/src/freenet/node/fcp/SimpleProgressMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SimpleProgressMessage.java       
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/SimpleProgressMessage.java       
2006-08-03 19:10:17 UTC (rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Total", Integer.toString(event.totalBlocks));
                fs.put("Required", Integer.toString(event.minSuccessfulBlocks));
                fs.put("Failed", Integer.toString(event.failedBlocks));

Modified: trunk/freenet/src/freenet/node/fcp/StartedCompressionMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/StartedCompressionMessage.java   
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/StartedCompressionMessage.java   
2006-08-03 19:10:17 UTC (rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Codec", Integer.toString(codec));
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java 2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java 2006-08-03 
19:10:17 UTC (rev 9869)
@@ -44,7 +44,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("URI", key.getURI().toString());
                fs.put("DontPoll", Boolean.toString(dontPoll));
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java 2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java 2006-08-03 
19:10:17 UTC (rev 9869)
@@ -19,7 +19,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Identifier", identifier);
                fs.put("Edition", Long.toString(edition));
                fs.put("URI", key.getURI().toString());

Modified: trunk/freenet/src/freenet/node/fcp/URIGeneratedMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/URIGeneratedMessage.java 2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/URIGeneratedMessage.java 2006-08-03 
19:10:17 UTC (rev 9869)
@@ -15,7 +15,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(false);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("URI", uri.toString());
                fs.put("Identifier", identifier);
                return fs;

Modified: trunk/freenet/src/freenet/node/fcp/WatchGlobal.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/WatchGlobal.java 2006-08-03 18:48:45 UTC 
(rev 9868)
+++ trunk/freenet/src/freenet/node/fcp/WatchGlobal.java 2006-08-03 19:10:17 UTC 
(rev 9869)
@@ -24,7 +24,7 @@
        }

        public SimpleFieldSet getFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Enabled", Boolean.toString(enabled));
                fs.put("VerbosityMask", Integer.toString(verbosityMask));
                return fs;

Modified: trunk/freenet/src/freenet/support/SimpleFieldSet.java
===================================================================
--- trunk/freenet/src/freenet/support/SimpleFieldSet.java       2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/SimpleFieldSet.java       2006-08-03 
19:10:17 UTC (rev 9869)
@@ -9,8 +9,6 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-import java.util.Vector;

 import freenet.support.io.LineReader;

@@ -22,29 +20,29 @@
  */
 public class SimpleFieldSet {

-    private final Map map;
+    private final Map values;
+    private Map subsets;
     private String endMarker;
-    private final boolean multiLevel;
     static public final char MULTI_LEVEL_CHAR = '.';

-    public SimpleFieldSet(BufferedReader br, boolean multiLevel) throws 
IOException {
-        map = new HashMap();
-        this.multiLevel = multiLevel;
+    public SimpleFieldSet(BufferedReader br) throws IOException {
+        values = new HashMap();
+               subsets = null;
         read(br);
     }

-    public SimpleFieldSet(LineReader lis, int maxLineLength, int 
lineBufferSize, boolean multiLevel, boolean tolerant, boolean utf8OrIso88591) 
throws IOException {
-       map = new HashMap();
-       this.multiLevel = multiLevel;
+    public SimpleFieldSet(LineReader lis, int maxLineLength, int 
lineBufferSize, boolean tolerant, boolean utf8OrIso88591) throws IOException {
+       values = new HashMap();
+               subsets = null;
        read(lis, maxLineLength, lineBufferSize, tolerant, utf8OrIso88591);
     }

     /**
      * Empty constructor
      */
-    public SimpleFieldSet(boolean multiLevel) {
-        map = new HashMap();
-        this.multiLevel = multiLevel;
+    public SimpleFieldSet() {
+        values = new HashMap();
+               subsets = null;
     }

     /**
@@ -52,8 +50,8 @@
      * @throws IOException if the string is too short or invalid.
      */
     public SimpleFieldSet(String content, boolean multiLevel) throws 
IOException {
-        map = new HashMap();
-        this.multiLevel = multiLevel;
+       values = new HashMap();
+       subsets = null;
         StringReader sr = new StringReader(content);
         BufferedReader br = new BufferedReader(sr);
            read(br);
@@ -125,23 +123,20 @@
         }
     }

-    public String get(String key) {
-       if(multiLevel) {
-               int idx = key.indexOf(MULTI_LEVEL_CHAR);
-               if(idx == -1)
-                       return (String) map.get(key);
-               else if(idx == 0)
-                       return null;
-               else {
-                       String before = key.substring(0, idx);
-                       String after = key.substring(idx+1);
-                       SimpleFieldSet fs = (SimpleFieldSet) (map.get(before));
-                       if(fs == null) return null;
-                       return fs.get(after);
-               }
-       } else {
-               return (String) map.get(key);
-       }
+    public synchronized String get(String key) {
+               int idx = key.indexOf(MULTI_LEVEL_CHAR);
+               if(idx == -1)
+                       return (String) values.get(key);
+               else if(idx == 0)
+                       return null;
+               else {
+                       if(subsets == null) return null;
+                       String before = key.substring(0, idx);
+                       String after = key.substring(idx+1);
+                       SimpleFieldSet fs = (SimpleFieldSet) 
(subsets.get(before));
+                       if(fs == null) return null;
+                       return fs.get(after);
+               }
     }

     public String[] getAll(String key) {
@@ -167,24 +162,27 @@
 //     return (String[]) v.toArray();
        }

-       public void put(String key, String value) {
+       public synchronized void put(String key, String value) {
                int idx;
                if(value == null) return;
-               if((!multiLevel) || ((idx = key.indexOf(MULTI_LEVEL_CHAR)) == 
-1)) {
-                       String x = (String) map.get(key);
+               if((idx = key.indexOf(MULTI_LEVEL_CHAR)) == -1) {
+                       String x = (String) values.get(key);

                        if(x == null) {
-                               map.put(key, value);
+                               values.put(key, value);
                        } else {
-                               map.put(key, ((String)map.get(key))+";"+value);
+                               values.put(key, 
((String)values.get(key))+";"+value);
                        }
                } else {
                        String before = key.substring(0, idx);
                        String after = key.substring(idx+1);
-                       SimpleFieldSet fs = (SimpleFieldSet) (map.get(before));
+                       SimpleFieldSet fs = null;
+                       if(subsets == null)
+                               subsets = new HashMap();
+                       fs = (SimpleFieldSet) (subsets.get(before));
                        if(fs == null) {
-                               fs = new SimpleFieldSet(true);
-                               map.put(before, fs);
+                               fs = new SimpleFieldSet();
+                               subsets.put(before, fs);
                        }
                        fs.put(after, value);
                }
@@ -218,28 +216,28 @@
                writeTo(w, "", false);
        }

-    void writeTo(Writer w, String prefix, boolean noEndMarker) throws 
IOException {
-        Set s = map.entrySet();
-        Iterator i = s.iterator();
-        for(;i.hasNext();) {
+    synchronized void writeTo(Writer w, String prefix, boolean noEndMarker) 
throws IOException {
+       for(Iterator i = values.entrySet().iterator();i.hasNext();) {
             Map.Entry entry = (Map.Entry) i.next();
             String key = (String) entry.getKey();
-            Object v = entry.getValue();
-            if(v instanceof String) {
-                String value = (String) v;
-                w.write(prefix+key+"="+value+"\n");
-            } else {
-               SimpleFieldSet sfs = (SimpleFieldSet) v;
-               if(sfs == null) throw new NullPointerException();
-               sfs.writeTo(w, prefix+key+MULTI_LEVEL_CHAR, true);
-            }
-        }
-        if(!noEndMarker) {
-               if(endMarker != null)
-                       w.write(endMarker+"\n");
-               else
-                       w.write("End\n");
-        }
+            String value = (String) entry.getValue();
+            w.write(prefix+key+"="+value+"\n");
+       }
+       if(subsets != null) {
+               for(Iterator i = subsets.entrySet().iterator();i.hasNext();) {
+                       Map.Entry entry = (Map.Entry) i.next();
+                       String key = (String) entry.getKey();
+                       SimpleFieldSet subset = (SimpleFieldSet) 
entry.getValue();
+                       if(subset == null) throw new NullPointerException();
+                       subset.writeTo(w, prefix+key+MULTI_LEVEL_CHAR, true);
+               }
+       }
+       if(!noEndMarker) {
+               if(endMarker == null)
+                       w.write("End\n");
+               else
+                       w.write(endMarker+"\n");
+       }
     }

     public String toString() {
@@ -260,15 +258,14 @@
        endMarker = s;
     }

-       public SimpleFieldSet subset(String key) {
-               if(!multiLevel)
-                       throw new IllegalArgumentException("Not multi-level!");
+       public synchronized SimpleFieldSet subset(String key) {
+               if(subsets == null) return null;
                int idx = key.indexOf(MULTI_LEVEL_CHAR);
                if(idx == -1)
-                       return (SimpleFieldSet) map.get(key);
+                       return (SimpleFieldSet) subsets.get(key);
                String before = key.substring(0, idx);
                String after = key.substring(idx+1);
-               SimpleFieldSet fs = (SimpleFieldSet) map.get(before);
+               SimpleFieldSet fs = (SimpleFieldSet) subsets.get(before);
                if(fs == null) return null;
                return fs.subset(after);
        }
@@ -283,130 +280,132 @@

     public class KeyIterator implements Iterator {

-       final Iterator mapIterator;
+       final Iterator valuesIterator;
+       final Iterator subsetIterator;
        KeyIterator subIterator;
        String prefix;

        public KeyIterator(String prefix) {
-               mapIterator = map.keySet().iterator();
+               valuesIterator = values.keySet().iterator();
+               if(subsets != null)
+                       subsetIterator = subsets.keySet().iterator();
+               else
+                       subsetIterator = null;
                this.prefix = prefix;
        }

                public boolean hasNext() {
-                       if((subIterator != null) && subIterator.hasNext()) 
return true;
-                       if(subIterator != null) subIterator = null;
-                       return mapIterator.hasNext();
+                       synchronized(SimpleFieldSet.this) {
+                               if(valuesIterator.hasNext()) return true;
+                               if((subIterator != null) && 
subIterator.hasNext()) return true;
+                               if(subIterator != null) subIterator = null;
+                               return false;
+                       }
                }

-               public Object next() {
-                       while(true) { // tail-recurse so we get infinite loop 
instead of OOM in case of a loop...
-                               if((subIterator != null) && 
subIterator.hasNext()) {
-                                       return subIterator.next();
+               public final Object next() {
+                       return nextKey();
+               }
+               
+               public String nextKey() {
+                       synchronized(SimpleFieldSet.this) {
+                               String ret = null;
+                               if(ret == null && valuesIterator.hasNext()) {
+                                       return prefix + valuesIterator.next();
                                }
-                               if(subIterator != null) subIterator = null;
-                               if(mapIterator.hasNext()) {
-                                       String key = (String) 
mapIterator.next();
-                                       Object value = map.get(key);
-                                       if(value instanceof String)
-                                               return prefix + 
MULTI_LEVEL_CHAR + key;
-                                       else {
-                                               SimpleFieldSet fs = 
(SimpleFieldSet) value;
-                                               subIterator = 
fs.keyIterator((prefix.length() == 0) ? key : (prefix+MULTI_LEVEL_CHAR+key));
-                                               continue;
+                               while(true) {
+                                       // Iterate subsets.
+                                       if(subIterator != null && 
subIterator.hasNext()) {
+                                               if(ret != null)
+                                                       // Found next but one, 
can return next
+                                                       return ret;
+                                               ret = (String) 
subIterator.next();
+                                               if(subIterator.hasNext()) {
+                                                       if(ret != null) return 
ret;
+                                               } else {
+                                                       subIterator = null;
+                                               }
+                                       } else
+                                               subIterator = null;
+                                       if(subsetIterator != null && 
subsetIterator.hasNext()) {
+                                               String key = (String) 
subsetIterator.next();
+                                               SimpleFieldSet fs = 
(SimpleFieldSet) subsets.get(key);
+                                               String newPrefix = prefix + key 
+ MULTI_LEVEL_CHAR;
+                                               subIterator = 
fs.keyIterator(newPrefix);
                                        }
                                }
-                               return null;
                        }
                }

-               public void remove() {
+               public synchronized void remove() {
                        throw new UnsupportedOperationException();
                }
-
        }

        public void put(String key, SimpleFieldSet fs) {
                if(fs == null) return; // legal no-op, because used everywhere
                if(fs.isEmpty())
                        throw new IllegalArgumentException("Empty");
-               if(!multiLevel)
-                       throw new IllegalArgumentException("Not multi-level");
-               if(!fs.multiLevel)
-                       throw new IllegalArgumentException("Argument not 
multi-level");
-               if(map.containsKey(key))
+               if(subsets == null)
+                       subsets = new HashMap();
+               if(subsets.containsKey(key))
                        throw new IllegalArgumentException("Already contains 
"+key+" but trying to add a SimpleFieldSet!");
-               map.put(key, fs);
+               subsets.put(key, fs);
        }

-       public void remove(String key) {
+       public synchronized void removeValue(String key) {
                int idx;
-               if((!multiLevel) || ((idx = key.indexOf(MULTI_LEVEL_CHAR)) == 
-1)) {
-                       map.remove(key);
+               if((idx = key.indexOf(MULTI_LEVEL_CHAR)) == -1) {
+                       values.remove(key);
                } else {
+                       if(subsets == null) return;
                        String before = key.substring(0, idx);
                        String after = key.substring(idx+1);
-                       SimpleFieldSet fs = (SimpleFieldSet) (map.get(before));
+                       SimpleFieldSet fs = (SimpleFieldSet) 
(subsets.get(before));
                        if(fs == null) {
                                return;
                        }
-                       fs.remove(after);
-                       if(fs.isEmpty())
-                               map.remove(before);
+                       fs.removeValue(after);
+                       if(fs.isEmpty()) {
+                               subsets.remove(before);
+                               if(subsets.isEmpty())
+                                       subsets = null;
+                       }
                }
        }

+       public synchronized void removeSubset(String key) {
+               if(subsets == null) return;
+               int idx;
+               if((idx = key.indexOf(MULTI_LEVEL_CHAR)) == -1) {
+                       subsets.remove(key);
+               } else {
+                       String before = key.substring(0, idx);
+                       String after = key.substring(idx+1);
+                       SimpleFieldSet fs = (SimpleFieldSet) 
(subsets.get(before));
+                       if(fs == null) {
+                               return;
+                       }
+                       fs.removeSubset(after);
+                       if(fs.isEmpty()) {
+                               subsets.remove(before);
+                               if(subsets.isEmpty())
+                                       subsets = null;
+                       }
+               }
+       }
+       
        /** Is this SimpleFieldSet empty? */
        public boolean isEmpty() {
-               return map.isEmpty();
+               return values.isEmpty() && (subsets == null || 
subsets.isEmpty());
        }

        public Iterator directSubsetNameIterator() {
-               return new DirectSubsetNameIterator();
+               return subsets.keySet().iterator();
        }

-       public class DirectSubsetNameIterator implements Iterator {
-
-               Iterator mapIterator;
-               String nextName;
-               
-               DirectSubsetNameIterator() {
-                       mapIterator = map.keySet().iterator();
-                       fetchNext();
-               }
-               
-               public boolean hasNext() {
-                       return nextName != null;
-               }
-
-               public Object next() {
-                       String next = nextName;
-                       fetchNext();
-                       return next;
-               }
-
-               public void remove() {
-                       throw new UnsupportedOperationException();
-               }
-               
-               void fetchNext() {
-                       // Maybe more efficient with Entry's???
-                       while(mapIterator.hasNext()) {
-                               String name = (String) mapIterator.next();
-                               Object target = map.get(name);
-                               if(target instanceof SimpleFieldSet) {
-                                       nextName = name;
-                                       return;
-                               }
-                       }
-                       nextName = null;
-               }
-       }
-
        public String[] namesOfDirectSubsets() {
-               Iterator i = new DirectSubsetNameIterator();
-               Vector v = new Vector();
-               while(i.hasNext()) v.add(i.next());
-               return (String[]) v.toArray(new String[v.size()]);
+               return (String[]) subsets.keySet().toArray(new 
String[subsets.size()]);
        }

 }

Modified: trunk/freenet/src/freenet/support/io/FileBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/FileBucket.java        2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/io/FileBucket.java        2006-08-03 
19:10:17 UTC (rev 9869)
@@ -344,7 +344,7 @@

        public synchronized SimpleFieldSet toFieldSet() {
                if(deleteOnFinalize) return null;
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "FileBucket");
                fs.put("Filename", file.toString());
                fs.put("Length", length);

Modified: trunk/freenet/src/freenet/support/io/NullBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/NullBucket.java        2006-08-03 
18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/io/NullBucket.java        2006-08-03 
19:10:17 UTC (rev 9869)
@@ -62,7 +62,7 @@
        }

        public SimpleFieldSet toFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "NullBucket");
                return fs;
        }

Modified: 
trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java  
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java  
2006-08-03 19:10:17 UTC (rev 9869)
@@ -339,7 +339,7 @@
        }

        public SimpleFieldSet toFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "PaddedEphemerallyEncryptedBucket");
                synchronized(this) {
                        fs.put("DataLength", dataLength);

Modified: trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java    
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java    
2006-08-03 19:10:17 UTC (rev 9869)
@@ -456,7 +456,7 @@
        }

        public synchronized SimpleFieldSet toFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "RandomAccessFileBucket");
                fs.put("Filename", file.toString());
                fs.put("Offset", offset);

Modified: trunk/freenet/src/freenet/support/io/ReadOnlyFileSliceBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/ReadOnlyFileSliceBucket.java   
2006-08-03 18:48:45 UTC (rev 9868)
+++ trunk/freenet/src/freenet/support/io/ReadOnlyFileSliceBucket.java   
2006-08-03 19:10:17 UTC (rev 9869)
@@ -140,7 +140,7 @@
        }

        public SimpleFieldSet toFieldSet() {
-               SimpleFieldSet fs = new SimpleFieldSet(true);
+               SimpleFieldSet fs = new SimpleFieldSet();
                fs.put("Type", "ReadOnlyFileSliceBucket");
                fs.put("Filename", file.toString());
                fs.put("Offset", startAt);


Reply via email to