From 14908b2aaac1246e74c6e0f3ae373bb5533c2fc3 Mon Sep 17 00:00:00 2001 From: Pontus Melke Date: Tue, 13 Jun 2017 15:41:52 +0200 Subject: [PATCH] Make ValueWriter and writeTo throw exceptions In many cases the writer will write to disk or network buffers where most thing will throw IOExceptions. We should allow a `ValueWriter` and `Value.writeTo` to throw along these exceptions and not force implementations to catch and rethrow. --- community/bolt/pom.xml | 6 + .../main/java/org/neo4j/values/AnyValue.java | 2 +- .../java/org/neo4j/values/AnyValueWriter.java | 30 ++-- .../java/org/neo4j/values/BooleanValue.java | 2 +- .../main/java/org/neo4j/values/ByteValue.java | 2 +- .../main/java/org/neo4j/values/CharArray.java | 2 +- .../main/java/org/neo4j/values/CharValue.java | 2 +- .../java/org/neo4j/values/DoubleArray.java | 2 +- .../java/org/neo4j/values/DoubleValue.java | 2 +- .../java/org/neo4j/values/FloatArray.java | 2 +- .../java/org/neo4j/values/FloatValue.java | 2 +- .../main/java/org/neo4j/values/IntArray.java | 2 +- .../main/java/org/neo4j/values/IntValue.java | 2 +- .../main/java/org/neo4j/values/LongArray.java | 2 +- .../main/java/org/neo4j/values/LongValue.java | 2 +- .../main/java/org/neo4j/values/NoValue.java | 2 +- .../neo4j/values/PrimitiveArrayWriting.java | 18 +-- .../java/org/neo4j/values/ShortValue.java | 2 +- .../java/org/neo4j/values/StringArray.java | 2 +- .../java/org/neo4j/values/StringValue.java | 2 +- .../src/main/java/org/neo4j/values/Value.java | 6 +- .../java/org/neo4j/values/ValueWriter.java | 36 ++--- .../neo4j/values/virtual/EdgeReference.java | 2 +- .../org/neo4j/values/virtual/LabelSet.java | 2 +- .../org/neo4j/values/virtual/ListValue.java | 2 +- .../org/neo4j/values/virtual/MapValue.java | 2 +- .../neo4j/values/virtual/NodeReference.java | 2 +- .../org/neo4j/values/virtual/PathValue.java | 2 +- .../org/neo4j/values/virtual/PointValue.java | 2 +- .../org/neo4j/values/BufferValueWriter.java | 2 +- .../neo4j/values/ThrowingValueWriterTest.java | 129 ++++++++++++++++++ .../values/virtual/BufferAnyValueWriter.java | 2 +- 32 files changed, 206 insertions(+), 71 deletions(-) create mode 100644 community/values/src/test/java/org/neo4j/values/ThrowingValueWriterTest.java diff --git a/community/bolt/pom.xml b/community/bolt/pom.xml index 90c7a6f20594f..d833c16a103ba 100644 --- a/community/bolt/pom.xml +++ b/community/bolt/pom.xml @@ -60,6 +60,12 @@ ${project.version} + + org.neo4j + neo4j-values + ${project.version} + + org.neo4j neo4j-kernel diff --git a/community/values/src/main/java/org/neo4j/values/AnyValue.java b/community/values/src/main/java/org/neo4j/values/AnyValue.java index 9649fa3d8c839..f345ec87ec17e 100644 --- a/community/values/src/main/java/org/neo4j/values/AnyValue.java +++ b/community/values/src/main/java/org/neo4j/values/AnyValue.java @@ -27,5 +27,5 @@ public abstract class AnyValue @Override public abstract int hashCode(); - public abstract void writeTo( AnyValueWriter writer ); + public abstract void writeTo( AnyValueWriter writer ) throws E; } diff --git a/community/values/src/main/java/org/neo4j/values/AnyValueWriter.java b/community/values/src/main/java/org/neo4j/values/AnyValueWriter.java index 6126b8fdb82c1..8f142359df3b3 100644 --- a/community/values/src/main/java/org/neo4j/values/AnyValueWriter.java +++ b/community/values/src/main/java/org/neo4j/values/AnyValueWriter.java @@ -24,34 +24,34 @@ /** * Writer of any values. */ -public interface AnyValueWriter extends ValueWriter +public interface AnyValueWriter extends ValueWriter { - void writeNodeReference( long nodeId ); + void writeNodeReference( long nodeId ) throws E; - void beginLabels( int numberOfLabels ); + void beginLabels( int numberOfLabels ) throws E; - void writeLabel( int labelId ); + void writeLabel( int labelId ) throws E; - void endLabels(); + void endLabels() throws E; - void writeEdgeReference( long edgeId ); + void writeEdgeReference( long edgeId ) throws E; - void beginMap( int size ); + void beginMap( int size ) throws E; - void writeKeyId( int keyId ); + void writeKeyId( int keyId ) throws E; - void endMap(); + void endMap() throws E; - void beginList( int size ); + void beginList( int size ) throws E; - void endList(); + void endList() throws E; - void beginPath( int length ); + void beginPath( int length ) throws E; - void endPath(); + void endPath() throws E; - void beginPoint( CoordinateReferenceSystem coordinateReferenceSystem ); + void beginPoint( CoordinateReferenceSystem coordinateReferenceSystem ) throws E; - void endPoint(); + void endPoint() throws E; } diff --git a/community/values/src/main/java/org/neo4j/values/BooleanValue.java b/community/values/src/main/java/org/neo4j/values/BooleanValue.java index 9078894afa1ee..2c3177261a6ed 100644 --- a/community/values/src/main/java/org/neo4j/values/BooleanValue.java +++ b/community/values/src/main/java/org/neo4j/values/BooleanValue.java @@ -81,7 +81,7 @@ public int compareTo( BooleanValue other ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeBoolean( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/ByteValue.java b/community/values/src/main/java/org/neo4j/values/ByteValue.java index c2682f7b611f6..d4db5476847c9 100644 --- a/community/values/src/main/java/org/neo4j/values/ByteValue.java +++ b/community/values/src/main/java/org/neo4j/values/ByteValue.java @@ -59,7 +59,7 @@ public boolean equals( String x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeInteger( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/CharArray.java b/community/values/src/main/java/org/neo4j/values/CharArray.java index df880ebba3739..b1e3615caf73d 100644 --- a/community/values/src/main/java/org/neo4j/values/CharArray.java +++ b/community/values/src/main/java/org/neo4j/values/CharArray.java @@ -77,7 +77,7 @@ public String stringValue( int offset ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/CharValue.java b/community/values/src/main/java/org/neo4j/values/CharValue.java index 5ca5f9ed1c30c..d87c760b01ede 100644 --- a/community/values/src/main/java/org/neo4j/values/CharValue.java +++ b/community/values/src/main/java/org/neo4j/values/CharValue.java @@ -67,7 +67,7 @@ public int hashCode() } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeString( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/DoubleArray.java b/community/values/src/main/java/org/neo4j/values/DoubleArray.java index d9751fc112d93..4be9ca1e6ed71 100644 --- a/community/values/src/main/java/org/neo4j/values/DoubleArray.java +++ b/community/values/src/main/java/org/neo4j/values/DoubleArray.java @@ -94,7 +94,7 @@ public boolean equals( double[] x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/DoubleValue.java b/community/values/src/main/java/org/neo4j/values/DoubleValue.java index ba4b0339e7b94..a4afc65dae500 100644 --- a/community/values/src/main/java/org/neo4j/values/DoubleValue.java +++ b/community/values/src/main/java/org/neo4j/values/DoubleValue.java @@ -55,7 +55,7 @@ public boolean equals( String x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeFloatingPoint( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/FloatArray.java b/community/values/src/main/java/org/neo4j/values/FloatArray.java index ed1a940ac6627..a2c6b71c03cc7 100644 --- a/community/values/src/main/java/org/neo4j/values/FloatArray.java +++ b/community/values/src/main/java/org/neo4j/values/FloatArray.java @@ -94,7 +94,7 @@ public boolean equals( double[] x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/FloatValue.java b/community/values/src/main/java/org/neo4j/values/FloatValue.java index a6684c378b22c..0a673c3758bce 100644 --- a/community/values/src/main/java/org/neo4j/values/FloatValue.java +++ b/community/values/src/main/java/org/neo4j/values/FloatValue.java @@ -55,7 +55,7 @@ public boolean equals( String x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeFloatingPoint( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/IntArray.java b/community/values/src/main/java/org/neo4j/values/IntArray.java index 8fe24e31762f4..1e9071b215c52 100644 --- a/community/values/src/main/java/org/neo4j/values/IntArray.java +++ b/community/values/src/main/java/org/neo4j/values/IntArray.java @@ -94,7 +94,7 @@ public boolean equals( double[] x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/IntValue.java b/community/values/src/main/java/org/neo4j/values/IntValue.java index 0b9dd0200b10e..3575788d61ebd 100644 --- a/community/values/src/main/java/org/neo4j/values/IntValue.java +++ b/community/values/src/main/java/org/neo4j/values/IntValue.java @@ -37,7 +37,7 @@ public long longValue() } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeInteger( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/LongArray.java b/community/values/src/main/java/org/neo4j/values/LongArray.java index fd2a866178202..d628fd1473dca 100644 --- a/community/values/src/main/java/org/neo4j/values/LongArray.java +++ b/community/values/src/main/java/org/neo4j/values/LongArray.java @@ -94,7 +94,7 @@ public boolean equals( double[] x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/LongValue.java b/community/values/src/main/java/org/neo4j/values/LongValue.java index 31ac07e2e8251..7bf4016785028 100644 --- a/community/values/src/main/java/org/neo4j/values/LongValue.java +++ b/community/values/src/main/java/org/neo4j/values/LongValue.java @@ -55,7 +55,7 @@ public boolean equals( String x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeInteger( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/NoValue.java b/community/values/src/main/java/org/neo4j/values/NoValue.java index 2774a91f102e0..0de92e2b76739 100644 --- a/community/values/src/main/java/org/neo4j/values/NoValue.java +++ b/community/values/src/main/java/org/neo4j/values/NoValue.java @@ -125,7 +125,7 @@ public boolean equals( String[] x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeNull(); } diff --git a/community/values/src/main/java/org/neo4j/values/PrimitiveArrayWriting.java b/community/values/src/main/java/org/neo4j/values/PrimitiveArrayWriting.java index 60b20cff41732..198855ff35476 100644 --- a/community/values/src/main/java/org/neo4j/values/PrimitiveArrayWriting.java +++ b/community/values/src/main/java/org/neo4j/values/PrimitiveArrayWriting.java @@ -24,7 +24,7 @@ */ public final class PrimitiveArrayWriting { - public static void writeTo( ValueWriter writer, byte[] values ) + public static void writeTo( ValueWriter writer, byte[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.BYTE ); for ( byte x : values ) @@ -34,7 +34,7 @@ public static void writeTo( ValueWriter writer, byte[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, short[] values ) + public static void writeTo( ValueWriter writer, short[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.SHORT ); for ( short x : values ) @@ -44,7 +44,7 @@ public static void writeTo( ValueWriter writer, short[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, int[] values ) + public static void writeTo( ValueWriter writer, int[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.INT ); for ( int x : values ) @@ -54,7 +54,7 @@ public static void writeTo( ValueWriter writer, int[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, long[] values ) + public static void writeTo( ValueWriter writer, long[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.LONG ); for ( long x : values ) @@ -64,7 +64,7 @@ public static void writeTo( ValueWriter writer, long[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, float[] values ) + public static void writeTo( ValueWriter writer, float[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.FLOAT ); for ( float x : values ) @@ -74,7 +74,7 @@ public static void writeTo( ValueWriter writer, float[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, double[] values ) + public static void writeTo( ValueWriter writer, double[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.DOUBLE ); for ( double x : values ) @@ -84,7 +84,7 @@ public static void writeTo( ValueWriter writer, double[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, boolean[] values ) + public static void writeTo( ValueWriter writer, boolean[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.BOOLEAN ); for ( boolean x : values ) @@ -94,7 +94,7 @@ public static void writeTo( ValueWriter writer, boolean[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, char[] values ) + public static void writeTo( ValueWriter writer, char[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.CHAR ); for ( char x : values ) @@ -104,7 +104,7 @@ public static void writeTo( ValueWriter writer, char[] values ) writer.endArray(); } - public static void writeTo( ValueWriter writer, String[] values ) + public static void writeTo( ValueWriter writer, String[] values ) throws E { writer.beginArray( values.length, ValueWriter.ArrayType.STRING ); for ( String x : values ) diff --git a/community/values/src/main/java/org/neo4j/values/ShortValue.java b/community/values/src/main/java/org/neo4j/values/ShortValue.java index 9794fa699a022..dfcbec518dceb 100644 --- a/community/values/src/main/java/org/neo4j/values/ShortValue.java +++ b/community/values/src/main/java/org/neo4j/values/ShortValue.java @@ -59,7 +59,7 @@ public boolean equals( String x ) } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeInteger( value ); } diff --git a/community/values/src/main/java/org/neo4j/values/StringArray.java b/community/values/src/main/java/org/neo4j/values/StringArray.java index 915be6643da71..08cf0ba0927d0 100644 --- a/community/values/src/main/java/org/neo4j/values/StringArray.java +++ b/community/values/src/main/java/org/neo4j/values/StringArray.java @@ -70,7 +70,7 @@ public int hashCode() } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { PrimitiveArrayWriting.writeTo( writer, value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/StringValue.java b/community/values/src/main/java/org/neo4j/values/StringValue.java index 386145ee8b75b..394dc98f57080 100644 --- a/community/values/src/main/java/org/neo4j/values/StringValue.java +++ b/community/values/src/main/java/org/neo4j/values/StringValue.java @@ -56,7 +56,7 @@ public int hashCode() } @Override - public void writeTo( ValueWriter writer ) + public void writeTo( ValueWriter writer ) throws E { writer.writeString( value() ); } diff --git a/community/values/src/main/java/org/neo4j/values/Value.java b/community/values/src/main/java/org/neo4j/values/Value.java index 0634bcf0b4cff..dcd08aa2a348d 100644 --- a/community/values/src/main/java/org/neo4j/values/Value.java +++ b/community/values/src/main/java/org/neo4j/values/Value.java @@ -47,12 +47,12 @@ public abstract class Value extends AnyValue public abstract boolean equals( String[] x ); - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { - writeTo( (ValueWriter)writer ); + writeTo( (ValueWriter)writer ); } - public abstract void writeTo( ValueWriter writer ); + public abstract void writeTo( ValueWriter writer ) throws E; /** * Return this value as a regular java boxed primitive, String or primitive array. This method performs defensive diff --git a/community/values/src/main/java/org/neo4j/values/ValueWriter.java b/community/values/src/main/java/org/neo4j/values/ValueWriter.java index a345f434b0af0..b8f37b3033f65 100644 --- a/community/values/src/main/java/org/neo4j/values/ValueWriter.java +++ b/community/values/src/main/java/org/neo4j/values/ValueWriter.java @@ -24,7 +24,7 @@ * * Has functionality to write all supported primitives, as well as arrays and different representations of Strings. */ -public interface ValueWriter +public interface ValueWriter { enum ArrayType { @@ -39,40 +39,40 @@ enum ArrayType CHAR } - void writeNull(); + void writeNull() throws E; - void writeBoolean( boolean value ); + void writeBoolean( boolean value ) throws E; - void writeInteger( byte value ); + void writeInteger( byte value ) throws E; - void writeInteger( short value ); + void writeInteger( short value ) throws E; - void writeInteger( int value ); + void writeInteger( int value ) throws E; - void writeInteger( long value ); + void writeInteger( long value ) throws E; - void writeFloatingPoint( float value ); + void writeFloatingPoint( float value ) throws E; - void writeFloatingPoint( double value ); + void writeFloatingPoint( double value ) throws E; - void writeString( String value ); + void writeString( String value ) throws E; - void writeString( char value ); + void writeString( char value ) throws E; - default void writeString( char[] value ) + default void writeString( char[] value ) throws E { writeString( value, 0, value.length ); } - void writeString( char[] value, int offset, int length ); + void writeString( char[] value, int offset, int length ) throws E; - void beginUTF8( int size ); + void beginUTF8( int size ) throws E; - void copyUTF8( long fromAddress, int length ); + void copyUTF8( long fromAddress, int length ) throws E; - void endUTF8(); + void endUTF8() throws E; - void beginArray( int size, ArrayType arrayType ); + void beginArray( int size, ArrayType arrayType ) throws E; - void endArray(); + void endArray() throws E; } diff --git a/community/values/src/main/java/org/neo4j/values/virtual/EdgeReference.java b/community/values/src/main/java/org/neo4j/values/virtual/EdgeReference.java index 36303d848f11a..4631a419e07ff 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/EdgeReference.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/EdgeReference.java @@ -37,7 +37,7 @@ public class EdgeReference extends VirtualValue } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.writeEdgeReference( id ); } diff --git a/community/values/src/main/java/org/neo4j/values/virtual/LabelSet.java b/community/values/src/main/java/org/neo4j/values/virtual/LabelSet.java index b6d46d259e197..b729d8e6c4666 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/LabelSet.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/LabelSet.java @@ -60,7 +60,7 @@ public int getLabelId( int offset ) } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.beginLabels( labelIds.length ); for ( int labelId : labelIds ) diff --git a/community/values/src/main/java/org/neo4j/values/virtual/ListValue.java b/community/values/src/main/java/org/neo4j/values/virtual/ListValue.java index efde5d8e5c82e..cbe1aac513db2 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/ListValue.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/ListValue.java @@ -59,7 +59,7 @@ public int hash() } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.beginList( values.length ); for ( AnyValue value : values ) diff --git a/community/values/src/main/java/org/neo4j/values/virtual/MapValue.java b/community/values/src/main/java/org/neo4j/values/virtual/MapValue.java index eb476ecc455ff..1bf7d0cb844b1 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/MapValue.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/MapValue.java @@ -72,7 +72,7 @@ public int hash() } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.beginMap( keys.length ); for ( int i = 0; i < keys.length; i++ ) diff --git a/community/values/src/main/java/org/neo4j/values/virtual/NodeReference.java b/community/values/src/main/java/org/neo4j/values/virtual/NodeReference.java index cf26cce6214b4..70883fe65fe19 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/NodeReference.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/NodeReference.java @@ -37,7 +37,7 @@ public class NodeReference extends VirtualValue } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.writeNodeReference( id ); } diff --git a/community/values/src/main/java/org/neo4j/values/virtual/PathValue.java b/community/values/src/main/java/org/neo4j/values/virtual/PathValue.java index ee253c3835bf1..f9d590c874bb7 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/PathValue.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/PathValue.java @@ -67,7 +67,7 @@ public int hash() } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.beginPath( edges.length ); for ( NodeReference node : nodes ) diff --git a/community/values/src/main/java/org/neo4j/values/virtual/PointValue.java b/community/values/src/main/java/org/neo4j/values/virtual/PointValue.java index 0f3204a482ff3..64d8edb9ac8a7 100644 --- a/community/values/src/main/java/org/neo4j/values/virtual/PointValue.java +++ b/community/values/src/main/java/org/neo4j/values/virtual/PointValue.java @@ -40,7 +40,7 @@ public abstract class PointValue extends VirtualValue } @Override - public void writeTo( AnyValueWriter writer ) + public void writeTo( AnyValueWriter writer ) throws E { writer.beginPoint( getCoordinateReferenceSystem() ); writer.writeFloatingPoint( xCoordinate ); diff --git a/community/values/src/test/java/org/neo4j/values/BufferValueWriter.java b/community/values/src/test/java/org/neo4j/values/BufferValueWriter.java index b0f662a0b810c..37ece2476074c 100644 --- a/community/values/src/test/java/org/neo4j/values/BufferValueWriter.java +++ b/community/values/src/test/java/org/neo4j/values/BufferValueWriter.java @@ -34,7 +34,7 @@ import static org.neo4j.values.BufferValueWriter.SpecialKind.EndUTF8; import static org.neo4j.values.BufferValueWriter.SpecialKind.WriteCharArray; -public class BufferValueWriter implements ValueWriter +public class BufferValueWriter implements ValueWriter { enum SpecialKind { diff --git a/community/values/src/test/java/org/neo4j/values/ThrowingValueWriterTest.java b/community/values/src/test/java/org/neo4j/values/ThrowingValueWriterTest.java new file mode 100644 index 0000000000000..79106deec8fab --- /dev/null +++ b/community/values/src/test/java/org/neo4j/values/ThrowingValueWriterTest.java @@ -0,0 +1,129 @@ +package org.neo4j.values; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +public class ThrowingValueWriterTest +{ + @Rule + public ExpectedException exception = ExpectedException.none(); + + @Test + public void shouldBeAbleToThrowFromValueWriter() throws TestException + { + // Given + Value value = Values.of( "This is a value" ); + ThrowingValueWriter writer = new ThrowingValueWriter(); + + // Expect + exception.expect( TestException.class ); + + // When + value.writeTo( writer ); + } + + private static class TestException extends Exception + { + } + + private static class ThrowingValueWriter implements ValueWriter + { + + @Override + public void writeNull() throws TestException + { + throw new TestException(); + } + + @Override + public void writeBoolean( boolean value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeInteger( byte value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeInteger( short value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeInteger( int value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeInteger( long value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeFloatingPoint( float value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeFloatingPoint( double value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeString( String value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeString( char value ) throws TestException + { + throw new TestException(); + } + + @Override + public void writeString( char[] value, int offset, int length ) throws TestException + { + throw new TestException(); + } + + @Override + public void beginUTF8( int size ) throws TestException + { + throw new TestException(); + } + + @Override + public void copyUTF8( long fromAddress, int length ) throws TestException + { + throw new TestException(); + } + + @Override + public void endUTF8() throws TestException + { + throw new TestException(); + } + + @Override + public void beginArray( int size, ArrayType arrayType ) throws TestException + { + throw new TestException(); + } + + @Override + public void endArray() throws TestException + { + throw new TestException(); + } + } +} diff --git a/community/values/src/test/java/org/neo4j/values/virtual/BufferAnyValueWriter.java b/community/values/src/test/java/org/neo4j/values/virtual/BufferAnyValueWriter.java index 6d97f179866e9..010375167e784 100644 --- a/community/values/src/test/java/org/neo4j/values/virtual/BufferAnyValueWriter.java +++ b/community/values/src/test/java/org/neo4j/values/virtual/BufferAnyValueWriter.java @@ -24,7 +24,7 @@ import static java.lang.String.format; -public class BufferAnyValueWriter extends BufferValueWriter implements AnyValueWriter +public class BufferAnyValueWriter extends BufferValueWriter implements AnyValueWriter { enum SpecialKind