public void writeObject(ByteBuffer buffer, Object object) throws IOException { if (object == null){ buffer.put((byte)0); return; } int[] dimensions = getDimensions(object); buffer.put((byte)dimensions.length); for (int dimension : dimensions) buffer.putInt(dimension); Serializer elementSerializer = null; Class elementClass = object.getClass(); while (elementClass.getComponentType() != null) { elementClass = elementClass.getComponentType(); } if (Modifier.isFinal(elementClass.getModifiers())) elementSerializer = Serializer.getSerializer(elementClass); writeArray(elementSerializer, buffer, object, 0, dimensions.length); }
private void writeArray(Serializer elementSerializer, ByteBuffer buffer, Object array, int dimension, int dimensionCount) throws IOException { int length = Array.getLength(array); if (dimension > 0) { buffer.putInt(length); } // Write array data. boolean elementsAreArrays = dimension < dimensionCount - 1; for (int i = 0; i < length; i++) { Object element = Array.get(array, i); if (elementsAreArrays) { if (element != null) writeArray(elementSerializer, buffer, element, dimension + 1, dimensionCount); } else if (elementSerializer != null) { elementSerializer.writeObject(buffer, element); } else { // Each element could be a different type. Store the class with the object. Serializer.writeClassAndObject(buffer, element); } } }
public void writeObject(ByteBuffer buffer, Object object) throws IOException { if (object == null){ buffer.put((byte)0); return; } int[] dimensions = getDimensions(object); buffer.put((byte)dimensions.length); for (int dimension : dimensions) buffer.putInt(dimension); Serializer elementSerializer = null; Class elementClass = object.getClass(); while (elementClass.getComponentType() != null) { elementClass = elementClass.getComponentType(); } if (Modifier.isFinal(elementClass.getModifiers())) elementSerializer = Serializer.getSerializer(elementClass); writeArray(elementSerializer, buffer, object, 0, dimensions.length); }
public void writeObject(ByteBuffer buffer, Object object) throws IOException { if (object == null){ buffer.put((byte)0); return; } int[] dimensions = getDimensions(object); buffer.put((byte)dimensions.length); for (int dimension : dimensions) buffer.putInt(dimension); Serializer elementSerializer = null; Class elementClass = object.getClass(); while (elementClass.getComponentType() != null) { elementClass = elementClass.getComponentType(); } if (Modifier.isFinal(elementClass.getModifiers())) elementSerializer = Serializer.getSerializer(elementClass); writeArray(elementSerializer, buffer, object, 0, dimensions.length); }
private void writeArray(Serializer elementSerializer, ByteBuffer buffer, Object array, int dimension, int dimensionCount) throws IOException { int length = Array.getLength(array); if (dimension > 0) { buffer.putInt(length); } // Write array data. boolean elementsAreArrays = dimension < dimensionCount - 1; for (int i = 0; i < length; i++) { Object element = Array.get(array, i); if (elementsAreArrays) { if (element != null) writeArray(elementSerializer, buffer, element, dimension + 1, dimensionCount); } else if (elementSerializer != null) { elementSerializer.writeObject(buffer, element); } else { // Each element could be a different type. Store the class with the object. Serializer.writeClassAndObject(buffer, element); } } }
private void writeArray(Serializer elementSerializer, ByteBuffer buffer, Object array, int dimension, int dimensionCount) throws IOException { int length = Array.getLength(array); if (dimension > 0) { buffer.putInt(length); } // Write array data. boolean elementsAreArrays = dimension < dimensionCount - 1; for (int i = 0; i < length; i++) { Object element = Array.get(array, i); if (elementsAreArrays) { if (element != null) writeArray(elementSerializer, buffer, element, dimension + 1, dimensionCount); } else if (elementSerializer != null) { elementSerializer.writeObject(buffer, element); } else { // Each element could be a different type. Store the class with the object. Serializer.writeClassAndObject(buffer, element); } } }