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

<jdoconfig
    xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">

    <!--
    -->
    <persistence-manager-factory
        class="org.jpox.PersistenceManagerFactoryImpl"
        connection-driver-name="org.apache.derby.jdbc.EmbeddedDriver"
        connection-url="jdbc:derby:jdotckdb"
        connection-user-name="tckuser"
        connection-password="tckuser"
        optimistic="false"
        restore-values="false"
        retain-values="false"
        mapping="derby"
    >
    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="jdo.tck.mapping" value="0"/>
    <property name="org.jpox.metadata.validate" value="false"/>
    <property name="org.jpox.validateTables" value="false"/>
    <property name="org.jpox.validateConstraints" value="false"/>
    <property name="org.jpox.autoCreateSchema" value="false"/>
    <property name="org.jpox.autoCreateTables" value="false"/>
    <property name="org.jpox.autoCreateConstraints" value="false"/>
    <property name="org.jpox.autoCreateColumns" value="false"/>
    <property name="org.jpox.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="org.jpox.autoStartMechanism" value="None"/>
    <property name="org.jpox.connectionPoolingType" value="C3P0"/>
    <property name="org.jpox.implementationCreatorName" value="asm"/>
    </persistence-manager-factory>

     <persistence-manager-factory
        name="namedPMF0"
        class="org.jpox.PersistenceManagerFactoryImpl"
        connection-driver-name="org.apache.derby.jdbc.EmbeddedDriver"
        connection-url="jdbc:derby:jdotckdb"
        connection-user-name="tckuser"
        connection-password="tckuser"
        optimistic="false"
        restore-values="false"
        retain-values="false"
    >

    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="org.jpox.metadata.validate" value="false"/>
    <property name="org.jpox.validateTables" value="false"/>
    <property name="org.jpox.validateConstraints" value="false"/>
    <property name="org.jpox.autoCreateSchema" value="false"/>
    <property name="org.jpox.autoCreateTables" value="false"/>
    <property name="org.jpox.autoCreateConstraints" value="false"/>
    <property name="org.jpox.autoCreateColumns" value="false"/>
    <property name="org.jpox.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="org.jpox.autoStartMechanism" value="None"/>
    <property name="org.jpox.connectionPoolingType" value="C3P0"/>
    <property name="org.jpox.implementationCreatorName" value="asm"/>
    </persistence-manager-factory>

    <persistence-manager-factory
        name=" namedPMF1  "
        class="org.jpox.PersistenceManagerFactoryImpl"
        connection-driver-name="org.apache.derby.jdbc.EmbeddedDriver"
        connection-url="jdbc:derby:jdotckdb"
        connection-user-name="tckuser"
        connection-password="tckuser"
        optimistic="false"
        restore-values="true"
        retain-values="false"
    >

    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="org.jpox.metadata.validate" value="false"/>
    <property name="org.jpox.validateTables" value="false"/>
    <property name="org.jpox.validateConstraints" value="false"/>
    <property name="org.jpox.autoCreateSchema" value="false"/>
    <property name="org.jpox.autoCreateTables" value="false"/>
    <property name="org.jpox.autoCreateConstraints" value="false"/>
    <property name="org.jpox.autoCreateColumns" value="false"/>
    <property name="org.jpox.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="org.jpox.autoStartMechanism" value="None"/>
    <property name="org.jpox.connectionPoolingType" value="C3P0"/>
    <property name="org.jpox.implementationCreatorName" value="asm"/>
    </persistence-manager-factory>

    <persistence-manager-factory
        name="pmfTestInstanceLifecycleListener"
        class="org.jpox.PersistenceManagerFactoryImpl"
        connection-driver-name="org.apache.derby.jdbc.EmbeddedDriver"
        connection-url="jdbc:derby:jdotckdb"
        connection-user-name="tckuser"
        connection-password="tckuser"
        optimistic="false"
        restore-values="false"
        retain-values="false"
    >

    <property name="javax.jdo.mapping.Schema" value="applicationidentity0"/> 
    <property name="javax.jdo.option.Mapping" value="standard"/>
    <property name="org.jpox.metadata.validate" value="false"/>
    <property name="org.jpox.validateTables" value="false"/>
    <property name="org.jpox.validateConstraints" value="false"/>
    <property name="org.jpox.autoCreateSchema" value="false"/>
    <property name="org.jpox.autoCreateTables" value="false"/>
    <property name="org.jpox.autoCreateConstraints" value="false"/>
    <property name="org.jpox.autoCreateColumns" value="false"/>
    <property name="org.jpox.rdbms.CheckExistTablesOrViews" value="false"/>
    <property name="org.jpox.autoStartMechanism" value="None"/>
    <property name="org.jpox.connectionPoolingType" value="C3P0"/>
    <property name="org.jpox.implementationCreatorName" value="asm"/> 

    <instance-lifecycle-listener
        listener="listener.listener0"
        classes="classes.classes0"
    />
        
    </persistence-manager-factory>

</jdoconfig>

