[jboss-cvs] JBossCache/src/org/jboss/cache/marshall ...
Galder Zamarreno
galder.zamarreno at jboss.com
Fri Jan 12 12:02:02 EST 2007
User: gzamarreno
Date: 07/01/12 12:02:02
Modified: src/org/jboss/cache/marshall
VersionAwareMarshaller.java CacheMarshaller200.java
ObjectSerializationFactory.java
JBossObjectStreamFactory.java
ObjectStreamFactory.java
JavaObjectStreamFactory.java
Log:
[JBCACHE-879] Functionality for JDBCacheLoader to use version aware marshalling mechanism instead of standard serialization has been introduced. Previous method has been commented out in case there's a need to revert back to it as profiling/performance study has not finished yet.
Revision Changes Path
1.13 +33 -0 JBossCache/src/org/jboss/cache/marshall/VersionAwareMarshaller.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: VersionAwareMarshaller.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/VersionAwareMarshaller.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- VersionAwareMarshaller.java 2 Jan 2007 13:13:20 -0000 1.12
+++ VersionAwareMarshaller.java 12 Jan 2007 17:02:02 -0000 1.13
@@ -14,6 +14,7 @@
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
@@ -23,6 +24,7 @@
* which is version-aware.
*
* @author <a href="mailto:manik at jboss.org">Manik Surtani (manik at jboss.org)</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
*/
public class VersionAwareMarshaller implements RpcDispatcher.Marshaller
{
@@ -163,6 +165,37 @@
}
/**
+ * Creates an Object from the InputStream passed in, using the appropriate {@link Marshaller} based
+ * on the version headers in the byte stream.
+ *
+ * @param is
+ * @return Object from byte buffer passed in.
+ * @throws Exception
+ */
+ public Object objectFromInputStream(InputStream is) throws Exception
+ {
+ Marshaller marshaller;
+ int versionId;
+ ObjectInputStream in;
+ try
+ {
+ // just a peek - does not actually "remove" these bytes from the stream.
+ // create an input stream and read the first short
+ in = ObjectSerializationFactory.createObjectInputStream(is);
+ versionId = in.readShort();
+ }
+ catch (Exception e)
+ {
+ log.error("Unable to read version id from first two bytes of stream, barfing.");
+ throw e;
+ }
+
+ marshaller = getMarshaller(versionId);
+
+ return marshaller.objectFromStream(in);
+ }
+
+ /**
* Lazily instantiates and loads the relevant marshaller for a given version.
*
* @param versionId
1.4 +0 -1 JBossCache/src/org/jboss/cache/marshall/CacheMarshaller200.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: CacheMarshaller200.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/CacheMarshaller200.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- CacheMarshaller200.java 12 Jan 2007 15:53:56 -0000 1.3
+++ CacheMarshaller200.java 12 Jan 2007 17:02:02 -0000 1.4
@@ -22,7 +22,6 @@
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
1.19 +7 -0 JBossCache/src/org/jboss/cache/marshall/ObjectSerializationFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ObjectSerializationFactory.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/ObjectSerializationFactory.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- ObjectSerializationFactory.java 2 Nov 2006 09:42:09 -0000 1.18
+++ ObjectSerializationFactory.java 12 Jan 2007 17:02:02 -0000 1.19
@@ -13,12 +13,14 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import java.io.InputStream;
/**
* Factory class for creating object output and inut streams, switching between JDK defaults and JBoss Serialization classes.
*
* @author <a href="mailto:manik at jboss.org">Manik Surtani (manik at jboss.org)</a>
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
*/
public class ObjectSerializationFactory
{
@@ -56,6 +58,11 @@
return factory.createObjectInputStream(bytes);
}
+ public static ObjectInputStream createObjectInputStream(InputStream in) throws IOException
+ {
+ return factory.createObjectInputStream(in);
+ }
+
public static boolean useJBossSerialization()
{
return useJBossSerialization;
1.3 +8 -0 JBossCache/src/org/jboss/cache/marshall/JBossObjectStreamFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: JBossObjectStreamFactory.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/JBossObjectStreamFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- JBossObjectStreamFactory.java 2 Nov 2006 09:42:09 -0000 1.2
+++ JBossObjectStreamFactory.java 12 Jan 2007 17:02:02 -0000 1.3
@@ -11,7 +11,10 @@
import java.io.OutputStream;
/**
+ * JBoss implementation of ObjectStreamFactory
+ *
* @author Clebert Suconic
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
* @since 1.4.1
*/
class JBossObjectStreamFactory implements ObjectStreamFactory
@@ -47,6 +50,11 @@
return new JBossObjectInputStreamOverride(in);
}
+ public ObjectInputStream createObjectInputStream(InputStream in) throws IOException
+ {
+ return new JBossObjectInputStreamOverride(in);
+ }
+
public ObjectOutputStream createObjectOutputStream(OutputStream out) throws IOException
{
return new JBossObjectOutputStreamSharedTree(out);
1.3 +6 -0 JBossCache/src/org/jboss/cache/marshall/ObjectStreamFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ObjectStreamFactory.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/ObjectStreamFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- ObjectStreamFactory.java 2 Nov 2006 09:42:09 -0000 1.2
+++ ObjectStreamFactory.java 12 Jan 2007 17:02:02 -0000 1.3
@@ -4,9 +4,13 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import java.io.InputStream;
/**
+ * ObjectStreamFactory
+ *
* @author Clebert Suconic
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
* @since 1.4.1
*/
public interface ObjectStreamFactory
@@ -14,4 +18,6 @@
public ObjectOutputStream createObjectOutputStream(OutputStream out) throws IOException;
public ObjectInputStream createObjectInputStream(byte[] bytes) throws IOException;
+
+ public ObjectInputStream createObjectInputStream(InputStream in) throws IOException;
}
1.3 +9 -0 JBossCache/src/org/jboss/cache/marshall/JavaObjectStreamFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: JavaObjectStreamFactory.java
===================================================================
RCS file: /cvsroot/jboss/JBossCache/src/org/jboss/cache/marshall/JavaObjectStreamFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- JavaObjectStreamFactory.java 2 Nov 2006 09:42:09 -0000 1.2
+++ JavaObjectStreamFactory.java 12 Jan 2007 17:02:02 -0000 1.3
@@ -7,9 +7,13 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
+import java.io.InputStream;
/**
+ * Standard Java implementation of ObjectStreamFactory
+ *
* @author Clebert Suconic
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
* @since 1.4.1
*/
class JavaObjectStreamFactory implements ObjectStreamFactory
@@ -21,6 +25,11 @@
return new MarshalledValueInputStream(in);
}
+ public ObjectInputStream createObjectInputStream(InputStream in) throws IOException
+ {
+ return new MarshalledValueInputStream(in);
+ }
+
public ObjectOutputStream createObjectOutputStream(OutputStream out) throws IOException
{
return new ObjectOutputStream(out);
More information about the jboss-cvs-commits
mailing list