You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ru...@apache.org on 2001/08/02 14:45:37 UTC
cvs commit: xml-axis/java/src/org/apache/axis/encoding SerializationContext.java
rubys 01/08/02 05:45:37
Modified: java/src/org/apache/axis/encoding SerializationContext.java
Log:
Only use multi-ref when there is a possibility of circularity
Revision Changes Path
1.24 +12 -9 xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java
Index: SerializationContext.java
===================================================================
RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/SerializationContext.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- SerializationContext.java 2001/07/30 15:33:53 1.23
+++ SerializationContext.java 2001/08/02 12:45:37 1.24
@@ -195,18 +195,21 @@
}
/**
- * Classes which are known to not require multi-ref. Doing multiref
- * for these would not only tend to increase the size of the payload,
- * they decrease interopability by utilizing an advanced function of
- * the protocol unnecessarily.
+ * Classes which are known to not require multi-ref. As multi-ref
+ * requires additional parsing overhead and not all implementations
+ * support this, only use this function when there is a possibility
+ * of circular references.
*/
public boolean isPrimitive(Object value)
{
- if (value instanceof String) return true;
- if (value instanceof Number) return true;
- if (value instanceof Boolean) return true;
- if (value instanceof Date) return true;
- if (value instanceof byte[]) return true;
+ Class type = value.getClass();
+ if (type.isArray()) type = type.getComponentType();
+
+ if (String.class.isAssignableFrom(type)) return true;
+ if (Number.class.isAssignableFrom(type)) return true;
+ if (Boolean.class.isAssignableFrom(type)) return true;
+ if (Date.class.isAssignableFrom(type)) return true;
+ if (byte[].class.isAssignableFrom(type)) return true;
return false;
}