summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado/layout/LayoutSync.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/amazon/carbonado/layout/LayoutSync.java')
-rw-r--r--src/main/java/com/amazon/carbonado/layout/LayoutSync.java27
1 files changed, 5 insertions, 22 deletions
diff --git a/src/main/java/com/amazon/carbonado/layout/LayoutSync.java b/src/main/java/com/amazon/carbonado/layout/LayoutSync.java
index 510dc82..cf311e0 100644
--- a/src/main/java/com/amazon/carbonado/layout/LayoutSync.java
+++ b/src/main/java/com/amazon/carbonado/layout/LayoutSync.java
@@ -178,6 +178,7 @@ public class LayoutSync {
String storableTypeName = src.getStorableTypeName();
if (!storableTypeName.equals(dst.getStorableTypeName())) {
+ // Assume that there's never any hashcode collision.
throw new AssertionError();
}
@@ -267,31 +268,13 @@ public class LayoutSync {
private int nextGen(Repository repo, String storableTypeName)
throws RepositoryException
{
- Cursor<StoredLayout> cursor =
- repo.storageFor(StoredLayout.class)
- .query("storableTypeName = ?").with(storableTypeName)
- .orderBy("-generation")
- .fetchSlice(0, 1L);
-
- try {
- // Must always return a result. Otherwise, no conflict existed in
- // the first place, indicating a bug.
- return cursor.next().getGeneration() + 1;
- } finally {
- cursor.close();
- }
-
- // TODO: also choose from highest equivalence
+ return LayoutFactory.nextGeneration(repo, storableTypeName);
}
- private Cursor<StoredLayout> findLayouts(Repository repo,
- String storableTypeName, int generation)
+ static Cursor<StoredLayout> findLayouts(Repository repo,
+ String storableTypeName, int generation)
throws RepositoryException
{
- // Query without using the index, in case it's inconsistent.
- return FilteredCursor.applyFilter
- (repo.storageFor(StoredLayout.class).query().fetch(),
- StoredLayout.class, "storableTypeName = ? & generation = ?",
- storableTypeName, generation);
+ return Layout.findLayouts(repo, storableTypeName, generation);
}
}