<?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 version="2.1"
    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
    ">
    <persistence-unit name="script-test-unit"
        transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:TEST;create=true" />
            <property name="javax.persistence.jdbc.driver"
                value="org.apache.derby.jdbc.EmbeddedDriver" />
            <property name="eclipselink.target-database" value="Derby" />
            <property
                name="javax.persistence.schema-generation.database.action"
                value="drop-and-create" />
            <property
                name="javax.persistence.schema-generation.create-source"
                value="script" />
            <property
                name="javax.persistence.schema-generation.create-script-source"
                value="META-INF/sql/create.sql" />
            <property name="javax.persistence.sql-load-script-source"
                value="META-INF/sql/data.sql" />
            <property name="javax.persistence.schema-generation.drop-source"
                value="script" />
            <property
                name="javax.persistence.schema-generation.drop-script-source"
                value="META-INF/sql/drop.sql" />
        </properties>
    </persistence-unit>
</persistence>
