Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/EqualityHelper.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/EqualityHelper.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/EqualityHelper.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/EqualityHelper.java Fri Mar 18 17:07:39 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); + } + +}
Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/GetSupportedOptions.java Fri Mar 18 17:07:39 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); + } + } + +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/JDOJdk14Logger.java Fri Mar 18 17:07:39 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); + } + } + }); + } + +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/SwingTestRunner.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/SwingTestRunner.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/SwingTestRunner.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/SwingTestRunner.java Fri Mar 18 17:07:39 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); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestListSuite.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestListSuite.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestListSuite.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestListSuite.java Fri Mar 18 17:07:39 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("#"); + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestSelector.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestSelector.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestSelector.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/TestSelector.java Fri Mar 18 17:07:39 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; + } + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/util/ThreadExceptionHandler.java Fri Mar 18 17:07:39 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(); + } +} Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/jdoTest.properties Fri Mar 18 17:07:39 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 Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/company/package.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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> Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/AllTypes.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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> Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayCollections.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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> Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/ArrayListCollections.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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> Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/CollectionCollections.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,178 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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> Added: incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo (added) +++ incubator/jdo/trunk/tck11/test/jdo/applicationidentity/org/apache/jdo/tck/pc/fieldtypes/FieldsOfBigDecimal.jdo Fri Mar 18 17:07:39 2005 @@ -0,0 +1,202 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE jdo PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN" "http://java.sun.com/dtd/jdo_1_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>