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

    <class name="PCPoint"
           identity-type="application" objectid-class="org.apache.jdo.tck.pc.mylib.PCPoint$Oid">
      <field name="id" primary-key="true"/>
    </class>

    <class name="VersionedPCPoint"
           identity-type="application" objectid-class="org.apache.jdo.tck.pc.mylib.VersionedPCPoint$Oid">
      <version strategy="version-number" column="VERSION"/>
      <field name="id" primary-key="true"/>
    </class>

    <class name="PCPoint2"
           identity-type="application" objectid-class="org.apache.jdo.tck.pc.mylib.PCPoint2$Oid">
      <field name="id" primary-key="true"/>
      <field name="clearCalled" persistence-modifier="none"/>
      <field name="loadCalled" persistence-modifier="none"/>
      <field name="storeCalled" persistence-modifier="none"/>
      <field name="deleteCalled" persistence-modifier="none"/>
    </class>

    <class name="PCRect"
           identity-type="application" objectid-class="org.apache.jdo.tck.pc.mylib.PCRect$Oid">
      <field name="id" primary-key="true"/>
      <fetch-group name="PCRect.upperLeft">
        <field name="upperLeft"/>
      </fetch-group>
      <fetch-group name="PCRect.lowerRight">
        <field name="lowerRight"/>
      </fetch-group>
    </class>

    <class name="PrimitiveTypes" 
           identity-type="application" objectid-class="org.apache.jdo.tck.pc.mylib.PrimitiveTypes$Oid">
      <field name="id" primary-key="true"/>
    </class>

  </package>
</jdo>

