Hi,
attached you find a patch adding new testclasses that run DataNucleus
typesafe queries.
Here is the list of changes:
! src/java/org/apache/jdo/tck/pc/companyAnnotatedPI
A src/java/org/apache/jdo/tck/query/typesafe
A src/java/org/apache/jdo/tck/query/typesafe/TypesafeQueryTest.java
A src/java/org/apache/jdo/tck/query/typesafe/SimpleQueries.java
A src/java/org/apache/jdo/tck/query/typesafe/ProjectionQueries.java
A src/java/org/apache/jdo/tck/query/typesafe/ParameterQueries.java
A src/conf/typesafeQueries.conf
A
src/testdata/org/apache/jdo/tck/pc/company/companyForTypesafeQueryTests.xml
M pom.xml
Please note, that I'm running Version 3.0.0-m1 of datanucleus-jdo-query
that runs into a NPE in the APT (see NUCJDOQUERY-8). In order to avoid
this I removed the company version using PersistenceCapable interfaces
(src/java/org/apache/jdo/tck/pc/companyAnnotatedPI) from my local
workspace. The NPE is fixed in the DataNuclues trunk, so with the next
DN version we do not need this workaround anymore.
Regards Michael
--
*Michael Bouschen*
*Prokurist*
akquinet tech@spree GmbH
Bülowstr. 66, D-10783 Berlin
Fon: +49 30 235 520-33
Fax: +49 30 217 520-12
Email: michael.bousc...@akquinet.de
Url: www.akquinet.de <http://www.akquinet.de>
akquinet tech@spree GmbH, Berlin
Geschäftsführung: Martin Weber, Prof. Dr. Christian Roth
Amtsgericht Berlin-Charlottenburg HRB 86780 B
USt.-Id. Nr.: DE 225 964 680
Index: src/java/org/apache/jdo/tck/query/typesafe/TypesafeQueryTest.java
===================================================================
--- src/java/org/apache/jdo/tck/query/typesafe/TypesafeQueryTest.java
(revision 0)
+++ src/java/org/apache/jdo/tck/query/typesafe/TypesafeQueryTest.java
(revision 0)
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.typesafe;
+
+import javax.jdo.PersistenceManager;
+
+import org.apache.jdo.tck.query.QueryTest;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.CompanyFactoryRegistry;
+
+/**
+ * Superclass for all Testcases testing typesafe queries.
+ */
+public abstract class TypesafeQueryTest extends QueryTest {
+
+ /**
+ * Returns the name of the company test data resource.
+ * This implementation takes the testdata from a file specified as
+ * system property jdo.tck.testdata.
+ * @return name of the company test data resource.
+ */
+ protected String getCompanyTestDataResource() {
+ return inputFilename;
+ }
+
+ /**
+ * Reads a graph of company model objects from the internal reader. This
+ * methods explictly calls makePersistent for all named instances using the
+ * specified PersistenceManager. The method returns the CompanyModelReader
+ * instance allowing to access a compay model instance by name.
+ * This implementation uses a CompanyFactory whos name is taken
+ * from the system property jdo.tck.mapping.companyfactory.
+ */
+ public CompanyModelReader loadAndPersistCompanyModel(PersistenceManager
pm) {
+ getPM();
+ CompanyFactoryRegistry.registerFactory(pm);
+ return super.loadAndPersistCompanyModel(pm);
+ }
+
+ /**
+ * Return the array of teardown classes from the CompanyModelFactory.
+ * @return an array of teardown Class instances
+ */
+ protected Class[] getTearDownClasses() {
+ return CompanyFactoryRegistry.getInstance().getTearDownClasses();
+ }
+
+}
Index: src/java/org/apache/jdo/tck/query/typesafe/SimpleQueries.java
===================================================================
--- src/java/org/apache/jdo/tck/query/typesafe/SimpleQueries.java
(revision 0)
+++ src/java/org/apache/jdo/tck/query/typesafe/SimpleQueries.java
(revision 0)
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.typesafe;
+
+import java.util.List;
+
+import javax.jdo.Query;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.CompanyFactoryRegistry;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.FCAppEmployee;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.QFCAppEmployee;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+import org.datanucleus.query.typesafe.TypesafeQuery;
+import org.datanucleus.api.jdo.JDOPersistenceManager;
+
+/**
+ *<B>Title:</B> .
+ *<BR>
+ *<B>Keywords:</B> query, typesafe
+ *<BR>
+ *<B>Assertion ID:</B>
+ *<BR>
+ *<B>Assertion Description: </B>
+ */
+public class SimpleQueries extends TypesafeQueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion (SimpleQueries) failed: ";
+
+ /**
+ * The <code>main</code> is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(SimpleQueries.class);
+ }
+
+ /**
+ *
+ */
+ public void testBasicFilter() {
+ List<FCAppEmployee> expected =
+ getTransientCompanyModelInstancesAsList(new String[]{"emp1"});
+
+ PersistenceManager pm = getPM();
+ JDOPersistenceManager jdopm = (JDOPersistenceManager)pm;
+ Transaction tx = pm.currentTransaction();
+ try {
+ tx.begin();
+
+ TypesafeQuery<FCAppEmployee> tq =
jdopm.newTypesafeQuery(FCAppEmployee.class);
+ QFCAppEmployee cand = QFCAppEmployee.candidate();
+ List<FCAppEmployee> results =
+ tq.filter(cand.lastname.eq("emp1Last"))
+ .executeList();
+
+ // check query result
+ checkQueryResultWithoutOrder(ASSERTION_FAILED, "lastname ==
emp1Last",
+ results, expected);
+ tx.commit();
+ tx = null;
+ } finally {
+ if ((tx != null) && tx.isActive())
+ tx.rollback();
+ }
+ }
+
+ /**
+ *
+ */
+ public void testOrdering() {
+ List<FCAppEmployee> expected =
+ getTransientCompanyModelInstancesAsList(new String[]{"emp5",
"emp1", "emp4", "emp3", "emp2"});
+
+ PersistenceManager pm = getPM();
+ JDOPersistenceManager jdopm = (JDOPersistenceManager)pm;
+ Transaction tx = pm.currentTransaction();
+ try {
+ tx.begin();
+
+ TypesafeQuery<FCAppEmployee> tq =
jdopm.newTypesafeQuery(FCAppEmployee.class);
+ QFCAppEmployee cand = QFCAppEmployee.candidate();
+ List<FCAppEmployee> results =
+ tq.orderBy(cand.hiredate.asc())
+ .executeList();
+
+ // check query result
+ checkQueryResultWithoutOrder(ASSERTION_FAILED, "order by hiredate",
+ results, expected);
+ tx.commit();
+ tx = null;
+ } finally {
+ if ((tx != null) && tx.isActive())
+ tx.rollback();
+ }
+ }
+
+ /**
+ * @see JDO_Test#localSetUp()
+ */
+ protected void localSetUp() {
+ loadAndPersistCompanyModel(getPM());
+ addTearDownClass(getTearDownClasses());
+ }
+}
Index: src/java/org/apache/jdo/tck/query/typesafe/ProjectionQueries.java
===================================================================
--- src/java/org/apache/jdo/tck/query/typesafe/ProjectionQueries.java
(revision 0)
+++ src/java/org/apache/jdo/tck/query/typesafe/ProjectionQueries.java
(revision 0)
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.typesafe;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.jdo.Query;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.CompanyFactoryRegistry;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.FCAppEmployee;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.QFCAppEmployee;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+import org.datanucleus.query.typesafe.TypesafeQuery;
+import org.datanucleus.api.jdo.JDOPersistenceManager;
+
+/**
+ *<B>Title:</B> .
+ *<BR>
+ *<B>Keywords:</B> query, typesafe
+ *<BR>
+ *<B>Assertion ID:</B>
+ *<BR>
+ *<B>Assertion Description: </B>
+ */
+public class ProjectionQueries extends TypesafeQueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion (ProjectionQueries) failed: ";
+
+ /**
+ * The <code>main</code> is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(ProjectionQueries.class);
+ }
+
+ /**
+ *
+ */
+ public void testProjection() {
+ List<String> expected = Arrays.asList(
+ new String[]{"emp1Last", "emp2Last", "emp3Last", "emp4Last",
"emp5Last"});
+
+ PersistenceManager pm = getPM();
+ JDOPersistenceManager jdopm = (JDOPersistenceManager)pm;
+ Transaction tx = pm.currentTransaction();
+ try {
+ tx.begin();
+
+ TypesafeQuery<FCAppEmployee> tq =
jdopm.newTypesafeQuery(FCAppEmployee.class);
+ QFCAppEmployee cand = QFCAppEmployee.candidate();
+ List<String> results = tq.executeResultList(String.class, false,
cand.lastname);
+
+ // check query result
+ checkQueryResultWithoutOrder(ASSERTION_FAILED, "SELECT lastname
FROM ...",
+ results, expected);
+ tx.commit();
+ tx = null;
+ } finally {
+ if ((tx != null) && tx.isActive())
+ tx.rollback();
+ }
+ }
+
+ /**
+ * @see JDO_Test#localSetUp()
+ */
+ protected void localSetUp() {
+ loadAndPersistCompanyModel(getPM());
+ addTearDownClass(getTearDownClasses());
+ }
+}
Index: src/java/org/apache/jdo/tck/query/typesafe/ParameterQueries.java
===================================================================
--- src/java/org/apache/jdo/tck/query/typesafe/ParameterQueries.java
(revision 0)
+++ src/java/org/apache/jdo/tck/query/typesafe/ParameterQueries.java
(revision 0)
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.query.typesafe;
+
+import java.util.List;
+
+import javax.jdo.Query;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Transaction;
+
+import org.apache.jdo.tck.JDO_Test;
+import org.apache.jdo.tck.pc.company.CompanyModelReader;
+import org.apache.jdo.tck.pc.company.CompanyFactoryRegistry;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.FCAppEmployee;
+import org.apache.jdo.tck.pc.companyAnnotatedFC.QFCAppEmployee;
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+import org.datanucleus.query.typesafe.TypesafeQuery;
+import org.datanucleus.api.jdo.JDOPersistenceManager;
+
+/**
+ *<B>Title:</B> .
+ *<BR>
+ *<B>Keywords:</B> query, typesafe
+ *<BR>
+ *<B>Assertion ID:</B>
+ *<BR>
+ *<B>Assertion Description: </B>
+ */
+public class ParameterQueries extends TypesafeQueryTest {
+
+ /** */
+ private static final String ASSERTION_FAILED =
+ "Assertion (ParameterQueries) failed: ";
+
+ /**
+ * The <code>main</code> is called when the class
+ * is directly executed from the command line.
+ * @param args The arguments passed to the program.
+ */
+ public static void main(String[] args) {
+ BatchTestRunner.run(ParameterQueries.class);
+ }
+
+ /**
+ *
+ */
+ public void testParameter() {
+ List<FCAppEmployee> expected =
+ getTransientCompanyModelInstancesAsList(new String[]{"emp1"});
+
+ PersistenceManager pm = getPM();
+ JDOPersistenceManager jdopm = (JDOPersistenceManager)pm;
+ Transaction tx = pm.currentTransaction();
+ try {
+ tx.begin();
+
+ TypesafeQuery<FCAppEmployee> tq =
jdopm.newTypesafeQuery(FCAppEmployee.class);
+ QFCAppEmployee cand = QFCAppEmployee.candidate();
+ List<FCAppEmployee> results =
+ tq.filter(cand.lastname.eq(tq.stringParameter("param")))
+ .setParameter("param", "emp1Last")
+ .executeList();
+
+ // check query result
+ checkQueryResultWithoutOrder(ASSERTION_FAILED, "lastname == param",
+ results, expected);
+ tx.commit();
+ tx = null;
+ } finally {
+ if ((tx != null) && tx.isActive())
+ tx.rollback();
+ }
+ }
+
+ /**
+ * @see JDO_Test#localSetUp()
+ */
+ protected void localSetUp() {
+ loadAndPersistCompanyModel(getPM());
+ addTearDownClass(getTearDownClasses());
+ }
+}
Index: src/conf/typesafeQueries.conf
===================================================================
--- src/conf/typesafeQueries.conf (revision 0)
+++ src/conf/typesafeQueries.conf (revision 0)
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jdo.tck.description = A query test with standard mapping, testdata with all
relationships \
+and embedded objects, but w/o meetingroom instances
(companyForTypesafeQueryTests.xml), annotations
+jdo.tck.mapping.companyfactory =
org.apache.jdo.tck.pc.companyAnnotatedFC.CompanyFactoryAnnotatedFCConcreteDelegator
+jdo.tck.testdata =
org/apache/jdo/tck/pc/company/companyForTypesafeQueryTests.xml
+jdo.tck.mapping = 0
+jdo.tck.requiredOptions =
+jdo.tck.classes = \
+org.apache.jdo.tck.query.typesafe.SimpleQueries \
+org.apache.jdo.tck.query.typesafe.ProjectionQueries \
+org.apache.jdo.tck.query.typesafe.ParameterQueries
Index:
src/testdata/org/apache/jdo/tck/pc/company/companyForTypesafeQueryTests.xml
===================================================================
--- src/testdata/org/apache/jdo/tck/pc/company/companyForTypesafeQueryTests.xml
(revision 0)
+++ src/testdata/org/apache/jdo/tck/pc/company/companyForTypesafeQueryTests.xml
(revision 0)
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+ <description>Company instances for query testing</description>
+
+ <bean id="root" class="java.util.ArrayList">
+ <constructor-arg index="0">
+ <list>
+ <ref local="company1"/>
+ </list>
+ </constructor-arg>
+ </bean>
+
+ <bean id="company1" factory-bean="companyFactory"
factory-method="newCompany">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String"><value>Sun
Microsystems, Inc.</value></constructor-arg>
+ <constructor-arg index="2"
type="java.util.Date"><value>11/Apr/1952</value></constructor-arg>
+ <constructor-arg index="3"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr1"/></constructor-arg>
+ <property name="departments">
+ <set>
+ <ref local="dept1"/>
+ <ref local="dept2"/>
+ </set>
+ </property>
+ </bean>
+
+ <bean id="dept1" factory-bean="companyFactory"
factory-method="newDepartment">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String"
><value>Development</value></constructor-arg>
+ <property name="company"><ref bean="company1"/></property>
+ <property name="employees">
+ <set>
+ <ref local="emp1"/>
+ <ref local="emp2"/>
+ <ref local="emp3"/>
+ </set>
+ </property>
+ <property name="fundedEmps">
+ <set>
+ <ref local="emp2"/>
+ <ref local="emp3"/>
+ </set>
+ </property>
+ </bean>
+
+ <bean id="dept2" factory-bean="companyFactory"
factory-method="newDepartment">
+ <constructor-arg index="0"
type="long"><value>2</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String" ><value>Human
Resources</value></constructor-arg>
+ <property name="company"><ref bean="company1"/></property>
+ <property name="employees">
+ <set>
+ <ref local="emp4"/>
+ <ref local="emp5"/>
+ </set>
+ </property>
+ <property name="fundedEmps">
+ <set>
+ <ref local="emp1"/>
+ <ref local="emp4"/>
+ <ref local="emp5"/>
+ </set>
+ </property>
+ </bean>
+
+ <bean id="emp1" factory-bean="companyFactory"
factory-method="newFullTimeEmployee">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>emp1First</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>emp1Last</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>emp1Middle</value></constructor-arg>
+ <constructor-arg index="4"
type="java.util.Date"><value>10/Jun/1970</value></constructor-arg>
+ <constructor-arg index="5"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr1"/></constructor-arg>
+ <constructor-arg index="6"
type="java.util.Date"><value>1/Jan/1999</value></constructor-arg>
+ <constructor-arg index="7"
type="double"><value>20000</value></constructor-arg>
+ <property name="weeklyhours"><value>40</value></property>
+ <property name="medicalInsurance"><ref bean="medicalIns1"/></property>
+ <property name="dentalInsurance"><ref bean="dentalIns1"/></property>
+ <property name="phoneNumbers">
+ <map>
+ <entry key="home"><value>1111</value></entry>
+ <entry key="work"><value>123456-1</value></entry>
+ </map>
+ </property>
+ <property name="department"><ref bean="dept1"/></property>
+ <property name="fundingDept"><ref bean="dept2"/></property>
+ <property name="manager"><ref bean="emp2"/></property>
+ <property name="mentor"><ref bean="emp2"/></property>
+ <property name="protege"><ref bean="emp5"/></property>
+ <property name="hradvisor"><ref bean="emp5"/></property>
+ <property name="reviewedProjects">
+ <set>
+ <ref local="proj3"/>
+ </set>
+ </property>
+ <property name="projects">
+ <set>
+ <ref local="proj1"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="emp2" factory-bean="companyFactory"
factory-method="newFullTimeEmployee">
+ <constructor-arg index="0"
type="long"><value>2</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>emp2First</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>emp2Last</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>emp2Middle</value></constructor-arg>
+ <constructor-arg index="4"
type="java.util.Date"><value>22/Dec/1975</value></constructor-arg>
+ <constructor-arg index="5"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr2"/></constructor-arg>
+ <constructor-arg index="6"
type="java.util.Date"><value>1/Jul/2003</value></constructor-arg>
+ <constructor-arg index="7"
type="double"><value>10000</value></constructor-arg>
+ <property name="weeklyhours"><value>40</value></property>
+ <property name="medicalInsurance"><ref bean="medicalIns2"/></property>
+ <property name="dentalInsurance"><ref bean="dentalIns2"/></property>
+ <property name="phoneNumbers">
+ <map>
+ <entry key="home"><value>2222</value></entry>
+ <entry key="work"><value>123456-2</value></entry>
+ </map>
+ </property>
+ <property name="department"><ref bean="dept1"/></property>
+ <property name="fundingDept"><ref bean="dept1"/></property>
+ <property name="mentor"><ref bean="emp3"/></property>
+ <property name="protege"><ref bean="emp1"/></property>
+ <property name="hradvisor"><ref bean="emp5"/></property>
+ <property name="projects">
+ <set>
+ <ref local="proj1"/>
+ <ref local="proj2"/>
+ </set>
+ </property>
+ <property name="team">
+ <set>
+ <ref local="emp1"/>
+ <ref local="emp3"/>
+ <ref local="emp4"/>
+ <ref local="emp5"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="emp3" factory-bean="companyFactory"
factory-method="newPartTimeEmployee">
+ <constructor-arg index="0"
type="long"><value>3</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>emp3First</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>emp3Last</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>emp3Middle</value></constructor-arg>
+ <constructor-arg index="4"
type="java.util.Date"><value>5/Sep/1972</value></constructor-arg>
+ <constructor-arg index="5"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr3"/></constructor-arg>
+ <constructor-arg index="6"
type="java.util.Date"><value>15/Aug/2002</value></constructor-arg>
+ <constructor-arg index="7"
type="double"><value>15</value></constructor-arg>
+ <property name="weeklyhours"><value>19</value></property>
+ <property name="medicalInsurance"><ref bean="medicalIns3"/></property>
+ <property name="dentalInsurance"><ref bean="dentalIns3"/></property>
+ <property name="phoneNumbers">
+ <map>
+ <entry key="home"><value>3333</value></entry>
+ <entry key="work"><value>123456-3</value></entry>
+ </map>
+ </property>
+ <property name="department"><ref bean="dept1"/></property>
+ <property name="fundingDept"><ref bean="dept1"/></property>
+ <property name="manager"><ref bean="emp2"/></property>
+ <property name="mentor"><ref bean="emp4"/></property>
+ <property name="protege"><ref bean="emp2"/></property>
+ <property name="hradvisor"><ref bean="emp5"/></property>
+ <property name="projects">
+ <set>
+ <ref local="proj1"/>
+ <ref local="proj2"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="emp4" factory-bean="companyFactory"
factory-method="newPartTimeEmployee">
+ <constructor-arg index="0"
type="long"><value>4</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>emp4First</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>emp4Last</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>emp4Middle</value></constructor-arg>
+ <constructor-arg index="4"
type="java.util.Date"><value>6/Sep/1973</value></constructor-arg>
+ <constructor-arg index="5"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr3"/></constructor-arg>
+ <constructor-arg index="6"
type="java.util.Date"><value>15/Apr/2001</value></constructor-arg>
+ <constructor-arg index="7"
type="double"><value>13</value></constructor-arg>
+ <property name="medicalInsurance"><ref bean="medicalIns4"/></property>
+ <property name="dentalInsurance"><ref bean="dentalIns4"/></property>
+ <property name="phoneNumbers">
+ <map>
+ <entry key="home"><value>3343</value></entry>
+ <entry key="work"><value>124456-3</value></entry>
+ </map>
+ </property>
+ <property name="department"><ref bean="dept2"/></property>
+ <property name="fundingDept"><ref bean="dept2"/></property>
+ <property name="manager"><ref bean="emp2"/></property>
+ <property name="mentor"><ref bean="emp5"/></property>
+ <property name="protege"><ref bean="emp3"/></property>
+ <property name="hradvisor"><ref bean="emp5"/></property>
+ <property name="projects">
+ <set>
+ <ref local="proj3"/>
+ </set>
+ </property>
+ <property name="reviewedProjects">
+ <set>
+ <ref local="proj2"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="emp5" factory-bean="companyFactory"
factory-method="newFullTimeEmployee">
+ <constructor-arg index="0"
type="long"><value>5</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>emp5First</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>emp5Last</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>emp5Middle</value></constructor-arg>
+ <constructor-arg index="4"
type="java.util.Date"><value>5/Jul/1962</value></constructor-arg>
+ <constructor-arg index="5"
type="org.apache.jdo.tck.pc.company.IAddress"><ref
local="addr3"/></constructor-arg>
+ <constructor-arg index="6"
type="java.util.Date"><value>15/Aug/1998</value></constructor-arg>
+ <constructor-arg index="7"
type="double"><value>45000</value></constructor-arg>
+ <property name="medicalInsurance"><ref bean="medicalIns5"/></property>
+ <property name="dentalInsurance"><ref bean="dentalIns5"/></property>
+ <property name="phoneNumbers">
+ <map>
+ <entry key="home"><value>3363</value></entry>
+ <entry key="work"><value>126456-3</value></entry>
+ </map>
+ </property>
+ <property name="department"><ref bean="dept2"/></property>
+ <property name="fundingDept"><ref bean="dept2"/></property>
+ <property name="manager"><ref bean="emp2"/></property>
+ <property name="mentor"><ref bean="emp1"/></property>
+ <property name="protege"><ref bean="emp4"/></property>
+ <property name="projects">
+ <set>
+ <ref local="proj3"/>
+ </set>
+ </property>
+ <property name="reviewedProjects">
+ <set>
+ <ref local="proj2"/>
+ </set>
+ </property>
+ <property name="hradvisees">
+ <set>
+ <ref local="emp1"/>
+ <ref local="emp2"/>
+ <ref local="emp3"/>
+ <ref local="emp4"/>
+ </set>
+ </property>
+ </bean>
+
+ <bean id="addr1" factory-bean="companyFactory" factory-method="newAddress">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String"><value>Unter den
Linden 1</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>Berlin</value></constructor-arg>
+ <constructor-arg index="3" type="java.lang.String"><value>
</value></constructor-arg>
+ <constructor-arg index="4"
type="java.lang.String"><value>12345</value></constructor-arg>
+ <constructor-arg index="5"
type="java.lang.String"><value>Germany</value></constructor-arg>
+ </bean>
+ <bean id="addr2" factory-bean="companyFactory" factory-method="newAddress">
+ <constructor-arg index="0"
type="long"><value>2</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String"><value>Broadway
1</value></constructor-arg>
+ <constructor-arg index="2" type="java.lang.String"><value>New
York</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>NY</value></constructor-arg>
+ <constructor-arg index="4"
type="java.lang.String"><value>10000</value></constructor-arg>
+ <constructor-arg index="5"
type="java.lang.String"><value>USA</value></constructor-arg>
+ </bean>
+ <bean id="addr3" factory-bean="companyFactory" factory-method="newAddress">
+ <constructor-arg index="0"
type="long"><value>3</value></constructor-arg>
+ <constructor-arg index="1" type="java.lang.String"><value>Market
St.</value></constructor-arg>
+ <constructor-arg index="2" type="java.lang.String"><value>San
Francisco</value></constructor-arg>
+ <constructor-arg index="3"
type="java.lang.String"><value>CA</value></constructor-arg>
+ <constructor-arg index="4"
type="java.lang.String"><value>94102</value></constructor-arg>
+ <constructor-arg index="5"
type="java.lang.String"><value>USA</value></constructor-arg>
+ </bean>
+
+ <bean id="medicalIns1" factory-bean="companyFactory"
factory-method="newMedicalInsurance">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier1</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>PPO</value></constructor-arg>
+ <property name="employee"><ref bean="emp1"/></property>
+ </bean>
+
+ <bean id="medicalIns2" factory-bean="companyFactory"
factory-method="newMedicalInsurance">
+ <constructor-arg index="0"
type="long"><value>2</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier2</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>HMO</value></constructor-arg>
+ <property name="employee"><ref bean="emp2"/></property>
+ </bean>
+
+ <bean id="medicalIns3" factory-bean="companyFactory"
factory-method="newMedicalInsurance">
+ <constructor-arg index="0"
type="long"><value>3</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier3</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>HMO</value></constructor-arg>
+ <property name="employee"><ref bean="emp3"/></property>
+ </bean>
+
+ <bean id="medicalIns4" factory-bean="companyFactory"
factory-method="newMedicalInsurance">
+ <constructor-arg index="0"
type="long"><value>4</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier4</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>HMO</value></constructor-arg>
+ <property name="employee"><ref bean="emp4"/></property>
+ </bean>
+
+ <bean id="medicalIns5" factory-bean="companyFactory"
factory-method="newMedicalInsurance">
+ <constructor-arg index="0"
type="long"><value>5</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier5</value></constructor-arg>
+ <constructor-arg index="2"
type="java.lang.String"><value>HMO</value></constructor-arg>
+ <property name="employee"><ref bean="emp5"/></property>
+ </bean>
+
+ <bean id="dentalIns1" factory-bean="companyFactory"
factory-method="newDentalInsurance">
+ <constructor-arg index="0"
type="long"><value>11</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier1</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>99.999</value></constructor-arg>
+ <property name="employee"><ref bean="emp1"/></property>
+ </bean>
+
+ <bean id="dentalIns2" factory-bean="companyFactory"
factory-method="newDentalInsurance">
+ <constructor-arg index="0"
type="long"><value>12</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier2</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>99.999</value></constructor-arg>
+ <property name="employee"><ref bean="emp2"/></property>
+ </bean>
+
+ <bean id="dentalIns3" factory-bean="companyFactory"
factory-method="newDentalInsurance">
+ <constructor-arg index="0"
type="long"><value>13</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier3</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>99.999</value></constructor-arg>
+ <property name="employee"><ref bean="emp3"/></property>
+ </bean>
+
+ <bean id="dentalIns4" factory-bean="companyFactory"
factory-method="newDentalInsurance">
+ <constructor-arg index="0"
type="long"><value>14</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier4</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>99.999</value></constructor-arg>
+ <property name="employee"><ref bean="emp4"/></property>
+ </bean>
+
+ <bean id="dentalIns5" factory-bean="companyFactory"
factory-method="newDentalInsurance">
+ <constructor-arg index="0"
type="long"><value>15</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>Carrier5</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>99.999</value></constructor-arg>
+ <property name="employee"><ref bean="emp5"/></property>
+ </bean>
+
+ <bean id="proj1" factory-bean="companyFactory" factory-method="newProject">
+ <constructor-arg index="0"
type="long"><value>1</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>orange</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>2500000.99</value></constructor-arg>
+ <property name="members">
+ <set>
+ <ref local="emp1"/>
+ <ref local="emp2"/>
+ <ref local="emp3"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="proj2" factory-bean="companyFactory" factory-method="newProject">
+ <constructor-arg index="0"
type="long"><value>2</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>blue</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>50000.00</value></constructor-arg>
+ <property name="reviewers">
+ <set>
+ <ref local="emp4"/>
+ <ref local="emp5"/>
+ </set>
+ </property>
+ <property name="members">
+ <set>
+ <ref local="emp2"/>
+ <ref local="emp3"/>
+ </set>
+ </property>
+ </bean>
+ <bean id="proj3" factory-bean="companyFactory" factory-method="newProject">
+ <constructor-arg index="0"
type="long"><value>3</value></constructor-arg>
+ <constructor-arg index="1"
type="java.lang.String"><value>green</value></constructor-arg>
+ <constructor-arg index="2"
type="java.math.BigDecimal"><value>2000.99</value></constructor-arg>
+ <property name="reviewers">
+ <set>
+ <ref local="emp1"/>
+ </set>
+ </property>
+ <property name="members">
+ <set>
+ <ref local="emp4"/>
+ <ref local="emp5"/>
+ </set>
+ </property>
+ </bean>
+</beans>
+
Index: pom.xml
===================================================================
--- pom.xml (revision 1095936)
+++ pom.xml (working copy)
@@ -43,8 +43,8 @@
</execution>
</executions>
<configuration>
- <doInstallSchema>true</doInstallSchema>
- <doEnhance>true</doEnhance>
+ <doInstallSchema>false</doInstallSchema>
+ <doEnhance>false</doEnhance>
<doRunTCK>true</doRunTCK>
<impl>jdori</impl>
<pmfProperties>jdori-pmf.properties</pmfProperties>
@@ -56,6 +56,8 @@
<dbproperties>-Dderby.system.home=${basedir}/target/database/derby</dbproperties>
<signaturefile>${basedir}/src/conf/jdo-3_1-signatures.txt</signaturefile>
<cfgs>
+ <cfg>typesafeQueries.conf</cfg>
+ <!--
<cfg>company1-1Relationships.conf</cfg>
<cfg>company1-MRelationships.conf</cfg>
<cfg>companyAllRelationships.conf</cfg>
@@ -113,6 +115,7 @@
<cfg>schemaAttributePackage.conf</cfg>
<cfg>security.conf</cfg>
<cfg>transactions.conf</cfg>
+ -->
</cfgs>
</configuration>
</plugin>
@@ -249,10 +252,12 @@
</resources>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
+ <version>2.3.2</version>
<configuration>
- <source>1.5</source>
- <target>1.5</target>
+ <source>1.6</source>
+ <target>1.6</target>
</configuration>
</plugin>
<plugin>
@@ -266,8 +271,8 @@
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
- <doctitle>${pom.name} ${pom.currentVersion}</doctitle>
- <windowtitle>${pom.name}
${pom.currentVersion}</windowtitle>
+ <doctitle>${project.name} ${pom.currentVersion}</doctitle>
+ <windowtitle>${project.name}
${pom.currentVersion}</windowtitle>
</configuration>
</plugin>
</plugins>
@@ -277,7 +282,22 @@
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-core</artifactId>
+ <version>3.0.0-m3</version>
+ </dependency>
<dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-jdo-query</artifactId>
+ <version>3.0.0-m1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-api-jdo</artifactId>
+ <version>3.0.0-m3</version>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
@@ -309,13 +329,17 @@
<reporting>
<plugins>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
+ <version>2.4</version>
<configuration>
<xmlPath>${basedir}/xdocs/changes.xml</xmlPath>
</configuration>
</plugin>
<plugin>
+ <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
+ <version>2.6</version>
<configuration>
<configLocation>${basedir}/../jdo_checks.xml</configLocation>
<headerLocation>${basedir}/../LICENSE.txt</headerLocation>