protected Function<String,TokenHolders> createTokenHolderProvider( PlatformModule platform ) { Config config = platform.config; DataSourceManager dataSourceManager = platform.dataSourceManager; return ignored -> new TokenHolders( new DelegatingTokenHolder( createPropertyKeyCreator( config, dataSourceManager ), TokenHolder.TYPE_PROPERTY_KEY ), new DelegatingTokenHolder( createLabelIdCreator( config, dataSourceManager ), TokenHolder.TYPE_LABEL ), new DelegatingTokenHolder( createRelationshipTypeCreator( config, dataSourceManager ), TokenHolder.TYPE_RELATIONSHIP_TYPE ) ); }
@Override public void getOrCreateIds( String[] names, int[] ids ) { if ( names.length != ids.length ) { throw new IllegalArgumentException( "Name and id arrays must have the same length." ); } // Assume all tokens exist and try to resolve them. Break out on the first missing token. boolean hasUnresolvedTokens = resolveIds( names, ids, ALWAYS_TRUE_INT ); if ( hasUnresolvedTokens ) { createMissingTokens( names, ids ); } }
private synchronized void createMissingTokens( String[] names, int[] ids ) { // We redo the resolving under the lock, to make sure that these ids are really missing, and won't be // created concurrently with us. MutableIntSet unresolvedIndexes = new IntHashSet(); resolveIds( names, ids, i -> !unresolvedIndexes.add( i ) ); if ( !unresolvedIndexes.isEmpty() ) { // We still have unresolved ids to create. ObjectIntHashMap<String> createdTokens = createUnresolvedTokens( unresolvedIndexes, names, ids ); List<NamedToken> createdTokensList = new ArrayList<>( createdTokens.size() ); createdTokens.forEachKeyValue( ( name, index ) -> createdTokensList.add( new NamedToken( name, ids[index] ) ) ); tokenRegistry.putAll( createdTokensList ); } }
@Before public void setUp() throws Exception { creator = mock( TokenCreator.class ); holder = new DelegatingTokenHolder( creator, "Dummy" ); }
@Override public void getOrCreateIds( String[] names, int[] ids ) { if ( names.length != ids.length ) { throw new IllegalArgumentException( "Name and id arrays must have the same length." ); } // Assume all tokens exist and try to resolve them. Break out on the first missing token. boolean hasUnresolvedTokens = resolveIds( names, ids, ALWAYS_TRUE_INT ); if ( hasUnresolvedTokens ) { createMissingTokens( names, ids ); } }
private synchronized void createMissingTokens( String[] names, int[] ids ) { // We redo the resolving under the lock, to make sure that these ids are really missing, and won't be // created concurrently with us. MutableIntSet unresolvedIndexes = new IntHashSet(); resolveIds( names, ids, i -> !unresolvedIndexes.add( i ) ); if ( !unresolvedIndexes.isEmpty() ) { // We still have unresolved ids to create. ObjectIntHashMap<String> createdTokens = createUnresolvedTokens( unresolvedIndexes, names, ids ); List<NamedToken> createdTokensList = new ArrayList<>( createdTokens.size() ); createdTokens.forEachKeyValue( ( name, index ) -> createdTokensList.add( new NamedToken( name, ids[index] ) ) ); tokenRegistry.putAll( createdTokensList ); } }
private IndexProviderMap createIndexes( PageCache pageCache, FileSystemAbstraction fileSystem, File storeDir, Config config, JobScheduler scheduler, LogProvider logProvider, Monitors monitors ) { LogService logService = new SimpleLogService( logProvider, logProvider ); TokenHolders tokenHolders = new TokenHolders( new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_PROPERTY_KEY ), new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_LABEL ), new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_RELATIONSHIP_TYPE ) ); DatabaseKernelExtensions extensions = life.add( instantiateKernelExtensions( storeDir, fileSystem, config, logService, pageCache, scheduler, RecoveryCleanupWorkCollector.ignore(), DatabaseInfo.COMMUNITY, monitors, tokenHolders ) ); return life.add( new DefaultIndexProviderMap( extensions, config ) ); }
LifeSupport life = new LifeSupport(); JobScheduler jobScheduler = life.add( JobSchedulerFactory.createInitialisedScheduler() ); TokenHolders tokenHolders = new TokenHolders( new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_PROPERTY_KEY ), new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_LABEL ), new DelegatingTokenHolder( new ReadOnlyTokenCreator(), TokenHolder.TYPE_RELATIONSHIP_TYPE ) ); DatabaseKernelExtensions extensions = life.add( instantiateKernelExtensions( databaseLayout.databaseDirectory(), fileSystem, config, new SimpleLogService( logProvider, logProvider ), pageCache, jobScheduler,
@Before public void setUpNeoStores() { databaseLayout = dir.databaseLayout(); Config config = Config.defaults(); pageCache = pageCacheRule.getPageCache( fs.get() ); StoreFactory sf = getStoreFactory( config, databaseLayout, fs.get(), NullLogProvider.getInstance() ); sf.openAllNeoStores( true ).close(); propertyKeyTokenHolder = new DelegatingTokenHolder( this::createPropertyKeyToken, TokenHolder.TYPE_PROPERTY_KEY ); }
TokenHolder propertyKeyTokenHolder = new DelegatingTokenHolder( this::createNewPropertyKeyId, TokenHolder.TYPE_PROPERTY_KEY ); propertyKeyTokenHolder.setInitialTokens( propertyKeyTokenStore.getTokens() ); TokenHolder relationshipTypeTokenHolder = new DelegatingTokenHolder( this::createNewRelationshipType, TokenHolder.TYPE_RELATIONSHIP_TYPE ); relationshipTypeTokenHolder.setInitialTokens( relationshipTypeTokenStore.getTokens() ); TokenHolder labelTokenHolder = new DelegatingTokenHolder( this::createNewLabelId, TokenHolder.TYPE_LABEL ); labelTokenHolder.setInitialTokens( labelTokenStore.getTokens() ); tokenHolders = new TokenHolders( propertyKeyTokenHolder, labelTokenHolder, relationshipTypeTokenHolder );
protected Function<String,TokenHolders> createTokenHolderProvider( PlatformModule platform ) { Config config = platform.config; DataSourceManager dataSourceManager = platform.dataSourceManager; return ignored -> new TokenHolders( new DelegatingTokenHolder( createPropertyKeyCreator( config, dataSourceManager ), TokenHolder.TYPE_PROPERTY_KEY ), new DelegatingTokenHolder( createLabelIdCreator( config, dataSourceManager ), TokenHolder.TYPE_LABEL ), new DelegatingTokenHolder( createRelationshipTypeCreator( config, dataSourceManager ), TokenHolder.TYPE_RELATIONSHIP_TYPE ) ); }
TokenHolder propertyKeyTokenHolder = new DelegatingTokenHolder( this::createNewPropertyKeyId, TokenHolder.TYPE_PROPERTY_KEY ); propertyKeyTokenHolder.setInitialTokens( propertyKeyTokenStore.getTokens() ); TokenHolder relationshipTypeTokenHolder = new DelegatingTokenHolder( this::createNewRelationshipType, TokenHolder.TYPE_RELATIONSHIP_TYPE ); relationshipTypeTokenHolder.setInitialTokens( relationshipTypeTokenStore.getTokens() ); TokenHolder labelTokenHolder = new DelegatingTokenHolder( this::createNewLabelId, TokenHolder.TYPE_LABEL ); labelTokenHolder.setInitialTokens( labelTokenStore.getTokens() ); tokenHolders = new TokenHolders( propertyKeyTokenHolder, labelTokenHolder, relationshipTypeTokenHolder );