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