openamf/src/java/org/openamf/io AMFSerializer.java,1.50,1.51

Sean Sullivan <[email protected]> Tue, 07 Jun 2005 03:26:40 +0000
Newsgroups gmane.comp.java.openamf.cvs
Message-ID <[email protected]>
Update of /cvsroot/openamf/openamf/src/java/org/openamf/io
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24767/src/java/org/openamf/io

Modified Files:
	AMFSerializer.java 
Log Message:
improved support for primitive arrays


Index: AMFSerializer.java
===================================================================
RCS file: /cvsroot/openamf/openamf/src/java/org/openamf/io/AMFSerializer.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -C2 -d -r1.50 -r1.51
*** AMFSerializer.java	5 Sep 2004 06:51:21 -0000	1.50
--- AMFSerializer.java	7 Jun 2005 03:26:38 -0000	1.51
***************
*** 44,47 ****
--- 44,49 ----
   * @author Pat Maddox <[email protected]>
   * @author Sylwester Lachiewicz <[email protected]>
+  * @author Richard Pitt
+  * 
   * @version $Revision$, $Date$
   */
***************
*** 147,150 ****
--- 149,154 ----
  			// write null object
  			outputStream.writeByte(AMFBody.DATA_TYPE_NULL);
+ 		} else if (isPrimitiveArray(value)) {
+ 	            writePrimitiveArray(value);
  		} else if (value instanceof Number) {
  			// write number object
***************
*** 152,156 ****
  			outputStream.writeDouble(((Number) value).doubleValue());
  		} else if (value instanceof String) {
!       writeString((String)value); 
  		} else if (value instanceof Character) {
  			// write String object
--- 156,160 ----
  			outputStream.writeDouble(((Number) value).doubleValue());
  		} else if (value instanceof String) {
!            writeString((String)value); 
  		} else if (value instanceof Character) {
  			// write String object
***************
*** 278,281 ****
--- 282,371 ----
  		}
  	}
+ 	
+ 	protected void writePrimitiveArray(Object array) throws IOException {
+ 		writeArray(convertPrimitiveArrayToObjectArray(array));
+ 	}
+ 
+ 	protected Object[] convertPrimitiveArrayToObjectArray(Object array) throws IOException {
+ 		Class componentType = array.getClass().getComponentType();
+ 		
+ 		Object[] result = null;
+ 		
+ 		if (componentType == null)
+ 		{
+ 			throw new NullPointerException("componentType is null");
+ 		}
+ 		else if (componentType == Byte.TYPE)
+ 		{
+ 			byte[] barray = (byte[]) array;
+ 			result = new Object[barray.length];
+ 			for (int i = 0; i < barray.length; i++)
+ 			{
+ 				result[i] = new Byte(barray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Short.TYPE)
+ 		{
+ 			short[] sarray = (short[]) array;
+ 			result = new Object[sarray.length];
+ 			for (int i = 0; i < sarray.length; i++)
+ 			{
+ 				result[i] = new Short(sarray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Integer.TYPE)
+ 		{
+ 			int[] iarray = (int[]) array;
+ 			result = new Object[iarray.length];
+ 			for (int i = 0; i < iarray.length; i++)
+ 			{
+ 				result[i] = new Integer(iarray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Long.TYPE)
+ 		{
+ 			long[] larray = (long[]) array;
+ 			result = new Object[larray.length];
+ 			for (int i = 0; i < larray.length; i++)
+ 			{
+ 				result[i] = new Long(larray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Double.TYPE)
+ 		{
+ 			double[] darray = (double[]) array;
+ 			result = new Object[darray.length];
+ 			for (int i = 0; i < darray.length; i++)
+ 			{
+ 				result[i] = new Double(darray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Float.TYPE)
+ 		{
+ 			float[] farray = (float[]) array;
+ 			result = new Object[farray.length];
+ 			for (int i = 0; i < farray.length; i++)
+ 			{
+ 				result[i] = new Float(farray[i]);
+ 			}
+ 		}
+ 		else if (componentType == Boolean.TYPE)
+ 		{
+ 			boolean[] barray = (boolean[]) array;
+ 			result = new Object[barray.length];
+ 			for (int i = 0; i < barray.length; i++)
+ 			{
+ 				result[i] = new Boolean(barray[i]);
+ 			}
+ 		}
+ 		else {
+ 			throw new IllegalArgumentException(
+ 					"unexpected component type: "
+ 					+ componentType.getClass().getName());
+ 		}
+ 		
+ 		return result;
+ 	}
+ 	
  	/**
  	 * Writes Iterator - convert to List and call <code>writeCollection</code>
***************
*** 427,430 ****
  	}
  
! 
  }
\ No newline at end of file
--- 517,529 ----
  	}
  
! 	protected boolean isPrimitiveArray(Object obj) {
! 		if (obj == null) {
! 			return false;
! 		}
! 		else {
! 			return obj.getClass().isArray() && obj.getClass().getComponentType().isPrimitive();
! 		}
! 	}
! 	
! 	
  }
\ No newline at end of file



-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20