<!--

    Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0 which is available at
    http://www.eclipse.org/legal/epl-2.0,
    or the Eclipse Distribution License v. 1.0 which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause

-->

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
  version="2.1">
    <persistence-unit name="@default@" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
    </persistence-unit>
    <!-- This is for default persistence unit -->
    <persistence-unit name="MulitPU-1" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Address</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Department</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Employee</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.EmploymentPeriod</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.LargeProject</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.PhoneNumber</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.PhoneNumberPK</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Project</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.SmallProject</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Athlete</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Runner</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.RunnerInfo</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.RunnerStatus</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Sprinter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Shoe</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ShoeTag</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Race</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Organizer</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Responsibility</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Endorser</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Item</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.Order</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.CompetitionConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.GenderConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.LongToStringConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.RunningStatusConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.TagConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.ResponsibilityConverter</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="@server-weaving@"/>
            <property name="eclipselink.session-name" value="default-session"/>
            <property name="eclipselink.orm.validate.schema" value="true"/>
            <property name="eclipselink.jdbc.uppercase-columns" value="true"/>
            <property name="jakarta.persistence.schema-generation.scripts.action" value="drop-and-create"/>
            <property name="jakarta.persistence.schema-generation.scripts.drop-target" value="jpa21-model-drop.jdbc"/>
            <property name="jakarta.persistence.schema-generation.scripts.create-target" value="jpa21-model-create.jdbc"/>
        </properties>
    </persistence-unit>
    <!-- This is for ddl persistence unit -->
    <persistence-unit name="MulitPU-2" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Fork</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.ForkUser</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Utensil</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Runner</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.RunnerInfo</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.RunnerStatus</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Shoe</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.ShoeTag</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Sprinter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Responsibility</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Organizer</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Endorser</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Athlete</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Race</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Coach</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Driver</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.ddl.Vehicle</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.GenderConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.LongToStringConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.RunningStatusConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter</class>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.converters.ResponsibilityConverter</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="@server-weaving@"/>
            <property name="eclipselink.session-name" value="default-ddl-session"/>
            <property name="eclipselink.orm.validate.schema" value="true"/>
            <property name="eclipselink.jdbc.uppercase-columns" value="true"/>
            <property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create"/>
            <property name="jakarta.persistence.scheme-generation.create-source" value="metadata"/>
            <property name="jakarta.persistence.scheme-generation.drop-source" value="metadata"/>
            <property name="jakarta.persistence.schema-generation.scripts.action" value="drop-and-create"/>
            <property name="jakarta.persistence.schema-generation.scripts.drop-target" value="jpa21-ddl-model-drop.jdbc"/>
            <property name="jakarta.persistence.schema-generation.scripts.create-target" value="jpa21-ddl-model-create.jdbc"/>
        </properties>
    </persistence-unit>
    <!-- This is xml-ddl persistence unit -->
    <persistence-unit name="MulitPU-3" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <mapping-file>META-INF/advanced-ddl-orm.xml</mapping-file>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="@server-weaving@"/>
            <property name="eclipselink.session-name" value="default-xml-ddl-session"/>
            <property name="eclipselink.orm.validate.schema" value="true"/>
            <property name="eclipselink.jdbc.uppercase-columns" value="true"/>
            <property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create"/>
            <property name="jakarta.persistence.schema-generation.create-source" value="script"/>
            <property name="jakarta.persistence.schema-generation.drop-source" value="script"/>
            <property name="jakarta.persistence.schema-generation.drop-script-source" value="META-INF/jpa21-xml-ddl-model-source-drop.jdbc"/>
            <property name="jakarta.persistence.schema-generation.create-script-source" value="META-INF/jpa21-xml-ddl-model-source-create.jdbc"/>
        </properties>
    </persistence-unit>
    <!-- This is xml-default persistence unit -->
    <persistence-unit name="MulitPU-4" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <mapping-file>META-INF/advanced-orm.xml</mapping-file>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="@server-weaving@"/>
            <property name="eclipselink.session-name" value="default-xml-session"/>
            <property name="eclipselink.orm.validate.schema" value="true"/>
            <property name="eclipselink.jdbc.uppercase-columns" value="true"/>
            <property name="jakarta.persistence.schema-generation.scripts.action" value="create"/>
            <property name="jakarta.persistence.schema-generation.scripts.create-target" value="jpa21-xml-model-create.jdbc"/>
        </properties>
    </persistence-unit>
    <!-- This is ddl-template persistence unit -->
    <persistence-unit name="MulitPU-5" transaction-type="@transaction-type@">
        <!-- Users of this PU are expected to provide any relevant properties -->
        <!-- through code, e.g. eclipselink.session-name                      -->
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <mapping-file>META-INF/advanced-ddl-orm.xml</mapping-file>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.validate-existence" value="true"/>
            <property name="eclipselink.weaving" value="@server-weaving@"/>
        </properties>
    </persistence-unit>
    <!-- A test model for bug #466271. -->
    <persistence-unit name="MulitPU-6" transaction-type="@transaction-type@">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <@datasource-type@>@data-source-name@</@datasource-type@>
        <class>org.eclipse.persistence.testing.models.jpa21.advanced.WovenMS</class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.target-server" value="@server-platform@"/>
            <property name="eclipselink.target-database" value="@database-platform@"/>
            <property name="eclipselink.weaving" value="true" />
            <property name="eclipselink.ddl-generation" value="none" />
        </properties>
    </persistence-unit>
</persistence>
