Skip to content

Remove protocol 1 and 2 #769

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@ public Builder withTimeout( Duration timeout )
public Builder withMetadata( Map<String,Object> metadata )
{
requireNonNull( metadata, "Transaction metadata should not be null" );

this.metadata = Extract.mapOfValues( metadata );
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
import io.netty.buffer.ByteBuf;

import org.neo4j.driver.internal.messaging.BoltProtocolVersion;
import org.neo4j.driver.internal.messaging.v1.BoltProtocolV1;
import org.neo4j.driver.internal.messaging.v2.BoltProtocolV2;
import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3;
import org.neo4j.driver.internal.messaging.v4.BoltProtocolV4;
import org.neo4j.driver.internal.messaging.v41.BoltProtocolV41;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,11 @@
import org.neo4j.driver.internal.handlers.pulln.AutoPullResponseHandler;
import org.neo4j.driver.internal.handlers.pulln.BasicPullResponseHandler;
import org.neo4j.driver.internal.handlers.pulln.PullResponseHandler;
import org.neo4j.driver.internal.messaging.v1.BoltProtocolV1;
import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3;
import org.neo4j.driver.internal.spi.Connection;

public class PullHandlers
{
public static PullAllResponseHandler newBoltV1PullAllHandler(Query query, RunResponseHandler runHandler,
Connection connection, UnmanagedTransaction tx )
{
PullResponseCompletionListener completionListener = createPullResponseCompletionListener( connection, BookmarkHolder.NO_OP, tx );

return new LegacyPullAllResponseHandler(query, runHandler, connection, BoltProtocolV1.METADATA_EXTRACTOR, completionListener );
}

public static PullAllResponseHandler newBoltV3PullAllHandler(Query query, RunResponseHandler runHandler, Connection connection,
BookmarkHolder bookmarkHolder, UnmanagedTransaction tx )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import io.netty.channel.Channel;
import io.netty.channel.ChannelPromise;

import java.util.Map;
import java.util.concurrent.CompletionStage;

import org.neo4j.driver.AuthToken;
Expand All @@ -30,15 +29,12 @@
import org.neo4j.driver.Session;
import org.neo4j.driver.Transaction;
import org.neo4j.driver.TransactionConfig;
import org.neo4j.driver.Value;
import org.neo4j.driver.exceptions.ClientException;
import org.neo4j.driver.internal.BookmarkHolder;
import org.neo4j.driver.internal.InternalBookmark;
import org.neo4j.driver.internal.async.UnmanagedTransaction;
import org.neo4j.driver.internal.cluster.RoutingContext;
import org.neo4j.driver.internal.cursor.ResultCursorFactory;
import org.neo4j.driver.internal.messaging.v1.BoltProtocolV1;
import org.neo4j.driver.internal.messaging.v2.BoltProtocolV2;
import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3;
import org.neo4j.driver.internal.messaging.v4.BoltProtocolV4;
import org.neo4j.driver.internal.messaging.v41.BoltProtocolV41;
Expand Down Expand Up @@ -155,22 +151,15 @@ static BoltProtocol forChannel( Channel channel )
*/
static BoltProtocol forVersion( BoltProtocolVersion version )
{
if ( BoltProtocolV1.VERSION.equals( version ) )
{
return BoltProtocolV1.INSTANCE;
}
else if ( BoltProtocolV2.VERSION.equals( version ) )
{
return BoltProtocolV2.INSTANCE;
}
else if ( BoltProtocolV3.VERSION.equals( version ) )
if ( BoltProtocolV3.VERSION.equals( version ) )
{
return BoltProtocolV3.INSTANCE;
}
else if ( BoltProtocolV4.VERSION.equals( version ) )
{
return BoltProtocolV4.INSTANCE;
} else if ( BoltProtocolV41.VERSION.equals( version ) )
}
else if ( BoltProtocolV41.VERSION.equals( version ) )
{
return BoltProtocolV41.INSTANCE;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.neo4j.driver.internal.messaging.v1;
package org.neo4j.driver.internal.messaging.common;

import java.io.IOException;
import java.util.Map;

import org.neo4j.driver.Value;
import org.neo4j.driver.internal.messaging.MessageFormat;
import org.neo4j.driver.internal.messaging.ResponseMessageHandler;
import org.neo4j.driver.internal.messaging.ValueUnpacker;
Expand All @@ -29,18 +30,17 @@
import org.neo4j.driver.internal.messaging.response.RecordMessage;
import org.neo4j.driver.internal.messaging.response.SuccessMessage;
import org.neo4j.driver.internal.packstream.PackInput;
import org.neo4j.driver.Value;

public class MessageReaderV1 implements MessageFormat.Reader
public class CommonMessageReader implements MessageFormat.Reader
{
private final ValueUnpacker unpacker;

public MessageReaderV1( PackInput input )
public CommonMessageReader( PackInput input )
{
this( new ValueUnpackerV1( input ) );
this( new CommonValueUnpacker( input ) );
}

protected MessageReaderV1( ValueUnpacker unpacker )
protected CommonMessageReader( ValueUnpacker unpacker )
{
this.unpacker = unpacker;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.neo4j.driver.internal.messaging.v2;

package org.neo4j.driver.internal.messaging.common;

import java.io.IOException;
import java.time.LocalDate;
Expand All @@ -26,47 +27,99 @@
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Map;

import org.neo4j.driver.Value;
import org.neo4j.driver.internal.InternalPoint2D;
import org.neo4j.driver.internal.InternalPoint3D;
import org.neo4j.driver.internal.messaging.v1.ValuePackerV1;
import org.neo4j.driver.internal.messaging.ValuePacker;
import org.neo4j.driver.internal.packstream.PackOutput;
import org.neo4j.driver.internal.types.TypeConstructor;
import org.neo4j.driver.internal.packstream.PackStream;
import org.neo4j.driver.internal.value.InternalValue;
import org.neo4j.driver.types.IsoDuration;
import org.neo4j.driver.types.Point;

import static java.time.ZoneOffset.UTC;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DATE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DATE_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DATE_TIME_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DATE_TIME_WITH_ZONE_ID;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DATE_TIME_WITH_ZONE_OFFSET;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DURATION;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.DURATION_TIME_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.LOCAL_DATE_TIME;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.LOCAL_DATE_TIME_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.LOCAL_TIME;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.LOCAL_TIME_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.POINT_2D_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.POINT_2D_STRUCT_TYPE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.POINT_3D_STRUCT_SIZE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.POINT_3D_STRUCT_TYPE;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.TIME;
import static org.neo4j.driver.internal.messaging.v2.MessageFormatV2.TIME_STRUCT_SIZE;

public class ValuePackerV2 extends ValuePackerV1

public class CommonValuePacker implements ValuePacker
{
public ValuePackerV2( PackOutput output )

public static final byte DATE = 'D';
public static final int DATE_STRUCT_SIZE = 1;

public static final byte TIME = 'T';
public static final int TIME_STRUCT_SIZE = 2;

public static final byte LOCAL_TIME = 't';
public static final int LOCAL_TIME_STRUCT_SIZE = 1;

public static final byte LOCAL_DATE_TIME = 'd';
public static final int LOCAL_DATE_TIME_STRUCT_SIZE = 2;

public static final byte DATE_TIME_WITH_ZONE_OFFSET = 'F';
public static final byte DATE_TIME_WITH_ZONE_ID = 'f';
public static final int DATE_TIME_STRUCT_SIZE = 3;

public static final byte DURATION = 'E';
public static final int DURATION_TIME_STRUCT_SIZE = 4;

public static final byte POINT_2D_STRUCT_TYPE = 'X';
public static final int POINT_2D_STRUCT_SIZE = 3;

public static final byte POINT_3D_STRUCT_TYPE = 'Y';
public static final int POINT_3D_STRUCT_SIZE = 4;

protected final PackStream.Packer packer;

public CommonValuePacker( PackOutput output )
{
this.packer = new PackStream.Packer( output );
}

@Override
public final void packStructHeader( int size, byte signature ) throws IOException
{
packer.packStructHeader( size, signature );
}

@Override
public final void pack( String string ) throws IOException
{
super( output );
packer.pack( string );
}

@Override
public final void pack( Value value ) throws IOException
{
if ( value instanceof InternalValue )
{
packInternalValue( ((InternalValue) value) );
}
else
{
throw new IllegalArgumentException( "Unable to pack: " + value );
}
}

@Override
public final void pack( Map<String,Value> map ) throws IOException
{
if ( map == null || map.size() == 0 )
{
packer.packMapHeader( 0 );
return;
}
packer.packMapHeader( map.size() );
for ( Map.Entry<String,Value> entry : map.entrySet() )
{
packer.pack( entry.getKey() );
pack( entry.getValue() );
}
}

protected void packInternalValue( InternalValue value ) throws IOException
{
TypeConstructor typeConstructor = value.typeConstructor();
switch ( typeConstructor )
switch ( value.typeConstructor() )
{
case DATE:
packDate( value.asLocalDate() );
Expand All @@ -89,8 +142,49 @@ protected void packInternalValue( InternalValue value ) throws IOException
case POINT:
packPoint( value.asPoint() );
break;
case NULL:
packer.packNull();
break;

case BYTES:
packer.pack( value.asByteArray() );
break;

case STRING:
packer.pack( value.asString() );
break;

case BOOLEAN:
packer.pack( value.asBoolean() );
break;

case INTEGER:
packer.pack( value.asLong() );
break;

case FLOAT:
packer.pack( value.asDouble() );
break;

case MAP:
packer.packMapHeader( value.size() );
for ( String s : value.keys() )
{
packer.pack( s );
pack( value.get( s ) );
}
break;

case LIST:
packer.packListHeader( value.size() );
for ( Value item : value.values() )
{
pack( item );
}
break;

default:
super.packInternalValue( value );
throw new IOException( "Unknown type: " + value.type().name() );
}
}

Expand Down
Loading