User: csuconic
Date: 06/04/17 19:12:13
Modified: src/org/jboss/serial/persister
ExternalizePersister.java ArrayPersister.java
RegularObjectPersister.java
EnumerationPersister.java
ClassReferencePersister.java
Log:
JBSER-61 - fixes, testcases and improved Logs to debug these issues
Revision Changes Path
1.12 +2 -2 jboss-serialization/src/org/jboss/serial/persister/ExternalizePersister.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ExternalizePersister.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/persister/ExternalizePersister.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- ExternalizePersister.java 4 Apr 2006 01:07:09 -0000 1.11
+++ ExternalizePersister.java 17 Apr 2006 23:12:13 -0000 1.12
@@ -33,7 +33,7 @@
import org.jboss.serial.objectmetamodel.ObjectsCache;
/**
- * $Id: ExternalizePersister.java,v 1.11 2006/04/04 01:07:09 csuconic Exp $
+ * $Id: ExternalizePersister.java,v 1.12 2006/04/17 23:12:13 csuconic Exp $
* @author Clebert Suconic
*/
public class ExternalizePersister implements Persister
@@ -64,7 +64,7 @@
{
Object obj = metaData.newInstance();
- cache.putObjectInCache(referenceId,obj);
+ cache.putObjectInCacheRead(referenceId,obj);
try
{
1.15 +10 -10 jboss-serialization/src/org/jboss/serial/persister/ArrayPersister.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ArrayPersister.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/persister/ArrayPersister.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- ArrayPersister.java 4 Apr 2006 01:07:09 -0000 1.14
+++ ArrayPersister.java 17 Apr 2006 23:12:13 -0000 1.15
@@ -33,7 +33,7 @@
import org.jboss.serial.objectmetamodel.ObjectsCache;
/**
- * $Id: ArrayPersister.java,v 1.14 2006/04/04 01:07:09 csuconic Exp $
+ * $Id: ArrayPersister.java,v 1.15 2006/04/17 23:12:13 csuconic Exp $
* @author Clebert Suconic
*/
public class ArrayPersister implements Persister
@@ -125,42 +125,42 @@
Class clazz = metaData.getClazz();
if (clazz == Integer.TYPE) {
int[] finalArray = new int[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readInt();
return finalArray;
} else if (clazz == Byte.TYPE) {
byte[] finalArray = new byte[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
input.readFully(finalArray);
return finalArray;
} else if (clazz == Long.TYPE) {
long[] finalArray= new long[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readLong();
return finalArray;
} else if (clazz == Float.TYPE) {
float[] finalArray = new float[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readFloat();
return finalArray;
} else if (clazz == Double.TYPE) {
double[] finalArray = new double[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readDouble();
return finalArray;
} else if (clazz == Short.TYPE) {
short[] finalArray = new short[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readShort();
return finalArray;
} else if (clazz == Character.TYPE) {
char[] finalArray = new char[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readChar();
return finalArray;
} else if (clazz == Boolean.TYPE) {
boolean[] finalArray = new boolean[length];
- cache.putObjectInCache(referenceId,finalArray);
+ cache.putObjectInCacheRead(referenceId,finalArray);
for (int i=0;i<finalArray.length;i++) finalArray[i] = input.readBoolean();
return finalArray;
} else {
@@ -188,7 +188,7 @@
}
Object producedArray[] = (Object[]) Array.newInstance(metaData.getClazz(),depthParam);
- cache.putObjectInCache(referenceId,producedArray);
+ cache.putObjectInCacheRead(referenceId,producedArray);
for (int i=0;i<length;i++)
{
1.22 +69 -8 jboss-serialization/src/org/jboss/serial/persister/RegularObjectPersister.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: RegularObjectPersister.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/persister/RegularObjectPersister.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- RegularObjectPersister.java 11 Apr 2006 23:13:09 -0000 1.21
+++ RegularObjectPersister.java 17 Apr 2006 23:12:13 -0000 1.22
@@ -26,15 +26,14 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.lang.reflect.Field;
-import java.util.Iterator;
+import org.apache.log4j.Logger;
import org.jboss.serial.classmetamodel.ClassMetaData;
import org.jboss.serial.classmetamodel.ClassMetaDataSlot;
import org.jboss.serial.classmetamodel.ClassMetadataField;
import org.jboss.serial.classmetamodel.FieldsManager;
import org.jboss.serial.exception.SerializationException;
import org.jboss.serial.objectmetamodel.DataContainerConstants;
-import org.jboss.serial.objectmetamodel.FieldsContainer;
import org.jboss.serial.objectmetamodel.ObjectSubstitutionInterface;
import org.jboss.serial.objectmetamodel.ObjectsCache;
@@ -44,6 +43,8 @@
*/
public class RegularObjectPersister implements Persister
{
+ private static final Logger log = Logger.getLogger(RegularObjectPersister.class);
+ private static final boolean isDebug = log.isDebugEnabled();
byte id;
@@ -66,10 +67,19 @@
ClassMetaDataSlot slots[] = metaClass.getSlots();
+ if (isDebug)
+ {
+ log.debug("defaultWrite::" + metaClass.getClassName() + " contains " + slots.length + " slots");
+ }
+
output.writeInt(slots.length);
for (int slotNr=0;slotNr<slots.length;slotNr++)
{
+ if (isDebug)
+ {
+ log.debug("defaultWrite:: slot " + slotNr + " NR=" + slots[slotNr].getSlotClass().getName() + " from parentClass=" + metaClass.getClassName());
+ }
if (slots[slotNr].getPrivateMethodWrite()!=null)
{
writeSlotWithMethod(slots[slotNr], output, obj, substitution);
@@ -84,6 +94,10 @@
private static void readSlotWithMethod(ClassMetaDataSlot slot, ObjectInput input, Object obj, ObjectSubstitutionInterface substitution) throws IOException
{
+ if (isDebug)
+ {
+ log.debug("readSlotWithMethod slot=" + slot.getSlotClass().getName());
+ }
try {
slot.getPrivateMethodRead().invoke(obj,new Object[]{new ObjectInputStreamProxy(input,obj,slot,substitution)});
} catch (IOException e) {
@@ -97,6 +111,10 @@
private static void writeSlotWithMethod(ClassMetaDataSlot slot, ObjectOutput out, Object obj, ObjectSubstitutionInterface substitution) throws IOException
{
+ if (isDebug)
+ {
+ log.debug("writeSlotWithMethod slot=" + slot.getSlotClass().getName());
+ }
try {
slot.getPrivateMethodWrite().invoke(obj,new Object[]{new ObjectOutputStreamProxy(out,obj,slot,substitution)});
}
@@ -117,12 +135,25 @@
ClassMetadataField[] fields = slot.getFields();
output.writeInt(fields.length);
+ if (isDebug)
+ {
+ log.debug("writeSlotWithFields slot=" + slot.getSlotClass().getName() + " and " + fields.length + " fields");
+ }
+
for (int fieldNR=0;fieldNR<fields.length;fieldNR++)
{
ClassMetadataField field = fields[fieldNR];
+ if (isDebug)
+ {
+ log.debug("writeSlotWithFields FieldNr=" + fieldNR);
+ }
if (field.getField().getType().isPrimitive() && !field.getField().getType().isArray())
{
+ if (isDebug)
+ {
+ log.debug("writeSlotWithFields slot=" + slot.getSlotClass().getName() + " primitiveField " + fields[fieldNR].getFieldName() + " with object=NULL");
+ }
writeOnPrimitive(output,obj,field);
}
else
@@ -131,10 +162,18 @@
Object value = null;
value = FieldsManager.getFieldsManager().getObject(obj,field);
- if (substitution!=null)
+ if (isDebug)
+ {
+ if (value==null)
{
- value = substitution.replaceObject(value);
+ log.debug("writeSlotWithFields slot=" + slot.getSlotClass().getName() + " objectField " + fields[fieldNR].getFieldName() + " with object=NULL");
}
+ else
+ {
+ log.debug("writeSlotWithFields slot=" + slot.getSlotClass().getName() + " objectField " + fields[fieldNR].getFieldName() + " with object=" + value.getClass().getName());
+ }
+ }
+
output.writeUTF(field.getFieldName());
output.writeByte(DataContainerConstants.OBJECTREF);
@@ -196,7 +235,7 @@
public Object readData (ClassLoader loader, ClassMetaData metaData, int referenceId, ObjectsCache cache, ObjectInput input, ObjectSubstitutionInterface substitution) throws IOException
{
Object obj = metaData.newInstance();
- cache.putObjectInCache(referenceId,obj);
+ cache.putObjectInCacheRead(referenceId,obj);
return defaultRead(input, obj,metaData, substitution);
}
@@ -208,10 +247,20 @@
final int numberOfSlots = input.readInt();
+ if (isDebug)
+ {
+ log.debug("defaultRead::class " + metaData.getClassName() + " contains " + numberOfSlots + " slots");
+ }
+
for (int slotNR=0;slotNR<numberOfSlots;slotNR++)
{
ClassMetaDataSlot slot = metaData.getSlots()[slotNR];
+ if (isDebug)
+ {
+ log.debug("defaultRead::slot[" + slotNR+"]=" + slot.getSlotClass().getName());
+ }
+
if (slot.getPrivateMethodRead()!=null)
{
readSlotWithMethod(slot, input, obj, substitution);
@@ -236,10 +285,18 @@
}
static void readSlotWithFields(ClassMetaDataSlot slot, ObjectInput input, Object obj) throws IOException, ClassNotFoundException {
+ if (isDebug)
+ {
+ log.debug("readSlotWithFields slot=" + slot.getSlotClass().getName());
+ }
final int numberOfFields = input.readInt();
for (int i=0;i<numberOfFields;i++)
{
final String fieldName = input.readUTF();
+ if (isDebug)
+ {
+ log.debug("FieldName on Read=" + fieldName);
+ }
ClassMetadataField field = slot.getField(fieldName);
byte dataType = input.readByte();
@@ -278,6 +335,10 @@
//field.getField().setBoolean(obj,input.readBoolean());
break;
case DataContainerConstants.OBJECTREF:
+ if (isDebug)
+ {
+ log.debug("readSlotWithFields slot=" + slot.getSlotClass().getName() + " field=" + fieldName + "<<-reading Object");
+ }
Object objTmp = input.readObject();
FieldsManager.getFieldsManager().setObject(obj,field,objTmp);
//field.getField().set(obj,objTmp);
1.5 +1 -1 jboss-serialization/src/org/jboss/serial/persister/EnumerationPersister.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: EnumerationPersister.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/persister/EnumerationPersister.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- EnumerationPersister.java 4 Apr 2006 01:07:09 -0000 1.4
+++ EnumerationPersister.java 17 Apr 2006 23:12:13 -0000 1.5
@@ -83,7 +83,7 @@
{
if (constants[i].toString().equals(instanceName))
{
- cache.putObjectInCache(referenceId,constants[i]);
+ cache.putObjectInCacheRead(referenceId,constants[i]);
return constants[i];
}
}
1.15 +3 -3 jboss-serialization/src/org/jboss/serial/persister/ClassReferencePersister.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ClassReferencePersister.java
===================================================================
RCS file: /cvsroot/jboss/jboss-serialization/src/org/jboss/serial/persister/ClassReferencePersister.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- ClassReferencePersister.java 4 Apr 2006 01:07:09 -0000 1.14
+++ ClassReferencePersister.java 17 Apr 2006 23:12:13 -0000 1.15
@@ -33,7 +33,7 @@
import org.jboss.serial.objectmetamodel.ObjectsCache;
/**
- * $Id: ClassReferencePersister.java,v 1.14 2006/04/04 01:07:09 csuconic Exp $
+ * $Id: ClassReferencePersister.java,v 1.15 2006/04/17 23:12:13 csuconic Exp $
*
* @author <a href="mailto:tclebert.suconic@... Suconic</a>
*/
@@ -82,7 +82,7 @@
}
Object proxyReturn = Proxy.getProxyClass(loader,interfaces);
- cache.putObjectInCache(referenceId,proxyReturn);
+ cache.putObjectInCacheRead(referenceId,proxyReturn);
return proxyReturn;
}
@@ -90,7 +90,7 @@
{
String name = input.readUTF();
Class classReturn = lookupClass(loader, name);
- cache.putObjectInCache(referenceId,classReturn);
+ cache.putObjectInCacheRead(referenceId,classReturn);
return classReturn;
}
}
|