Skip to content

Commit

Permalink
Extract common parts to a TokenHolderBase
Browse files Browse the repository at this point in the history
There was a lot of duplicated code along the whole token stack, this
clears out a few of those.
  • Loading branch information
klaren committed Jun 29, 2018
1 parent e899944 commit b05d7f9
Show file tree
Hide file tree
Showing 18 changed files with 298 additions and 325 deletions.
Expand Up @@ -62,6 +62,7 @@
import org.neo4j.kernel.impl.api.RelationshipVisitor; import org.neo4j.kernel.impl.api.RelationshipVisitor;
import org.neo4j.kernel.impl.core.DelegatingTokenHolder; import org.neo4j.kernel.impl.core.DelegatingTokenHolder;
import org.neo4j.kernel.impl.core.TokenHolder; import org.neo4j.kernel.impl.core.TokenHolder;
import org.neo4j.kernel.impl.core.TokenNotFoundException;
import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine;
import org.neo4j.kernel.impl.storageengine.impl.recordstorage.TransactionRecordState.PropertyReceiver; import org.neo4j.kernel.impl.storageengine.impl.recordstorage.TransactionRecordState.PropertyReceiver;
import org.neo4j.kernel.impl.store.MetaDataStore.Position; import org.neo4j.kernel.impl.store.MetaDataStore.Position;
Expand Down Expand Up @@ -149,7 +150,7 @@ public void setUpNeoStores()
StoreFactory sf = new StoreFactory( storeDir, config, new DefaultIdGeneratorFactory( fs.get() ), pageCache, StoreFactory sf = new StoreFactory( storeDir, config, new DefaultIdGeneratorFactory( fs.get() ), pageCache,
fs.get(), NullLogProvider.getInstance(), EmptyVersionContextSupplier.EMPTY ); fs.get(), NullLogProvider.getInstance(), EmptyVersionContextSupplier.EMPTY );
sf.openAllNeoStores( true ).close(); sf.openAllNeoStores( true ).close();
propertyKeyTokenHolder = new DelegatingTokenHolder( this::createPropertyKeyToken, DelegatingTokenHolder.TYPE_PROPERTY_KEY ); propertyKeyTokenHolder = new DelegatingTokenHolder( this::createPropertyKeyToken, TokenHolder.TYPE_PROPERTY_KEY );
} }


private int createPropertyKeyToken( String name ) private int createPropertyKeyToken( String name )
Expand Down Expand Up @@ -939,7 +940,7 @@ private long nextId( Class<?> clazz )


private void validateNodeRel1( final long node, StorageProperty prop1, private void validateNodeRel1( final long node, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3, long rel1, long rel2, StorageProperty prop2, StorageProperty prop3, long rel1, long rel2,
final int relType1, final int relType2 ) throws IOException final int relType1, final int relType2 ) throws IOException, TokenNotFoundException
{ {
assertTrue( nodeExists( node ) ); assertTrue( nodeExists( node ) );
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
Expand All @@ -954,19 +955,19 @@ private void validateNodeRel1( final long node, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "string1", data.value().asObject() ); assertEquals( "string1", data.value().asObject() );
nodeAddProperty( node, prop1.propertyKeyId(), "-string1" ); nodeAddProperty( node, prop1.propertyKeyId(), "-string1" );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( 1, data.value().asObject() ); assertEquals( 1, data.value().asObject() );
nodeAddProperty( node, prop2.propertyKeyId(), -1 ); nodeAddProperty( node, prop2.propertyKeyId(), -1 );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( true, data.value().asObject() ); assertEquals( true, data.value().asObject() );
nodeAddProperty( node, prop3.propertyKeyId(), false ); nodeAddProperty( node, prop3.propertyKeyId(), false );
} }
Expand Down Expand Up @@ -1038,8 +1039,7 @@ private PropertyReceiver<StorageProperty> newPropertyReceiver( final Map<Integer


private void validateNodeRel2( final long node, StorageProperty prop1, private void validateNodeRel2( final long node, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3, StorageProperty prop2, StorageProperty prop3,
long rel1, long rel2, final int relType1, final int relType2 ) long rel1, long rel2, final int relType1, final int relType2 ) throws IOException, RuntimeException, TokenNotFoundException
throws IOException, RuntimeException
{ {
assertTrue( nodeExists( node ) ); assertTrue( nodeExists( node ) );
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
Expand All @@ -1053,19 +1053,19 @@ private void validateNodeRel2( final long node, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "string2", data.value().asObject() ); assertEquals( "string2", data.value().asObject() );
nodeAddProperty( node, prop1.propertyKeyId(), "-string2" ); nodeAddProperty( node, prop1.propertyKeyId(), "-string2" );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( 2, data.value().asObject() ); assertEquals( 2, data.value().asObject() );
nodeAddProperty( node, prop2.propertyKeyId(), -2 ); nodeAddProperty( node, prop2.propertyKeyId(), -2 );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( false, data.value().asObject() ); assertEquals( false, data.value().asObject() );
nodeAddProperty( node, prop3.propertyKeyId(), true ); nodeAddProperty( node, prop3.propertyKeyId(), true );
} }
Expand Down Expand Up @@ -1119,7 +1119,7 @@ private boolean nodeExists( long nodeId )


private void validateRel1( long rel, StorageProperty prop1, private void validateRel1( long rel, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3, long firstNode, long secondNode, StorageProperty prop2, StorageProperty prop3, long firstNode, long secondNode,
int relType ) throws IOException int relType ) throws IOException, TokenNotFoundException
{ {
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
relLoadProperties( rel, newPropertyReceiver( props ) ); relLoadProperties( rel, newPropertyReceiver( props ) );
Expand All @@ -1132,19 +1132,19 @@ private void validateRel1( long rel, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "string1", data.value().asObject() ); assertEquals( "string1", data.value().asObject() );
relAddProperty( rel, prop1.propertyKeyId(), "-string1" ); relAddProperty( rel, prop1.propertyKeyId(), "-string1" );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( 1, data.value().asObject() ); assertEquals( 1, data.value().asObject() );
relAddProperty( rel, prop2.propertyKeyId(), -1 ); relAddProperty( rel, prop2.propertyKeyId(), -1 );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( true, data.value().asObject() ); assertEquals( true, data.value().asObject() );
relAddProperty( rel, prop3.propertyKeyId(), false ); relAddProperty( rel, prop3.propertyKeyId(), false );
} }
Expand Down Expand Up @@ -1178,7 +1178,7 @@ private void assertRelationshipData( long rel, final long firstNode, final long


private void validateRel2( long rel, StorageProperty prop1, private void validateRel2( long rel, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3, StorageProperty prop2, StorageProperty prop3,
long firstNode, long secondNode, int relType ) throws IOException long firstNode, long secondNode, int relType ) throws IOException, TokenNotFoundException
{ {
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
relLoadProperties( rel, newPropertyReceiver( props ) ); relLoadProperties( rel, newPropertyReceiver( props ) );
Expand All @@ -1191,19 +1191,19 @@ private void validateRel2( long rel, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "string2", data.value().asObject() ); assertEquals( "string2", data.value().asObject() );
relAddProperty( rel, prop1.propertyKeyId(), "-string2" ); relAddProperty( rel, prop1.propertyKeyId(), "-string2" );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( 2, data.value().asObject() ); assertEquals( 2, data.value().asObject() );
relAddProperty( rel, prop2.propertyKeyId(), -2 ); relAddProperty( rel, prop2.propertyKeyId(), -2 );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( false, data.value().asObject() ); assertEquals( false, data.value().asObject() );
relAddProperty( rel, prop3.propertyKeyId(), true ); relAddProperty( rel, prop3.propertyKeyId(), true );
} }
Expand Down Expand Up @@ -1262,17 +1262,17 @@ private void deleteRel1( long rel, StorageProperty prop1, StorageProperty prop2,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "-string1", data.value().asObject() ); assertEquals( "-string1", data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( -1, data.value().asObject() ); assertEquals( -1, data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( false, data.value().asObject() ); assertEquals( false, data.value().asObject() );
transaction.relationshipDoRemoveProperty( rel, prop3.propertyKeyId() ); transaction.relationshipDoRemoveProperty( rel, prop3.propertyKeyId() );
} }
Expand Down Expand Up @@ -1320,17 +1320,17 @@ private void deleteRel2( long rel, StorageProperty prop1, StorageProperty prop2,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "-string2", data.value().asObject() ); assertEquals( "-string2", data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( -2, data.value().asObject() ); assertEquals( -2, data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( true, data.value().asObject() ); assertEquals( true, data.value().asObject() );
transaction.relationshipDoRemoveProperty( rel, prop3.propertyKeyId() ); transaction.relationshipDoRemoveProperty( rel, prop3.propertyKeyId() );
} }
Expand Down Expand Up @@ -1367,8 +1367,7 @@ private void assertHasRelationships( long node )
} }


private void deleteNode1( long node, StorageProperty prop1, private void deleteNode1( long node, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3 ) StorageProperty prop2, StorageProperty prop3 ) throws IOException, TokenNotFoundException
throws IOException
{ {
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
nodeLoadProperties( node, newPropertyReceiver( props ) ); nodeLoadProperties( node, newPropertyReceiver( props ) );
Expand All @@ -1381,17 +1380,17 @@ private void deleteNode1( long node, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "-string1", data.value().asObject() ); assertEquals( "-string1", data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( -1, data.value().asObject() ); assertEquals( -1, data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( false, data.value().asObject() ); assertEquals( false, data.value().asObject() );
transaction.nodeDoRemoveProperty( node, prop3.propertyKeyId() ); transaction.nodeDoRemoveProperty( node, prop3.propertyKeyId() );
} }
Expand All @@ -1410,8 +1409,7 @@ else if ( data.propertyKeyId() == prop3.propertyKeyId() )
} }


private void deleteNode2( long node, StorageProperty prop1, private void deleteNode2( long node, StorageProperty prop1,
StorageProperty prop2, StorageProperty prop3 ) StorageProperty prop2, StorageProperty prop3 ) throws IOException, TokenNotFoundException
throws IOException
{ {
Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>(); Map<Integer,Pair<StorageProperty,Long>> props = new HashMap<>();
nodeLoadProperties( node, newPropertyReceiver( props ) ); nodeLoadProperties( node, newPropertyReceiver( props ) );
Expand All @@ -1424,17 +1422,17 @@ private void deleteNode2( long node, StorageProperty prop1,
StorageProperty data = block.newPropertyKeyValue( pStore ); StorageProperty data = block.newPropertyKeyValue( pStore );
if ( data.propertyKeyId() == prop1.propertyKeyId() ) if ( data.propertyKeyId() == prop1.propertyKeyId() )
{ {
assertEquals( "prop1", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop1", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( "-string2", data.value().asObject() ); assertEquals( "-string2", data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop2.propertyKeyId() ) else if ( data.propertyKeyId() == prop2.propertyKeyId() )
{ {
assertEquals( "prop2", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop2", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( -2, data.value().asObject() ); assertEquals( -2, data.value().asObject() );
} }
else if ( data.propertyKeyId() == prop3.propertyKeyId() ) else if ( data.propertyKeyId() == prop3.propertyKeyId() )
{ {
assertEquals( "prop3", propertyKeyTokenHolder.getTokenByIdOrNull( keyId ).name() ); assertEquals( "prop3", propertyKeyTokenHolder.getTokenById( keyId ).name() );
assertEquals( true, data.value().asObject() ); assertEquals( true, data.value().asObject() );
transaction.nodeDoRemoveProperty( node, prop3.propertyKeyId() ); transaction.nodeDoRemoveProperty( node, prop3.propertyKeyId() );
} }
Expand Down
Expand Up @@ -19,10 +19,10 @@
*/ */
package org.neo4j.kernel.impl.api; package org.neo4j.kernel.impl.api;


import org.neo4j.internal.kernel.api.NamedToken;
import org.neo4j.internal.kernel.api.TokenNameLookup; import org.neo4j.internal.kernel.api.TokenNameLookup;
import org.neo4j.kernel.impl.core.TokenHolder; import org.neo4j.kernel.impl.core.TokenHolder;
import org.neo4j.kernel.impl.core.TokenHolders; import org.neo4j.kernel.impl.core.TokenHolders;
import org.neo4j.kernel.impl.core.TokenNotFoundException;


import static java.lang.String.format; import static java.lang.String.format;


Expand Down Expand Up @@ -61,13 +61,9 @@ private static String tokenById( TokenHolder tokenHolder, int tokenId, String to
{ {
try try
{ {
NamedToken token = tokenHolder.getTokenByIdOrNull( tokenId ); return tokenHolder.getTokenById( tokenId ).name();
if ( token != null )
{
return token.name();
}
} }
catch ( RuntimeException e ) catch ( TokenNotFoundException e )
{ {
// Ignore errors from reading key // Ignore errors from reading key
} }
Expand Down

0 comments on commit b05d7f9

Please sign in to comment.