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

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

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

