You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2012/02/09 18:14:18 UTC
svn commit: r1242403 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk:
store/BinaryBinding.java store/Binding.java
store/MongoPersistenceManager.java util/IOUtils.java
Author: stefan
Date: Thu Feb 9 17:14:18 2012
New Revision: 1242403
URL: http://svn.apache.org/viewvc?rev=1242403&view=rev
Log:
serialize byte[] values
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Binding.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/IOUtils.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java?rev=1242403&r1=1242402&r2=1242403&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/BinaryBinding.java Thu Feb 9 17:14:18 2012
@@ -43,6 +43,7 @@ public class BinaryBinding implements Bi
in = null;
}
+ @Override
public void write(String key, String value) throws Exception {
if (out == null) {
throw new IllegalStateException("no OutputStream provided");
@@ -50,6 +51,15 @@ public class BinaryBinding implements Bi
IOUtils.writeString(out, value);
}
+ @Override
+ public void write(String key, byte[] value) throws Exception {
+ if (out == null) {
+ throw new IllegalStateException("no OutputStream provided");
+ }
+ IOUtils.writeBytes(out, value);
+ }
+
+ @Override
public void write(String key, long value) throws Exception {
if (out == null) {
throw new IllegalStateException("no OutputStream provided");
@@ -57,6 +67,7 @@ public class BinaryBinding implements Bi
IOUtils.writeVarLong(out, value);
}
+ @Override
public void write(String key, int value) throws Exception {
if (out == null) {
throw new IllegalStateException("no OutputStream provided");
@@ -64,6 +75,7 @@ public class BinaryBinding implements Bi
IOUtils.writeVarInt(out, value);
}
+ @Override
public void write(String key, int count, Iterator<KeyValuePair> iterator) throws Exception {
if (out == null) {
throw new IllegalStateException("no OutputStream provided");
@@ -76,6 +88,7 @@ public class BinaryBinding implements Bi
}
}
+ @Override
public String readStringValue(String key) throws Exception {
if (in == null) {
throw new IllegalStateException("no InputStream provided");
@@ -83,6 +96,15 @@ public class BinaryBinding implements Bi
return IOUtils.readString(in);
}
+ @Override
+ public byte[] readBytesValue(String key) throws Exception {
+ if (in == null) {
+ throw new IllegalStateException("no InputStream provided");
+ }
+ return IOUtils.readBytes(in);
+ }
+
+ @Override
public long readLongValue(String key) throws Exception {
if (in == null) {
throw new IllegalStateException("no InputStream provided");
@@ -90,6 +112,7 @@ public class BinaryBinding implements Bi
return IOUtils.readVarLong(in);
}
+ @Override
public int readIntValue(String key) throws Exception {
if (in == null) {
throw new IllegalStateException("no InputStream provided");
@@ -97,6 +120,7 @@ public class BinaryBinding implements Bi
return IOUtils.readVarInt(in);
}
+ @Override
public Iterator<KeyValuePair> read(String key) throws Exception {
if (in == null) {
throw new IllegalStateException("no InputStream provided");
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Binding.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Binding.java?rev=1242403&r1=1242402&r2=1242403&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Binding.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/Binding.java Thu Feb 9 17:14:18 2012
@@ -24,11 +24,13 @@ import java.util.Iterator;
public interface Binding {
void write(String key, String value) throws Exception;
+ void write(String key, byte[] value) throws Exception;
void write(String key, long value) throws Exception;
void write(String key, int value) throws Exception;
void write(String key, int count, Iterator<KeyValuePair> iterator) throws Exception;
String readStringValue(String key) throws Exception;
+ byte[] readBytesValue(String key) throws Exception;
long readLongValue(String key) throws Exception;
int readIntValue(String key) throws Exception;
Iterator<KeyValuePair> read(String key) throws Exception;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java?rev=1242403&r1=1242402&r2=1242403&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/MongoPersistenceManager.java Thu Feb 9 17:14:18 2012
@@ -365,6 +365,11 @@ public class MongoPersistenceManager ext
}
@Override
+ public void write(String key, byte[] value) throws Exception {
+ obj.append(encodeName(key), StringUtils.convertBytesToHex(value));
+ }
+
+ @Override
public void write(String key, long value) throws Exception {
obj.append(encodeName(key), value);
}
@@ -390,6 +395,11 @@ public class MongoPersistenceManager ext
}
@Override
+ public byte[] readBytesValue(String key) throws Exception {
+ return StringUtils.convertHexToBytes(obj.getString(encodeName(key)));
+ }
+
+ @Override
public long readLongValue(String key) throws Exception {
return obj.getLong(encodeName(key));
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/IOUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/IOUtils.java?rev=1242403&r1=1242402&r2=1242403&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/IOUtils.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/util/IOUtils.java Thu Feb 9 17:14:18 2012
@@ -81,9 +81,7 @@ public class IOUtils {
* @param s the string (maximum length about 2 GB)
*/
public static void writeString(OutputStream out, String s) throws IOException {
- byte[] data = s.getBytes("UTF-8");
- writeVarInt(out, data.length);
- out.write(data);
+ writeBytes(out, s.getBytes("UTF-8"));
}
/**
@@ -94,6 +92,29 @@ public class IOUtils {
* @return the string
*/
public static String readString(InputStream in) throws IOException {
+ return new String(readBytes(in), "UTF-8");
+ }
+
+ /**
+ * Write a byte array. This will first write the length as 4 bytes, and then
+ * the actual bytes.
+ *
+ * @param out the data output stream
+ * @param data the byte array
+ */
+ public static void writeBytes(OutputStream out, byte[] data) throws IOException {
+ writeVarInt(out, data.length);
+ out.write(data);
+ }
+
+ /**
+ * Read a byte array. This will first read the length as 4 bytes, and then
+ * the actual bytes.
+ *
+ * @param in the data input stream
+ * @return the bytes
+ */
+ public static byte[] readBytes(InputStream in) throws IOException {
int len = readVarInt(in);
byte[] data = new byte[len];
for (int pos = 0; pos < len;) {
@@ -103,7 +124,7 @@ public class IOUtils {
}
pos += l;
}
- return new String(data, "UTF-8");
+ return data;
}
/**