<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      https://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.
-->
<orm xmlns="https://db.apache.org/jdo/xmlns/orm"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="https://db.apache.org/jdo/xmlns/orm
     https://db.apache.org/jdo/xmlns/orm_3_2.xsd">
    <package name="org.apache.jdo.tck.pc.instancecallbacks">
        <class name="InstanceCallbackNonPersistFdsClass" table="ICNonPersistFds">
            <datastore-identity strategy="identity">
                <column name="DATASTORE_IDENTITY"/>
            </datastore-identity>
            <field name="keyValue" column="ICKEY"/>
            <field name="d" column="D"/>
            <field name="s" column="S"/>
            <field name="floatValue">
                <column name="FLOATVAL"/>
            </field>
            <field name="intValue">
                <column name="INTVAL"/>
            </field>
        </class>

        <class name="InstanceCallbackClass" table="InstanceCallbacks">
            <datastore-identity strategy="identity">
                <column name="DATASTORE_IDENTITY"/>
            </datastore-identity>
            <field name="keyValue" column="ICKEY"/>
            <field name="name" column="NAME"/>
            <field name="timeStamp">
                <column name="TIMEDATE"/>
            </field>
            <field name="nextObj">
                <column name="NEXTOBJ"/>
            </field>
            <!-- There is no parent field in the class,
            only a Collection children. The PARENT column contains the
            single-valued parent of each child instance. -->
            <field name="children">
                <element column="PARENT"/>
            </field>
            <field name="intValue">
                <column name="INTVAL"/>
            </field>
            <field name="doubleValue">
                <column name="DOUBLEVAL"/>
            </field>
            <field name="childToDelete">
                <column name="CHILD2DEL"/>
            </field>
            <field name="charValue">
                <column name="CHARVAL"/>
            </field>
        </class>
    </package>
</orm>
