diff options
Diffstat (limited to 'src/main/java/com/amazon')
4 files changed, 23 insertions, 5 deletions
diff --git a/src/main/java/com/amazon/carbonado/layout/Layout.java b/src/main/java/com/amazon/carbonado/layout/Layout.java index d127835..62e29f2 100644 --- a/src/main/java/com/amazon/carbonado/layout/Layout.java +++ b/src/main/java/com/amazon/carbonado/layout/Layout.java @@ -420,7 +420,7 @@ public class Layout {              mStoredLayout.update();
          }
          for (LayoutProperty property : mAllProperties) {
 -            property.insert();
 +            property.store();
          }
      }
  }
 diff --git a/src/main/java/com/amazon/carbonado/layout/LayoutProperty.java b/src/main/java/com/amazon/carbonado/layout/LayoutProperty.java index 4a7dea1..a0ce48f 100644 --- a/src/main/java/com/amazon/carbonado/layout/LayoutProperty.java +++ b/src/main/java/com/amazon/carbonado/layout/LayoutProperty.java @@ -185,7 +185,9 @@ public class LayoutProperty {          return mStoredLayoutProperty.toString();
      }
 -    void insert() throws PersistException {
 -        mStoredLayoutProperty.insert();
 +    void store() throws PersistException {
 +        if (!mStoredLayoutProperty.tryInsert()) {
 +            mStoredLayoutProperty.update();
 +        }
      }
  }
 diff --git a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java index cac1283..8113b32 100644 --- a/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java +++ b/src/main/java/com/amazon/carbonado/raw/GenericStorableCodec.java @@ -124,6 +124,7 @@ public class GenericStorableCodec<S extends Storable> implements StorableCodec<S          cf.setTarget("1.5");
          // Declare some types.
 +        final TypeDesc storableType = TypeDesc.forClass(Storable.class);
          final TypeDesc rawSupportType = TypeDesc.forClass(RawSupport.class);
          final TypeDesc byteArrayType = TypeDesc.forClass(byte[].class);
          final TypeDesc[] byteArrayParam = {byteArrayType};
 @@ -285,13 +286,28 @@ public class GenericStorableCodec<S extends Storable> implements StorableCodec<S              haveCodec.setLocation();
              b.checkCast(codecType);
              b.loadLocal(actualGeneration);
 +            Label tryStartDecode = b.createLabel().setLocation();
              b.invokeVirtual(codecType, "getDecoder", decoderType, new TypeDesc[] {TypeDesc.INT});
              b.loadThis();
              b.loadLocal(b.getParameter(0));
              b.invokeInterface(decoderType, "decode", null,
 -                              new TypeDesc[] {TypeDesc.forClass(Storable.class), byteArrayType});
 +                              new TypeDesc[] {storableType, byteArrayType});
 +            Label tryEndDecode = b.createLabel().setLocation();
              b.returnVoid();
 +
 +            // If unable to decode, fill out exception.
 +            b.exceptionHandler(tryStartDecode, tryEndDecode,
 +                               CorruptEncodingException.class.getName());
 +            TypeDesc exType = TypeDesc.forClass(CorruptEncodingException.class);
 +            LocalVariable exVar = b.createLocalVariable(null, TypeDesc.OBJECT);
 +            b.storeLocal(exVar);
 +            b.loadLocal(exVar);
 +            b.loadThis();
 +            b.invokeVirtual(exType, "setStorableWithPrimaryKey", null,
 +                            new TypeDesc[] {storableType});
 +            b.loadLocal(exVar);
 +            b.throwObject();
          }
          return ci.defineClass(cf);
 diff --git a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepositoryBuilder.java b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepositoryBuilder.java index 695f520..28123a3 100644 --- a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepositoryBuilder.java +++ b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepositoryBuilder.java @@ -512,7 +512,7 @@ public class BDBRepositoryBuilder extends AbstractRepositoryBuilder {       * ever persisted.
       */
      public void setLogInMemory(boolean logInMemory) {
 -        mLogInMemory = true;
 +        mLogInMemory = logInMemory;
      }
      /**
  | 
