<?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.xml schema -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
	<persistence-unit name="openmeetings" transaction-type="RESOURCE_LOCAL">
 		<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
		<class>org.openmeetings.app.persistence.beans.adresses.Adresses</class>
		<class>org.openmeetings.app.persistence.beans.adresses.States</class>
		<class>org.openmeetings.app.persistence.beans.basic.Configuration</class>
		<class>org.openmeetings.app.persistence.beans.basic.ErrorType</class>
		<class>org.openmeetings.app.persistence.beans.basic.ErrorValues</class>
		<class>org.openmeetings.app.persistence.beans.basic.LdapConfig</class>
		<class>org.openmeetings.app.persistence.beans.basic.Naviglobal</class>
		<class>org.openmeetings.app.persistence.beans.basic.Navimain</class>
		<class>org.openmeetings.app.persistence.beans.basic.OmTimeZone</class>
		<class>org.openmeetings.app.persistence.beans.basic.Sessiondata</class>
		<class>org.openmeetings.app.persistence.beans.basic.SOAPLogin</class>
		<class>org.openmeetings.app.persistence.beans.calendar.Appointment</class>
		<class>org.openmeetings.app.persistence.beans.calendar.AppointmentCategory</class>
		<class>org.openmeetings.app.persistence.beans.calendar.AppointmentReminderTyps</class>
		<class>org.openmeetings.app.persistence.beans.calendar.MeetingMember</class>
		<class>org.openmeetings.app.persistence.beans.domain.Organisation</class>
		<class>org.openmeetings.app.persistence.beans.domain.Organisation_Users</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecording</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingLog</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaData</class>
		<class>org.openmeetings.app.persistence.beans.flvrecord.FlvRecordingMetaDelta</class>
		<class>org.openmeetings.app.persistence.beans.invitation.Invitations</class>
		<class>org.openmeetings.app.persistence.beans.lang.FieldLanguage</class>
		<class>org.openmeetings.app.persistence.beans.lang.Fieldlanguagesvalues</class>
		<class>org.openmeetings.app.persistence.beans.lang.Fieldvalues</class>
		<class>org.openmeetings.app.persistence.beans.logs.ConferenceLog</class>
		<class>org.openmeetings.app.persistence.beans.logs.ConferenceLogType</class>
		<class>org.openmeetings.app.persistence.beans.poll.PollType</class>
		<class>org.openmeetings.app.persistence.beans.poll.RoomPoll</class>
		<class>org.openmeetings.app.persistence.beans.poll.RoomPollAnswers</class>
		<class>org.openmeetings.app.persistence.beans.rooms.RoomModerators</class>
		<class>org.openmeetings.app.persistence.beans.rooms.Rooms</class>
		<class>org.openmeetings.app.persistence.beans.rooms.RoomTypes</class>
		<class>org.openmeetings.app.persistence.beans.rooms.Rooms_Organisation</class>
		<class>org.openmeetings.app.persistence.beans.sip.OpenXGReturnObject</class>
		<class>org.openmeetings.app.persistence.beans.user.PrivateMessages</class>
		<class>org.openmeetings.app.persistence.beans.user.PrivateMessageFolder</class>
		<class>org.openmeetings.app.persistence.beans.user.Salutations</class>
		<class>org.openmeetings.app.persistence.beans.user.UserContacts</class>
		<class>org.openmeetings.app.persistence.beans.user.Userdata</class>
		<class>org.openmeetings.app.persistence.beans.user.Userlevel</class>
		<class>org.openmeetings.app.persistence.beans.user.UserSipData</class>
		<class>org.openmeetings.app.persistence.beans.user.Users</class>
		<class>org.openmeetings.app.persistence.beans.files.FileExplorerItem</class>
		<exclude-unlisted-classes>false</exclude-unlisted-classes>
		<properties>
			<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported"/>
            <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource" />
			<property name="openjpa.ConnectionProperties"
				value="DriverClassName=org.postgresql.Driver
					, Url=jdbc:postgresql://localhost:5432/openmeetings
					, MaxActive=100
					, MaxWait=10000
					, TestOnBorrow=true
					, poolPreparedStatements=true
					, Username=postgres
					, Password=1"/>
				<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
   				<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
				<property name="openjpa.DataCache" value="true"/>
				<property name="openjpa.QueryCache" value="true"/> 
				<property name="openjpa.jdbc.QuerySQLCache"  value="false"/> 
    	</properties>
	</persistence-unit>
</persistence>
