summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado/layout/Layout.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/amazon/carbonado/layout/Layout.java')
-rw-r--r--src/main/java/com/amazon/carbonado/layout/Layout.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/main/java/com/amazon/carbonado/layout/Layout.java b/src/main/java/com/amazon/carbonado/layout/Layout.java
index f784e84..d127835 100644
--- a/src/main/java/com/amazon/carbonado/layout/Layout.java
+++ b/src/main/java/com/amazon/carbonado/layout/Layout.java
@@ -408,7 +408,17 @@ public class Layout {
throw new IllegalStateException();
}
mStoredLayout.setGeneration(generation);
- mStoredLayout.insert();
+ if (!mStoredLayout.tryInsert()) {
+ StoredLayout existing = mLayoutFactory.mLayoutStorage.prepare();
+ mStoredLayout.copyPrimaryKeyProperties(existing);
+ try {
+ existing.load();
+ } catch (FetchException e) {
+ throw e.toPersistException();
+ }
+ mStoredLayout.setVersionNumber(existing.getVersionNumber());
+ mStoredLayout.update();
+ }
for (LayoutProperty property : mAllProperties) {
property.insert();
}