summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2010-08-06 15:13:47 -0700
committerShawn O. Pearce <sop@google.com>2010-08-06 15:53:25 -0700
commit3b2ae267196208c4207498aac0579398e170ea42 (patch)
treebdcf23013425c310fe73072cd340fb908c27ab2d
parent5f41fad97ef9f7b7ddd942fb59dcd24bdd3666e1 (diff)
downloadgwtorm-3b2ae267196208c4207498aac0579398e170ea42.tar.gz
Define getRelationID on Access
This helps callers that want to know what the identity is for a given relation when its wrapped up in a protobuf.x Change-Id: I5c0730a832c44be59a55f01cf93c1ff5ee9f0832 Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gwtorm/client/Access.java3
-rw-r--r--src/main/java/com/google/gwtorm/jdbc/AccessGen.java12
-rw-r--r--src/main/java/com/google/gwtorm/nosql/AccessGen.java12
-rw-r--r--src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java2
4 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/com/google/gwtorm/client/Access.java b/src/main/java/com/google/gwtorm/client/Access.java
index c989135..27a26f7 100644
--- a/src/main/java/com/google/gwtorm/client/Access.java
+++ b/src/main/java/com/google/gwtorm/client/Access.java
@@ -50,6 +50,9 @@ public interface Access<T extends Object, K extends Key<?>> {
/** @return the name of this relation. */
String getRelationName();
+ /** @return the id of this relation (if defined), otherwise 0. */
+ int getRelationID();
+
/**
* Iterate through all members of the relation.
*
diff --git a/src/main/java/com/google/gwtorm/jdbc/AccessGen.java b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
index 573e8d2..4be2247 100644
--- a/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
+++ b/src/main/java/com/google/gwtorm/jdbc/AccessGen.java
@@ -83,6 +83,7 @@ class AccessGen implements Opcodes {
implementConstructor();
implementGetString("getRelationName", model.getRelationName());
implementGetString("getInsertOneSql", model.getInsertOneSql(dialect));
+ implementGetRelationID();
if (model.getPrimaryKey() != null) {
if (model.getDependentColumns().isEmpty()) {
@@ -173,6 +174,17 @@ class AccessGen implements Opcodes {
mv.visitEnd();
}
+ private void implementGetRelationID() {
+ final MethodVisitor mv =
+ cw.visitMethod(ACC_PUBLIC | ACC_FINAL, "getRelationID", Type
+ .getMethodDescriptor(Type.INT_TYPE, new Type[] {}), null, null);
+ mv.visitCode();
+ new CodeGenSupport(mv).push(model.getRelationID());
+ mv.visitInsn(IRETURN);
+ mv.visitMaxs(-1, -1);
+ mv.visitEnd();
+ }
+
private void implementMissingGetString(final String methodName,
final String why) {
final MethodVisitor mv =
diff --git a/src/main/java/com/google/gwtorm/nosql/AccessGen.java b/src/main/java/com/google/gwtorm/nosql/AccessGen.java
index 71828c4..d2fffe7 100644
--- a/src/main/java/com/google/gwtorm/nosql/AccessGen.java
+++ b/src/main/java/com/google/gwtorm/nosql/AccessGen.java
@@ -97,6 +97,7 @@ class AccessGen implements Opcodes {
implementStaticFields();
implementConstructor();
implementGetString("getRelationName", model.getRelationName());
+ implementGetRelationID();
implementGetObjectCodec();
implementGetIndexes();
@@ -238,6 +239,17 @@ class AccessGen implements Opcodes {
mv.visitEnd();
}
+ private void implementGetRelationID() {
+ final MethodVisitor mv =
+ cw.visitMethod(ACC_PUBLIC | ACC_FINAL, "getRelationID", Type
+ .getMethodDescriptor(Type.INT_TYPE, new Type[] {}), null, null);
+ mv.visitCode();
+ new CodeGenSupport(mv).push(model.getRelationID());
+ mv.visitInsn(IRETURN);
+ mv.visitMaxs(-1, -1);
+ mv.visitEnd();
+ }
+
private void implementGetObjectCodec() {
final MethodVisitor mv =
cw.visitMethod(ACC_PUBLIC | ACC_FINAL, "getObjectCodec", Type
diff --git a/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java b/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
index 7c221b5..55fd759 100644
--- a/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
+++ b/src/test/java/com/google/gwtorm/server/PhoneBookDbTestCase.java
@@ -102,12 +102,14 @@ public class PhoneBookDbTestCase extends TestCase {
final PhoneBookDb schema = open();
assertNotNull(schema.people());
assertEquals("people", schema.people().getRelationName());
+ assertEquals(1, schema.people().getRelationID());
}
public void testGetAddressAccess() throws Exception {
final PhoneBookDb schema = open();
assertNotNull(schema.addresses());
assertEquals("addresses", schema.addresses().getRelationName());
+ assertEquals(2, schema.addresses().getRelationID());
}
public void testGetAllRelations() throws Exception {