Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ClassGenerator.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/DeepEquality.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/DeepEquality.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/DeepEquality.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/DeepEquality.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+/**
+ * This <code>DeepEquality</code> interface defines a method indicating
+ * whether some other object is "deep equal to" this object.
+ * <p>
+ * Two objects are deep equal, if all the fields are deep equal. The
+ * sematics of deep equal on the fields depends of the field type:
+ * <ul>
+ * <li>fields of type <code>boolean</code> or an integral type are deep
+ * equal, if they compare true using <code>==</code></li>
+ * <li>fields of type <code>float</code> and <code>double</code> are deep
+ * equal, if they are close enough as defined by methods closeEnough
+ * provided by class <code>EqualityHelper</code></li>
+ * <li>fields of Java wrapper classes are equal if their wrapped primitive
+ * values are deep equal</li>
+ * <li>fields of type BigDecimal are equal, if compareTo returns 0 </li>
+ * <li>collection fields are deep equal, if they have the same size and
+ * their corresponding elements compare deep equal after sorting using the
+ * natural ordering.</li>
+ * <li>map fields compare deep equal, if they have the same size and both
+ * keys and values compare deep equal after sorting the entries using the
+ * natural ordering of the keys.</li>
+ * <li>fields of type <code>DeepEquality</code> are deep equal, if method
+ * <code>deepEquals</code> returns <code>true</code></li>
+ * <li>fields of other types are deep equal, if method <code>equals</code>
+ * returns <code>true</code></li>
+ * </ul>
+ * The <code>EqualityHelper</code> instance passed to the
+ * <code>deepEquals</code> method keeps track of instances that have
+ * already been processed to avoid endless recursion for cyclic data
+ * structures.
+ *
+ * @author Michael Bouschen
+ * @since 1.1
+ */
+public interface DeepEquality {
+
+ /**
+ * Returns <code>true</code> if all the fields of this instance are
+ * deep equal to the corresponding fields of the specified Employee.
+ * @param other the object with which to compare.
+ * @param helper EqualityHelper to keep track of instances that have
+ * already been processed.
+ * @return <code>true</code> if all the fields are deep equal;
+ * <code>false</code> otherwise.
+ * @throws ClassCastException if the specified instances' type prevents
+ * it from being compared to this instance.
+ */
+ public boolean deepCompareFields(DeepEquality other, EqualityHelper
helper);
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/DeepEquality.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/EqualityHelper.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/EqualityHelper.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/EqualityHelper.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/EqualityHelper.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import java.math.BigDecimal;
+
+/**
+ * This is a utility class to support equality checking. An EqualityHelper
+ * object defines the context of a deepEquals call, because it keeps track
+ * of objects that have already been processed. This avoids endless
+ * recursion when comparing cyclic data structures for deep equality.
+ * <p>
+ * Furthermore, EqualityHelper provides convenience methods for checking
+ * deep equality, equality and close enough (for floating point values).
+ *
+ * @author Michael Bouschen
+ * @since 1.1
+ */
+public class EqualityHelper {
+
+ /** Used when comparing float values close enough. */
+ public static float FLOAT_EPSILON = (float)Math.pow(2.0, -20.0);
+
+ /** Used when comparing double values close enough. */
+ public static double DOUBLE_EPSILON = Math.pow(2.0, -52.0);
+
+ /** Comparator used in method deepEquals comparing maps. */
+ private static Comparator entryKeyComparator = new Comparator() {
+ public int compare(Object o1, Object o2) {
+ Object key1 = ((Map.Entry)o1).getKey();
+ Object key2 = ((Map.Entry)o2).getKey();
+ return ((Comparable)key1).compareTo(key2);
+ }
+ };
+
+ /** Collection of instances that have been processed already in the
+ * context of this EqualityHelper instance
+ */
+ private Collection processed = new HashSet();
+
+ // Methods to support keeping track of instances that have been
+ // processed already.
+
+ /** Returns <code>true</code> if the specified instance has been
+ * processed already in the context of this
+ * <code>EqualityHelper</code>.
+ * @param obj the instance to be checked.
+ * @return <code>true</code> if the instance has been processed
+ * already; <code>false</code> otherwise.
+ */
+ public boolean isProcessed(Object obj) {
+ return processed.contains(obj);
+ }
+
+ /** Marks the specified instance as processed in the context of this
+ * <code>EqualityHelper</code>. This means the instance is added to the
+ * collection of processed instances.
+ * @param obj instance marked as processed
+ */
+ public void markProcessed(Object obj) {
+ processed.add(obj);
+ }
+
+ /** Clears the collection of processed instances of this
+ * <code>EqualityHelper</code>. No instance is marked as processed in
+ * the context of this <code>EqualityHelper</code> after calling this
+ * method.
+ */
+ public void clearProcessed() {
+ processed.clear();
+ }
+
+ // Deep equality support methods
+
+ /** Returns <code>true</code> if the specified instances are "deep
+ * equal".
+ * @param me one object to be tested for deep equality
+ * @param other the other object to be tested for deep equality
+ * @return <code>true</code> if the objects are deep equal.
+ */
+ public boolean deepEquals(DeepEquality me, DeepEquality other) {
+ if (me == other)
+ return true;
+ if ((me == null) || (other == null))
+ return false;
+ if (!me.getClass().isAssignableFrom(other.getClass()))
+ return false;
+ if (isProcessed(me))
+ return true;
+ markProcessed(me);
+ return me.deepCompareFields(other, this);
+ }
+
+ /** Returns <code>true</code> if the specified instances are "deep
+ * equal". The method compares the two instances via the deepEquals
+ * method if they implement DeepEquals; compares the two instances via
+ * deepEquals if they implement Collection or Map, and otherwise
+ * compares the instances using equals.
+ * @param me one object to be tested for deep equality
+ * @param other the other object to be tested for deep equality
+ * @return <code>true</code> if the objects are deep equal.
+ */
+ public boolean deepEquals(Object me, Object other) {
+ if (me == other)
+ return true;
+ if ((me == null) || (other == null))
+ return false;
+ if ((me instanceof DeepEquality) && (other instanceof DeepEquality))
+ return deepEquals((DeepEquality)me, (DeepEquality)other);
+ if ((me instanceof Collection) && (other instanceof Collection))
+ return deepEquals((Collection)me, (Collection)other);
+ if ((me instanceof Map) && (other instanceof Map))
+ return deepEquals((Map)me, (Map)other);
+ return me.equals(other);
+ }
+
+ /** Returns <code>true</code> if the specified collections are "deep
+ * equal". Two collections are deep equal, if they have the same size
+ * and their corresponding elements are deep equal after sorting
+ * using the natural ordering of the elements. The method throws a
+ * <code>ClassCastException</code> if the elements are not Comparable
+ * or if they are not mutually comparable.
+ * @param mine one collection to be tested for deep equality
+ * @param other the other collection to be tested for deep equality
+ * @return <code>true</code> if the collections are deep equal.
+ * @throws ClassCastException if the collections contain elements that
+ * are not mutually comparable.
+ */
+ public boolean deepEquals(Collection mine, Collection other) {
+ if (mine == other)
+ return true;
+ if ((mine == null) || (other == null))
+ return false;
+
+ // Return false, if the size differs
+ if (mine.size() != other.size())
+ return false;
+ // Now check the elements
+ List myList = new ArrayList(mine);
+ Collections.sort(myList);
+ List otherList = new ArrayList(other);
+ Collections.sort(otherList);
+ for (int i = 0; i < myList.size(); i++) {
+ if (!deepEquals(myList.get(i), otherList.get(i)))
+ return false;
+ }
+ return true;
+ }
+
+ /** Returns <code>true</code> if the specified maps are "deep
+ * equal". Two maps are deep equal, if they have the same size and the
+ * values of the corresponding keys compare deep equal. The method
+ * throws a <code>ClassCastException</code> if keys or values are not
+ * Comparable or if they are not mutually comparable.
+ * @param mine one map to be tested for deep equality
+ * @param other the other map to be tested for deep equality
+ * @return <code>true</code> if the maps are deep equal.
+ * @throws ClassCastException if the maps contain keys or values that
+ * are not mutually comparable.
+ */
+ public boolean deepEquals(Map mine, Map other) {
+ if (mine == other)
+ return true;
+ if ((mine == null) || (other == null))
+ return false;
+
+ // Return false, if the size differs
+ if (mine.size() != other.size())
+ return false;
+
+ // Now check the elements
+ List myList = new ArrayList(mine.entrySet());
+ Collections.sort(myList, entryKeyComparator);
+ List otherList = new ArrayList(other.entrySet());
+ Collections.sort(otherList, entryKeyComparator);
+
+ for (int i = 0; i < myList.size(); i++) {
+ Map.Entry entry1 = (Map.Entry)myList.get(i);
+ Map.Entry entry2 = (Map.Entry)otherList.get(i);
+ // compare the keys
+ if (!deepEquals(entry1.getKey(), entry2.getKey()))
+ return false;
+ // compare the values
+ if (!deepEquals(entry1.getValue(), entry2.getValue()))
+ return false;
+ }
+ return true;
+ }
+
+ // Shallow equality support methods
+
+ /** Returns <code>true</code> if the specified collections are "shallow
+ * equal". Two collections are shallow equal, if they have the same size
+ * and their corresponding elements are equal after sorting using the
+ * natural ordering.
+ * @param mine one collection to be tested for shallow equality
+ * @param other the other collection to be tested for shallow equality
+ * @return <code>true</code> if the collections are deep equal.
+ */
+ public boolean shallowEquals(Collection mine, Collection other) {
+ if (mine == other)
+ return true;
+ if ((mine == null) || (other == null))
+ return false;
+
+ // Return false, if the size differs
+ if (mine.size() != other.size())
+ return false;
+ // Now check the elements
+ List myList = new ArrayList(mine);
+ Collections.sort(myList);
+ List otherList = new ArrayList(other);
+ Collections.sort(otherList);
+ return myList.equals(otherList);
+ }
+
+ // Equality support methods
+
+ /** Returns <code>true</code> if the specified objects are equal.
+ * This is a helper method checking for identical and <code>null</code>
+ * objects before delegating to the regular equals method.
+ * @param o1 one object to be tested for equality
+ * @param o2 the other object to be tested for equality
+ * @return <code>true</code> if the specified objects are equal.
+ */
+ public boolean equals(Object o1, Object o2) {
+ if (o1 == o2)
+ return true;
+ if ((o1 == null) || (o2 == null))
+ return false;
+ return o1.equals(o2);
+ }
+
+ /** Returns <code>true</code>, if compare called for the specified
+ * BigDecimal objects returns <code>0</code>. Please note, two
+ * BigDecimal instances are not equal (using equals) if their scale
+ * differs, and this method compares the values, ignoring scale.
+ * @param bd1 one object to be tested for equality
+ * @param bd2 the other object to be tested for equality
+ * @return <code>true</code> if the specified BigDecimal objects are
+ * equal.
+ */
+ public boolean equals(BigDecimal bd1, BigDecimal bd2) {
+ if (bd1 == bd2)
+ return true;
+ if ((bd1 == null) || (bd2 == null))
+ return false;
+ return bd1.compareTo(bd2) == 0;
+ }
+
+ // Methods to support "close enough" comparison
+
+ /** Returns <code>true</code> if the specified objects are close
+ * enough to be considered to be equal for a deep equals
+ * comparison. The method delegates to the method taking double
+ * or float values if the specified objects are Float or Double
+ * wrappers. Otherwise it delegates to equals.
+ * @param o1 one object to be tested for close enough
+ * @param o2 the other object to be tested for close enough
+ * @return <code>true</code> if the specified values are close enough.
+ */
+ public boolean closeEnough(Object o1, Object o2) {
+ if (o1 == o2)
+ return true;
+ if ((o1 == null) || (o2 == null))
+ return false;
+
+ if ((o1 instanceof Double) && (o2 instanceof Double))
+ return closeEnough(((Double)o1).doubleValue(),
+ ((Double)o2).doubleValue());
+ else if ((o1 instanceof Float) && (o2 instanceof Float))
+ return closeEnough(((Float)o1).floatValue(),
+ ((Float)o2).floatValue());
+ else if ((o1 instanceof BigDecimal) && (o2 instanceof BigDecimal))
+ return ((BigDecimal)o1).compareTo((BigDecimal)o2) == 0;
+ else
+ return o1.equals(o2);
+ }
+
+ /** Returns <code>true</code> if the specified float values are close
+ * enough to be considered to be equal for a deep equals
+ * comparison. Floating point values are not exact, so comparing them
+ * using <code>==</code> might not return useful results. This method
+ * checks that both double values are within some percent of each
+ * other.
+ * @param d1 one double to be tested for close enough
+ * @param d2 the other double to be tested for close enough
+ * @return <code>true</code> if the specified values are close enough.
+ */
+ public boolean closeEnough(double d1, double d2) {
+ if (d1 == d2)
+ return true;
+
+ double diff = Math.abs(d1 - d2);
+ return diff < Math.abs((d1 + d2) * DOUBLE_EPSILON);
+ }
+
+ /**
+ * Returns <code>true</code> if the specified float values are close
+ * enough to be considered to be equal for a deep equals
+ * comparison. Floating point values are not exact, so comparing them
+ * using <code>==</code> might not return useful results. This method
+ * checks that both float values are within some percent of each
+ * other.
+ * @param f1 one float to be tested for close enough
+ * @param f2 the other float to be tested for close enough
+ * @return <code>true</code> if the specified values are close enough.
+ */
+ public boolean closeEnough(float f1, float f2) {
+ if (f1 == f2)
+ return true;
+
+ float diff = Math.abs(f1 - f2);
+ return diff < Math.abs((f1 + f2) * FLOAT_EPSILON);
+ }
+
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/EqualityHelper.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.util.Collection;
+import java.util.Iterator;
+import javax.jdo.PersistenceManagerFactory;
+
+public class GetSupportedOptions {
+
+ public static void main(String[] args) throws Exception
+ {
+ if( args.length == 0 ){
+ System.err.println("Must pass name of PMF as an argument");
+ System.exit(-1);
+ }
+ String PMFclassname = args[0];
+ Class PMFclass = Class.forName(PMFclassname);
+ PersistenceManagerFactory pmf = (PersistenceManagerFactory)
PMFclass.newInstance();
+ Collection options = pmf.supportedOptions();
+ System.out.println("Supported options are:");
+ Iterator iter = options.iterator();
+ while( iter.hasNext() ){
+ String val = (String) iter.next();
+ System.out.println(val);
+ }
+ }
+
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+import java.util.logging.LogManager;
+
+import javax.jdo.JDOFatalUserException;
+
+import org.apache.commons.logging.impl.Jdk14Logger;
+
+/**
+ * JDO-specific subclass of the apache commons logging Log
+ * implementation that wraps the standard JDK 1.4 logging.
+ * This class configures the JDK LogManager using a properties file
+ * called logging.properties found via the CLASSPATH.
+ *
+ * @author Michael Bouschen
+ * @since 1.1
+ * @version 1.1
+ */
+public class JDOJdk14Logger
+ extends Jdk14Logger
+{
+ /** Logging properties file name. */
+ public static final String PROPERIES_FILE = "logging.properties";
+
+ /** Indicates whether JDK 1.4 logging has been configured by this class. */
+ private static boolean configured = false;
+
+ /**
+ * Constructor checking whether JDK 1.4 logging should be
+ * configuared after calling super constructor.
+ */
+ public JDOJdk14Logger(String name) {
+ super(name);
+ if (!configured) {
+ configured = true;
+ configureJDK14Logger();
+ }
+ }
+
+ /**
+ * Configures JDK 1.4 LogManager.
+ */
+ private void configureJDK14Logger() {
+ final LogManager logManager = LogManager.getLogManager();
+ final ClassLoader cl = getClass().getClassLoader();
+ AccessController.doPrivileged(new PrivilegedAction() {
+ public Object run () {
+ try {
+ InputStream config =
cl.getResourceAsStream(PROPERIES_FILE);
+ logManager.readConfiguration(config);
+ return null;
+ }
+ catch (IOException ex) {
+ throw new JDOFatalUserException(
+ "A IOException was thrown when trying to read the " +
+ "logging configuration file " + PROPERIES_FILE + ".",
+ ex);
+ }
+ catch (SecurityException ex) {
+ throw new JDOFatalUserException(
+ "A SecurityException was thrown when trying to read "
+
+ "the logging configuration file " + PROPERIES_FILE +
+ ". In order to configure JDK 1.4 logging, you must " +
+ "grant java.util.logging.LoggingPermission(control) "
+
+ "to the codeBase containing the JDO TCK.", ex);
+ }
+ }
+ });
+ }
+
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/SwingTestRunner.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/SwingTestRunner.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/SwingTestRunner.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/SwingTestRunner.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.JCheckBox;
+import javax.swing.JOptionPane;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.swingui.TestRunner;
+
+/**
+ * TestRunner class for running a single test or a test suite in GUI mode
+ * using swing.
+ *
+ * @author Michael Bouschen
+ */
+public class SwingTestRunner
+ extends TestRunner
+{
+ /** */
+ private static final String TESTCOLLECTOR_KEY= "TestCollectorClass";
+
+ /** */
+ private static final String USER_DEFINED = "User defined test list";
+
+ /** */
+ private Test suite = null;
+
+ /** */
+ public SwingTestRunner() {
+ super();
+ setPreference(TESTCOLLECTOR_KEY, TestListSuite.class.getName());
+ // Disable feature: reloading of test classes every run.
+ setPreference("loading", "false");
+ }
+
+ /** */
+ public static void main(String[] args) {
+ new SwingTestRunner().start(args);
+ }
+
+ /** */
+ public static void run(Class test) {
+ main(new String[] { test.getName() });
+ }
+
+ /** */
+ public void start(String[] args) {
+ String suiteName = "JDO TCK";
+ fFrame = createUI(suiteName);
+ fFrame.pack();
+ fFrame.setVisible(true);
+ if ((args == null) || args.length == 0) {
+ suite = getTest(TestListSuite.class.getName());
+ }
+ else if (args.length == 1) {
+ suiteName = args[0];
+ suite = getTest(args[0]);
+ }
+ else {
+ suite = new TestListSuite(suiteName, Arrays.asList(args));
+ }
+ setSuite(suiteName);
+ runTest(suite);
+ }
+
+ /** Disable feature: reloading of test classes every run. */
+ protected JCheckBox createUseLoaderCheckBox() {
+ JCheckBox box = super.createUseLoaderCheckBox();
+ box.setVisible(false);
+ return box;
+ }
+
+ /** */
+ public void browseTestClasses() {
+ TestSelector selector= new TestSelector(fFrame, new TestListSuite("JDO
TCK test selection"));
+ if (selector.isEmpty()) {
+ JOptionPane.showMessageDialog(fFrame, "No Test Cases found.\nCheck
that the configured \'TestCollector\' is supported on this platform.");
+ return;
+ }
+ selector.show();
+ List classNames = selector.getSelectedItems();
+ if ((classNames != null) && (!classNames.isEmpty())) {
+ if (classNames.size() == 1) {
+ setSuite((String)classNames.get(0));
+ }
+ else {
+ setSuite(USER_DEFINED);
+ suite = new TestListSuite("Selected JDO TCK tests",
classNames);
+ }
+ }
+ }
+
+ /** */
+ public Test getTest(String suiteClassName) {
+ if ((suiteClassName != null ) && suiteClassName.equals(USER_DEFINED)) {
+ if (suite == null) {
+ // user selected 'User defines test list' from history,
+ // but there is no user selection => use all tests
+ suite = new TestListSuite("JDO TCK tests");
+ }
+ return suite;
+ }
+ return super.getTest(suiteClassName);
+ }
+
+ /**
+ * Terminates the TestRunner
+ */
+ public void terminate() {
+ fFrame.dispose();
+ System.exit(0);
+ }
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/SwingTestRunner.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestListSuite.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestListSuite.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestListSuite.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestListSuite.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jdo.tck.util;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.runner.TestCollector;
+
+/**
+ * This class implements a test suite including all test cases as specified
+ * in a testlist file. The user can specify the name of the testlist by
+ * setting the system property testlist. The default is
+ * JDOTCKTestCases.list. The swing GUI uses this class when browsing all
+ * test classes.
+ *
+ * @author Michael Bouschen
+ */
+public class TestListSuite
+ extends TestSuite
+ implements TestCollector
+{
+ /** Name of the system property to specify the list of test class names. */
+ public static final String TESTLIST_PROPERTY = "testlist";
+
+ /** Default of the system property testlist. */
+ public static final String TESTLIST_DEFAULT = "JDOTCKTestCases.list";
+
+ /**
+ * No arg constructor used by the swing GUI when browsing the test
+ * classes via the TestCollector interface.
+ */
+ public TestListSuite() { }
+
+ /**
+ * Creates a test suite with the specified name and reads the test
+ * class names fom a file specified by a system property.
+ */
+ public TestListSuite(String name) {
+ setName(name);
+ addTestClasses(getTestClassNames());
+ }
+
+ /**
+ * Creates a test suite with the specified name including the test
+ * classes from the specified list.
+ */
+ public TestListSuite(String name, List classNames) {
+ setName(name);
+ addTestClasses(classNames);
+ }
+
+ /** Runs this test suite in batch mode. */
+ public static void main(String args[]) {
+ BatchTestRunner.run(suite());
+ }
+
+ /** */
+ public static Test suite() {
+ return new TestListSuite("JDOTCK tests");
+ }
+
+ /**
+ * Adds all test classes from the specified list to this test
+ * suite.
+ */
+ private void addTestClasses(List classNames) {
+ for (Iterator i = classNames.iterator(); i.hasNext();) {
+ String className = (String)i.next();
+ try {
+ addTestSuite(Class.forName(className));
+ }
+ catch (ClassNotFoundException ex) {
+ System.out.println("Cannot find test class " +
className);
+ }
+ }
+ }
+
+ /**
+ * Returns an enumeration of Strings with qualified class names.
+ * Method defined in the JUnit interface TestCollector.
+ */
+ public Enumeration collectTests() {
+ return Collections.enumeration(getTestClassNames());
+ }
+
+ /**
+ * Returns a list of fully qualified test class names. The method
+ * checks the system property testlist for the name of the test list
+ * (default is JDOTCKTestCases.list). Each line of the file is expected
+ * to be the fully qualified class name of a test class. Line starting
+ * with a # are skipped.
+ */
+ protected List getTestClassNames() {
+ // get the name of the testlist file as system property
+ String testlist = System.getProperty(TESTLIST_PROPERTY,
TESTLIST_DEFAULT);
+ List testClassNames = new ArrayList();
+ try {
+ BufferedReader reader = getTestListReader(testlist);
+ for (String line = reader.readLine();
+ line != null;
+ line = reader.readLine()) {
+ line = line.trim();
+ if (isTestClassName(line)) {
+ testClassNames.add(line);
+ }
+ }
+ reader.close();
+ }
+ catch (IOException ex) {
+ System.out.println("Problems reading testlist " + testlist + ": "
+ ex);
+ }
+ return testClassNames;
+ }
+
+ /** Returns a BufferedReader for the specified testlist filename. */
+ protected BufferedReader getTestListReader(final String testlist)
+ throws FileNotFoundException {
+ try {
+ return (BufferedReader)AccessController.doPrivileged(
+ new PrivilegedExceptionAction () {
+ public Object run () throws IOException {
+ return new BufferedReader(new FileReader(testlist));
+ }
+ });
+ }
+ catch (PrivilegedActionException ex) {
+ // unwrap IOException
+ throw (FileNotFoundException)ex.getException();
+ }
+ }
+
+ /** Returns true if the specified String defines a test class name. */
+ protected boolean isTestClassName(String line) {
+ return (line != null) &&
+ (line.length() > 0) &&
+ !line.trim().startsWith("#");
+ }
+}
+
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestListSuite.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestSelector.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestSelector.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestSelector.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestSelector.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,284 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JScrollPane;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreeNode;
+import javax.swing.tree.TreePath;
+
+import junit.runner.TestCollector;
+
+/**
+ * A test class selector. A simple dialog to pick the name of a test suite.
+ */
+public class TestSelector extends JDialog {
+ private JButton fCancel;
+ private JButton fOk;
+ private JList fList;
+ private JTree fTree;
+ private JScrollPane fScrolledList;
+ private JLabel fDescription;
+ private List fSelectedItems;
+
+ /** */
+ public TestSelector(Frame parent, TestCollector testCollector) {
+ super(parent, true);
+ setSize(500, 500);
+ // setLocationRelativeTo only exists in 1.4
+ try {
+ setLocationRelativeTo(parent);
+ } catch (NoSuchMethodError e) {
+ centerWindow();
+ }
+ setTitle("Test Selector");
+
+ Vector list = null;
+ try {
+ parent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
+ list= createTestList(testCollector);
+ } finally {
+ parent.setCursor(Cursor.getDefaultCursor());
+ }
+
+ fTree = new JTree(createTreeModel(list));
+ //fTree.getSelectionModel().setSelectionMode(
+ // TreeSelectionModel.SINGLE_TREE_SELECTION);
+ fScrolledList= new JScrollPane(fTree);
+
+ fCancel= new JButton("Cancel");
+ fDescription= new JLabel("Select the Test class:");
+ fOk= new JButton("OK");
+ fOk.setEnabled(false);
+ getRootPane().setDefaultButton(fOk);
+
+ defineLayout();
+ addListeners();
+ }
+
+ /** */
+ public boolean isEmpty() {
+ return ((TreeNode)fTree.getModel().getRoot()).getChildCount() == 0;
+ }
+
+ /** */
+ public List getSelectedItems() {
+ return fSelectedItems;
+ }
+
+ /** */
+ public void checkEnableOK(TreeSelectionEvent e) {
+ boolean enabled = false;
+ TreePath[] paths = fTree.getSelectionPaths();
+ if (paths != null) {
+ for (int i = 0; i < paths.length; i++) {
+ if (((TreeNode)paths[i].getLastPathComponent()).isLeaf()) {
+ enabled = true;
+ break;
+ }
+ }
+ }
+ fOk.setEnabled(enabled);
+ }
+
+ /** */
+ public void okSelected() {
+ List classNames = new ArrayList();
+ TreePath[] paths = fTree.getSelectionPaths();
+ if (paths != null) {
+ for (int i = 0; i < paths.length; i++) {
+ Object selected = paths[i].getLastPathComponent();
+ if (selected instanceof ClassNameTreeNode) {
+
classNames.add(((ClassNameTreeNode)selected).getClassName());
+ }
+ }
+ }
+
+ fSelectedItems = classNames;
+ dispose();
+ }
+
+ /** */
+ private TreeModel createTreeModel(List classNames) {
+ DefaultMutableTreeNode root = new DefaultMutableTreeNode("Test
Classes");
+ TreeModel model = new DefaultTreeModel(root);
+
+ String currentPackageName = null;
+ DefaultMutableTreeNode currentPackageNode = null;
+ DefaultMutableTreeNode parent = root;
+ for (Iterator i = classNames.iterator(); i.hasNext();) {
+ String className = (String)i.next();
+ int index = className.lastIndexOf('.');
+ String packageName = (index >= 0) ? className.substring(0, index)
: "";
+ if ((currentPackageName == null) ||
!currentPackageName.equals(packageName)) {
+ currentPackageName = packageName;
+ currentPackageNode = new
DefaultMutableTreeNode(currentPackageName);
+ parent.add(currentPackageNode);
+ }
+ currentPackageNode.add(new ClassNameTreeNode(className));
+ }
+ return model;
+ }
+
+ /** */
+ private void centerWindow() {
+ Dimension paneSize = getSize();
+ Dimension screenSize = getToolkit().getScreenSize();
+ setLocation((screenSize.width-paneSize.width)/2,
(screenSize.height-paneSize.height)/2);
+ }
+
+ /** */
+ private void addListeners() {
+ fCancel.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ dispose();
+ }
+ });
+
+ fOk.addActionListener(
+ new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ okSelected();
+ }
+ });
+
+ fTree.addTreeSelectionListener(
+ new TreeSelectionListener() {
+ public void valueChanged(TreeSelectionEvent e) {
+ checkEnableOK(e);
+ }
+ });
+
+ fTree.addMouseListener(
+ new MouseAdapter () {
+ public void mouseClicked(MouseEvent e) {
+ if (e.getClickCount() == 2) {
+ okSelected();
+ }
+ }
+ });
+
+ addWindowListener(
+ new WindowAdapter() {
+ public void windowClosing(WindowEvent e) {
+ dispose();
+ }
+ }
+ );
+ }
+
+ /** */
+ private void defineLayout() {
+ getContentPane().setLayout(new GridBagLayout());
+ GridBagConstraints labelConstraints = new GridBagConstraints();
+ labelConstraints.gridx= 0; labelConstraints.gridy= 0;
+ labelConstraints.gridwidth= 1; labelConstraints.gridheight= 1;
+ labelConstraints.fill= GridBagConstraints.BOTH;
+ labelConstraints.anchor= GridBagConstraints.WEST;
+ labelConstraints.weightx= 1.0;
+ labelConstraints.weighty= 0.0;
+ labelConstraints.insets= new Insets(8, 8, 0, 8);
+ getContentPane().add(fDescription, labelConstraints);
+
+ GridBagConstraints listConstraints = new GridBagConstraints();
+ listConstraints.gridx= 0; listConstraints.gridy= 1;
+ listConstraints.gridwidth= 4; listConstraints.gridheight= 1;
+ listConstraints.fill= GridBagConstraints.BOTH;
+ listConstraints.anchor= GridBagConstraints.CENTER;
+ listConstraints.weightx= 1.0;
+ listConstraints.weighty= 1.0;
+ listConstraints.insets= new Insets(8, 8, 8, 8);
+ getContentPane().add(fScrolledList, listConstraints);
+
+ GridBagConstraints okConstraints= new GridBagConstraints();
+ okConstraints.gridx= 2; okConstraints.gridy= 2;
+ okConstraints.gridwidth= 1; okConstraints.gridheight= 1;
+ okConstraints.anchor= java.awt.GridBagConstraints.EAST;
+ okConstraints.insets= new Insets(0, 8, 8, 8);
+ getContentPane().add(fOk, okConstraints);
+
+
+ GridBagConstraints cancelConstraints = new GridBagConstraints();
+ cancelConstraints.gridx= 3; cancelConstraints.gridy= 2;
+ cancelConstraints.gridwidth= 1; cancelConstraints.gridheight= 1;
+ cancelConstraints.anchor= java.awt.GridBagConstraints.EAST;
+ cancelConstraints.insets= new Insets(0, 8, 8, 8);
+ getContentPane().add(fCancel, cancelConstraints);
+ }
+
+ /** */
+ private Vector createTestList(TestCollector collector) {
+ Enumeration each= collector.collectTests();
+ Vector classNames = new Vector(300);
+ while(each.hasMoreElements()) {
+ classNames.add(each.nextElement());
+ }
+ Collections.sort(classNames);
+ return classNames;
+ }
+
+ /** */
+ private static class ClassNameTreeNode extends DefaultMutableTreeNode {
+ private String className;
+
+ /** */
+ public ClassNameTreeNode (String className) {
+ this.className = className;
+ }
+
+ /** */
+ public String toString() {
+ if (className == null) return "";
+ int index = className.lastIndexOf('.');
+ return (index >= 0) ? className.substring(index+1) : className;
+ }
+
+ /** */
+ public String getClassName() {
+ return className;
+ }
+ }
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/TestSelector.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java
(added)
+++
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jdo.tck.util;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * This class extends java.lang.ThreadGroup and stores any uncaught
+ * exception of threads from this ThreadGroup for later retrieval.
+ *
+ * @author Michael Bouschen
+ */
+public class ThreadExceptionHandler extends ThreadGroup
+{
+ /**
+ * Map of uncaught exceptions. The thread is the key and the uncaught
+ * Throwable is the value in the map.
+ */
+ private Map uncaughtExceptions = new HashMap();
+
+ /** Constructor. */
+ public ThreadExceptionHandler() {
+ super("ThreadExceptionHandler");
+ }
+
+ /** Called by the Java Virtual Machine when a thread in this thread
+ * group stops because of an uncaught exception. This implementation
+ * stores the uncaught exception in a map for later retrieval.
+ */
+ public void uncaughtException(Thread t, Throwable e) {
+ uncaughtExceptions.put(t, e);
+ }
+
+ /** Returns an uncaught exception for the specified thread. */
+ public Throwable getUncaughtException(Thread t) {
+ return (Throwable)uncaughtExceptions.get(t);
+ }
+
+ /**
+ * Returns all uncaught exception stored in this ThreadGroup.
+ * Each element in the returned set is a Map.Entry with the
+ * thread as the key and the uncaught Throwable is the value.
+ */
+ public Set getAllUncaughtExceptions() {
+ return uncaughtExceptions.entrySet();
+ }
+}
Propchange:
incubator/jdo/trunk/tck20/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,98 @@
+
+ Copyright 2005 The Apache Software Foundation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+# Classnames can have the following attributes:
+# jdo:{persistent|transactional}
+# super: <classname>
+# oid: <classname>
+# access: {public|protected|package|private}
+# Fieldnames can have the following attributes:
+# type:<type>
+# access: {public|protected|package|private}
+# jdo:{persistent|transactional|transient}
+# annotation:{key|dfg|mediated}
+
+org.apache.jdo.tck.pc.company.Address=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Address$Oid
+org.apache.jdo.tck.pc.company.Address#addrid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Address#city=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Address#state=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Address#street=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Address#zipcode=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Address#country=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.Company=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Company$Oid
+org.apache.jdo.tck.pc.company.Company#address=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Company#companyid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Company#departments=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Company#founded=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Company#name=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.DentalInsurance=jdo:persistent,super:org.apache.jdo.tck.pc.company.Insurance
+org.apache.jdo.tck.pc.company.DentalInsurance#lifetimeOrthoBenefit=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.Department=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Department$Oid
+org.apache.jdo.tck.pc.company.Department#deptid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Department#name=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Department#employees=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Department#fundedEmps=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Department#company=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Department#employeeOfTheMonth=jdo:persistent,annotation:mediated
+
+org.apache.jdo.tck.pc.company.Employee=jdo:persistent,super:org.apache.jdo.tck.pc.company.Person
+org.apache.jdo.tck.pc.company.Employee#dentalInsurance=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#department=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#fundingDept=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#hiredate=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Employee#hradvisees=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#hradvisor=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#manager=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#medicalInsurance=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#mentor=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#projects=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#protege=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#reviewedProjects=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#team=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Employee#weeklyhours=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.FullTimeEmployee=jdo:persistent,super:org.apache.jdo.tck.pc.company.Employee
+org.apache.jdo.tck.pc.company.FullTimeEmployee#salary=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.Insurance=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Insurance$Oid
+org.apache.jdo.tck.pc.company.Insurance#insid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Insurance#carrier=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Insurance#employee=jdo:persistent,annotation:mediated
+
+org.apache.jdo.tck.pc.company.MedicalInsurance=jdo:persistent,super:org.apache.jdo.tck.pc.company.Insurance
+org.apache.jdo.tck.pc.company.MedicalInsurance#planType=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.PartTimeEmployee=jdo:persistent,super:org.apache.jdo.tck.pc.company.Employee
+org.apache.jdo.tck.pc.company.PartTimeEmployee#wage=jdo:persistent,annotation:dfg
+
+org.apache.jdo.tck.pc.company.Person=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Person$Oid
+org.apache.jdo.tck.pc.company.Person#address=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Person#birthdate=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Person#firstname=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Person#lastname=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Person#middlename=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Person#personid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Person#phoneNumbers=jdo:persistent,annotation:mediated
+
+org.apache.jdo.tck.pc.company.Project=jdo:persistent,oid:org.apache.jdo.tck.pc.company.Project$Oid
+org.apache.jdo.tck.pc.company.Project#budget=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Project#members=jdo:persistent,annotation:mediated
+org.apache.jdo.tck.pc.company.Project#name=jdo:persistent,annotation:dfg
+org.apache.jdo.tck.pc.company.Project#projid=jdo:persistent,annotation:key
+org.apache.jdo.tck.pc.company.Project#reviewers=jdo:persistent,annotation:mediated
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+<!--
+This file contains the schema information when an implementation
+has application identity.
+-->
+ <package name="org.apache.jdo.tck.pc.company">
+
+ <class name="Address"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Address$Oid">
+ <field name="addrid" primary-key="true"/>
+ </class>
+
+ <class name="Company"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Company$Oid">
+ <field name="companyid" primary-key="true"/>
+ <field name="departments" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Department"/>
+ </field>
+ <field name="address" embedded="true"/>
+ </class>
+
+ <class name="DentalInsurance"
+ identity-type="application"
+
persistence-capable-superclass="org.apache.jdo.tck.pc.company.Insurance"
+ />
+
+ <class name="Department"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Department$Oid">
+ <field name="deptid" primary-key="true"/>
+ <field name="employees" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ <field name="fundedEmps" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ </class>
+
+ <class name="Employee"
+ identity-type="application"
+
persistence-capable-superclass="org.apache.jdo.tck.pc.company.Person">
+ <field name="reviewedProjects" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Project"/>
+ </field>
+ <field name="projects" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Project"/>
+ </field>
+ <field name="team" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ <field name="hradvisees" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ </class>
+
+ <class name="FullTimeEmployee"
+ identity-type="application"
+
persistence-capable-superclass="org.apache.jdo.tck.pc.company.Employee"
+ />
+
+ <class name="Insurance"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Insurance$Oid">
+ <field name="insid" primary-key="true"/>
+ </class>
+
+ <class name="MedicalInsurance"
+ identity-type="application"
+
persistence-capable-superclass="org.apache.jdo.tck.pc.company.Insurance"
+ />
+
+ <class name="PartTimeEmployee"
+ identity-type="application"
+
persistence-capable-superclass="org.apache.jdo.tck.pc.company.Employee"
+ />
+
+ <class name="Person"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Person$Oid">
+ <field name="personid" primary-key="true"/>
+ <field name="middlename" default-fetch-group="false"/>
+ <field name="address" embedded="true"/>
+ <field name="phoneNumbers" persistence-modifier="persistent">
+ <map key-type="String" value-type="String"/>
+ </field>
+ </class>
+
+ <class name="Project"
+ identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.company.Project$Oid">
+ <field name="projid" primary-key="true"/>
+ <field name="reviewers" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ <field name="members" persistence-modifier="persistent">
+ <collection
element-type="org.apache.jdo.tck.pc.company.Employee"/>
+ </field>
+ </class>
+ </package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+ <package name="org.apache.jdo.tck.pc.fieldtypes">
+ <class name="AllTypes" identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.fieldtypes.AllTypes$Oid">
+ <field name="id" primary-key="true"/>
+ </class>
+ </package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+<package name="org.apache.jdo.tck.pc.fieldtypes">
+<class name="ArrayCollections" identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.fieldtypes.ArrayCollections$Oid">
+<field name="identifier" primary-key="true"/>
+<field name="ArrayOfObject0" persistence-modifier="persistent">
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfObject1" persistence-modifier="persistent">
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfSimpleClass2" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfSimpleClass3" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfSimpleInterface4" persistence-modifier="persistent">
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfSimpleInterface5" persistence-modifier="persistent">
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfString6" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfString7" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfDate8" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfDate9" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfLocale10" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfLocale11" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfBigDecimal12" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfBigDecimal13" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfBigInteger14" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfBigInteger15" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfByte16" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfByte17" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfDouble18" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfDouble19" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfFloat20" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfFloat21" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfInteger22" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfInteger23" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfLong24" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfLong25" >
+<array embedded-element="false">
+</array>
+</field>
+<field name="ArrayOfShort26" >
+<array embedded-element="true">
+</array>
+</field>
+<field name="ArrayOfShort27" >
+<array embedded-element="false">
+</array>
+</field>
+</class>
+</package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+<package name="org.apache.jdo.tck.pc.fieldtypes">
+<class name="ArrayListCollections" identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.fieldtypes.ArrayListCollections$Oid">
+<field name="identifier" primary-key="true"/>
+<field name="ArrayListOfObject0" >
+<collection element-type="java.lang.Object">
+</collection>
+</field>
+<field name="ArrayListOfObject1" >
+<collection element-type="java.lang.Object" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfObject2" >
+<collection element-type="java.lang.Object" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfSimpleClass3" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass">
+</collection>
+</field>
+<field name="ArrayListOfSimpleClass4" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass"
embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfSimpleClass5" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass"
embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfSimpleInterface6" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface">
+</collection>
+</field>
+<field name="ArrayListOfSimpleInterface7" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface"
embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfSimpleInterface8" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface"
embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfString9" >
+<collection element-type="java.lang.String">
+</collection>
+</field>
+<field name="ArrayListOfString10" >
+<collection element-type="java.lang.String" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfString11" >
+<collection element-type="java.lang.String" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfDate12" >
+<collection element-type="java.util.Date">
+</collection>
+</field>
+<field name="ArrayListOfDate13" >
+<collection element-type="java.util.Date" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfDate14" >
+<collection element-type="java.util.Date" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfLocale15" >
+<collection element-type="java.util.Locale">
+</collection>
+</field>
+<field name="ArrayListOfLocale16" >
+<collection element-type="java.util.Locale" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfLocale17" >
+<collection element-type="java.util.Locale" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfBigDecimal18" >
+<collection element-type="java.math.BigDecimal">
+</collection>
+</field>
+<field name="ArrayListOfBigDecimal19" >
+<collection element-type="java.math.BigDecimal" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfBigDecimal20" >
+<collection element-type="java.math.BigDecimal" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfBigInteger21" >
+<collection element-type="java.math.BigInteger">
+</collection>
+</field>
+<field name="ArrayListOfBigInteger22" >
+<collection element-type="java.math.BigInteger" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfBigInteger23" >
+<collection element-type="java.math.BigInteger" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfByte24" >
+<collection element-type="java.lang.Byte">
+</collection>
+</field>
+<field name="ArrayListOfByte25" >
+<collection element-type="java.lang.Byte" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfByte26" >
+<collection element-type="java.lang.Byte" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfDouble27" >
+<collection element-type="java.lang.Double">
+</collection>
+</field>
+<field name="ArrayListOfDouble28" >
+<collection element-type="java.lang.Double" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfDouble29" >
+<collection element-type="java.lang.Double" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfFloat30" >
+<collection element-type="java.lang.Float">
+</collection>
+</field>
+<field name="ArrayListOfFloat31" >
+<collection element-type="java.lang.Float" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfFloat32" >
+<collection element-type="java.lang.Float" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfInteger33" >
+<collection element-type="java.lang.Integer">
+</collection>
+</field>
+<field name="ArrayListOfInteger34" >
+<collection element-type="java.lang.Integer" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfInteger35" >
+<collection element-type="java.lang.Integer" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfLong36" >
+<collection element-type="java.lang.Long">
+</collection>
+</field>
+<field name="ArrayListOfLong37" >
+<collection element-type="java.lang.Long" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfLong38" >
+<collection element-type="java.lang.Long" embedded-element="false">
+</collection>
+</field>
+<field name="ArrayListOfShort39" >
+<collection element-type="java.lang.Short">
+</collection>
+</field>
+<field name="ArrayListOfShort40" >
+<collection element-type="java.lang.Short" embedded-element="true">
+</collection>
+</field>
+<field name="ArrayListOfShort41" >
+<collection element-type="java.lang.Short" embedded-element="false">
+</collection>
+</field>
+</class>
+</package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+<package name="org.apache.jdo.tck.pc.fieldtypes">
+<class name="CollectionCollections" identity-type="application"
+
objectid-class="org.apache.jdo.tck.pc.fieldtypes.CollectionCollections$Oid">
+<field name="identifier" primary-key="true"/>
+<field name="CollectionOfObject0" >
+<collection element-type="java.lang.Object">
+</collection>
+</field>
+<field name="CollectionOfObject1" >
+<collection element-type="java.lang.Object" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfObject2" >
+<collection element-type="java.lang.Object" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfSimpleClass3" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass">
+</collection>
+</field>
+<field name="CollectionOfSimpleClass4" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass"
embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfSimpleClass5" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleClass"
embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfSimpleInterface6" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface">
+</collection>
+</field>
+<field name="CollectionOfSimpleInterface7" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface"
embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfSimpleInterface8" >
+<collection element-type="org.apache.jdo.tck.pc.fieldtypes.SimpleInterface"
embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfString9" >
+<collection element-type="java.lang.String">
+</collection>
+</field>
+<field name="CollectionOfString10" >
+<collection element-type="java.lang.String" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfString11" >
+<collection element-type="java.lang.String" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfDate12" >
+<collection element-type="java.util.Date">
+</collection>
+</field>
+<field name="CollectionOfDate13" >
+<collection element-type="java.util.Date" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfDate14" >
+<collection element-type="java.util.Date" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfLocale15" >
+<collection element-type="java.util.Locale">
+</collection>
+</field>
+<field name="CollectionOfLocale16" >
+<collection element-type="java.util.Locale" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfLocale17" >
+<collection element-type="java.util.Locale" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfBigDecimal18" >
+<collection element-type="java.math.BigDecimal">
+</collection>
+</field>
+<field name="CollectionOfBigDecimal19" >
+<collection element-type="java.math.BigDecimal" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfBigDecimal20" >
+<collection element-type="java.math.BigDecimal" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfBigInteger21" >
+<collection element-type="java.math.BigInteger">
+</collection>
+</field>
+<field name="CollectionOfBigInteger22" >
+<collection element-type="java.math.BigInteger" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfBigInteger23" >
+<collection element-type="java.math.BigInteger" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfByte24" >
+<collection element-type="java.lang.Byte">
+</collection>
+</field>
+<field name="CollectionOfByte25" >
+<collection element-type="java.lang.Byte" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfByte26" >
+<collection element-type="java.lang.Byte" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfDouble27" >
+<collection element-type="java.lang.Double">
+</collection>
+</field>
+<field name="CollectionOfDouble28" >
+<collection element-type="java.lang.Double" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfDouble29" >
+<collection element-type="java.lang.Double" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfFloat30" >
+<collection element-type="java.lang.Float">
+</collection>
+</field>
+<field name="CollectionOfFloat31" >
+<collection element-type="java.lang.Float" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfFloat32" >
+<collection element-type="java.lang.Float" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfInteger33" >
+<collection element-type="java.lang.Integer">
+</collection>
+</field>
+<field name="CollectionOfInteger34" >
+<collection element-type="java.lang.Integer" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfInteger35" >
+<collection element-type="java.lang.Integer" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfLong36" >
+<collection element-type="java.lang.Long">
+</collection>
+</field>
+<field name="CollectionOfLong37" >
+<collection element-type="java.lang.Long" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfLong38" >
+<collection element-type="java.lang.Long" embedded-element="false">
+</collection>
+</field>
+<field name="CollectionOfShort39" >
+<collection element-type="java.lang.Short">
+</collection>
+</field>
+<field name="CollectionOfShort40" >
+<collection element-type="java.lang.Short" embedded-element="true">
+</collection>
+</field>
+<field name="CollectionOfShort41" >
+<collection element-type="java.lang.Short" embedded-element="false">
+</collection>
+</field>
+</class>
+</package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo
------------------------------------------------------------------------------
svn:executable = *
Added:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo
URL:
http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo?view=auto&rev=160090
==============================================================================
---
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo
(added)
+++
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo
Mon Apr 4 12:41:23 2005
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects
Metadata 2.0//EN" "http://java.sun.com/dtd/jdo_2_0.dtd">
+<jdo>
+<package name="org.apache.jdo.tck.pc.fieldtypes">
+<class name="FieldsOfBigDecimal" identity-type="application"
+ objectid-class="org.apache.jdo.tck.pc.fieldtypes.FieldsOfBigDecimal$Oid">
+<field name="identifier" primary-key="true"/>
+<field name="BigDecimal1" embedded="true">
+</field>
+<field name="BigDecimal2" embedded="false">
+</field>
+<field name="BigDecimal3" persistence-modifier="none" >
+</field>
+<field name="BigDecimal4" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal5" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal6" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal7" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal10" persistence-modifier="none" >
+</field>
+<field name="BigDecimal11" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal12" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal13" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal14" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal17" embedded="true">
+</field>
+<field name="BigDecimal18" embedded="false">
+</field>
+<field name="BigDecimal19" persistence-modifier="none" >
+</field>
+<field name="BigDecimal20" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal21" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal22" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal23" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal29" persistence-modifier="none" >
+</field>
+<field name="BigDecimal30" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal31" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal32" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal33" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal37" embedded="true">
+</field>
+<field name="BigDecimal38" embedded="false">
+</field>
+<field name="BigDecimal39" persistence-modifier="none" >
+</field>
+<field name="BigDecimal40" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal41" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal42" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal43" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal46" persistence-modifier="none" >
+</field>
+<field name="BigDecimal47" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal48" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal49" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal50" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal53" embedded="true">
+</field>
+<field name="BigDecimal54" embedded="false">
+</field>
+<field name="BigDecimal55" persistence-modifier="none" >
+</field>
+<field name="BigDecimal56" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal57" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal58" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal59" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal65" persistence-modifier="none" >
+</field>
+<field name="BigDecimal66" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal67" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal68" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal69" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal73" embedded="true">
+</field>
+<field name="BigDecimal74" embedded="false">
+</field>
+<field name="BigDecimal75" persistence-modifier="none" >
+</field>
+<field name="BigDecimal76" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal77" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal78" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal79" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal82" persistence-modifier="none" >
+</field>
+<field name="BigDecimal83" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal84" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal85" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal86" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal89" embedded="true">
+</field>
+<field name="BigDecimal90" embedded="false">
+</field>
+<field name="BigDecimal91" persistence-modifier="none" >
+</field>
+<field name="BigDecimal92" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal93" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal94" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal95" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal101" persistence-modifier="none" >
+</field>
+<field name="BigDecimal102" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal103" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal104" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal105" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal109" embedded="true">
+</field>
+<field name="BigDecimal110" embedded="false">
+</field>
+<field name="BigDecimal111" persistence-modifier="none" >
+</field>
+<field name="BigDecimal112" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal113" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal114" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal115" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal118" persistence-modifier="none" >
+</field>
+<field name="BigDecimal119" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal120" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal121" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal122" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal125" embedded="true">
+</field>
+<field name="BigDecimal126" embedded="false">
+</field>
+<field name="BigDecimal127" persistence-modifier="none" >
+</field>
+<field name="BigDecimal128" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal129" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal130" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal131" persistence-modifier="transactional" >
+</field>
+<field name="BigDecimal137" persistence-modifier="none" >
+</field>
+<field name="BigDecimal138" persistence-modifier="persistent" >
+</field>
+<field name="BigDecimal139" persistence-modifier="persistent" embedded="true">
+</field>
+<field name="BigDecimal140" persistence-modifier="persistent" embedded="false">
+</field>
+<field name="BigDecimal141" persistence-modifier="transactional" >
+</field>
+</class>
+</package>
+</jdo>
Propchange:
incubator/jdo/trunk/tck20/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo
------------------------------------------------------------------------------
svn:executable = *