<?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.   
-->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="1.0">

<!--
        We need to enumerate each persistent class first in the persistence.xml
        See: http://issues.apache.org/jira/browse/OPENJPA-78
    -->
<persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
    <!--
        <class>hellojpa.Message</class>
        <class>relations.Deity</class>
        -->
</persistence-unit>

<!--
        A persistence unit is a set of listed persistent entities as well
        the configuration of an EntityManagerFactory. We configure each
        example in a separate persistence-unit.
    -->
<persistence-unit name="PUNamed_applicationidentity0" transaction-type="RESOURCE_LOCAL">
    <!--
            The default provider can be OpenJPA, or some other product.
            This element is optional if OpenJPA is the only JPA provider
            in the current classloading environment, but can be specified
            in cases where there are multiple JPA implementations available.
        -->
    
    <properties>
    <property name="javax.jdo.option.ConnectionDriverName"
              value="org.apache.derby.jdbc.EmbeddedDriver"/>
    <property name="javax.jdo.option.ConnectionURL" value="jdbc:derby:jdotckdb"/>
    <property name="javax.jdo.option.ConnectionUserName" value="tckuser"/>
    <property name="javax.jdo.option.ConnectionPassword" value="tckuser"/>
    <property name="javax.jdo.option.Optimistic" value="false"/>
    <property name="javax.jdo.option.RestoreValues" value="false"/>
    <property name="javax.jdo.option.RetainValues" value="false"/>
    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="datanucleus.metadata.validate" value="false"/>
    <property name="datanucleus.validateTables" value="false"/>
    <property name="datanucleus.validateConstraints" value="false"/>
    <property name="datanucleus.autoCreateSchema" value="false"/>
    <property name="datanucleus.autoCreateTables" value="false"/>
    <property name="datanucleus.autoCreateConstraints" value="false"/>
    <property name="datanucleus.autoCreateColumns" value="false"/>
    <property name="datanucleus.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="datanucleus.autoStartMechanism" value="None"/>
    <property name="datanucleus.connectionPoolingType" value="C3P0"/>
    <property name="datanucleus.implementationCreatorName" value="asm"/>
    </properties>
</persistence-unit>

<persistence-unit name="PUNamed_datastoreidentity0" transaction-type="RESOURCE_LOCAL">
    <!--
            The default provider can be OpenJPA, or some other product.
            This element is optional if OpenJPA is the only JPA provider
            in the current classloading environment, but can be specified
            in cases where there are multiple JPA implementations available.
        -->
    
    <properties>
    <property name="javax.jdo.option.ConnectionDriverName"
              value="org.apache.derby.jdbc.EmbeddedDriver"/>
    <property name="javax.jdo.option.ConnectionURL" value="jdbc:derby:jdotckdb"/>
    <property name="javax.jdo.option.ConnectionUserName" value="tckuser"/>
    <property name="javax.jdo.option.ConnectionPassword" value="tckuser"/>
    <property name="javax.jdo.option.Optimistic" value="false"/>
    <property name="javax.jdo.option.RestoreValues" value="false"/>
    <property name="javax.jdo.option.RetainValues" value="false"/>
    <property name="javax.jdo.mapping.Schema" value="datastoreidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="datanucleus.metadata.validate" value="false"/>
    <property name="datanucleus.validateTables" value="false"/>
    <property name="datanucleus.validateConstraints" value="false"/>
    <property name="datanucleus.autoCreateSchema" value="false"/>
    <property name="datanucleus.autoCreateTables" value="false"/>
    <property name="datanucleus.autoCreateConstraints" value="false"/>
    <property name="datanucleus.autoCreateColumns" value="false"/>
    <property name="datanucleus.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="datanucleus.autoStartMechanism" value="None"/>
    <property name="datanucleus.connectionPoolingType" value="C3P0"/>
    <property name="datanucleus.implementationCreatorName" value="asm"/>
    </properties>
</persistence-unit>

<!-- persistence unit for the "relations" example -->
<persistence-unit name="relations" transaction-type="RESOURCE_LOCAL">
    <class>relations.Deity</class>
</persistence-unit>

<!-- persistence unit for the "reversemapping" example -->
<persistence-unit name="reversemapping" transaction-type="RESOURCE_LOCAL">
    <!--
        <mapping-file>reversemapping/orm.xml</mapping-file>
        -->
</persistence-unit>
</persistence>
