<?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.
-->

<jdo xmlns="https://db.apache.org/jdo/xmlns/jdo"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="https://db.apache.org/jdo/xmlns/jdo
     https://db.apache.org/jdo/xmlns/jdo_3_2.xsd">
  <package name="org.apache.jdo.tck.pc.singlefieldidentity">

    <class name="PCPointSingleFieldPrimitivebyte"
           identity-type="application" objectid-class="javax.jdo.identity.ByteIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldByte"
           identity-type="application" objectid-class="javax.jdo.identity.ByteIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldPrimitivechar"
           identity-type="application" objectid-class="javax.jdo.identity.CharIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldCharacter"
           identity-type="application" objectid-class="javax.jdo.identity.CharIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldPrimitiveint"
           identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldInteger"
           identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldPrimitivelong"
           identity-type="application" objectid-class="javax.jdo.identity.LongIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldLong"
           identity-type="application" objectid-class="javax.jdo.identity.LongIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldPrimitiveshort"
           identity-type="application" objectid-class="javax.jdo.identity.ShortIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldShort"
           identity-type="application" objectid-class="javax.jdo.identity.ShortIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldString"
           identity-type="application" objectid-class="javax.jdo.identity.StringIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPointSingleFieldDate"
           identity-type="application" objectid-class="javax.jdo.identity.ObjectIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="Person"
           identity-type="application" objectid-class="javax.jdo.identity.LongIdentity">
      <field name="id" primary-key="true"/>
    </class>

    <class name="Employee">
    </class>

    <class name="FullTimeEmployee">
    </class>

    <class name="PartTimeEmployee">
    </class>

  </package>
</jdo>

