@Override public boolean equals( VirtualValue other ) { if ( !(other instanceof MapValue) ) { return false; } MapValue that = (MapValue) other; int size = size(); if ( size != that.size() ) { return false; } Iterable<String> keys = keySet(); for ( String key : keys ) { if ( !get( key ).equals( that.get( key ) ) ) { return false; } } return true; }
private void assertMapValueEquals( MapValue a, MapValue b ) { assertThat( a, equalTo( b ) ); assertThat( a.size(), equalTo( b.size() ) ); assertThat( a.hashCode(), equalTo( b.hashCode() ) ); assertThat( a.keySet(), containsInAnyOrder( Iterables.asArray( String.class, b.keySet() ) ) ); assertThat( Arrays.asList( a.keys().asArray() ), containsInAnyOrder( b.keys().asArray() ) ); a.foreach( ( k, v ) -> assertThat( b.get( k ), equalTo( v ) ) ); b.foreach( ( k, v ) -> assertThat( a.get( k ), equalTo( v ) ) ); }
@Override public String toString() { StringBuilder sb = new StringBuilder( getTypeName() + "{" ); final String[] sep = new String[]{""}; foreach( ( key, value ) -> { sb.append( sep[0] ); sb.append( key ); sb.append( " -> " ); sb.append( value ); sep[0] = ", "; } ); sb.append( '}' ); return sb.toString(); }
@Override public AnyValue get( String key ) { for ( int i = maps.length - 1; i >= 0; i-- ) { AnyValue value = maps[i].get( key ); if ( value != NO_VALUE ) { return value; } } return NO_VALUE; }
private static boolean containsNull( MapValue map ) { boolean[] hasNull = {false}; map.foreach( ( s, value ) -> { if ( value == NO_VALUE ) { hasNull[0] = true; } } ); return hasNull[0]; }
static Map<String,Object> parseTransactionMetadata( MapValue meta ) throws BoltIOException { AnyValue anyValue = meta.get( TX_META_DATA_KEY ); if ( anyValue == Values.NO_VALUE ) { return null; } else if ( anyValue instanceof MapValue ) { MapValue mapValue = (MapValue) anyValue; TransactionMetadataWriter writer = new TransactionMetadataWriter(); Map<String,Object> txMeta = new HashMap<>( mapValue.size() ); mapValue.foreach( ( key, value ) -> txMeta.put( key, writer.valueAsObject( value ) ) ); return txMeta; } else { throw new BoltIOException( Status.Request.Invalid, "Expecting transaction metadata value to be a Map value, but got: " + anyValue ); } }
if ( fields.size() == 0 ) AnyValue timezone = fields.get( "timezone" ); if ( timezone != NO_VALUE ) if ( mapValue.size() == 0 ) return build( mapValue.updatedWith( "time", time( offsetTime ) ), defaultZone );
@Test void shouldHandleMaps() { // Given Map<String,Object> map = MapUtil.map( "a", Arrays.asList( "foo", 42 ) ); // When AnyValue anyValue = ValueUtils.of( map ); // Then assertThat( anyValue, instanceOf( MapValue.class ) ); MapValue mapValue = (MapValue) anyValue; assertThat( mapValue.get( "a" ), equalTo( VirtualValues.list( stringValue( "foo" ), intValue( 42 ) ) ) ); assertThat( mapValue.size(), equalTo( 1 ) ); }
(fields.containsKey( "microsecond" ) || fields.containsKey( "nanosecond" )); boolean conflictingMicroSeconds = unit == ChronoUnit.MICROS && fields.containsKey( "nanosecond" ); AnyValue micros = fields.get( "microsecond" ); AnyValue nanos = fields.get( "nanosecond" ); MapValue filtered = fields.filter( ( k, ignore ) -> !k.equals( "microsecond" ) && !k.equals( "nanosecond" ) ); return mapFunction.apply( filtered, newTemporal ); AnyValue nanos = fields.get( "nanosecond" ); int newNanos = validNano( null, micros, nanos ); TEMP newTemporal = (TEMP) temporal.with( ChronoField.NANO_OF_SECOND, newNanos ); MapValue filtered = fields.filter( ( k, ignore ) -> !k.equals( "nanosecond" ) );
public static DateValue truncate( TemporalUnit unit, TemporalValue input, MapValue fields, Supplier<ZoneId> defaultZone ) { LocalDate localDate = input.getDatePart(); DateValue truncated = date( truncateTo( localDate, unit ) ); if ( fields.size() == 0 ) { return truncated; } else { MapValue updatedFields = fields.updatedWith( "date", truncated ); return build( updatedFields, defaultZone ); } }
@Override public void writeRelationship( long relationshipId, long startNodeId, long endNodeId, TextValue type, MapValue properties ) throws IOException { packStructHeader( RELATIONSHIP_SIZE, RELATIONSHIP ); pack( relationshipId ); pack( startNodeId ); pack( endNodeId ); type.writeTo( this ); properties.writeTo( this ); }
case FAILURE: MapValue failureMetadata = unpacker.unpackMap(); String code = failureMetadata.containsKey( "code" ) ? ((StringValue) failureMetadata.get( "code" )).stringValue() : Status.General.UnknownError.name(); String msg = failureMetadata.containsKey( "message" ) ? ((StringValue) failureMetadata.get( "message" )).stringValue() : "<No message supplied>"; messageWriter.write( new FailureMessage( Neo4jError.codeFromString( code ), msg ) );
@Override public int size() { return map.size() + updatedKeys.length; } }
@Override public ListValue keys() { return map.keys(); }
@Override public boolean containsKey( String key ) { return map.containsKey( key ); }
@Override public Iterable<String> keySet() { return map.keySet(); }