Modified: 
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/kernel/jpql/localizer.properties
 Fri Mar 13 23:20:45 2009
@@ -75,3 +75,5 @@
 not-type-literal: The specified node ("{0}") is not a valid entity type 
literal.
 bad-qualified-identifier: The identifier "{0}" in "{1}" operator is not \
     referring to an association field of type java.util.Map.
+bad-qualified-path: Attemp to navigate a basic type of Key("{0}").
+    
\ No newline at end of file

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex0/TestMany2ManyMap.java
 Fri Mar 13 23:20:45 2009
@@ -33,6 +33,7 @@
 import org.apache.openjpa.lib.jdbc.AbstractJDBCListener;
 import org.apache.openjpa.lib.jdbc.JDBCEvent;
 import org.apache.openjpa.lib.jdbc.JDBCListener;
+import org.apache.openjpa.persistence.ArgumentException;
 import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
 
@@ -64,9 +65,22 @@
     public void testQueryQualifiedId() throws Exception {
         EntityManager em = emf.createEntityManager();
 
-        String query = "select KEY(e) from PhoneNumber p, " +
+        // test navigation thru VALUE
+        String query = "select VALUE(e).empId from PhoneNumber p, " +
             " in (p.emps) e order by e.empId";
         List rs = em.createQuery(query).getResultList();
+
+        // test navigation thru KEY
+        query = "select KEY(e), KEY(e).name from PhoneNumber p, " +
+            " in (p.emps) e order by e.empId";
+        rs = em.createQuery(query).getResultList();
+        Division d0 = (Division) ((Object[]) rs.get(0))[0];
+        String name = (String)((Object[]) rs.get(0))[1];
+        assertEquals(d0.getName(), name);
+
+        query = "select KEY(e) from PhoneNumber p, " +
+            " in (p.emps) e order by e.empId";
+        rs = em.createQuery(query).getResultList();
         Division d = (Division) rs.get(0);
 
         String query2 = "select KEY(p) from Employee e, " +
@@ -93,6 +107,23 @@
         List rs5 = em.createQuery(query5).getResultList();
         assertEquals(Division.class, rs5.get(0));
 
+        // expects parser error:
+        // JPA2 has no support for predicate comparison using
+        // Key(e) or Value(e)
+        String query1 = "select KEY(p) from Employee e, " +
+            " in (e.phones) p where KEY(p) = ?1";
+        try {
+             List rs1 = em.createQuery(query1).setParameter(1, d2).
+                 getResultList();
+        } catch (Exception ex) {
+            assertException(ex, ArgumentException.class);
+        }
+
+        // test VALUE(e) IS NULL predicate
+        query2 = "select KEY(p) from Employee e, " +
+            " in (e.phones) p WHERE VALUE(p) IS NULL";
+        rs2 = em.createQuery(query2).getResultList();
+
         em.close();
     }
 

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex1/TestMany2ManyMapEx1.java
 Fri Mar 13 23:20:45 2009
@@ -90,6 +90,23 @@
 
         assertTrue(d.equals(me.getKey()));
 
+        // test navigation thru KEY
+        em.clear();
+        query = "select KEY(e), KEY(e).name from PhoneNumber p, " +
+            " in (p.emps) e order by e.empId";
+        rs = em.createQuery(query).getResultList();
+        Division d0 = (Division) ((Object[]) rs.get(0))[0];
+        String name = (String)((Object[]) rs.get(0))[1];
+        assertEquals(d0.getName(), name);
+
+        em.clear();
+        query2 = "select KEY(p), KEY(p).name from Employee e, " +
+            " in (e.phones) p";
+        rs2 = em.createQuery(query2).getResultList();
+        d2 = (Department) ((Object[]) rs2.get(0))[0];
+        String dname = (String) ((Object[]) rs2.get(0))[1];
+        assertEquals(d2.getName(), dname);
+
         em.close();
     }
 

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/EmployeePK.java
 Fri Mar 13 23:20:45 2009
@@ -34,6 +34,14 @@
         this.bDay = bDay;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public Date getBDay() {
+        return bDay;
+    }
+
     public boolean equals(Object o) {
         if (this == o)
             return true;

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/PhonePK.java
 Fri Mar 13 23:20:45 2009
@@ -33,6 +33,14 @@
         this.phoneNum = phoneNum;
     }
 
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public String getPhoneNum() {
+        return phoneNum;
+    }
+
     public boolean equals(Object o) {
         if (this == o)
             return true;

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex10/TestMany2ManyMapEx10.java
 Fri Mar 13 23:20:45 2009
@@ -89,6 +89,23 @@
 
         assertTrue(d.equals(me.getKey()));
 
+        // test navigation thru KEY
+        em.clear();
+        query = "select KEY(e), KEY(e).name from PhoneNumber p, " +
+            " in (p.emps) e";
+        rs = em.createQuery(query).getResultList();
+        EmployeePK d0 = (EmployeePK) ((Object[]) rs.get(0))[0];
+        String name = (String)((Object[]) rs.get(0))[1];
+        assertEquals(d0.getName(), name);
+
+        em.clear();
+        query2 = "select KEY(p), KEY(p).phoneNum from Employee e, " +
+            " in (e.phones) p";
+        rs2 = em.createQuery(query2).getResultList();
+        k = (PhonePK) ((Object[]) rs2.get(0))[0];
+        String phoneNum = (String) ((Object[]) rs2.get(0))[1];
+        assertEquals(k.getPhoneNum(), phoneNum);
+
         em.close();
     }
 

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/m2mmapex3/TestMany2ManyMapEx3.java
 Fri Mar 13 23:20:45 2009
@@ -84,6 +84,22 @@
 
         assertTrue(d.equals(me.getKey()));
 
+        // test navigation thru KEY
+        em.clear();
+        query = "select KEY(e), KEY(e).fName from PhoneNumber p, " +
+            " in (p.emps) e order by e.empId";
+        rs = em.createQuery(query).getResultList();
+        d = (FullName) ((Object[]) rs.get(0))[0];
+        String fname = (String) ((Object[]) rs.get(0))[1];
+        assertEquals(d.getFName(), fname);
+        
+        em.clear();
+        query2 = "select KEY(p), KEY(p).name from Employee e, " +
+            " in (e.phones) p";
+        rs2 = em.createQuery(query2).getResultList();
+        d2 = (Department) ((Object[]) rs2.get(0))[0];
+        String dname = (String) ((Object[]) rs2.get(0))[1];
+
         em.close();
     }
 

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/EmployeePK.java
 Fri Mar 13 23:20:45 2009
@@ -34,6 +34,14 @@
         this.bDay = bDay;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public Date getBDay() {
+        return bDay;
+    }
+
     public boolean equals(Object o) {
         if (this == o)
             return true;

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java?rev=753473&r1=753472&r2=753473&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex2/TestSpec10_1_26_Ex2.java
 Fri Mar 13 23:20:45 2009
@@ -61,10 +61,12 @@
 
     public void testQualifiedId() throws Exception {
         EntityManager em = emf.createEntityManager();
-        String query = "select KEY(e) from Department d, " +
+        String query = "select KEY(e), KEY(e).name from Department d, " +
             " in (d.empMap) e where d.deptId = 1";
         List rs = em.createQuery(query).getResultList(); 
-        EmployeePK d = (EmployeePK) rs.get(0);
+        EmployeePK d = (EmployeePK) ((Object[]) rs.get(0))[0];
+        String name = (String) ((Object[]) rs.get(0))[1];
+        assertEquals(d.getName(), name);
 
         em.clear();
         String query4 = "select ENTRY(e) from Department d, " +


Reply via email to