diff --git a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/LabelChainWalker.java b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/LabelChainWalker.java index 7901c3f66cfcd..8ed1e612e09a4 100644 --- a/community/consistency-check/src/main/java/org/neo4j/consistency/checking/LabelChainWalker.java +++ b/community/consistency-check/src/main/java/org/neo4j/consistency/checking/LabelChainWalker.java @@ -90,7 +90,7 @@ public void checkReference( RECORD record, DynamicRecord dynamicRecord, public static long[] labelIds( List recordList ) { long[] idArray = - (long[]) getRightArray( readFullByteArrayFromHeavyRecords( recordList, PropertyType.ARRAY ) ).getInnerObject(); + (long[]) getRightArray( readFullByteArrayFromHeavyRecords( recordList, PropertyType.ARRAY ) ).asObject(); return LabelIdArray.stripNodeId( idArray ); } diff --git a/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java b/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java index f98491fef3db5..bbb05aee02b17 100644 --- a/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java +++ b/community/consistency-check/src/test/java/org/neo4j/consistency/checking/full/FullCheckIntegrationTest.java @@ -743,7 +743,7 @@ public void shouldReportCyclesInDynamicRecordsWithLabels() throws Exception protected void transactionData( GraphStoreFixture.TransactionDataBuilder tx, GraphStoreFixture.IdGenerator next ) { - long nodeId = ((long[]) getRightArray( readFullByteArrayFromHeavyRecords( chain, ARRAY ) ).getInnerObject())[0]; + long nodeId = ((long[]) getRightArray( readFullByteArrayFromHeavyRecords( chain, ARRAY ) ).asObject())[0]; NodeRecord before = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); NodeRecord after = inUse( new NodeRecord( nodeId, false, -1, -1 ) ); DynamicRecord record1 = chain.get( 0 ).clone(); diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/CypherSerializer.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/CypherSerializer.scala index 5a4f175c7ef18..cb58348a30267 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/CypherSerializer.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/CypherSerializer.scala @@ -38,7 +38,7 @@ trait CypherSerializer { val keyValStrings = if (deleted) Iterator("deleted") else ops.propertyKeyIds(id). - map(pkId => qtx.getPropertyKeyName(pkId) + ":" + serialize(ops.getProperty(id, pkId).getInnerObject, qtx)) + map(pkId => qtx.getPropertyKeyName(pkId) + ":" + serialize(ops.getProperty(id, pkId).asObject(), qtx)) keyValStrings.mkString("{", ",", "}") } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/commands/indexQuery.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/commands/indexQuery.scala index bf8eebea791a8..0b09352177fe9 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/commands/indexQuery.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/commands/indexQuery.scala @@ -74,10 +74,10 @@ object indexQuery extends GraphElementPropertyFunctions { case RangeQueryExpression(rangeWrapper) => val range = rangeWrapper match { case s: PrefixSeekRangeExpression => - s.range.map(expression => makeValueNeoSafe(expression(m, state)).getInnerObject) + s.range.map(expression => makeValueNeoSafe(expression(m, state)).asObject()) case InequalitySeekRangeExpression(innerRange) => - innerRange.mapBounds(expression => makeValueNeoSafe(expression(m, state)).getInnerObject) + innerRange.mapBounds(expression => makeValueNeoSafe(expression(m, state)).asObject()) } index(Seq(range)).toIterator } @@ -88,7 +88,7 @@ object indexQuery extends GraphElementPropertyFunctions { if (values.contains(Values.NO_VALUE)) Iterator.empty else { - val neoValues = values.map(makeValueNeoSafe).map(_.getInnerObject()) + val neoValues = values.map(makeValueNeoSafe).map(_.asObject()) index(neoValues).toIterator } } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/helpers/RuntimeTextValueConverter.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/helpers/RuntimeTextValueConverter.scala index 209a08766efd9..7e19363a58de5 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/helpers/RuntimeTextValueConverter.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/compatibility/v3_3/runtime/helpers/RuntimeTextValueConverter.scala @@ -53,14 +53,14 @@ class RuntimeTextValueConverter(scalaValues: RuntimeScalaValueConverter)(implici private def props(n: Node): String = { val ops = context.nodeOps val properties = if (isVirtualEntityHack(n)) Iterator.empty else ops.propertyKeyIds(n.getId) - val keyValStrings = properties.map(pkId => s"${context.getPropertyKeyName(pkId)}:${asTextValue(ops.getProperty(n.getId, pkId).getInnerObject)}") + val keyValStrings = properties.map(pkId => s"${context.getPropertyKeyName(pkId)}:${asTextValue(ops.getProperty(n.getId, pkId).asObject())}") keyValStrings.mkString("{", ",", "}") } private def props(r: Relationship): String = { val ops = context.relationshipOps val properties = if (isVirtualEntityHack(r)) Iterator.empty else ops.propertyKeyIds(r.getId) - val keyValStrings = properties.map(pkId => s"${context.getPropertyKeyName(pkId)}:${asTextValue(ops.getProperty(r.getId, pkId).getInnerObject)}") + val keyValStrings = properties.map(pkId => s"${context.getPropertyKeyName(pkId)}:${asTextValue(ops.getProperty(r.getId, pkId).asObject())}") keyValStrings.mkString("{", ",", "}") } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala index c85c6cfb40da8..13fb22d8fdf8c 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v2_3/TransactionBoundQueryContext.scala @@ -308,7 +308,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) } def getProperty(id: Long, propertyKeyId: Int): Any = try { - tc.statement.readOperations().nodeGetProperty(id, propertyKeyId).getInnerObject() + tc.statement.readOperations().nodeGetProperty(id, propertyKeyId).asObject() } catch { case _: org.neo4j.kernel.api.exceptions.EntityNotFoundException => null.asInstanceOf[Int] } @@ -378,7 +378,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper) } override def getProperty(id: Long, propertyKeyId: Int): Any = try { - tc.statement.readOperations().relationshipGetProperty(id, propertyKeyId).getInnerObject() + tc.statement.readOperations().relationshipGetProperty(id, propertyKeyId).asObject() } catch { case _: exceptions.EntityNotFoundException => null } diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala index 408facbfb6dc2..84e29f31dff75 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_1/TransactionBoundQueryContext.scala @@ -304,7 +304,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) } override def getProperty(id: Long, propertyKeyId: Int): Any = try { - txContext.statement.readOperations().nodeGetProperty(id, propertyKeyId).getInnerObject + txContext.statement.readOperations().nodeGetProperty(id, propertyKeyId).asObject() } catch { case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) @@ -379,7 +379,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper) } override def getProperty(id: Long, propertyKeyId: Int): Any = try { - txContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId).getInnerObject + txContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId).asObject() } catch { case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) diff --git a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_2/TransactionBoundQueryContext.scala b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_2/TransactionBoundQueryContext.scala index 19d3be252eab6..5c8f6dd7cd8fc 100644 --- a/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_2/TransactionBoundQueryContext.scala +++ b/community/cypher/cypher/src/main/scala/org/neo4j/cypher/internal/spi/v3_2/TransactionBoundQueryContext.scala @@ -247,7 +247,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional case rangeGreaterThan: RangeGreaterThan[String] => rangeGreaterThan.limit(BY_STRING).map { limit => - val rangePredicate = IndexQuery.range(index.property, limit.endPoint.asInstanceOf[String], limit.isInclusive, null, false) + val rangePredicate = IndexQuery.range(index.property, limit.endPoint.asInstanceOf[String], limit.isInclusive, null, false); readOps.indexQuery(index, rangePredicate) }.getOrElse(EMPTY_PRIMITIVE_LONG_COLLECTION.iterator) @@ -311,7 +311,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional } override def getProperty(id: Long, propertyKeyId: Int): Any = try { - transactionalContext.statement.readOperations().nodeGetProperty(id, propertyKeyId).getInnerObject + transactionalContext.statement.readOperations().nodeGetProperty(id, propertyKeyId).asObject() } catch { case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) @@ -386,7 +386,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional } override def getProperty(id: Long, propertyKeyId: Int): Any = try { - transactionalContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId).getInnerObject + transactionalContext.statement.readOperations().relationshipGetProperty(id, propertyKeyId).asObject() } catch { case e: org.neo4j.kernel.api.exceptions.EntityNotFoundException => if (isDeletedInThisTx(id)) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/IndexQuery.java b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/IndexQuery.java index 4fbf226f27d95..6bd00f5286efb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/schema/IndexQuery.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/schema/IndexQuery.java @@ -28,7 +28,6 @@ import org.neo4j.kernel.api.ReadOperations; import org.neo4j.kernel.api.schema.index.IndexDescriptor; -import org.neo4j.values.storable.NumberValue; import org.neo4j.values.storable.TextValue; import org.neo4j.values.storable.Value; import org.neo4j.values.storable.ValueTuple; @@ -243,17 +242,17 @@ public Value value() public static final class NumberRangePredicate extends IndexQuery { - private final NumberValue from; + private final Value from; private final boolean fromInclusive; - private final NumberValue to; + private final Value to; private final boolean toInclusive; NumberRangePredicate( int propertyKeyId, Number from, boolean fromInclusive, Number to, boolean toInclusive ) { super( propertyKeyId ); - this.from = from == null ? Values.MIN_NUMBER : Values.numberValue( from ); + this.from = Values.numberValue( from ); this.fromInclusive = fromInclusive; - this.to = to == null ? Values.MAX_NUMBER : Values.numberValue( to ); + this.to = Values.numberValue( to ); this.toInclusive = toInclusive; } @@ -295,20 +294,20 @@ public boolean test( Value value ) public Number from() { - return from == Values.MIN_NUMBER ? null : (Number)from.getInnerObject(); + return (Number)from.asObject(); } public Number to() { - return to == Values.MAX_NUMBER ? null : (Number)to.getInnerObject(); + return (Number)to.asObject(); } - public NumberValue fromAsValue() + public Value fromAsValue() { return from; } - public NumberValue toAsValue() + public Value toAsValue() { return to; } @@ -378,7 +377,7 @@ public boolean test( Value value ) public String from() { - return (String)from.getInnerObject(); + return (String)from.asObject(); } public boolean fromInclusive() @@ -388,7 +387,7 @@ public boolean fromInclusive() public String to() { - return (String)to.getInnerObject(); + return (String)to.asObject(); } public boolean toInclusive() @@ -445,7 +444,7 @@ public IndexQueryType type() @Override public boolean test( Value value ) { - return value != null && Values.isTextValue( value ) && ((String)value.getInnerObject()).contains( contains ); + return value != null && Values.isTextValue( value ) && ((String)value.asObject()).contains( contains ); } public String contains() @@ -473,7 +472,7 @@ public IndexQueryType type() @Override public boolean test( Value value ) { - return value != null && Values.isTextValue( value ) && ((String)value.getInnerObject()).endsWith( suffix ); + return value != null && Values.isTextValue( value ) && ((String)value.asObject()).endsWith( suffix ); } public String suffix() diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java index df1a36e1426c7..b54ecbb074469 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/explicitindex/InternalAutoIndexOperations.java @@ -160,7 +160,7 @@ public void propertyAdded( DataWriteOperations ops, long entityId, int propertyK if ( propertyKeysToInclude.get().contains( name ) ) { ensureIndexExists( ops ); - type.add( ops, entityId, name, value.getInnerObject() ); + type.add( ops, entityId, name, value.asObject() ); } } catch ( ExplicitIndexNotFoundKernelException | EntityNotFoundException e ) @@ -189,8 +189,8 @@ public void propertyChanged( DataWriteOperations ops, long entityId, int propert if ( propertyKeysToInclude.get().contains( name ) ) { ensureIndexExists( ops ); - type.remove( ops, entityId, name, oldValue.getInnerObject() ); - type.add( ops, entityId, name, newValue.getInnerObject() ); + type.remove( ops, entityId, name, oldValue.asObject() ); + type.add( ops, entityId, name, newValue.asObject() ); } } catch ( ExplicitIndexNotFoundKernelException | EntityNotFoundException e ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/ResourceTypes.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/ResourceTypes.java index 7b01801db14a7..43835b6661028 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/ResourceTypes.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/ResourceTypes.java @@ -142,7 +142,7 @@ private static String stringOf( Value value ) { if ( value != null && value != Values.NO_VALUE ) { - return Strings.prettyPrint( value.getInnerObject() ); + return Strings.prettyPrint( value.asObject() ); } return ""; } @@ -179,7 +179,7 @@ static long indexEntryResourceId_4_x( long labelId, IndexQuery.ExactPredicate[] { int propertyKeyId = predicate.propertyKeyId(); Value v = predicate.value(); - Object value = v.getInnerObject(); + Object value = v.asObject(); Class type = value.getClass(); hash = indexEntryHash_4_x.update( hash, propertyKeyId ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicArrayStore.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicArrayStore.java index 979430127c937..5b83df25f968f 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicArrayStore.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicArrayStore.java @@ -217,6 +217,6 @@ public static Value getRightArray( Pair data ) public Object getArrayFor( Iterable records ) { - return getRightArray( readFullByteArray( records, PropertyType.ARRAY ) ).getInnerObject(); + return getRightArray( readFullByteArray( records, PropertyType.ARRAY ) ).asObject(); } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicNodeLabels.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicNodeLabels.java index 8118b3c2f4584..c8b5a87c34339 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicNodeLabels.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/DynamicNodeLabels.java @@ -81,7 +81,7 @@ public long[] getIfLoaded() return null; } return stripNodeId( (long[]) getRightArray( readFullByteArrayFromHeavyRecords( - node.getUsedDynamicLabelRecords(), ARRAY ) ).getInnerObject() ); + node.getUsedDynamicLabelRecords(), ARRAY ) ).asObject() ); } @Override @@ -226,14 +226,14 @@ public static long[] getDynamicLabelsArray( Iterable records, AbstractDynamicStore dynamicLabelStore ) { long[] storedLongs = (long[]) - DynamicArrayStore.getRightArray( dynamicLabelStore.readFullByteArray( records, PropertyType.ARRAY ) ).getInnerObject(); + DynamicArrayStore.getRightArray( dynamicLabelStore.readFullByteArray( records, PropertyType.ARRAY ) ).asObject(); return LabelIdArray.stripNodeId( storedLongs ); } public static long[] getDynamicLabelsArrayFromHeavyRecords( Iterable records ) { long[] storedLongs = (long[]) - DynamicArrayStore.getRightArray( readFullByteArrayFromHeavyRecords( records, PropertyType.ARRAY ) ).getInnerObject(); + DynamicArrayStore.getRightArray( readFullByteArrayFromHeavyRecords( records, PropertyType.ARRAY ) ).asObject(); return LabelIdArray.stripNodeId( storedLongs ); } @@ -241,7 +241,7 @@ public static Pair getDynamicLabelsArrayAndOwner( Iterable void writeTo( AnyValueWriter writer ) throws E * * @return the object version of the current value */ - public Object getInnerObject() + public Object asObject() { return asObjectCopy(); } diff --git a/community/values/src/main/java/org/neo4j/values/storable/Values.java b/community/values/src/main/java/org/neo4j/values/storable/Values.java index 89c0929449f4c..1d4a84b38cce1 100644 --- a/community/values/src/main/java/org/neo4j/values/storable/Values.java +++ b/community/values/src/main/java/org/neo4j/values/storable/Values.java @@ -40,10 +40,10 @@ @SuppressWarnings( "WeakerAccess" ) public final class Values { - public static final NumberValue MIN_NUMBER = Values.doubleValue( Double.NEGATIVE_INFINITY ); - public static final NumberValue MAX_NUMBER = Values.doubleValue( Double.NaN ); - public static final NumberValue ZERO_FLOAT = Values.doubleValue( 0.0 ); - public static final IntegralValue ZERO_INT = Values.longValue( 0 ); + public static final Value MIN_NUMBER = Values.doubleValue( Double.NEGATIVE_INFINITY ); + public static final Value MAX_NUMBER = Values.doubleValue( Double.NaN ); + public static final Value ZERO_FLOAT = Values.doubleValue( 0.0 ); + public static final Value ZERO_INT = Values.longValue( 0 ); public static final Value MIN_STRING = Values.stringValue( "" ); public static final Value MAX_STRING = Values.booleanValue( false ); public static final BooleanValue TRUE = Values.booleanValue( true ); @@ -134,7 +134,7 @@ public static Value stringOrNoValue( String value ) } } - public static NumberValue numberValue( Number number ) + public static Value numberValue( Number number ) { if ( number instanceof Long ) { @@ -160,6 +160,10 @@ public static NumberValue numberValue( Number number ) { return shortValue( number.shortValue() ); } + if ( number == null ) + { + return NO_VALUE; + } throw new UnsupportedOperationException( "Unsupported type of Number " + number.toString() ); } @@ -356,7 +360,7 @@ public static Value[] values( Object... objects ) @Deprecated public static Object asObject( Value value ) { - return value == null ? null : value.getInnerObject(); + return value == null ? null : value.asObject(); } public static Object[] asObjects( Value[] propertyValues ) diff --git a/enterprise/runtime/neole/src/test/java/org/neo4j/internal/store/prototype/neole/PropertyCursorTest.java b/enterprise/runtime/neole/src/test/java/org/neo4j/internal/store/prototype/neole/PropertyCursorTest.java index d4ebb3c99116b..2139c3121d181 100644 --- a/enterprise/runtime/neole/src/test/java/org/neo4j/internal/store/prototype/neole/PropertyCursorTest.java +++ b/enterprise/runtime/neole/src/test/java/org/neo4j/internal/store/prototype/neole/PropertyCursorTest.java @@ -164,7 +164,7 @@ public void shouldAccessAllNodeProperties() throws Exception Set values = new HashSet<>(); while ( props.next() ) { - values.add( props.propertyValue().getInnerObject() ); + values.add( props.propertyValue().asObject() ); } assertTrue( "byteProp", values.contains( (byte)13 ) );