Author: bdekruijff at gmail.com
Date: Thu Jan 13 20:15:36 2011
New Revision: 627

Log:
AMDATU-207 moved some more useradminstore-fs util methods in the lib

Modified:
   
trunk/amdatu-libraries/fsstorage/src/main/java/org/amdatu/libraries/fsstorage/FSStorageUtil.java

Modified: 
trunk/amdatu-libraries/fsstorage/src/main/java/org/amdatu/libraries/fsstorage/FSStorageUtil.java
==============================================================================
--- 
trunk/amdatu-libraries/fsstorage/src/main/java/org/amdatu/libraries/fsstorage/FSStorageUtil.java
    (original)
+++ 
trunk/amdatu-libraries/fsstorage/src/main/java/org/amdatu/libraries/fsstorage/FSStorageUtil.java
    Thu Jan 13 20:15:36 2011
@@ -22,16 +22,51 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
 /**
- * Some generic utility methods for assiting implementations with 
+ * Some generic (but limited!) utility methods for assiting implementations 
with
  * common marshal / unmarshall tasks.
  */
 public final class FSStorageUtil {
 
+    public static byte[] readBytes(final ObjectInputStream ois) throws 
IOException {
+        final int bytesLength = ois.readInt();
+        final byte[] bytes = new byte[bytesLength];
+        ois.readFully(bytes);
+        return bytes;
+    }
+
+    public static Dictionary<String, Object> readDictionary(final 
ObjectInputStream ois) throws IOException {
+        final int numberOfEntries = ois.readInt();
+        if (numberOfEntries == 0) {
+            return null;
+        }
+        final Dictionary<String, Object> dictionary = new Hashtable<String, 
Object>();
+        for (int j = 0; j < numberOfEntries; j++) {
+            final String key = FSStorageUtil.readString(ois);
+            final int type = ois.readInt();
+            switch (type) {
+                case 0:
+                    byte[] byteValue = FSStorageUtil.readBytes(ois);
+                    dictionary.put(key, byteValue);
+                    break;
+                case 1:
+                    String stringValue = FSStorageUtil.readString(ois);
+                    dictionary.put(key, stringValue);
+                    break;
+                default:
+                    break;
+            }
+        }
+        return dictionary;
+    }
+
     public static String readString(final ObjectInputStream ois) throws 
IOException {
         final int keyLength = ois.readInt();
         final byte[] keyBytes = new byte[keyLength];
@@ -62,6 +97,35 @@
         return properties;
     }
 
+    public static void writeBytes(final ObjectOutputStream oos, final byte[] 
bytes) throws IOException {
+        oos.writeInt(bytes.length);
+        oos.write(bytes);
+    }
+
+    public static void writeDictionary(final ObjectOutputStream oos, final 
Dictionary<String, Object> dictionary)
+        throws IOException {
+        if (dictionary == null) {
+            oos.writeInt(0);
+        }
+        else {
+            oos.writeInt(dictionary.size());
+            Enumeration<String> keys = dictionary.keys();
+            while (keys.hasMoreElements()) {
+                String key = (String) keys.nextElement();
+                FSStorageUtil.writeString(oos, key);
+                Object value = dictionary.get(key);
+                if (value instanceof byte[]) {
+                    oos.writeInt(0);
+                    FSStorageUtil.writeBytes(oos, (byte[]) value);
+                }
+                else if (value instanceof String) {
+                    oos.writeInt(1);
+                    FSStorageUtil.writeString(oos, (String) value);
+                }
+            }
+        }
+    }
+
     public static void writeString(final ObjectOutputStream oos, final String 
value) throws IOException {
         String mvalue = value;
         if (mvalue == null) {

Reply via email to