You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/10/29 21:33:41 UTC
[3/3] git commit: Cleaned up some code. Need to remove mockito.
Incorrect proxy wiring is causing NPE
Cleaned up some code. Need to remove mockito. Incorrect proxy wiring is causing NPE
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/84c33176
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/84c33176
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/84c33176
Branch: refs/heads/key-row-sharding
Commit: 84c33176eb819216dde6727d09ac19e8669d4f12
Parents: dfed6a0
Author: Todd Nine <tn...@apigee.com>
Authored: Wed Oct 29 14:33:34 2014 -0600
Committer: Todd Nine <tn...@apigee.com>
Committed: Wed Oct 29 14:33:34 2014 -0600
----------------------------------------------------------------------
.../persistence/core/guice/CommonModule.java | 14 +-
.../migration/data/DataMigrationManager.java | 6 +
.../data/DataMigrationManagerImpl.java | 65 ++++++--
.../persistence/graph/guice/GraphModule.java | 40 ++---
.../graph/impl/GraphManagerImpl.java | 9 +-
.../EdgeMetadataSerializationProxyImpl.java | 165 +++++++++++++++++--
6 files changed, 229 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/CommonModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/CommonModule.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/CommonModule.java
index 3503178..e37067f 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/CommonModule.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/guice/CommonModule.java
@@ -59,6 +59,13 @@ public class CommonModule extends AbstractModule {
// bind our migration manager
bind( MigrationManager.class ).to( MigrationManagerImpl.class );
+
+
+ //do multibindings for migrations
+ Multibinder<Migration> migrationBinding = Multibinder.newSetBinder( binder(), Migration.class );
+ migrationBinding.addBinding().to( Key.get( MigrationInfoSerialization.class ) );
+
+
bind( TimeService.class ).to( TimeServiceImpl.class );
bind( CassandraConfig.class ).to( CassandraConfigImpl.class );
@@ -71,8 +78,11 @@ public class CommonModule extends AbstractModule {
bind( DataMigrationManager.class ).to( DataMigrationManagerImpl.class );
+
+
//do multibindings for migrations
- Multibinder<Migration> migrationBinding = Multibinder.newSetBinder( binder(), Migration.class );
- migrationBinding.addBinding().to( Key.get( MigrationInfoSerialization.class ) );
+ Multibinder<DataMigrationManager> dataMigrationManagerMultibinder = Multibinder.newSetBinder( binder(), DataMigrationManager.class );
+// migrationBinding.addBinding().to( Key.get( MigrationInfoSerialization.class ) );
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManager.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManager.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManager.java
index 1d7ccec..3357ed4 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManager.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManager.java
@@ -41,6 +41,12 @@ public interface DataMigrationManager {
*/
public boolean isRunning();
+ /**
+ * Get the current version of the schema
+ * @return
+ */
+ public int getCurrentVersion();
+
/**
* Return that last status of the migration
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
index ee579ee..4cc98df 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
@@ -27,12 +27,18 @@ import java.io.StringWriter;
import java.util.NavigableMap;
import java.util.Set;
import java.util.TreeMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.usergrid.persistence.core.migration.schema.MigrationException;
+import com.google.common.base.Preconditions;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -46,14 +52,33 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
private final MigrationInfoSerialization migrationInfoSerialization;
+ /**
+ * Cache to cache versions temporarily
+ */
+ private final LoadingCache<String, Integer> versionCache = CacheBuilder.newBuilder()
+ //cache the local value for 1 minute
+ .expireAfterWrite( 1, TimeUnit.MINUTES ).build( new CacheLoader<String, Integer>() {
+ @Override
+ public Integer load( final String key ) throws Exception {
+ return migrationInfoSerialization.getVersion();
+ }
+ } );
+
@Inject
public DataMigrationManagerImpl( final MigrationInfoSerialization migrationInfoSerialization,
final Set<DataMigration> migrations ) {
+ Preconditions.checkNotNull( migrationInfoSerialization, "migrationInfoSerialization must not be null" );
+ Preconditions.checkNotNull( migrations, "migrations must not be null" );
+
this.migrationInfoSerialization = migrationInfoSerialization;
+
+
for ( DataMigration migration : migrations ) {
+ Preconditions.checkNotNull( migration, "A migration instance in the set of migrations was null. This is not allowed" );
+
final int version = migration.getVersion();
final DataMigration existing = migrationTreeMap.get( version );
@@ -103,7 +128,7 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
LOG.info( "Running migration version {}", migrationVersion );
- observer.update( migrationVersion, "Starting migration" );
+ observer.update( migrationVersion, "Starting migration" );
//perform this migration, if it fails, short circuit
@@ -119,7 +144,7 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
}
//we had an unhandled exception or the migration failed, short circuit
- if(observer.failed){
+ if ( observer.failed ) {
return;
}
@@ -128,13 +153,9 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
//update the observer for progress so other nodes can see it
observer.update( migrationVersion, "Completed successfully" );
-
-
}
migrationInfoSerialization.setStatusCode( StatusCode.COMPLETE.status );
-
-
}
@@ -145,6 +166,17 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
@Override
+ public int getCurrentVersion() {
+ try {
+ return versionCache.get( "currentVersion" );
+ }
+ catch ( ExecutionException e ) {
+ throw new DataMigrationException( "Unable to get current version", e );
+ }
+ }
+
+
+ @Override
public String getLastStatus() {
return migrationInfoSerialization.getStatusMessage();
}
@@ -153,10 +185,10 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
/**
* Different status enums
*/
- public enum StatusCode{
- COMPLETE(1),
- RUNNING(2),
- ERROR(3);
+ public enum StatusCode {
+ COMPLETE( 1 ),
+ RUNNING( 2 ),
+ ERROR( 3 );
public final int status;
@@ -170,14 +202,13 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
private boolean failed = false;
-
@Override
public void failed( final int migrationVersion, final String reason ) {
- final String storedMessage = String.format( "Failed to migrate, reason is appended. Error '%s'", reason);
+ final String storedMessage = String.format( "Failed to migrate, reason is appended. Error '%s'", reason );
- update(migrationVersion, storedMessage );
+ update( migrationVersion, storedMessage );
LOG.error( storedMessage );
@@ -193,9 +224,10 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
throwable.printStackTrace( new PrintWriter( stackTrace ) );
- final String storedMessage = String.format( "Failed to migrate, reason is appended. Error '%s' %s", reason, stackTrace.toString() );
+ final String storedMessage = String.format( "Failed to migrate, reason is appended. Error '%s' %s", reason,
+ stackTrace.toString() );
- update(migrationVersion, storedMessage );
+ update( migrationVersion, storedMessage );
LOG.error( "Unable to migrate version {} due to reason {}.", migrationVersion, reason, throwable );
@@ -208,7 +240,7 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
@Override
public void update( final int migrationVersion, final String message ) {
- final String error = String.format( "Migration version %d. %s", migrationVersion, message);
+ final String error = String.format( "Migration version %d. %s", migrationVersion, message );
migrationInfoSerialization.setStatusMessage( error );
}
@@ -216,7 +248,6 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
/**
* Return true if we failed
- * @return
*/
public boolean isFailed() {
return failed;
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
index 6f15e88..dee53d4 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
@@ -27,6 +27,7 @@ import org.apache.usergrid.persistence.core.consistency.TimeServiceImpl;
import org.apache.usergrid.persistence.core.guice.CurrentImpl;
import org.apache.usergrid.persistence.core.guice.PreviousImpl;
import org.apache.usergrid.persistence.core.guice.ProxyImpl;
+import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
import org.apache.usergrid.persistence.core.migration.schema.Migration;
import org.apache.usergrid.persistence.core.task.NamedTaskExecutorImpl;
import org.apache.usergrid.persistence.core.task.TaskExecutor;
@@ -157,6 +158,15 @@ public class GraphModule extends AbstractModule {
//Get the old version and the new one
migrationBinding.addBinding().to( Key.get( EdgeMetadataSerialization.class, PreviousImpl.class) );
migrationBinding.addBinding().to( Key.get( EdgeMetadataSerialization.class, CurrentImpl.class ) );
+
+
+ /**
+ * Migrations of our edge meta serialization
+ */
+
+ bind(EdgeMetadataSerialization.class).annotatedWith( PreviousImpl.class ).to( EdgeMetadataSerializationV1Impl.class );
+ bind(EdgeMetadataSerialization.class).annotatedWith( CurrentImpl.class ).to( EdgeMetadataSerializationV2Impl.class );
+ bind(EdgeMetadataSerialization.class).annotatedWith( ProxyImpl.class ).to( EdgeMetadataSerializationProxyImpl.class );
}
@@ -170,36 +180,6 @@ public class GraphModule extends AbstractModule {
}
- @Inject
- @Singleton
- @Provides
- @PreviousImpl
- public EdgeMetadataSerialization getPreviousEdgeMetaSerialization( final Keyspace keyspace,
- final CassandraConfig cassandraConfig,
- final GraphFig graphFig ) {
- return new EdgeMetadataSerializationV1Impl( keyspace, cassandraConfig, graphFig );
- }
-
-
- @Inject
- @Singleton
- @Provides
- @CurrentImpl
- public EdgeMetadataSerialization getCurrentEdgeMetaSerialization( final Keyspace keyspace,
- final CassandraConfig cassandraConfig,
- final GraphFig graphFig ) {
- return new EdgeMetadataSerializationV2Impl( keyspace, cassandraConfig, graphFig );
- }
-
-
- @Inject
- @Singleton
- @Provides
- @ProxyImpl
- public EdgeMetadataSerialization getCurrentEdgeMetaSerialization( @PreviousImpl final EdgeMetadataSerialization previous,
- @CurrentImpl final EdgeMetadataSerialization current ) {
- return new EdgeMetadataSerializationProxyImpl( previous, current );
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
index 564dc5b..df10816 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
@@ -92,9 +92,11 @@ public class GraphManagerImpl implements GraphManager {
@Inject
public GraphManagerImpl( @ProxyImpl final EdgeMetadataSerialization edgeMetadataSerialization,
final EdgeSerialization storageEdgeSerialization,
- final NodeSerialization nodeSerialization, final GraphFig graphFig,
- @Assisted final ApplicationScope scope, final EdgeDeleteListener edgeDeleteListener,
- final NodeDeleteListener nodeDeleteListener ) {
+ final NodeSerialization nodeSerialization,
+ final GraphFig graphFig,
+ final EdgeDeleteListener edgeDeleteListener,
+ final NodeDeleteListener nodeDeleteListener,
+ @Assisted final ApplicationScope scope) {
ValidationUtils.validateApplicationScope( scope );
@@ -103,6 +105,7 @@ public class GraphManagerImpl implements GraphManager {
Preconditions.checkNotNull( nodeSerialization, "nodeSerialization must not be null" );
Preconditions.checkNotNull( graphFig, "consistencyFig must not be null" );
Preconditions.checkNotNull( scope, "scope must not be null" );
+ Preconditions.checkNotNull( nodeDeleteListener, "nodeDeleteListener must not be null" );
this.scope = scope;
this.edgeMetadataSerialization = edgeMetadataSerialization;
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/84c33176/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
index 4fbe801..cc51349 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
@@ -23,11 +23,13 @@ package org.apache.usergrid.persistence.graph.serialization.impl;
import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import org.apache.usergrid.persistence.core.astyanax.MultiTennantColumnFamilyDefinition;
import org.apache.usergrid.persistence.core.guice.CurrentImpl;
import org.apache.usergrid.persistence.core.guice.PreviousImpl;
+import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
import org.apache.usergrid.persistence.core.scope.ApplicationScope;
import org.apache.usergrid.persistence.graph.Edge;
import org.apache.usergrid.persistence.graph.SearchEdgeType;
@@ -37,22 +39,30 @@ import org.apache.usergrid.persistence.model.entity.Id;
import com.google.inject.Inject;
import com.google.inject.Singleton;
+import com.netflix.astyanax.Keyspace;
import com.netflix.astyanax.MutationBatch;
@Singleton
public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerialization {
- private EdgeMetadataSerialization previous;
- private EdgeMetadataSerialization current;
+ private static final int MIGRATION_VERSION = 1;
+
+ private final DataMigrationManager dataMigrationManager;
+ private final Keyspace keyspace;
+ private final EdgeMetadataSerialization previous;
+ private final EdgeMetadataSerialization current;
/**
- * TODO fin
+ * Handles routing data to the right implementation, based on the current system migration version
*/
@Inject
- public EdgeMetadataSerializationProxyImpl( @PreviousImpl final EdgeMetadataSerialization previous,
+ public EdgeMetadataSerializationProxyImpl( final DataMigrationManager dataMigrationManager, final Keyspace keyspace,
+ @PreviousImpl final EdgeMetadataSerialization previous,
@CurrentImpl final EdgeMetadataSerialization current ) {
+ this.dataMigrationManager = dataMigrationManager;
+ this.keyspace = keyspace;
this.previous = previous;
this.current = current;
}
@@ -60,88 +70,207 @@ public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerializa
@Override
public MutationBatch writeEdge( final ApplicationScope scope, final Edge edge ) {
- return null;
+
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.writeEdge( scope, edge ) );
+ aggregateBatch.mergeShallow( current.writeEdge( scope, edge ) );
+
+ return aggregateBatch;
+ }
+
+ return current.writeEdge( scope, edge );
}
@Override
public MutationBatch removeEdgeTypeFromSource( final ApplicationScope scope, final Edge edge ) {
- return null;
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeEdgeTypeFromSource( scope, edge ) );
+ aggregateBatch.mergeShallow( current.removeEdgeTypeFromSource( scope, edge ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeEdgeTypeFromSource( scope, edge );
}
@Override
public MutationBatch removeEdgeTypeFromSource( final ApplicationScope scope, final Id sourceNode, final String type,
final long timestamp ) {
- return null;
+
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeEdgeTypeFromSource( scope, sourceNode, type, timestamp ) );
+ aggregateBatch.mergeShallow( current.removeEdgeTypeFromSource( scope, sourceNode, type, timestamp ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeEdgeTypeFromSource( scope, sourceNode, type, timestamp );
}
@Override
public MutationBatch removeIdTypeFromSource( final ApplicationScope scope, final Edge edge ) {
- return null;
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeIdTypeFromSource( scope, edge ) );
+ aggregateBatch.mergeShallow( current.removeIdTypeFromSource( scope, edge ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeIdTypeFromSource( scope, edge );
}
@Override
public MutationBatch removeIdTypeFromSource( final ApplicationScope scope, final Id sourceNode, final String type,
final String idType, final long timestamp ) {
- return null;
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch
+ .mergeShallow( previous.removeIdTypeFromSource( scope, sourceNode, type, idType, timestamp ) );
+ aggregateBatch.mergeShallow( current.removeIdTypeFromSource( scope, sourceNode, type, idType, timestamp ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeIdTypeFromSource( scope, sourceNode, type, idType, timestamp );
}
@Override
public MutationBatch removeEdgeTypeToTarget( final ApplicationScope scope, final Edge edge ) {
- return null;
+
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeEdgeTypeToTarget( scope, edge ) );
+ aggregateBatch.mergeShallow( current.removeEdgeTypeToTarget( scope, edge ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeEdgeTypeToTarget( scope, edge );
}
@Override
public MutationBatch removeEdgeTypeToTarget( final ApplicationScope scope, final Id targetNode, final String type,
final long timestamp ) {
- return null;
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeEdgeTypeToTarget( scope, targetNode, type, timestamp ) );
+ aggregateBatch.mergeShallow( current.removeEdgeTypeToTarget( scope, targetNode, type, timestamp ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeEdgeTypeToTarget( scope, targetNode, type, timestamp );
}
@Override
public MutationBatch removeIdTypeToTarget( final ApplicationScope scope, final Edge edge ) {
- return null;
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeIdTypeFromSource( scope, edge ) );
+ aggregateBatch.mergeShallow( current.removeIdTypeFromSource( scope, edge ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeIdTypeFromSource( scope, edge );
}
@Override
public MutationBatch removeIdTypeToTarget( final ApplicationScope scope, final Id targetNode, final String type,
final String idType, final long timestamp ) {
- return null;
+
+
+ if ( isOldVersion() ) {
+ final MutationBatch aggregateBatch = keyspace.prepareMutationBatch();
+
+ aggregateBatch.mergeShallow( previous.removeIdTypeToTarget( scope, targetNode, type, idType, timestamp ) );
+ aggregateBatch.mergeShallow( current.removeIdTypeToTarget( scope, targetNode, type, idType, timestamp ) );
+
+ return aggregateBatch;
+ }
+
+ return current.removeIdTypeToTarget( scope, targetNode, type, idType, timestamp );
}
@Override
public Iterator<String> getEdgeTypesFromSource( final ApplicationScope scope, final SearchEdgeType search ) {
- return null;
+ if ( isOldVersion() ) {
+ return previous.getEdgeTypesFromSource( scope, search );
+ }
+
+ return current.getEdgeTypesFromSource( scope, search );
}
@Override
public Iterator<String> getIdTypesFromSource( final ApplicationScope scope, final SearchIdType search ) {
- return null;
+ if ( isOldVersion() ) {
+ return previous.getIdTypesFromSource( scope, search );
+ }
+
+ return current.getIdTypesFromSource( scope, search );
}
@Override
public Iterator<String> getEdgeTypesToTarget( final ApplicationScope scope, final SearchEdgeType search ) {
- return null;
+ if ( isOldVersion() ) {
+ return previous.getEdgeTypesToTarget( scope, search );
+ }
+
+ return current.getEdgeTypesToTarget( scope, search );
}
@Override
public Iterator<String> getIdTypesToTarget( final ApplicationScope scope, final SearchIdType search ) {
- return null;
+ if ( isOldVersion() ) {
+ return previous.getIdTypesToTarget( scope, search );
+ }
+
+ return current.getIdTypesToTarget( scope, search );
}
@Override
public Collection<MultiTennantColumnFamilyDefinition> getColumnFamilies() {
- return null;
+ return Collections.EMPTY_LIST;
+ }
+
+
+ /**
+ * Return true if we're on an old version
+ */
+ private boolean isOldVersion() {
+ return dataMigrationManager.getCurrentVersion() < MIGRATION_VERSION;
}
}