diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2006-12-01 05:02:37 +0000 | 
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2006-12-01 05:02:37 +0000 | 
| commit | ef2f79f1a20e9229736fedc7c7e27e8ebf032c99 (patch) | |
| tree | b6c50dcf4d8ae2f42750670687a67254a4450c9f | |
| parent | c085e4212d49561842e06c459c1e44c12d1630d6 (diff) | |
Add Storable to CorruptEncodingException when loading from index.
| -rw-r--r-- | pom.xml | 2 | ||||
| -rw-r--r-- | src/test/java/com/amazon/carbonado/layout/TestLayout.java | 51 | 
2 files changed, 52 insertions, 1 deletions
@@ -65,7 +65,7 @@      <dependency>
        <groupId>com.amazon.carbonado</groupId>
        <artifactId>carbonado</artifactId>
 -      <version>1.1-BETA5</version>
 +      <version>1.1-BETA6</version>
        <scope>test</scope>
      </dependency>
 diff --git a/src/test/java/com/amazon/carbonado/layout/TestLayout.java b/src/test/java/com/amazon/carbonado/layout/TestLayout.java index f1edef3..98df0ee 100644 --- a/src/test/java/com/amazon/carbonado/layout/TestLayout.java +++ b/src/test/java/com/amazon/carbonado/layout/TestLayout.java @@ -36,6 +36,7 @@ import org.cojen.util.BeanPropertyAccessor;  import org.cojen.util.ClassInjector;
  import com.amazon.carbonado.adapter.YesNoAdapter;
 +import com.amazon.carbonado.CorruptEncodingException;
  import com.amazon.carbonado.PrimaryKey;
  import com.amazon.carbonado.Repository;
  import com.amazon.carbonado.Storable;
 @@ -46,6 +47,8 @@ import com.amazon.carbonado.info.StorableIntrospector;  import com.amazon.carbonado.info.StorableProperty;
  import com.amazon.carbonado.info.StorablePropertyAdapter;
 +import com.amazon.carbonado.repo.sleepycat.BDBRepositoryBuilder;
 +
  import com.amazon.carbonado.stored.FileInfo;
  import com.amazon.carbonado.stored.StorableDateIndex;
  import com.amazon.carbonado.stored.StorableTestBasic;
 @@ -747,6 +750,54 @@ public class TestLayout extends TestCase {          }
      }
 +    public void testCorruption() throws Exception {
 +        // Forces corruption by deleting layout
 +        // record. CorruptEncodingException should include Storable.
 +
 +        // Create a persistent repository.
 +        mRepository.close();
 +        BDBRepositoryBuilder builder =
 +            (BDBRepositoryBuilder) TestUtilities.newTempRepositoryBuilder();
 +        System.out.println(builder.getEnvironmentHome());
 +        builder.setLogInMemory(false);
 +        mRepository = builder.build();
 +
 +        Class<? extends StorableTestMinimal> type =
 +            defineStorable(TEST_STORABLE_NAME, 0, TypeDesc.INT);
 +
 +        StorableTestMinimal test = mRepository.storageFor(type).prepare();
 +        test.setId(1);
 +        test.insert();
 +
 +        Class<? extends StorableTestMinimal> type2 =
 +            defineStorable(TEST_STORABLE_NAME, 1, TypeDesc.INT);
 +
 +        StorableTestMinimal test2 = mRepository.storageFor(type2).prepare();
 +        test2.setId(2);
 +        type2.getMethod("setProp0", int.class).invoke(test2, 10);
 +        test2.insert();
 +
 +        // Close and re-open.
 +        mRepository.close();
 +        mRepository = builder.build();
 +
 +        test = mRepository.storageFor(type).prepare();
 +        test.setId(1);
 +        test.load();
 +
 +        // Blow away layout data.
 +        mRepository.storageFor(StoredLayout.class).query().deleteAll();
 +
 +        test2 = mRepository.storageFor(type2).prepare();
 +        test2.setId(2);
 +        try {
 +            test2.load();
 +            fail();
 +        } catch (CorruptEncodingException e) {
 +            assertEquals(test2, e.getStorableWithPrimaryKey());
 +        }
 +    }
 +
      private void compareInfo(StorableInfo expected, StorableInfo actual) {
          Map<String, StorableProperty> expectedProps = expected.getAllProperties();
          Map<String, StorableProperty> actualProps = actual.getAllProperties();
  | 
