Implemented Source / Target interfaces for ByteBuffer and Input- / OutputStream

git-svn-id: https://svn.apache.org/repos/asf/directmemory/lightning/trunk@1405129 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/BytecodeMarshallerGenerator.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/BytecodeMarshallerGenerator.java
index 86dc2ca..8932c07 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/BytecodeMarshallerGenerator.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/BytecodeMarshallerGenerator.java
@@ -443,7 +443,7 @@
         mv.visitVarInsn( ALOAD, 3 );
         mv.visitVarInsn( ALOAD, 6 );
         mv.visitInsn( ARRAYLENGTH );
-        mv.visitMethodInsn( INVOKEINTERFACE, DATAOUTPUT_CLASS_INTERNAL_TYPE, "writeInt", "(I)V" );
+        mv.visitMethodInsn( INVOKEINTERFACE, TARGET_CLASS_INTERNAL_TYPE, "writeInt", "(I)V" );
 
         // Loop over every element in array
         Label forLoopEnd = new Label();
@@ -602,7 +602,7 @@
 
         // Read size
         mv.visitVarInsn( ALOAD, 3 );
-        mv.visitMethodInsn( INVOKEINTERFACE, DATAINPUT_CLASS_INTERNAL_TYPE, "readInt", "()I" );
+        mv.visitMethodInsn( INVOKEINTERFACE, SOURCE_CLASS_INTERNAL_TYPE, "readInt", "()I" );
         mv.visitInsn( DUP );
         mv.visitVarInsn( ISTORE, 5 );
 
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/GeneratorConstants.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/GeneratorConstants.java
index efc4f84..326ef4c 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/GeneratorConstants.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/generator/GeneratorConstants.java
@@ -18,8 +18,6 @@
  */
 package org.apache.directmemory.lightning.internal.generator;
 
-import java.io.DataInput;
-import java.io.DataOutput;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -29,6 +27,8 @@
 import org.apache.directmemory.lightning.MarshallerContext;
 import org.apache.directmemory.lightning.MarshallerStrategy;
 import org.apache.directmemory.lightning.SerializationContext;
+import org.apache.directmemory.lightning.Source;
+import org.apache.directmemory.lightning.Target;
 import org.apache.directmemory.lightning.instantiator.ObjectInstantiatorFactory;
 import org.apache.directmemory.lightning.internal.CheatPropertyDescriptor;
 import org.apache.directmemory.lightning.internal.ClassDescriptorAwareSerializer;
@@ -44,16 +44,16 @@
     static String MARSHALLER_MARSHALL_SIGNATURE =
         Type.getMethodDescriptor( Type.VOID_TYPE,
                                   new Type[] { Type.getType( Object.class ), Type.getType( PropertyDescriptor.class ),
-                                      Type.getType( DataOutput.class ), Type.getType( SerializationContext.class ) } );
+                                      Type.getType( Target.class ), Type.getType( SerializationContext.class ) } );
 
     static String MARSHALLER_BASE_UNMARSHALL_SIGNATURE =
         Type.getMethodDescriptor( Type.getType( Object.class ), new Type[] { Type.getType( PropertyDescriptor.class ),
-            Type.getType( DataInput.class ), Type.getType( SerializationContext.class ) } );
+            Type.getType( Source.class ), Type.getType( SerializationContext.class ) } );
 
     static String MARSHALLER_UNMARSHALL_SIGNATURE =
         Type.getMethodDescriptor( Type.getType( Object.class ),
                                   new Type[] { Type.getType( Object.class ), Type.getType( PropertyDescriptor.class ),
-                                      Type.getType( DataInput.class ), Type.getType( SerializationContext.class ) } );
+                                      Type.getType( Source.class ), Type.getType( SerializationContext.class ) } );
 
     static String MARSHALLER_FIND_MARSHALLER_SIGNATURE =
         Type.getMethodDescriptor( Type.getType( Marshaller.class ),
@@ -65,7 +65,7 @@
     static String MARSHALLER_IS_ALREADY_MARSHALLED_SIGNATURE =
         Type.getMethodDescriptor( Type.BOOLEAN_TYPE,
                                   new Type[] { Type.getType( Object.class ), Type.getType( Class.class ),
-                                      Type.getType( DataOutput.class ), Type.getType( SerializationContext.class ) } );
+                                      Type.getType( Target.class ), Type.getType( SerializationContext.class ) } );
 
     static String MARSHALLER_CONSTRUCTOR_SIGNATURE =
         Type.getMethodDescriptor( Type.VOID_TYPE,
@@ -122,9 +122,9 @@
 
     static String CLASS_CLASS_INTERNAL_TYPE = Type.getType( Class.class ).getInternalName();
 
-    static String DATAOUTPUT_CLASS_INTERNAL_TYPE = Type.getType( DataOutput.class ).getInternalName();
+    static String TARGET_CLASS_INTERNAL_TYPE = Type.getType( Target.class ).getInternalName();
 
-    static String DATAINPUT_CLASS_INTERNAL_TYPE = Type.getType( DataInput.class ).getInternalName();
+    static String SOURCE_CLASS_INTERNAL_TYPE = Type.getType( Source.class ).getInternalName();
 
     static String MARSHALLERSTRATEGY_CLASS_INTERNAL_TYPE = Type.getType( MarshallerStrategy.class ).getInternalName();
 
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/io/ByteOrderUtils.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/io/ByteOrderUtils.java
index d765514..ac2dde4 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/io/ByteOrderUtils.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/io/ByteOrderUtils.java
@@ -166,8 +166,8 @@
 
     private static long buildLong( byte b7, byte b6, byte b5, byte b4, byte b3, byte b2, byte b1, byte b0 )
     {
-        return ( ( ( ( b7 & 0xFF ) << 56 ) | ( ( b6 & 0xFF ) << 48 ) | ( ( b5 & 0xFF ) << 40 ) | ( ( b4 & 0xFF ) << 32 )
-            | ( ( b3 & 0xFF ) << 24 ) | ( ( b2 & 0xFF ) << 16 ) | ( ( b1 & 0xFF ) << 8 ) | ( ( b0 & 0xFF ) << 0 ) ) );
+        return ( ( ( ( b7 & 0xFFL ) << 56 ) | ( ( b6 & 0xFFL ) << 48 ) | ( ( b5 & 0xFFL ) << 40 )
+            | ( ( b4 & 0xFFL ) << 32 ) | ( ( b3 & 0xFFL ) << 24 ) | ( ( b2 & 0xFFL ) << 16 ) | ( ( b1 & 0xFFL ) << 8 ) | ( ( b0 & 0xFFL ) << 0 ) ) );
     }
 
 }
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/util/UnicodeUtil.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/util/UnicodeUtil.java
index dd2aeab..bbdc315 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/util/UnicodeUtil.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/internal/util/UnicodeUtil.java
@@ -167,7 +167,7 @@
         while ( i < end )
         {
 
-            final int code = (int) characters[i++];
+            final int code = characters[i++];
 
             if ( code < 0x80 )
             {
@@ -193,7 +193,7 @@
                 // confirm valid high surrogate
                 if ( code < 0xDC00 && i < end )
                 {
-                    int utf32 = (int) characters[i];
+                    int utf32 = characters[i];
                     // confirm valid low surrogate and write pair
                     if ( utf32 >= 0xDC00 && utf32 <= 0xDFFF )
                     {
@@ -287,14 +287,14 @@
      * 
      * @throws IOException
      */
-    public static String UTF8toUTF16( Source source, int length )
+    public static String UTF8toUTF16( Source source )
         throws IOException
     {
         int charLength = source.readInt();
 
         int offset = 0;
         final char[] out = new char[charLength];
-        while ( offset < length )
+        while ( offset < charLength )
         {
             int b = source.readByte() & 0xff;
             if ( b < 0xc0 )
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferSource.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferSource.java
index 875ee03..df90490 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferSource.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferSource.java
@@ -56,8 +56,7 @@
     public String readString()
         throws IOException
     {
-        int length = readInt();
-        return UnicodeUtil.UTF8toUTF16( this, length );
+        return UnicodeUtil.UTF8toUTF16( this );
     }
 
     @Override
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferTarget.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferTarget.java
index ce910a1..d325ebf 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferTarget.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/ByteBufferTarget.java
@@ -5,6 +5,7 @@
 import java.nio.ByteOrder;
 
 import org.apache.directmemory.lightning.Target;
+import org.apache.directmemory.lightning.internal.util.UnicodeUtil;
 
 public class ByteBufferTarget
     implements Target
@@ -54,7 +55,7 @@
     public void writeString( String value )
         throws IOException
     {
-        // TODO: implementation of writeString is missing
+        UnicodeUtil.UTF16toUTF8( value, this );
     }
 
     @Override
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/InputStreamSource.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/InputStreamSource.java
index 7b243a3..3c89be6 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/InputStreamSource.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/InputStreamSource.java
@@ -89,8 +89,7 @@
     public String readString()
         throws IOException
     {
-        int length = readInt();
-        return UnicodeUtil.UTF8toUTF16( this, length );
+        return UnicodeUtil.UTF8toUTF16( this );
     }
 
     @Override
diff --git a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/OutputStreamTarget.java b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/OutputStreamTarget.java
index 132f58c..76ef67a 100644
--- a/lightning-core/src/main/java/org/apache/directmemory/lightning/io/OutputStreamTarget.java
+++ b/lightning-core/src/main/java/org/apache/directmemory/lightning/io/OutputStreamTarget.java
@@ -6,6 +6,7 @@
 
 import org.apache.directmemory.lightning.Target;
 import org.apache.directmemory.lightning.internal.io.ByteOrderUtils;
+import org.apache.directmemory.lightning.internal.util.UnicodeUtil;
 
 public class OutputStreamTarget
     implements Target
@@ -66,7 +67,7 @@
     public void writeString( String value )
         throws IOException
     {
-        // TODO: implementation of writeString is missing
+        UnicodeUtil.UTF16toUTF8( value, this );
     }
 
     @Override