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