From 5d4c9a75d3f49afdb66d4e7954e6514fae395837 Mon Sep 17 00:00:00 2001 From: Pontus Melke Date: Thu, 7 Dec 2017 18:41:26 +0100 Subject: [PATCH] Fixes from code review --- .../TransactionBoundQueryContextTest.scala | 37 ++++--- .../neo4j/kernel/api/KernelTransaction.java | 8 +- .../api/KernelTransactionImplementation.java | 15 --- .../org/neo4j/kernel/impl/core/NodeProxy.java | 101 ++++++++++-------- .../impl/factory/GraphDatabaseFacade.java | 7 +- .../kernel/impl/newapi/AllStoreHolder.java | 2 + .../neo4j/kernel/impl/newapi/Operations.java | 10 -- .../builtinprocs/StubKernelTransaction.java | 15 --- .../ConstraintIndexCreatorTest.java | 15 --- .../builtinprocs/StubKernelTransaction.java | 15 --- 10 files changed, 86 insertions(+), 139 deletions(-) diff --git a/community/cypher/interpreted-runtime/src/test/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContextTest.scala b/community/cypher/interpreted-runtime/src/test/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContextTest.scala index 00295f2cd0d9b..8115a14bac75e 100644 --- a/community/cypher/interpreted-runtime/src/test/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContextTest.scala +++ b/community/cypher/interpreted-runtime/src/test/scala/org/neo4j/cypher/internal/runtime/interpreted/TransactionBoundQueryContextTest.scala @@ -31,16 +31,18 @@ import org.neo4j.cypher.internal.v3_4.expressions.SemanticDirection import org.neo4j.graphdb._ import org.neo4j.graphdb.config.Setting import org.neo4j.graphdb.factory.GraphDatabaseSettings -import org.neo4j.internal.kernel.api.NodeCursor import org.neo4j.internal.kernel.api.Transaction.Type import org.neo4j.internal.kernel.api.security.SecurityContext import org.neo4j.internal.kernel.api.security.SecurityContext.AUTH_DISABLED import org.neo4j.io.pagecache.tracing.cursor.PageCursorTracerSupplier +import org.neo4j.kernel.api.KernelTransaction import org.neo4j.kernel.api.security.AnonymousContext import org.neo4j.kernel.impl.api.{KernelStatement, KernelTransactionImplementation, StatementOperationParts} +import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge import org.neo4j.kernel.impl.coreapi.{InternalTransaction, PropertyContainerLocker} import org.neo4j.kernel.impl.factory.CanWrite import org.neo4j.kernel.impl.locking.LockTracer +import org.neo4j.kernel.impl.newapi.Cursors import org.neo4j.kernel.impl.proc.Procedures import org.neo4j.kernel.impl.query.clientconnection.ClientConnectionInfo import org.neo4j.kernel.impl.query.{Neo4jTransactionalContext, Neo4jTransactionalContextFactory} @@ -81,7 +83,12 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { when(outerTx.failure()).thenThrow(new AssertionError("Shouldn't be called")) when(outerTx.transactionType()).thenReturn(Type.`implicit`) when(outerTx.securityContext()).thenReturn(AUTH_DISABLED) - val tc = new Neo4jTransactionalContext(graph, null, null, null, locker, outerTx, statement, null) + + val bridge = mock[ThreadToStatementContextBridge] + val transaction = mock[KernelTransaction] + when(transaction.cursors()).thenReturn(new Cursors()) + when(bridge.getKernelTransactionBoundToThisThread(true)).thenReturn(transaction) + val tc = new Neo4jTransactionalContext(graph, null, null, bridge, locker, outerTx, statement, null) val transactionalContext = TransactionalContextWrapper(tc) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) // WHEN @@ -100,7 +107,11 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { when(outerTx.success()).thenThrow(new AssertionError("Shouldn't be called")) when(outerTx.transactionType()).thenReturn(Type.`implicit`) when(outerTx.securityContext()).thenReturn(AUTH_DISABLED) - val tc = new Neo4jTransactionalContext(graph, null, null, null, locker, outerTx, statement, null) + val bridge = mock[ThreadToStatementContextBridge] + val transaction = mock[KernelTransaction] + when(transaction.cursors()).thenReturn(new Cursors()) + when(bridge.getKernelTransactionBoundToThisThread(true)).thenReturn(transaction) + val tc = new Neo4jTransactionalContext(graph, null, null, bridge, locker, outerTx, statement, null) val transactionalContext = TransactionalContextWrapper(tc) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) // WHEN @@ -199,7 +210,11 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { test("should close all resources when closing resources") { // GIVEN - val tc = new Neo4jTransactionalContext(graph, null, null, null, locker, outerTx, statement, null) + val bridge = mock[ThreadToStatementContextBridge] + val transaction = mock[KernelTransaction] + when(transaction.cursors()).thenReturn(new Cursors()) + when(bridge.getKernelTransactionBoundToThisThread(true)).thenReturn(transaction) + val tc = new Neo4jTransactionalContext(graph, null, null, bridge, locker, outerTx, statement, null) val transactionalContext = TransactionalContextWrapper(tc) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) val resource1 = mock[AutoCloseable] @@ -225,14 +240,13 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { val tx = graph.beginTransaction(Type.explicit, AnonymousContext.read()) val transactionalContext = TransactionalContextWrapper(createTransactionContext(graph, tx)) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) + val initSize = context.resources.allResources.size // WHEN - context.resources.allResources shouldBe empty context.nodeOps.all // THEN - context.resources.allResources should have size 1 - context.resources.allResources.head shouldBe a [NodeCursor] + context.resources.allResources should have size initSize + 1 tx.close() } @@ -243,14 +257,13 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { val tx = graph.beginTransaction(Type.explicit, AnonymousContext.read()) val transactionalContext = TransactionalContextWrapper(createTransactionContext(graph, tx)) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) + val initSize = context.resources.allResources.size // WHEN - context.resources.allResources shouldBe empty context.nodeOps.allPrimitive // THEN - context.resources.allResources should have size 1 - context.resources.allResources.head shouldBe a [NodeCursor] + context.resources.allResources should have size initSize + 1 tx.close() } @@ -261,11 +274,11 @@ class TransactionBoundQueryContextTest extends CypherFunSuite { val tx = graph.beginTransaction(Type.explicit, AnonymousContext.read()) val transactionalContext = TransactionalContextWrapper(createTransactionContext(graph, tx)) val context = new TransactionBoundQueryContext(transactionalContext)(indexSearchMonitor) + val initSize = context.resources.allResources.size // WHEN - context.resources.allResources shouldBe empty context.nodeOps.all - context.resources.allResources should have size 1 + context.resources.allResources should have size initSize + 1 context.resources.close(success = true) // THEN diff --git a/community/kernel/src/main/java/org/neo4j/kernel/api/KernelTransaction.java b/community/kernel/src/main/java/org/neo4j/kernel/api/KernelTransaction.java index 7bdac93f6ba49..5a160a4a76b74 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/api/KernelTransaction.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/api/KernelTransaction.java @@ -21,12 +21,10 @@ import java.util.Optional; -import org.neo4j.internal.kernel.api.NodeCursor; -import org.neo4j.internal.kernel.api.PropertyCursor; import org.neo4j.internal.kernel.api.Transaction; +import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.TransactionFailureException; -import org.neo4j.internal.kernel.api.security.SecurityContext; import org.neo4j.kernel.impl.api.Kernel; /** @@ -98,10 +96,6 @@ interface CloseListener */ Statement acquireStatement(); - NodeCursor nodeCursor(); - - PropertyCursor propertyCursor(); - /** * Closes this transaction, committing its changes if {@link #success()} has been called and neither * {@link #failure()} nor {@link #markForTermination(Status)} has been called. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java index f48e2ebb3a910..2453d65888122 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java @@ -37,12 +37,9 @@ import org.neo4j.internal.kernel.api.CursorFactory; import org.neo4j.internal.kernel.api.ExplicitIndexRead; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; -import org.neo4j.internal.kernel.api.NodeCursor; -import org.neo4j.internal.kernel.api.PropertyCursor; import org.neo4j.internal.kernel.api.Read; import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.SchemaWrite; -import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.TokenRead; import org.neo4j.internal.kernel.api.TokenWrite; import org.neo4j.internal.kernel.api.Write; @@ -369,18 +366,6 @@ public KernelStatement acquireStatement() return currentStatement; } - @Override - public NodeCursor nodeCursor() - { - return operations.nodeCursor(); - } - - @Override - public PropertyCursor propertyCursor() - { - return operations.propertyCursor(); - } - ExecutingQueryList executingQueries() { return currentStatement.executingQueryList(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java index bd5f0b28a399d..19b45ce7a23b1 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeProxy.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import org.neo4j.collection.primitive.PrimitiveIntIterator; import org.neo4j.graphdb.ConstraintViolationException; @@ -40,9 +39,10 @@ import org.neo4j.graphdb.ResourceIterable; import org.neo4j.graphdb.ResourceIterator; import org.neo4j.graphdb.TransactionTerminatedException; +import org.neo4j.internal.kernel.api.CursorFactory; +import org.neo4j.internal.kernel.api.LabelSet; import org.neo4j.internal.kernel.api.NodeCursor; import org.neo4j.internal.kernel.api.PropertyCursor; -import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.TokenRead; import org.neo4j.internal.kernel.api.exceptions.InvalidTransactionTypeKernelException; import org.neo4j.internal.kernel.api.exceptions.LabelNotFoundKernelException; @@ -350,15 +350,16 @@ public Object getProperty( String key, Object defaultValue ) throw new IllegalArgumentException( "(null) property key is not allowed" ); } KernelTransaction transaction = safeAcquireTransaction(); - try ( Statement ignore = transaction.acquireStatement() ) + CursorFactory cursors = transaction.cursors(); + try ( Statement ignore = transaction.acquireStatement(); + NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor properties = cursors.allocatePropertyCursor() ) { int propertyKey = transaction.tokenRead().propertyKey( key ); if ( propertyKey == KeyReadOperations.NO_SUCH_PROPERTY_KEY ) { return defaultValue; } - NodeCursor nodes = transaction.nodeCursor(); - PropertyCursor properties = transaction.propertyCursor(); transaction.dataRead().singleNode( nodeId, nodes ); if ( !nodes.next() ) { @@ -382,10 +383,11 @@ public Iterable getPropertyKeys() { KernelTransaction transaction = safeAcquireTransaction(); List keys = new ArrayList<>(); - try ( Statement ignore = transaction.acquireStatement() ) + CursorFactory cursors = transaction.cursors(); + try ( Statement ignore = transaction.acquireStatement(); + NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor properties = cursors.allocatePropertyCursor() ) { - NodeCursor nodes = transaction.nodeCursor(); - PropertyCursor properties = transaction.propertyCursor(); transaction.dataRead().singleNode( nodeId, nodes ); TokenRead token = transaction.tokenRead(); if ( !nodes.next() ) @@ -435,28 +437,31 @@ public Map getProperties( String... keys ) propertyIds[i] = token.propertyKey( key ); } - NodeCursor nodes = transaction.nodeCursor(); - PropertyCursor propertyCursor = transaction.propertyCursor(); - transaction.dataRead().singleNode( nodeId, nodes ); - if ( !nodes.next() ) + CursorFactory cursors = transaction.cursors(); + try ( NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor propertyCursor = cursors.allocatePropertyCursor() ) { - throw new NotFoundException( new EntityNotFoundException( EntityType.NODE, nodeId ) ); - } - nodes.properties( propertyCursor ); - int propertiesToFind = itemsToReturn; - while ( propertiesToFind > 0 && propertyCursor.next() ) - { - //Do a linear check if this is a property we are interested in. - for ( int i = 0; i < itemsToReturn; i++ ) + transaction.dataRead().singleNode( nodeId, nodes ); + if ( !nodes.next() ) + { + throw new NotFoundException( new EntityNotFoundException( EntityType.NODE, nodeId ) ); + } + nodes.properties( propertyCursor ); + int propertiesToFind = itemsToReturn; + while ( propertiesToFind > 0 && propertyCursor.next() ) { - int propertyId = propertyIds[i]; - int currentKey = propertyCursor.propertyKey(); - if ( propertyId == currentKey ) + //Do a linear check if this is a property we are interested in. + for ( int i = 0; i < itemsToReturn; i++ ) { - properties.put( keys[i], - propertyCursor.propertyValue().asObjectCopy() ); - propertiesToFind--; - break; + int propertyId = propertyIds[i]; + int currentKey = propertyCursor.propertyKey(); + if ( propertyId == currentKey ) + { + properties.put( keys[i], + propertyCursor.propertyValue().asObjectCopy() ); + propertiesToFind--; + break; + } } } } @@ -470,11 +475,12 @@ public Map getAllProperties() KernelTransaction transaction = safeAcquireTransaction(); Map properties = new HashMap<>(); - try ( Statement ignore = transaction.acquireStatement() ) + CursorFactory cursors = transaction.cursors(); + try ( Statement ignore = transaction.acquireStatement(); + NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor propertyCursor = cursors.allocatePropertyCursor() ) { TokenRead token = transaction.tokenRead(); - PropertyCursor propertyCursor = transaction.propertyCursor(); - NodeCursor nodes = transaction.nodeCursor(); transaction.dataRead().singleNode( nodeId, nodes ); if ( !nodes.next() ) { @@ -507,9 +513,11 @@ public Object getProperty( String key ) throws NotFoundException { throw new NotFoundException( format( "No such property, '%s'.", key ) ); } - NodeCursor nodes = transaction.nodeCursor(); - PropertyCursor properties = transaction.propertyCursor(); - try ( Statement ignore = transaction.acquireStatement() ) + + CursorFactory cursors = transaction.cursors(); + try ( Statement ignore = transaction.acquireStatement(); + NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor properties = cursors.allocatePropertyCursor() ) { transaction.dataRead().singleNode( nodeId, nodes ); if ( !nodes.next() ) @@ -519,7 +527,7 @@ public Object getProperty( String key ) throws NotFoundException nodes.properties( properties ); while ( properties.next() ) { - if ( propertyKey == properties.propertyKey() ) + if ( propertyKey == properties.propertyKey() ) { Value value = properties.propertyValue(); if ( value == Values.NO_VALUE ) @@ -542,16 +550,16 @@ public boolean hasProperty( String key ) } KernelTransaction transaction = safeAcquireTransaction(); - - try ( Statement ignore = transaction.acquireStatement() ) + int propertyKey = transaction.tokenRead().propertyKey( key ); + if ( propertyKey == KeyReadOperations.NO_SUCH_PROPERTY_KEY ) + { + return false; + } + CursorFactory cursors = transaction.cursors(); + try ( Statement ignore = transaction.acquireStatement(); + NodeCursor nodes = cursors.allocateNodeCursor(); + PropertyCursor properties = cursors.allocatePropertyCursor() ) { - int propertyKey = transaction.tokenRead().propertyKey( key ); - if ( propertyKey == KeyReadOperations.NO_SUCH_PROPERTY_KEY ) - { - return false; - } - NodeCursor nodes = transaction.nodeCursor(); - PropertyCursor properties = transaction.propertyCursor(); transaction.dataRead().singleNode( nodeId, nodes ); if ( !nodes.next() ) { @@ -572,10 +580,10 @@ public boolean hasProperty( String key ) private KernelTransaction safeAcquireTransaction() { KernelTransaction transaction = actions.kernelTransaction(); - Optional terminationReason = transaction.getReasonIfTerminated(); - if ( terminationReason.isPresent() ) + if ( transaction.isTerminated() ) { - throw new TransactionTerminatedException( terminationReason.get() ); + Status terminationReason = transaction.getReasonIfTerminated().orElse( Status.Transaction.Terminated ); + throw new TransactionTerminatedException( terminationReason ); } return transaction; } @@ -740,6 +748,7 @@ private Label convertToLabel( Statement statement, int labelId ) try { return label( statement.readOperations().labelGetName( labelId ) ); + } catch ( LabelNotFoundKernelException e ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java index fd9f72671a3d4..e41591c1380c1 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java @@ -23,7 +23,6 @@ import java.net.URL; import java.util.Collections; import java.util.Map; -import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; @@ -819,10 +818,10 @@ private void assertTransactionOpen() private void assertTransactionOpen( KernelTransaction transaction ) { - Optional terminationReason = transaction.getReasonIfTerminated(); - if ( terminationReason.isPresent() ) + if ( transaction.isTerminated() ) { - throw new TransactionTerminatedException( terminationReason.get() ); + Status terminationReason = transaction.getReasonIfTerminated().orElse( Status.Transaction.Terminated ); + throw new TransactionTerminatedException( terminationReason ); } } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java index 3628b0441a126..2d36e5f89c3fc 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java @@ -94,6 +94,8 @@ public AllStoreHolder( StorageEngine engine, @Override public boolean nodeExists( long id ) { + assertOpen.assertOpen(); + if ( hasTxStateWithChanges() ) { TransactionState txState = txState(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java index 88e950e57b681..b812a103f8c6a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java @@ -407,16 +407,6 @@ private void acquireSharedLabelLock( int labelId ) ktx.locks().optimistic().acquireShared( ktx.lockTracer(), ResourceTypes.LABEL, labelId ); } - public NodeCursor nodeCursor() - { - return nodeCursor; - } - - public PropertyCursor propertyCursor() - { - return propertyCursor; - } - public ExplicitIndexRead indexRead() { return allStoreHolder; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubKernelTransaction.java b/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubKernelTransaction.java index 98980d8a964b2..27aaf1851db9a 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubKernelTransaction.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/builtinprocs/StubKernelTransaction.java @@ -25,12 +25,9 @@ import org.neo4j.internal.kernel.api.ExplicitIndexRead; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; import org.neo4j.internal.kernel.api.Locks; -import org.neo4j.internal.kernel.api.NodeCursor; -import org.neo4j.internal.kernel.api.PropertyCursor; import org.neo4j.internal.kernel.api.Read; import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.SchemaWrite; -import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.TokenRead; import org.neo4j.internal.kernel.api.TokenWrite; import org.neo4j.internal.kernel.api.Write; @@ -56,18 +53,6 @@ public Statement acquireStatement() return new StubStatement( readOperations ); } - @Override - public NodeCursor nodeCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - - @Override - public PropertyCursor propertyCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - @Override public void success() { diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/constraints/ConstraintIndexCreatorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/constraints/ConstraintIndexCreatorTest.java index 45a22acdb7fac..28759a9c0bf40 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/constraints/ConstraintIndexCreatorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/constraints/ConstraintIndexCreatorTest.java @@ -29,13 +29,10 @@ import org.neo4j.internal.kernel.api.ExplicitIndexRead; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; import org.neo4j.internal.kernel.api.Locks; -import org.neo4j.internal.kernel.api.NodeCursor; -import org.neo4j.internal.kernel.api.PropertyCursor; import org.neo4j.internal.kernel.api.Read; import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.SchemaWrite; import org.neo4j.internal.kernel.api.Session; -import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.TokenRead; import org.neo4j.internal.kernel.api.TokenWrite; import org.neo4j.internal.kernel.api.Write; @@ -463,18 +460,6 @@ public Statement acquireStatement() return remember( mockedState() ); } - @Override - public NodeCursor nodeCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - - @Override - public PropertyCursor propertyCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - private Statement remember( KernelStatement mockedState ) { statements.add( mockedState ); diff --git a/enterprise/kernel/src/test/java/org/neo4j/kernel/enterprise/builtinprocs/StubKernelTransaction.java b/enterprise/kernel/src/test/java/org/neo4j/kernel/enterprise/builtinprocs/StubKernelTransaction.java index 79fdc50f17bc9..d27698400f43a 100644 --- a/enterprise/kernel/src/test/java/org/neo4j/kernel/enterprise/builtinprocs/StubKernelTransaction.java +++ b/enterprise/kernel/src/test/java/org/neo4j/kernel/enterprise/builtinprocs/StubKernelTransaction.java @@ -27,12 +27,9 @@ import org.neo4j.internal.kernel.api.ExplicitIndexRead; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; import org.neo4j.internal.kernel.api.Locks; -import org.neo4j.internal.kernel.api.NodeCursor; -import org.neo4j.internal.kernel.api.PropertyCursor; import org.neo4j.internal.kernel.api.Read; import org.neo4j.internal.kernel.api.SchemaRead; import org.neo4j.internal.kernel.api.SchemaWrite; -import org.neo4j.internal.kernel.api.Token; import org.neo4j.internal.kernel.api.TokenRead; import org.neo4j.internal.kernel.api.TokenWrite; import org.neo4j.internal.kernel.api.Write; @@ -53,18 +50,6 @@ public Statement acquireStatement() return null; } - @Override - public NodeCursor nodeCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - - @Override - public PropertyCursor propertyCursor() - { - throw new UnsupportedOperationException( "not implemented" ); - } - @Override public void success() {