Skip to content

Commit

Permalink
Remove generic exception from BoltResponseMessageHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
lutovich committed Jul 3, 2018
1 parent e67c4d6 commit 8dc2152
Show file tree
Hide file tree
Showing 15 changed files with 41 additions and 43 deletions.
Expand Up @@ -19,7 +19,6 @@
*/ */
package org.neo4j.bolt.v1.messaging; package org.neo4j.bolt.v1.messaging;


import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;


Expand All @@ -39,7 +38,7 @@


public class BoltRequestMessageReaderV1 extends BoltRequestMessageReader public class BoltRequestMessageReaderV1 extends BoltRequestMessageReader
{ {
public BoltRequestMessageReaderV1( BoltConnection connection, BoltResponseMessageHandler<IOException> responseMessageHandler, public BoltRequestMessageReaderV1( BoltConnection connection, BoltResponseMessageHandler responseMessageHandler,
BoltMessageLogger messageLogger, LogService logService ) BoltMessageLogger messageLogger, LogService logService )
{ {
super( connection, super( connection,
Expand All @@ -48,7 +47,7 @@ public BoltRequestMessageReaderV1( BoltConnection connection, BoltResponseMessag
messageLogger ); messageLogger );
} }


private static List<RequestMessageDecoder> buildUnpackers( BoltConnection connection, BoltResponseMessageHandler<IOException> responseMessageHandler, private static List<RequestMessageDecoder> buildUnpackers( BoltConnection connection, BoltResponseMessageHandler responseMessageHandler,
BoltMessageLogger messageLogger, LogService logService ) BoltMessageLogger messageLogger, LogService logService )
{ {
BoltResponseHandler initHandler = newSimpleResponseHandler( connection, responseMessageHandler, logService ); BoltResponseHandler initHandler = newSimpleResponseHandler( connection, responseMessageHandler, logService );
Expand All @@ -67,7 +66,7 @@ private static List<RequestMessageDecoder> buildUnpackers( BoltConnection connec
} }


private static BoltResponseHandler newSimpleResponseHandler( BoltConnection connection, private static BoltResponseHandler newSimpleResponseHandler( BoltConnection connection,
BoltResponseMessageHandler<IOException> responseMessageHandler, LogService logService ) BoltResponseMessageHandler responseMessageHandler, LogService logService )
{ {
return new MessageProcessingHandler( responseMessageHandler, connection, internalLog( logService ) ); return new MessageProcessingHandler( responseMessageHandler, connection, internalLog( logService ) );
} }
Expand Down
Expand Up @@ -19,28 +19,27 @@
*/ */
package org.neo4j.bolt.v1.messaging; package org.neo4j.bolt.v1.messaging;


import java.io.IOException;

import org.neo4j.cypher.result.QueryResult; import org.neo4j.cypher.result.QueryResult;
import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.virtual.MapValue; import org.neo4j.values.virtual.MapValue;


/** /**
* Interface defining simple handler methods for each defined * Interface defining simple handler methods for each defined
* Bolt response message. * Bolt response message.
*
* @param <E> an exception that may be thrown by each handler method
*/ */
// todo: remove generic exception public interface BoltResponseMessageHandler
public interface BoltResponseMessageHandler<E extends Exception>
{ {
void onSuccess( MapValue metadata ) throws E; void onSuccess( MapValue metadata ) throws IOException;


void onRecord( QueryResult.Record item ) throws E; void onRecord( QueryResult.Record item ) throws IOException;


void onIgnored() throws E; void onIgnored() throws IOException;


void onFailure( Status status, String errorMessage ) throws E; void onFailure( Status status, String errorMessage ) throws IOException;


default void onFatal( Status status, String errorMessage ) throws E default void onFatal( Status status, String errorMessage ) throws IOException
{ {
onFailure( status, errorMessage ); onFailure( status, errorMessage );
} }
Expand Down
Expand Up @@ -40,7 +40,7 @@
/** /**
* Writer for Bolt request messages to be sent to a {@link Neo4jPack.Packer}. * Writer for Bolt request messages to be sent to a {@link Neo4jPack.Packer}.
*/ */
public class BoltResponseMessageWriter implements BoltResponseMessageHandler<IOException> public class BoltResponseMessageWriter implements BoltResponseMessageHandler
{ {
private final PackOutput output; private final PackOutput output;
private final Neo4jPack.Packer packer; private final Neo4jPack.Packer packer;
Expand Down
Expand Up @@ -19,7 +19,6 @@
*/ */
package org.neo4j.bolt.v1.messaging; package org.neo4j.bolt.v1.messaging;


import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
Expand All @@ -44,13 +43,12 @@ class MessageProcessingHandler implements BoltResponseHandler


protected final Log log; protected final Log log;
protected final BoltConnection connection; protected final BoltConnection connection;
protected final BoltResponseMessageHandler<IOException> handler; protected final BoltResponseMessageHandler handler;


private Neo4jError error; private Neo4jError error;
private boolean ignored; private boolean ignored;


MessageProcessingHandler( BoltResponseMessageHandler<IOException> handler, BoltConnection connection, MessageProcessingHandler( BoltResponseMessageHandler handler, BoltConnection connection, Log logger )
Log logger )
{ {
this.handler = handler; this.handler = handler;
this.connection = connection; this.connection = connection;
Expand Down Expand Up @@ -121,7 +119,7 @@ private void clearState()
metadata.clear(); metadata.clear();
} }


private void publishError( BoltResponseMessageHandler<IOException> out, Neo4jError error ) private void publishError( BoltResponseMessageHandler out, Neo4jError error )
{ {
try try
{ {
Expand Down
Expand Up @@ -19,8 +19,6 @@
*/ */
package org.neo4j.bolt.v1.messaging; package org.neo4j.bolt.v1.messaging;


import java.io.IOException;

import org.neo4j.bolt.runtime.BoltConnection; import org.neo4j.bolt.runtime.BoltConnection;
import org.neo4j.bolt.runtime.BoltResult; import org.neo4j.bolt.runtime.BoltResult;
import org.neo4j.cypher.result.QueryResult; import org.neo4j.cypher.result.QueryResult;
Expand All @@ -29,7 +27,7 @@


class ResultHandler extends MessageProcessingHandler class ResultHandler extends MessageProcessingHandler
{ {
ResultHandler( BoltResponseMessageHandler<IOException> handler, BoltConnection connection, Log log ) ResultHandler( BoltResponseMessageHandler handler, BoltConnection connection, Log log )
{ {
super( handler, connection, log ); super( handler, connection, log );
} }
Expand Down
Expand Up @@ -350,7 +350,7 @@ public void shouldThrowOnUnknownStructType() throws Exception
public void shouldLogContentOfTheMessageOnIOError() throws Exception public void shouldLogContentOfTheMessageOnIOError() throws Exception
{ {
BoltConnection connection = mock( BoltConnection.class ); BoltConnection connection = mock( BoltConnection.class );
BoltResponseMessageHandler<IOException> responseMessageHandler = mock( BoltResponseMessageHandler.class ); BoltResponseMessageHandler responseMessageHandler = mock( BoltResponseMessageHandler.class );


BoltRequestMessageReader requestMessageReader = new BoltRequestMessageReaderV1( connection, responseMessageHandler, BoltRequestMessageReader requestMessageReader = new BoltRequestMessageReaderV1( connection, responseMessageHandler,
NullBoltMessageLogger.getInstance(), NullLogService.getInstance() ); NullBoltMessageLogger.getInstance(), NullLogService.getInstance() );
Expand Down
Expand Up @@ -41,7 +41,7 @@ public BoltResponseMessageReader( Neo4jPack.Unpacker unpacker )
this.unpacker = unpacker; this.unpacker = unpacker;
} }


public <E extends Exception> void read( BoltResponseMessageHandler<E> handler ) throws IOException, E public void read( BoltResponseMessageHandler handler ) throws IOException
{ {
try try
{ {
Expand Down
Expand Up @@ -31,7 +31,7 @@
import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.values.virtual.MapValue; import org.neo4j.values.virtual.MapValue;


public class BoltResponseMessageRecorder implements BoltResponseMessageHandler<RuntimeException> public class BoltResponseMessageRecorder implements BoltResponseMessageHandler
{ {
private final List<ResponseMessage> messages = new ArrayList<>(); private final List<ResponseMessage> messages = new ArrayList<>();


Expand Down
Expand Up @@ -21,8 +21,6 @@


import org.junit.Test; import org.junit.Test;


import java.io.IOException;

import org.neo4j.bolt.runtime.BoltConnection; import org.neo4j.bolt.runtime.BoltConnection;
import org.neo4j.bolt.runtime.Neo4jError; import org.neo4j.bolt.runtime.Neo4jError;
import org.neo4j.bolt.v1.packstream.PackOutputClosedException; import org.neo4j.bolt.v1.packstream.PackOutputClosedException;
Expand All @@ -49,7 +47,7 @@ public class MessageProcessingHandlerTest
public void shouldCallHaltOnUnexpectedFailures() throws Exception public void shouldCallHaltOnUnexpectedFailures() throws Exception
{ {
// Given // Given
BoltResponseMessageHandler<IOException> msgHandler = newResponseHandlerMock(); BoltResponseMessageHandler msgHandler = newResponseHandlerMock();
doThrow( new RuntimeException( "Something went horribly wrong" ) ).when( msgHandler ).onSuccess( doThrow( new RuntimeException( "Something went horribly wrong" ) ).when( msgHandler ).onSuccess(
any( MapValue.class ) ); any( MapValue.class ) );


Expand Down Expand Up @@ -134,8 +132,7 @@ private static AssertableLogProvider emulateFailureWritingError( Neo4jError erro
throws Exception throws Exception
{ {
AssertableLogProvider logProvider = new AssertableLogProvider(); AssertableLogProvider logProvider = new AssertableLogProvider();
BoltResponseMessageHandler<IOException> responseHandler = BoltResponseMessageHandler responseHandler = newResponseHandlerMock( error.isFatal(), errorDuringWrite );
newResponseHandlerMock( error.isFatal(), errorDuringWrite );


MessageProcessingHandler handler = MessageProcessingHandler handler =
new MessageProcessingHandler( responseHandler, mock( BoltConnection.class ), new MessageProcessingHandler( responseHandler, mock( BoltConnection.class ),
Expand All @@ -147,10 +144,9 @@ private static AssertableLogProvider emulateFailureWritingError( Neo4jError erro
return logProvider; return logProvider;
} }


private static BoltResponseMessageHandler<IOException> newResponseHandlerMock( boolean fatalError, Throwable error ) private static BoltResponseMessageHandler newResponseHandlerMock( boolean fatalError, Throwable error ) throws Exception
throws Exception
{ {
BoltResponseMessageHandler<IOException> handler = newResponseHandlerMock(); BoltResponseMessageHandler handler = newResponseHandlerMock();
if ( fatalError ) if ( fatalError )
{ {
doThrow( error ).when( handler ).onFatal( any( Status.class ), anyString() ); doThrow( error ).when( handler ).onFatal( any( Status.class ), anyString() );
Expand All @@ -163,7 +159,7 @@ private static BoltResponseMessageHandler<IOException> newResponseHandlerMock( b
} }


@SuppressWarnings( "unchecked" ) @SuppressWarnings( "unchecked" )
private static BoltResponseMessageHandler<IOException> newResponseHandlerMock() private static BoltResponseMessageHandler newResponseHandlerMock()
{ {
return mock( BoltResponseMessageHandler.class ); return mock( BoltResponseMessageHandler.class );
} }
Expand Down
Expand Up @@ -21,8 +21,6 @@


import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;


import java.io.IOException;

import org.neo4j.bolt.runtime.BoltConnection; import org.neo4j.bolt.runtime.BoltConnection;
import org.neo4j.bolt.runtime.BoltResult; import org.neo4j.bolt.runtime.BoltResult;
import org.neo4j.bolt.v1.runtime.spi.ImmutableRecord; import org.neo4j.bolt.v1.runtime.spi.ImmutableRecord;
Expand All @@ -40,7 +38,7 @@ class ResultHandlerTest
@Test @Test
void shouldPullTheResult() throws Exception void shouldPullTheResult() throws Exception
{ {
BoltResponseMessageHandler<IOException> responseMessageHandler = mock( BoltResponseMessageHandler.class ); BoltResponseMessageHandler responseMessageHandler = mock( BoltResponseMessageHandler.class );
ResultHandler handler = new ResultHandler( responseMessageHandler, mock( BoltConnection.class ), NullLog.getInstance() ); ResultHandler handler = new ResultHandler( responseMessageHandler, mock( BoltConnection.class ), NullLog.getInstance() );


ImmutableRecord record1 = new ImmutableRecord( values( "a", "b", "c" ) ); ImmutableRecord record1 = new ImmutableRecord( values( "a", "b", "c" ) );
Expand All @@ -58,7 +56,7 @@ void shouldPullTheResult() throws Exception
@Test @Test
void shouldDiscardTheResult() throws Exception void shouldDiscardTheResult() throws Exception
{ {
BoltResponseMessageHandler<IOException> responseMessageHandler = mock( BoltResponseMessageHandler.class ); BoltResponseMessageHandler responseMessageHandler = mock( BoltResponseMessageHandler.class );
ResultHandler handler = new ResultHandler( responseMessageHandler, mock( BoltConnection.class ), NullLog.getInstance() ); ResultHandler handler = new ResultHandler( responseMessageHandler, mock( BoltConnection.class ), NullLog.getInstance() );


ImmutableRecord record1 = new ImmutableRecord( values( "a", "b", "c" ) ); ImmutableRecord record1 = new ImmutableRecord( values( "a", "b", "c" ) );
Expand Down
Expand Up @@ -19,6 +19,8 @@
*/ */
package org.neo4j.bolt.v1.messaging.message; package org.neo4j.bolt.v1.messaging.message;


import java.io.IOException;

import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler; import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler;
import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.Status;


Expand All @@ -44,7 +46,7 @@ public String message()
} }


@Override @Override
public <E extends Exception> void dispatch( BoltResponseMessageHandler<E> consumer ) throws E public void dispatch( BoltResponseMessageHandler consumer ) throws IOException
{ {
consumer.onFailure( status, message ); consumer.onFailure( status, message );
} }
Expand Down
Expand Up @@ -19,12 +19,14 @@
*/ */
package org.neo4j.bolt.v1.messaging.message; package org.neo4j.bolt.v1.messaging.message;


import java.io.IOException;

import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler; import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler;


public class IgnoredMessage implements ResponseMessage public class IgnoredMessage implements ResponseMessage
{ {
@Override @Override
public <E extends Exception> void dispatch( BoltResponseMessageHandler<E> consumer ) throws E public void dispatch( BoltResponseMessageHandler consumer ) throws IOException
{ {
consumer.onIgnored(); consumer.onIgnored();
} }
Expand Down
Expand Up @@ -19,6 +19,8 @@
*/ */
package org.neo4j.bolt.v1.messaging.message; package org.neo4j.bolt.v1.messaging.message;


import java.io.IOException;

import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler; import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler;
import org.neo4j.cypher.result.QueryResult; import org.neo4j.cypher.result.QueryResult;


Expand All @@ -32,7 +34,7 @@ public RecordMessage( QueryResult.Record record )
} }


@Override @Override
public <E extends Exception> void dispatch( BoltResponseMessageHandler<E> consumer ) throws E public void dispatch( BoltResponseMessageHandler consumer ) throws IOException
{ {
consumer.onRecord( value ); consumer.onRecord( value );
} }
Expand Down
Expand Up @@ -19,9 +19,11 @@
*/ */
package org.neo4j.bolt.v1.messaging.message; package org.neo4j.bolt.v1.messaging.message;


import java.io.IOException;

import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler; import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler;


public interface ResponseMessage public interface ResponseMessage
{ {
<E extends Exception> void dispatch( BoltResponseMessageHandler<E> consumer ) throws E; void dispatch( BoltResponseMessageHandler consumer ) throws IOException;
} }
Expand Up @@ -19,6 +19,8 @@
*/ */
package org.neo4j.bolt.v1.messaging.message; package org.neo4j.bolt.v1.messaging.message;


import java.io.IOException;

import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler; import org.neo4j.bolt.v1.messaging.BoltResponseMessageHandler;
import org.neo4j.values.virtual.MapValue; import org.neo4j.values.virtual.MapValue;


Expand All @@ -32,7 +34,7 @@ public SuccessMessage( MapValue metadata )
} }


@Override @Override
public <E extends Exception> void dispatch( BoltResponseMessageHandler<E> consumer ) throws E public void dispatch( BoltResponseMessageHandler consumer ) throws IOException
{ {
consumer.onSuccess( metadata ); consumer.onSuccess( metadata );
} }
Expand Down

0 comments on commit 8dc2152

Please sign in to comment.