You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2018/11/04 18:37:24 UTC

svn commit: r1845744 [1/9] - in /db/jdo/trunk: copyjdorijars/ tck/ tck/src/main/java/org/apache/jdo/tck/pc/company/ tck/src/main/java/org/apache/jdo/tck/pc/mylib/ tck/src/main/java/org/apache/jdo/tck/query/ tck/src/main/java/org/apache/jdo/tck/query/de...

Author: mbo
Date: Sun Nov  4 18:37:24 2018
New Revision: 1845744

URL: http://svn.apache.org/viewvc?rev=1845744&view=rev
Log:
JDO-652: extending existing query test cases to run the JDOQLTypedQuery version of the test cases

Modified:
    db/jdo/trunk/copyjdorijars/pom.xml
    db/jdo/trunk/tck/pom.xml
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Company.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/DentalInsurance.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Department.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Employee.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Insurance.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MedicalInsurance.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MeetingRoom.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Person.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Project.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/PrimitiveTypes.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/VersionedPCPoint.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryElementHolder.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryTest.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Cast.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/CharacterAndStringLiterals.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingCollectionFieldToNull.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingPersistentAndNonPersistentInstance.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/DenoteUniquenessInFilter.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Having.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/IdentifiersEqualFieldNames.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/IfElseInFilter.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/MultipleIdenticalImports.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NavigationComparisonWithNull.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NavigationThroughACollectionField.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NavigationThroughANullValuedField.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NavigationThroughReferencesUsesDotOperator.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndContainsMethod.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/NullCollectionsAndIsEmpty.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/OrderingSpecification.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/RangeAsString.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/SeparateNamespaceForTypeNames.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/keywords/SingleString.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/StartsWithAndEndsWith.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedCollectionMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedDateMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedJDOHelperMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedListMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedMapMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedMathMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedOptionalMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/methods/SupportedStringMethods.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/operators/EqualityAndComparisonsBetweenDateFieldsAndParameters.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/operators/EqualityAndComparisonsBetweenStringFieldsAndParameters.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/operators/Instanceof.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/operators/Modulo.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/operators/StringConcatenation.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/parameters/ImplicitParameters.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/parameters/OrderOfParameters.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/variables/UnconstrainedVariable.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/variables/VariablesAndFields.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/variables/VariablesWithoutExtent.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/AggregateResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/DefaultResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/DistinctCandidateInstances.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/DistinctQuery.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/Grouping.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/IfElseResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/MethodsInResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/NPEInResultExpr.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/NullResults.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/ResultClassRequirements.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/ResultExpressions.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/ShapeOfResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/Unique.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/VariableInResult.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/VariableInResultMultipleNavigation.java
    db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/result/VariableInResultNavigation.java
    db/jdo/trunk/tck/src/main/resources/conf/jdo-signatures.txt

Modified: db/jdo/trunk/copyjdorijars/pom.xml
URL: http://svn.apache.org/viewvc/db/jdo/trunk/copyjdorijars/pom.xml?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/copyjdorijars/pom.xml (original)
+++ db/jdo/trunk/copyjdorijars/pom.xml Sun Nov  4 18:37:24 2018
@@ -93,22 +93,31 @@
     <dependency>
       <groupId>org.datanucleus</groupId>
       <artifactId>datanucleus-core</artifactId>
-      <version>5.1.9</version>
+      <version>5.1.13-SNAPSHOT</version>
+      <!--<version>5.2.0-m2-SNAPSHOT</version>-->  
     </dependency>
     <dependency>
       <groupId>org.datanucleus</groupId>
       <artifactId>datanucleus-rdbms</artifactId>
-      <version>5.1.9</version>
+      <version>5.1.12-SNAPSHOT</version>
+      <!--<version>5.2.0-m2-SNAPSHOT</version> -->  
     </dependency>
     <dependency>
       <groupId>org.datanucleus</groupId>
       <artifactId>datanucleus-api-jdo</artifactId>
-      <version>5.1.6</version>
+      <version>5.1.10-SNAPSHOT</version>
+      <!--<version>5.2.0-m2-SNAPSHOT</version> -->  
+    </dependency>
+    <dependency>
+      <groupId>org.datanucleus</groupId>
+      <artifactId>datanucleus-jdo-query</artifactId>
+      <version>5.0.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>org.datanucleus</groupId>
       <artifactId>datanucleus-api-jpa</artifactId>
-      <version>5.1.6</version>
+      <version>5.1.10-SNAPSHOT</version>
+      <!--<version>5.2.0-m2-SNAPSHOT</version>-->  
     </dependency>
     <dependency>
       <groupId>log4j</groupId>

Modified: db/jdo/trunk/tck/pom.xml
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/pom.xml?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/pom.xml (original)
+++ db/jdo/trunk/tck/pom.xml Sun Nov  4 18:37:24 2018
@@ -123,10 +123,17 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
-<!--        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-        </dependency>-->
+        <dependency>
+            <groupId>org.datanucleus</groupId>
+            <artifactId>datanucleus-api-jdo</artifactId>
+	    <version>5.1.10-SNAPSHOT</version>
+            <!--<version>5.2.0-m2-SNAPSHOT</version>-->
+        </dependency>
+        <dependency>
+            <groupId>org.datanucleus</groupId>
+            <artifactId>datanucleus-jdo-query</artifactId>
+            <version>5.0.8-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Company.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Company.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Company.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Company.java Sun Nov  4 18:37:24 2018
@@ -32,10 +32,13 @@ import java.util.Date;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents information about a company.
  */
-public class Company 
+@PersistenceCapable
+public class Company
     implements ICompany, Serializable, Comparable, Comparator, DeepEquality {
 
     private long        companyid;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/DentalInsurance.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/DentalInsurance.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/DentalInsurance.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/DentalInsurance.java Sun Nov  4 18:37:24 2018
@@ -22,10 +22,13 @@ import java.math.BigDecimal;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a dental insurance carrier selection for a
  * particular <code>Employee</code>.
  */
+@PersistenceCapable
 public class DentalInsurance extends Insurance implements IDentalInsurance {
 
     private BigDecimal lifetimeOrthoBenefit;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Department.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Department.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Department.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Department.java Sun Nov  4 18:37:24 2018
@@ -31,9 +31,12 @@ import java.util.Set;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a department within a company.
  */
+@PersistenceCapable
 public class Department
     implements IDepartment, Serializable, Comparable, Comparator, DeepEquality {
 

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Employee.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Employee.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Employee.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Employee.java Sun Nov  4 18:37:24 2018
@@ -25,12 +25,14 @@ import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
-import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents an employee.
  */
+@PersistenceCapable
 public abstract class Employee extends Person implements IEmployee {
 
     private Date             hiredate;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/FullTimeEmployee.java Sun Nov  4 18:37:24 2018
@@ -19,12 +19,14 @@ package org.apache.jdo.tck.pc.company;
 
 import java.util.Date;
 
-import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a full-time employee.
  */
+@PersistenceCapable
 public class FullTimeEmployee extends Employee implements IFullTimeEmployee {
 
     private double  salary;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Insurance.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Insurance.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Insurance.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Insurance.java Sun Nov  4 18:37:24 2018
@@ -24,11 +24,14 @@ import java.util.Comparator;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents an insurance carrier selection for a particular
  * <code>Employee</code>.
  */
-public abstract class Insurance 
+@PersistenceCapable
+public abstract class Insurance
     implements IInsurance, Serializable, Comparable, Comparator, DeepEquality  {
 
     private long     insid;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MedicalInsurance.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MedicalInsurance.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MedicalInsurance.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MedicalInsurance.java Sun Nov  4 18:37:24 2018
@@ -22,10 +22,13 @@ import java.io.Serializable;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a dental insurance carrier selection for a
  * particular <code>Employee</code>.
  */
+@PersistenceCapable
 public class MedicalInsurance extends Insurance implements IMedicalInsurance {
 
     private String planType; // possible values: "PPO", "EPO", "NPO" 

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MeetingRoom.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MeetingRoom.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MeetingRoom.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/MeetingRoom.java Sun Nov  4 18:37:24 2018
@@ -23,10 +23,13 @@ import java.util.Comparator;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a meeting room.
  */
-public class MeetingRoom 
+@PersistenceCapable
+public class MeetingRoom
     implements IMeetingRoom, Serializable, Comparable, Comparator, DeepEquality {
 
     private long    roomid;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Person.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Person.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Person.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Person.java Sun Nov  4 18:37:24 2018
@@ -31,10 +31,13 @@ import java.util.Map;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a person.
  */
-public class Person 
+@PersistenceCapable
+public class Person
     implements IPerson, Serializable, Comparable, Comparator, DeepEquality  {
 
     private long    personid;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Project.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Project.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Project.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/company/Project.java Sun Nov  4 18:37:24 2018
@@ -30,11 +30,14 @@ import java.math.BigDecimal;
 import org.apache.jdo.tck.util.DeepEquality;
 import org.apache.jdo.tck.util.EqualityHelper;
 
+import javax.jdo.annotations.PersistenceCapable;
+
 /**
  * This class represents a project, a budgeted task with one or more
  * employees working on it.
  */
-public class Project 
+@PersistenceCapable
+public class Project
     implements IProject, Serializable, Comparable, Comparator, DeepEquality  {
 
     private long       projid;

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/PrimitiveTypes.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/PrimitiveTypes.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/PrimitiveTypes.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/PrimitiveTypes.java Sun Nov  4 18:37:24 2018
@@ -17,11 +17,13 @@
  
 package org.apache.jdo.tck.pc.mylib;
 
+import javax.jdo.annotations.PersistenceCapable;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.Date;
 
+@PersistenceCapable
 public class PrimitiveTypes implements Serializable {
 
     private static long counter = new Date().getTime();

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/VersionedPCPoint.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/VersionedPCPoint.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/VersionedPCPoint.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/pc/mylib/VersionedPCPoint.java Sun Nov  4 18:37:24 2018
@@ -17,6 +17,7 @@
  
 package org.apache.jdo.tck.pc.mylib;
 
+import javax.jdo.annotations.PersistenceCapable;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -25,6 +26,7 @@ import java.util.Date;
 *
 * @author Marina Vatkina
 */
+@PersistenceCapable
 public class VersionedPCPoint implements Serializable {
     
     

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryElementHolder.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryElementHolder.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryElementHolder.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryElementHolder.java Sun Nov  4 18:37:24 2018
@@ -18,8 +18,10 @@
 package org.apache.jdo.tck.query;
 
 import javax.jdo.Extent;
+import javax.jdo.JDOQLTypedQuery;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
+import java.util.Map;
 
 /**
  * This class is an abstraction of a JDOQL query,
@@ -56,6 +58,8 @@ public class QueryElementHolder {
     private String toString;
     private Long   fromLong;
     private Long   toLong;
+    private JDOQLTypedQuery<?> jdoqlTypedQuery;
+    private Map<String, ?> paramValues;
     
     /**
      * Returns an instance of this class holding the given arguments
@@ -103,7 +107,58 @@ public class QueryElementHolder {
         this.fromString = from;
         this.toString = to;
     }
-    
+
+    /**
+     * Returns an instance of this class holding the given arguments
+     * such as the candidate class, the filter, etc.
+     * The given arguments represent JDOQL query elements.
+     * It is valid to pass <code>null</code> as a value
+     * for JDOQL querys elements. Such elements are not transfered into a
+     * JDO {@link javax.jdo.Query} instance.
+     * Instead, the default of JDO {@link javax.jdo.Query} instance is taken.
+     * @param unique the JDOQL unique query element
+     * @param result the JDOQL result query element
+     * @param resultClass the JDOQL result class query element
+     * @param candidateClass the JDOQL candidate class query element
+     * @param excludeSubClasses the JDOQL exclude subclasses query element
+     * @param filter the JDOQL filter query element
+     * @param variables the JDOQL variables query element
+     * @param parameters the JDOQL parameters query element
+     * @param imports the JDOQL imports query element
+     * @param grouping the JDOQL grouping query element
+     * @param ordering the JDOQL ordering query element
+     * @param from the JDOQL range from query element
+     * @param to the JDOQL range to query element
+     */
+    public QueryElementHolder(Boolean unique, String result,
+                              Class resultClass, Class candidateClass,
+                              Boolean excludeSubClasses, String filter,
+                              String variables, String parameters, String imports,
+                              String grouping, String ordering, String from, String to,
+                              JDOQLTypedQuery<?> jdoqlTypedQuery,
+                              Map<String, ?> paramValues) {
+        if (from == null ^ to == null) {
+            throw new IllegalArgumentException(
+                    "Arguments from and to must both be null, " +
+                            "or must not be null both.");
+        }
+        this.unique = unique;
+        this.result = result;
+        this.resultClass = resultClass;
+        this.candidateClass = candidateClass;
+        this.excludeSubClasses = excludeSubClasses;
+        this.filter = filter;
+        this.variables = variables;
+        this.parameters = parameters;
+        this.imports = imports;
+        this.grouping = grouping;
+        this.ordering = ordering;
+        this.fromString = from;
+        this.toString = to;
+        this.jdoqlTypedQuery = jdoqlTypedQuery;
+        this.paramValues = paramValues;
+    }
+
     /**
      * Returns an instance of this class holding the given arguments
      * such as the candidate class, the filter, etc. 
@@ -145,6 +200,52 @@ public class QueryElementHolder {
         this.fromLong = new Long(from);
         this.toLong = new Long(to);
     }
+
+    /**
+     * Returns an instance of this class holding the given arguments
+     * such as the candidate class, the filter, etc.
+     * The given arguments represent JDOQL query elements.
+     * It is valid to pass <code>null</code> as a value
+     * for JDOQL querys elements. Such elements are not transfered into a
+     * JDO {@link javax.jdo.Query} instance.
+     * Instead, the default of JDO {@link javax.jdo.Query} instance is taken.
+     * @param unique the JDOQL unique query element
+     * @param result the JDOQL result query element
+     * @param resultClass the JDOQL result class query element
+     * @param candidateClass the JDOQL candidate class query element
+     * @param excludeSubClasses the JDOQL exclude subclasses query element
+     * @param filter the JDOQL filter query element
+     * @param variables the JDOQL variables query element
+     * @param parameters the JDOQL parameters query element
+     * @param imports the JDOQL imports query element
+     * @param grouping the JDOQL grouping query element
+     * @param ordering the JDOQL ordering query element
+     * @param from the JDOQL from query element
+     * @param to the JDOQL to query element
+     */
+    public QueryElementHolder(Boolean unique, String result,
+                              Class resultClass, Class candidateClass,
+                              Boolean excludeSubClasses, String filter,
+                              String variables, String parameters, String imports,
+                              String grouping, String ordering, long from, long to,
+                              JDOQLTypedQuery<?> jdoqlTypedQuery,
+                              Map<String, ?> paramValues) {
+        this.unique = unique;
+        this.result = result;
+        this.resultClass = resultClass;
+        this.candidateClass = candidateClass;
+        this.excludeSubClasses = excludeSubClasses;
+        this.filter = filter;
+        this.variables = variables;
+        this.parameters = parameters;
+        this.imports = imports;
+        this.grouping = grouping;
+        this.ordering = ordering;
+        this.fromLong = new Long(from);
+        this.toLong = new Long(to);
+        this.jdoqlTypedQuery = jdoqlTypedQuery;
+        this.paramValues = paramValues;
+    }
     
     /**
      * Returns the single string JDOQL representation.
@@ -226,7 +327,18 @@ public class QueryElementHolder {
         rangeToAPI(query);
         return query;
     }
-    
+
+    /**
+     * Returns the JDOQLTypedQuery instance.
+     * @return the JDOQLTypedQuery instance
+     */
+    public JDOQLTypedQuery<?> getJDOQLTypedQuery() {
+        if (this.jdoqlTypedQuery != null) {
+            this.rangeToJDOQLTypedQuery(this.jdoqlTypedQuery);
+        }
+        return this.jdoqlTypedQuery;
+    }
+
     /**
      * Returns the unique JDOQL query element.
      * @return the unique JDOQL query element.
@@ -252,6 +364,14 @@ public class QueryElementHolder {
     }
 
     /**
+     * Returns the map of parameter values.
+     * @return the map of parameter values
+     */
+    public Map<String, ?> getParamValues() {
+        return this.paramValues;
+    }
+
+    /**
      * Delegates to {@link QueryElementHolder#toString(String, String)
      * if argument <code>clazz</code> does not equal <code>null</code>,
      * otherwise returns an empty string.
@@ -334,4 +454,17 @@ public class QueryElementHolder {
             query.setRange(this.fromLong.longValue(), this.toLong.longValue());
         }
     }
+
+    /**
+     * Call JDOQLTypedQuery API method {@link javax.jdo.JDOQLTypedQuery#range(long, long)}.
+     * @param query the JDOQLTypedQuery instance
+     */
+    private void rangeToJDOQLTypedQuery(JDOQLTypedQuery query) {
+        if (this.fromString != null && this.toString != null) {
+            query.range(Long.parseLong(this.fromString),  Long.parseLong(this.toString));
+        }
+        else if (this.fromLong != null && this.toLong != null) {
+            query.range(this.fromLong.longValue(), this.toLong.longValue());
+        }
+    }
 }

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryTest.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryTest.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryTest.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/QueryTest.java Sun Nov  4 18:37:24 2018
@@ -29,6 +29,8 @@ import java.util.List;
 import java.util.Map;
 
 import javax.jdo.JDOException;
+import javax.jdo.JDOFatalInternalException;
+import javax.jdo.JDOQLTypedQuery;
 import javax.jdo.JDOUserException;
 import javax.jdo.PersistenceManager;
 import javax.jdo.Query;
@@ -1046,28 +1048,10 @@ public abstract class QueryTest extends
      */
     protected void executeAPIQuery(String assertion,
             QueryElementHolder queryElementHolder, Object expectedResult) {
-        executeAPIQuery(assertion, queryElementHolder, null, expectedResult);
-    }
-
-    /**
-     * Executes the given query element holder instance as a JDO API query.
-     * The result of that query is compared against the given argument 
-     * <code>expectedResult</code>. 
-     * If the expected result does not match the returned query result,
-     * then the test case fails prompting argument <code>assertion</code>.
-     * @param assertion the assertion to prompt if the test case fails.
-     * @param queryElementHolder the query to execute.
-     * @param parameters the parmaters of the query.
-     * @param expectedResult the expected query result.
-     */
-    protected void executeAPIQuery(String assertion,
-            QueryElementHolder queryElementHolder, 
-            Object[] parameters, Object expectedResult) {
         if (logger.isDebugEnabled()) {
             logger.debug("Executing API query: " + queryElementHolder);
         }
-        execute(assertion, queryElementHolder, false, 
-                parameters, expectedResult);
+        execute(assertion, queryElementHolder, false, expectedResult);
     }
     
     /**
@@ -1083,30 +1067,87 @@ public abstract class QueryTest extends
      */
     protected void executeSingleStringQuery(String assertion,
             QueryElementHolder queryElementHolder, Object expectedResult) {
-        executeSingleStringQuery(assertion, queryElementHolder, 
-                null, expectedResult);
+        if (logger.isDebugEnabled())
+            logger.debug("Executing single string query: " +
+                    queryElementHolder);
+        execute(assertion, queryElementHolder, true, expectedResult);
     }
-    
+
     /**
-     * Executes the given query element holder instance 
-     * as a JDO single string query.
-     * The result of that query is compared against the given argument 
-     * <code>expectedResult</code>. 
-     * If the expected result does not match the returned query result,
-     * then the test case fails prompting argument <code>assertion</code>.
-     * @param assertion the assertion to prompt if the test case fails.
-     * @param queryElementHolder the query to execute.
-     * @param parameters the parmaters of the query.
-     * @param expectedResult the expected query result.
+     * 
+     * @param assertion
+     * @param queryElementHolder
+     * @param expectedResult
      */
-    protected void executeSingleStringQuery(String assertion,
-            QueryElementHolder queryElementHolder, 
-            Object[] parameters, Object expectedResult) {
-        if (logger.isDebugEnabled())
-            logger.debug("Executing single string query: " + 
-                    queryElementHolder);
-        execute(assertion, queryElementHolder, true, 
-                parameters, expectedResult);
+    protected void executeJDOQLTypedQuery(String assertion, QueryElementHolder queryElementHolder,
+                                          Object expectedResult) {
+        executeJDOQLTypedQuery(assertion, queryElementHolder, null, expectedResult);
+    }
+
+    /**
+     *
+     * @param assertion
+     * @param queryElementHolder
+     * @param resultClass
+     * @param expectedResult
+     */
+    protected void executeJDOQLTypedQuery(String assertion, QueryElementHolder queryElementHolder,
+                                          Class<?> resultClass, Object expectedResult) {
+        String singleStringQuery = queryElementHolder.toString();
+        getPM();
+        Transaction tx = pm.currentTransaction();
+        tx.begin();
+        try {
+            JDOQLTypedQuery<?> query = queryElementHolder.getJDOQLTypedQuery();
+            if (query == null) {
+                throw new JDOFatalInternalException("Missing JDOQLTyped instance");
+            }
+            Object result = null;
+            try {
+                Map<String, ?> paramValues = queryElementHolder.getParamValues();
+                if (paramValues != null) {
+                    query.setParameters(paramValues);
+                }
+
+                if (resultClass != null) {
+                    if (queryElementHolder.isUnique()) {
+                        // result class specified and unique result
+                        result = query.executeResultUnique(resultClass);
+                    } else {
+                        // result class specified and list result
+                        result = query.executeResultList(resultClass);
+                    }
+                } else {
+                    if (queryElementHolder.isUnique()) {
+                        // no result class and unique result
+                        result = query.executeUnique();
+                    } else {
+                        // no result class and list result
+                        result = query.executeList();
+                    }
+                }
+
+                if (logger.isDebugEnabled()) {
+                    logger.debug("Query result: " + ConversionHelper.
+                            convertObjectArrayElements(result));
+                }
+
+                checkResult(assertion, singleStringQuery, queryElementHolder.hasOrdering(),
+                        result, expectedResult, true);
+            } finally {
+                query.close(result);
+            }
+        } catch (JDOUserException e) {
+            String msg = "JDOUserException thrown while executing query:\n" + singleStringQuery;
+            throw new JDOException(msg, e);
+        } catch (JDOException e) {
+            String msg = "JDOException thrown while executing query:\n" + singleStringQuery;
+            throw new JDOException(msg, e);
+        } finally {
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
 
     /**
@@ -1119,20 +1160,18 @@ public abstract class QueryTest extends
      * @param queryElementHolder the query to execute.
      * @param asSingleString determines if the query is executed as
      * single string query or as API query.
-     * @param parameters the parmaters of the query.
      * @param expectedResult the expected query result.
      * @return the query result
      */
-    private Object execute(String assertion, 
-            QueryElementHolder queryElementHolder, boolean asSingleString,
-            Object parameters, Object expectedResult) {
+    private Object execute(String assertion, QueryElementHolder queryElementHolder,
+                           boolean asSingleString, Object expectedResult) {
         getPM();
         Query query = asSingleString ?
                 queryElementHolder.getSingleStringQuery(pm) :
                     queryElementHolder.getAPIQuery(pm);
         Object result = execute(assertion, query, 
                 queryElementHolder.toString(), 
-                queryElementHolder.hasOrdering(), parameters, 
+                queryElementHolder.hasOrdering(), queryElementHolder.getParamValues(),
                 expectedResult, true);
         return result;
     }
@@ -1285,18 +1324,8 @@ public abstract class QueryTest extends
                         convertObjectArrayElements(result));
                 }
     
-                if (positive) {
-                    if (hasOrdering) {
-                        checkQueryResultWithOrder(assertion, singleStringQuery, result, 
-                                expectedResult);
-                    } else {
-                        checkQueryResultWithoutOrder(assertion, singleStringQuery, result, 
-                                expectedResult);
-                    }
-                } else {
-                    fail(assertion, "Query must throw JDOUserException: " + 
-                            singleStringQuery);
-                }
+                checkResult(assertion, singleStringQuery, hasOrdering, result, expectedResult, positive);
+
             } finally {
                 query.close(result);
             }
@@ -1319,6 +1348,31 @@ public abstract class QueryTest extends
     }
 
     /**
+     * @param assertion the assertion to prompt if the test case fails.
+     * @param singleStringQuery the single string representation of the query.
+     * This parameter is only used as part of the falure message.
+     * @param hasOrdering indicates if the query has an ordering clause.
+     * @param positive indicates if query execution is supposed to fail
+     * @param result the query result.
+     * @param expectedResult the expected query result.
+    */
+    private void checkResult(String assertion, String singleStringQuery, boolean hasOrdering,
+                             Object result, Object expectedResult, boolean positive) {
+        if (positive) {
+            if (hasOrdering) {
+                checkQueryResultWithOrder(assertion, singleStringQuery, result,
+                        expectedResult);
+            } else {
+                checkQueryResultWithoutOrder(assertion, singleStringQuery, result,
+                        expectedResult);
+            }
+        } else {
+            fail(assertion, "Query must throw JDOUserException: " +
+                    singleStringQuery);
+        }
+    }
+
+    /**
      * Converts the given query element holder instance to a
      * JDO query instance.
      * Calls {@link Query#deletePersistentAll()}, or
@@ -1330,18 +1384,16 @@ public abstract class QueryTest extends
      * then the test case fails prompting argument <code>assertion</code>.
      * @param assertion the assertion to prompt if the test case fails.
      * @param queryElementHolder the query to execute.
-     * @param parameters the parmaters of the query.
      * @param expectedNrOfDeletedObjects the expected number of deleted objects.
      */
     protected void deletePersistentAllByAPIQuery(String assertion,
             QueryElementHolder queryElementHolder, 
-            Object parameters, long expectedNrOfDeletedObjects) {
+            long expectedNrOfDeletedObjects) {
         if (logger.isDebugEnabled()) {
             logger.debug("Deleting persistent by API query: " + 
                     queryElementHolder);
         }
-        delete(assertion, queryElementHolder, false, 
-                parameters, expectedNrOfDeletedObjects);
+        delete(assertion, queryElementHolder, false, expectedNrOfDeletedObjects);
     }
     
     /**
@@ -1356,18 +1408,15 @@ public abstract class QueryTest extends
      * then the test case fails prompting argument <code>assertion</code>.
      * @param assertion the assertion to prompt if the test case fails.
      * @param queryElementHolder the query to execute.
-     * @param parameters the parmaters of the query.
      * @param expectedNrOfDeletedObjects the expected number of deleted objects.
      */
     protected void deletePersistentAllBySingleStringQuery(String assertion,
-            QueryElementHolder queryElementHolder, 
-            Object parameters, long expectedNrOfDeletedObjects) {
+            QueryElementHolder queryElementHolder, long expectedNrOfDeletedObjects) {
         if (logger.isDebugEnabled()) {
             logger.debug("Deleting persistent by single string query: " + 
                     queryElementHolder);
         }
-        delete(assertion, queryElementHolder, true, 
-                parameters, expectedNrOfDeletedObjects);
+        delete(assertion, queryElementHolder, true, expectedNrOfDeletedObjects);
     }
 
     /**
@@ -1388,17 +1437,16 @@ public abstract class QueryTest extends
      * @param expectedNrOfDeletedObjects the expected number of deleted objects.
      */
     private void delete(String assertion, 
-            QueryElementHolder queryElementHolder, boolean asSingleString,
-            Object parameters, long expectedNrOfDeletedObjects) {
+            QueryElementHolder queryElementHolder, boolean asSingleString, long expectedNrOfDeletedObjects) {
         getPM();
         Query query = asSingleString ?
                 queryElementHolder.getSingleStringQuery(pm) :
                     queryElementHolder.getAPIQuery(pm);
         delete(assertion, query, queryElementHolder.toString(), 
-                parameters, expectedNrOfDeletedObjects);
+                queryElementHolder.getParamValues(), expectedNrOfDeletedObjects);
         boolean positive = expectedNrOfDeletedObjects >= 0;
         if (positive) {
-            execute(assertion, queryElementHolder, asSingleString, parameters, 
+            execute(assertion, queryElementHolder, asSingleString,
                     queryElementHolder.isUnique() ? null : new ArrayList());
         }
     }

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeletePersistentAll.java Sun Nov  4 18:37:24 2018
@@ -23,10 +23,12 @@ import java.util.Map;
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Insurance;
-import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
+import javax.jdo.Query;
+import javax.jdo.Transaction;
+
 /**
  *<B>Title:</B> Delete Persistent All.
  *<BR>
@@ -50,41 +52,6 @@ public class DeletePersistentAll extends
     private static final String ASSERTION_FAILED = 
         "Assertion A14.8-1 (DeletePersistentAll) failed: ";
     
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        Insurance.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       null,
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        Insurance.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "carrier == param",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  "String param",
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
     /**
      * The <code>main</code> is called when the class
      * is directly executed from the command line.
@@ -93,47 +60,179 @@ public class DeletePersistentAll extends
     public static void main(String[] args) {
         BatchTestRunner.run(DeletePersistentAll.class);
     }
-    
+
     /** */
     public void testNoParametersAPI() {
-        deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[0], null, 11);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance";
+            query = pm.newQuery(Insurance.class);
+            long expectedNrOfDeletedObjects = 11;
+            long nr = query.deletePersistentAll();
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /** */
     public void testNoParametersSingleString() {
-        deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[0], null, 11);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance";
+            query = pm.newQuery(singleStringQuery);
+            long expectedNrOfDeletedObjects = 11;
+            long nr = query.deletePersistentAll();
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /** */
     public void testObjectArrayParametersAPI() {
-        Object[] parameters = new Object[] {"Carrier1"};
-        deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 2);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance " +
+                                       "WHERE carrier == param PARAMETERS String param";
+            query = pm.newQuery(Insurance.class, "carrier == param");
+            query.declareParameters("String param");
+            Object[] parameters = new Object[] {"Carrier1"};
+            long expectedNrOfDeletedObjects = 2;
+            long nr = query.deletePersistentAll(parameters);
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /** */
     public void testObjectArrayParametersSingleString() {
-        Object[] parameters = new Object[] {"Carrier1"};
-        deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 2);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance " +
+                                       "WHERE carrier == param PARAMETERS String param";
+            query = pm.newQuery(singleStringQuery);
+            Object[] parameters = new Object[] {"Carrier1"};
+            long expectedNrOfDeletedObjects = 2;
+            long nr = query.deletePersistentAll(parameters);
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /** */
     public void testMapParametersAPI() {
-        Map parameters = new HashMap();
-        parameters.put("param", "Carrier1");
-        deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 2);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance " +
+                                       "WHERE carrier == param PARAMETERS String param";
+            query = pm.newQuery(Insurance.class, "carrier == param");
+            query.declareParameters("String param");
+            Map parameters = new HashMap();
+            parameters.put("param", "Carrier1");
+            long expectedNrOfDeletedObjects = 2;
+            long nr = query.deletePersistentAll(parameters);
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /** */
     public void testMapParametersSingleString() {
-        Map parameters = new HashMap();
-        parameters.put("param", "Carrier1");
-        deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[1], parameters, 2);
+        Transaction tx = pm.currentTransaction();
+        Query<Insurance> query = null;
+        Object result = null;
+        try {
+            tx.begin();
+            String singleStringQuery = "SELECT FROM org.apache.jdo.tck.pc.company.Insurance " +
+                                       "WHERE carrier == param PARAMETERS String param";
+            query = pm.newQuery(singleStringQuery);
+            Map parameters = new HashMap();
+            parameters.put("param", "Carrier1");
+            long expectedNrOfDeletedObjects = 2;
+            long nr = query.deletePersistentAll(parameters);
+            if (nr != expectedNrOfDeletedObjects) {
+                fail(ASSERTION_FAILED, "deletePersistentAll returned " + nr +
+                        ", expected is " + expectedNrOfDeletedObjects +
+                        ". Query: " + singleStringQuery);
+            }
+            tx.commit();
+        } finally {
+            if (query != null) {
+                query.close(result);
+            }
+            if (tx.isActive()) {
+                tx.rollback();
+            }
+        }
     }
     
     /**

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/delete/DeleteQueryElements.java Sun Nov  4 18:37:24 2018
@@ -18,15 +18,15 @@
 package org.apache.jdo.tck.query.delete;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.DentalInsurance;
-import org.apache.jdo.tck.pc.company.FullTimeEmployee;
 import org.apache.jdo.tck.pc.company.Insurance;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
-import org.apache.jdo.tck.query.result.classes.FullName;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
 /**
@@ -51,29 +51,6 @@ public class DeleteQueryElements extends
         "Assertion A14.8-1 (DeleteQueryElements) failed: ";
     
     /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      Boolean.TRUE,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        DentalInsurance.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "((FullTimeEmployee)employee).salary > 10000 & " +
-                        "employee.projects.contains(p) & p.budget > limit",
-        /*VARIABLES*/   "Project p",
-        /*PARAMETERS*/  "BigDecimal limit",
-        /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.Project; " +
-                        "import java.math.BigDecimal;",
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
-    /** 
      * The array of invalid queries which may be executed as 
      * single string queries and as API queries.
      */
@@ -220,25 +197,63 @@ public class DeleteQueryElements extends
     
     /** */
     public void testAPI() {
-        int index = 0;
-        deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[index], parameters[index], 1);
+        Map<String, Object> paramValues = new HashMap<>();
+        paramValues.put("limit", new BigDecimal("2500000"));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      Boolean.TRUE,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        DentalInsurance.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "((FullTimeEmployee)employee).salary > 10000 & " +
+                "employee.projects.contains(p) & p.budget > limit",
+                /*VARIABLES*/   "Project p",
+                /*PARAMETERS*/  "BigDecimal limit",
+                /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.Project; " +
+                "import java.math.BigDecimal;",
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  null,
+                /*paramValues*/ paramValues);
+
+        deletePersistentAllByAPIQuery(ASSERTION_FAILED, holder, 1);
     }
     
     /** */
     public void testSingleString() {
-        int index = 0;
-        deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                VALID_QUERIES[index], parameters[index], 1);
+        Map<String, Object> paramValues = new HashMap<>();
+        paramValues.put("limit", new BigDecimal("2500000"));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      Boolean.TRUE,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        DentalInsurance.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "((FullTimeEmployee)employee).salary > 10000 & " +
+                "employee.projects.contains(p) & p.budget > limit",
+                /*VARIABLES*/   "Project p",
+                /*PARAMETERS*/  "BigDecimal limit",
+                /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.Project; " +
+                "import java.math.BigDecimal;",
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  null,
+                /*paramValues*/ paramValues);
+
+        deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, holder,1);
     }
     
     /** */
     public void testNegative() {
         for (int i = 0; i < INVALID_QUERIES.length; i++) {
-            deletePersistentAllByAPIQuery(ASSERTION_FAILED, 
-                    INVALID_QUERIES[i], null, -1);
-            deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, 
-                    INVALID_QUERIES[i], null, -1);
+            deletePersistentAllByAPIQuery(ASSERTION_FAILED, INVALID_QUERIES[i], -1);
+            deletePersistentAllBySingleStringQuery(ASSERTION_FAILED, INVALID_QUERIES[i], -1);
         }
     }
     

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Cast.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Cast.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Cast.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/Cast.java Sun Nov  4 18:37:24 2018
@@ -21,10 +21,17 @@ import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Department;
 import org.apache.jdo.tck.pc.company.Employee;
+import org.apache.jdo.tck.pc.company.FullTimeEmployee;
+import org.apache.jdo.tck.pc.company.QDepartment;
+import org.apache.jdo.tck.pc.company.QEmployee;
+import org.apache.jdo.tck.pc.company.QFullTimeEmployee;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
+import javax.jdo.JDOQLTypedQuery;
+import javax.jdo.query.Expression;
+
 /**
  *<B>Title:</B> Cast Query Operator
  *<BR>
@@ -43,49 +50,6 @@ public class Cast extends QueryTest {
     private static final String ASSERTION_FAILED = 
         "Assertion A14.6.2-38 (Cast) failed: ";
     
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null,
-        /*INTO*/        null, 
-        /*FROM*/        Employee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "((FullTimeEmployee)this).salary > 15000.0",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.FullTimeEmployee",
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null,
-        /*INTO*/        null, 
-        /*FROM*/        Department.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "employees.contains(e) && ((FullTimeEmployee)e).salary > 15000.0",
-        /*VARIABLES*/   "Employee e",
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.FullTimeEmployee",
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-        
-    /** 
-     * The expected results of valid queries.
-     */
-    private Object[] expectedResult = {
-        getTransientCompanyModelInstancesAsList(new String[]{"emp1", "emp5"}),
-        getTransientCompanyModelInstancesAsList(new String[]{"dept1", "dept2"})
-    };
-    
     /**
      * The <code>main</code> is called when the class
      * is directly executed from the command line.
@@ -96,13 +60,70 @@ public class Cast extends QueryTest {
     }
     
     /** */
-    public void testPositive() {
-        for (int i = 0; i < VALID_QUERIES.length; i++) {
-            executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    expectedResult[i]);
-            executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    expectedResult[i]);
-        }
+    public void testPositive0() {
+        Object expected = getTransientCompanyModelInstancesAsList(new String[]{"emp1", "emp5"});
+
+        JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
+        QEmployee cand = QEmployee.candidate();
+        // DataNucleus: UnsupportedOperationException: cast not yet supported
+        //QFullTimeEmployee cast = (QFullTimeEmployee)cand.cast(FullTimeEmployee.class);
+        //query.filter(cast.salary.gt(15000.0));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        Employee.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "((FullTimeEmployee)this).salary > 15000.0",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  null,
+                /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.FullTimeEmployee",
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ null);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        // DataNucleus: UnsupportedOperationException: cast not yet supported
+        //executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
+    }
+
+    /** */
+    public void testPositive1() {
+        Object expected = getTransientCompanyModelInstancesAsList(new String[]{"dept1", "dept2"});
+
+        JDOQLTypedQuery<Department> query = getPM().newJDOQLTypedQuery(Department.class);
+        QDepartment cand = QDepartment.candidate();
+        QEmployee e = QEmployee.variable("e");
+        // DataNucleus: UnsupportedOperationException: cast not yet supported
+        //QFullTimeEmployee cast = (QFullTimeEmployee)cand.cast(FullTimeEmployee.class);
+        //query.filter(cand.employees.contains(e).and(cast.salary.gt(15000.0)));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        Department.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "employees.contains(e) && ((FullTimeEmployee)e).salary > 15000.0",
+                /*VARIABLES*/   "Employee e",
+                /*PARAMETERS*/  null,
+                /*IMPORTS*/     "import org.apache.jdo.tck.pc.company.FullTimeEmployee",
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  null,
+                /*paramValues*/ null);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        // DataNucleus: UnsupportedOperationException: cast not yet supported
+        //executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
     }
     
     /**

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/CharacterAndStringLiterals.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/CharacterAndStringLiterals.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/CharacterAndStringLiterals.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/CharacterAndStringLiterals.java Sun Nov  4 18:37:24 2018
@@ -20,10 +20,13 @@ package org.apache.jdo.tck.query.jdoql;
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.mylib.MylibReader;
 import org.apache.jdo.tck.pc.mylib.PrimitiveTypes;
+import org.apache.jdo.tck.pc.mylib.QPrimitiveTypes;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
+import javax.jdo.JDOQLTypedQuery;
+
 /**
  *<B>Title:</B> Character and String Literals.
  *<BR>
@@ -80,49 +83,6 @@ public class CharacterAndStringLiterals
         /*TO*/          null)
     };
     
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        PrimitiveTypes.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "stringNull.startsWith('Even') || charNotNull == 'O'",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null, 
-        /*INTO*/        null, 
-        /*FROM*/        PrimitiveTypes.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "stringNull.startsWith(\"Even\") || charNotNull == \"O\"",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
-    /** 
-     * The expected results of valid queries.
-     */
-    private Object[] expectedResult = {
-        getTransientMylibInstancesAsList(new String[]{
-            "primitiveTypesCharacterStringLiterals"})
-    };
-    
     /**
      * The <code>main</code> is called when the class
      * is directly executed from the command line.
@@ -131,17 +91,71 @@ public class CharacterAndStringLiterals
     public static void main(String[] args) {
         BatchTestRunner.run(CharacterAndStringLiterals.class);
     }
-    
-    /** */
-    public void testPositive() {
-        if (isUnconstrainedVariablesSupported()) {
-            for (int i = 0; i < VALID_QUERIES.length; i++) {
-                executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                        expectedResult[i]);
-                executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                        expectedResult[i]);
-            }
-        }
+
+    /**
+     *
+     */
+    public void testPositive1() {
+        Object expected = getTransientMylibInstancesAsList(new String[]{
+                        "primitiveTypesCharacterStringLiterals"});
+
+        JDOQLTypedQuery<PrimitiveTypes> query = getPM().newJDOQLTypedQuery(PrimitiveTypes.class);
+        QPrimitiveTypes cand = QPrimitiveTypes.candidate();
+        query.filter(cand.stringNull.startsWith("Even").or(cand.charNotNull.eq('0')));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        PrimitiveTypes.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "stringNull.startsWith('Even') || charNotNull == 'O'",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  null,
+                /*IMPORTS*/     null,
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ null);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
+    }
+
+    /**
+     * 
+     */
+    public void testPositive2() {
+        Object expected = getTransientMylibInstancesAsList(new String[]{
+                "primitiveTypesCharacterStringLiterals"});
+
+        JDOQLTypedQuery<PrimitiveTypes> query = getPM().newJDOQLTypedQuery(PrimitiveTypes.class);
+        QPrimitiveTypes cand = QPrimitiveTypes.candidate();
+        query.filter(cand.stringNull.startsWith("Even").or(cand.charNotNull.eq('0')));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        PrimitiveTypes.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "stringNull.startsWith(\"Even\") || charNotNull == \"O\"",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  null,
+                /*IMPORTS*/     null,
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ null);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
     }
 
     /** */

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingCollectionFieldToNull.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingCollectionFieldToNull.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingCollectionFieldToNull.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingCollectionFieldToNull.java Sun Nov  4 18:37:24 2018
@@ -20,10 +20,15 @@ package org.apache.jdo.tck.query.jdoql;
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Employee;
+import org.apache.jdo.tck.pc.company.QEmployee;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
+import javax.jdo.JDOQLTypedQuery;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  *<B>Title:</B> Comparing a Collection Field to Null
  *<BR>
@@ -46,30 +51,9 @@ public class ComparingCollectionFieldToN
         "Assertion A14.6.2-36 (ComparingCollectionFieldToNull) failed: ";
     
     /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null,
-        /*INTO*/        null, 
-        /*FROM*/        Employee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "personid == 1 && projects == null",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  null,
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
-    /** 
      * The expected results of valid queries.
      */
-    private Object[] expectedResult;
+    private List<Employee> expectedResult;
     
     /**
      * The <code>main</code> is called when the class
@@ -82,12 +66,30 @@ public class ComparingCollectionFieldToN
     
     /** */
     public void testPositive() {
-        for (int i = 0; i < VALID_QUERIES.length; i++) {
-            executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    expectedResult[i]);
-            executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    expectedResult[i]);
-        }
+        JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
+        QEmployee cand = QEmployee.candidate();
+        query.filter(cand.personid.eq(1L).and(cand.projects.eq(null)));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        Employee.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "personid == 1 && projects == null",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  null,
+                /*IMPORTS*/     null,
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ null);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expectedResult);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expectedResult);
+        executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expectedResult);
     }
     
     /**
@@ -97,13 +99,12 @@ public class ComparingCollectionFieldToN
         addTearDownClass(CompanyModelReader.getTearDownClasses());
         loadAndPersistCompanyModel(getPM());
         Employee employee = (Employee) getPersistentCompanyModelInstance("emp1");
-        expectedResult = new Object[] {
+        expectedResult =
             // emp1 should be in the query result set,
             // if the JDO Implentation supports null values for Collections
             getTransientCompanyModelInstancesAsList(
                 isNullCollectionSupported() ? 
-                    new String[]{"emp1"} : new String[]{})
-        };
+                    new String[]{"emp1"} : new String[]{});
         if (isNullCollectionSupported()) {
             getPM().currentTransaction().begin();
             employee.setProjects(null);

Modified: db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingPersistentAndNonPersistentInstance.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingPersistentAndNonPersistentInstance.java?rev=1845744&r1=1845743&r2=1845744&view=diff
==============================================================================
--- db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingPersistentAndNonPersistentInstance.java (original)
+++ db/jdo/trunk/tck/src/main/java/org/apache/jdo/tck/query/jdoql/ComparingPersistentAndNonPersistentInstance.java Sun Nov  4 18:37:24 2018
@@ -20,10 +20,16 @@ package org.apache.jdo.tck.query.jdoql;
 import org.apache.jdo.tck.JDO_Test;
 import org.apache.jdo.tck.pc.company.CompanyModelReader;
 import org.apache.jdo.tck.pc.company.Employee;
+import org.apache.jdo.tck.pc.company.QEmployee;
 import org.apache.jdo.tck.query.QueryElementHolder;
 import org.apache.jdo.tck.query.QueryTest;
 import org.apache.jdo.tck.util.BatchTestRunner;
 
+import javax.jdo.JDOQLTypedQuery;
+import javax.jdo.query.Expression;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  *<B>Title:</B> Comparing persistent and non-persistent instance
  *<BR>
@@ -42,55 +48,6 @@ public class ComparingPersistentAndNonPe
     /** */
     private static final String ASSERTION_FAILED = 
         "Assertion A14.6.2-44 (ComparingPersistentAndNonPersistentInstance) failed: ";
-    
-    /** 
-     * The array of valid queries which may be executed as 
-     * single string queries and as API queries.
-     */
-    private static final QueryElementHolder[] VALID_QUERIES = {
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null,
-        /*INTO*/        null, 
-        /*FROM*/        Employee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "this == param",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  "Employee param",
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null),
-        new QueryElementHolder(
-        /*UNIQUE*/      null,
-        /*RESULT*/      null,
-        /*INTO*/        null, 
-        /*FROM*/        Employee.class,
-        /*EXCLUDE*/     null,
-        /*WHERE*/       "this.personid == param.personid",
-        /*VARIABLES*/   null,
-        /*PARAMETERS*/  "Employee param",
-        /*IMPORTS*/     null,
-        /*GROUP BY*/    null,
-        /*ORDER BY*/    null,
-        /*FROM*/        null,
-        /*TO*/          null)
-    };
-    
-    /** 
-     * The expected results of valid queries.
-     */
-    private Object[] expectedResult = {
-            getTransientCompanyModelInstancesAsList(new String[]{}),
-            getTransientCompanyModelInstancesAsList(new String[]{"emp1"})
-    };
-    
-    /** Parameters of valid queries. */
-    private Object[][] parameters = {
-        {getTransientCompanyModelInstance("emp1")},
-        {getTransientCompanyModelInstance("emp1")}
-    };
             
     /**
      * The <code>main</code> is called when the class
@@ -100,15 +57,74 @@ public class ComparingPersistentAndNonPe
     public static void main(String[] args) {
         BatchTestRunner.run(ComparingPersistentAndNonPersistentInstance.class);
     }
-    
+
     /** */
-    public void testPositive() {
-        for (int i = 0; i < VALID_QUERIES.length; i++) {
-            executeAPIQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    parameters[i], expectedResult[i]);
-            executeSingleStringQuery(ASSERTION_FAILED, VALID_QUERIES[i], 
-                    parameters[i], expectedResult[i]);
-        }
+    public void testPositive0() {
+        Object expected = getTransientCompanyModelInstancesAsList(new String[]{});
+
+        JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
+        QEmployee cand = QEmployee.candidate();
+        Expression<Employee> empParam = query.parameter("param", Employee.class);
+        query.filter(cand.eq(empParam));
+
+        Map<String, Object> paramValues = new HashMap<>();
+        paramValues.put("param", getTransientCompanyModelInstance("emp1"));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        Employee.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "this == param",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  "Employee param",
+                /*IMPORTS*/     null,
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ paramValues);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
+    }
+
+    /** */
+    public void testPositive1() {
+        Object expected = getTransientCompanyModelInstancesAsList(new String[]{"emp1"});
+
+        JDOQLTypedQuery<Employee> query = getPM().newJDOQLTypedQuery(Employee.class);
+        QEmployee cand = QEmployee.candidate();
+        Expression<Employee> empParamExpression = query.parameter("param", Employee.class);
+        QEmployee empParam = QEmployee.parameter("param");
+        query.filter(cand.personid.eq(empParam.personid));
+
+        Map<String, Object> paramValues = new HashMap<>();
+        paramValues.put("param", getTransientCompanyModelInstance("emp1"));
+
+        QueryElementHolder holder = new QueryElementHolder(
+                /*UNIQUE*/      null,
+                /*RESULT*/      null,
+                /*INTO*/        null,
+                /*FROM*/        Employee.class,
+                /*EXCLUDE*/     null,
+                /*WHERE*/       "this.personid == param.personid",
+                /*VARIABLES*/   null,
+                /*PARAMETERS*/  "Employee param",
+                /*IMPORTS*/     null,
+                /*GROUP BY*/    null,
+                /*ORDER BY*/    null,
+                /*FROM*/        null,
+                /*TO*/          null,
+                /*JDOQLTyped*/  query,
+                /*paramValues*/ paramValues);
+
+        executeAPIQuery(ASSERTION_FAILED, holder, expected);
+        executeSingleStringQuery(ASSERTION_FAILED, holder, expected);
+        executeJDOQLTypedQuery(ASSERTION_FAILED, holder, expected);
     }
     
     /**