<?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="2.0">
    <persistence-unit name="openjpa-integration-jmx">
        <description>PU for JMX Platform MBean Testing</description>
        <class>org.apache.openjpa.integration.jmx.CachedEntity</class>
        <properties>
            <property name="openjpa.Instrumentation" value="jmx(Instrument='DataCache,QueryCache')"/>
            <property name="openjpa.DataCache" value="true(EnableStatistics=true)"/>
            <property name="openjpa.QueryCache" value="true(EnableStatistics=true)"/>
            <property name="openjpa.RemoteCommitProvider" value="sjvm"/>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
            <property name="openjpa.DynamicEnhancementAgent" value="false"/>
        </properties>
    </persistence-unit>

    <persistence-unit name="openjpa-integration-jmx-qsc">
        <description>PU for JMX Platform MBean Testing with PreparedQueryCache/QuerySQLCache</description>
        <class>org.apache.openjpa.integration.jmx.CachedEntity</class>
        <properties>
            <property name="openjpa.Instrumentation" value="jmx(Instrument=QuerySQLCache)"/>
            <property name="openjpa.jdbc.QuerySQLCache" value="true(EnableStatistics=true)"/>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
            <property name="openjpa.DynamicEnhancementAgent" value="false"/>
        </properties>
    </persistence-unit>
</persistence>
