diff options
Diffstat (limited to 'src/test/java')
3 files changed, 96 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index 3570e26..70cef19 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -1546,6 +1546,34 @@ public class TestStorables extends TestCase { assertEquals(0, query.with(0.2).count()); } + public void test_basicDerivedJoinIndex() throws Exception { + test_basicDerivedJoinIndex(getRepository()); + } + + protected void test_basicDerivedJoinIndex(Repository repo) throws Exception { + Storage<WithJoinIndex> storage1 = repo.storageFor(WithJoinIndex.class); + Storage<WithJoinIndex.Basic> storage2 = repo.storageFor(WithJoinIndex.Basic.class); + + WithJoinIndex.Basic basic = storage2.prepare(); + basic.setId(128120938); + basic.setIntProp(999); + basic.insert(); + + WithJoinIndex join = storage1.prepare(); + join.setId(1); + join.setBasic(basic); + join.insert(); + + join = storage1.query("intProp = ?").with(999).loadOne(); + + // Make sure delete does cause dependent properties to try load a + // missing joined object. + basic.delete(); + + join = storage1.query("intProp = ?").with(999).tryLoadOne(); + assertNull(join); + } + public void test_derivedJoinIndex() throws Exception { test_derivedJoinIndex(getRepository()); } diff --git a/src/test/java/com/amazon/carbonado/repo/jdbc/TestH2.java b/src/test/java/com/amazon/carbonado/repo/jdbc/TestH2.java index f7b5580..b1e8d09 100644 --- a/src/test/java/com/amazon/carbonado/repo/jdbc/TestH2.java +++ b/src/test/java/com/amazon/carbonado/repo/jdbc/TestH2.java @@ -69,6 +69,16 @@ public class TestH2 extends com.amazon.carbonado.TestStorables { }
@Override
+ public void test_basicDerivedJoinIndex() throws Exception {
+ // Needs to use custom indexing for this test to work.
+ IndexedRepositoryBuilder builder = new IndexedRepositoryBuilder();
+ builder.setWrappedRepository(jdbcBuilder(true));
+ Repository repo = builder.build();
+ test_basicDerivedJoinIndex(repo);
+ }
+
+
+ @Override
protected Repository buildRepository(boolean isMaster) throws RepositoryException {
return jdbcBuilder(isMaster).build();
}
diff --git a/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java b/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java new file mode 100644 index 0000000..17e6eff --- /dev/null +++ b/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java @@ -0,0 +1,58 @@ +/*
+ * Copyright 2009 Amazon Technologies, Inc. or its affiliates.
+ * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
+ * of Amazon Technologies, Inc. or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.amazon.carbonado.stored;
+
+import com.amazon.carbonado.*;
+
+/**
+ *
+ *
+ * @author Brian S O'Neill
+ */
+@PrimaryKey("id")
+@Indexes({@Index("intProp")})
+public abstract class WithJoinIndex implements Storable {
+ public abstract int getId();
+ public abstract void setId(int id);
+
+ public abstract int getBasicId();
+ public abstract void setBasicId(int id);
+
+ @Join(internal="basicId", external="id")
+ public abstract Basic getBasic() throws FetchException;
+ public abstract void setBasic(Basic basic);
+
+ @Derived(from="basic.intProp")
+ public int getIntProp() throws FetchException {
+ return getBasic().getIntProp();
+ }
+
+ @Alias("WITH_BASIC")
+ @PrimaryKey("id")
+ public static interface Basic extends Storable {
+ int getId();
+ void setId(int id);
+
+ int getIntProp();
+ void setIntProp(int anInt);
+
+ @Join(internal="id", external="basicId")
+ Query<WithJoinIndex> getParent() throws FetchException;
+ }
+}
|
