summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/amazon/carbonado/TestStorables.java28
-rw-r--r--src/test/java/com/amazon/carbonado/repo/jdbc/TestH2.java10
-rw-r--r--src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java58
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;
+ }
+}