<?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.apache.openmeetings.db.entity.basic.Configuration</class>
		<class>org.apache.openmeetings.db.entity.basic.ErrorType</class>
		<class>org.apache.openmeetings.db.entity.basic.ErrorValue</class>
		<class>org.apache.openmeetings.db.entity.server.LdapConfig</class>
		<class>org.apache.openmeetings.db.entity.basic.MailMessage</class>
		<class>org.apache.openmeetings.db.entity.basic.Naviglobal</class>
		<class>org.apache.openmeetings.db.entity.basic.Navimain</class>
		<class>org.apache.openmeetings.db.entity.server.Sessiondata</class>
		<class>org.apache.openmeetings.db.entity.server.SOAPLogin</class>
		<class>org.apache.openmeetings.db.entity.server.Server</class>
		<class>org.apache.openmeetings.db.entity.calendar.Appointment</class>
		<class>org.apache.openmeetings.db.entity.calendar.AppointmentCategory</class>
		<class>org.apache.openmeetings.db.entity.calendar.AppointmentReminderTyps</class>
		<class>org.apache.openmeetings.db.entity.calendar.MeetingMember</class>
		<class>org.apache.openmeetings.db.entity.basic.ChatMessage</class>
		<class>org.apache.openmeetings.db.entity.user.Organisation</class>
		<class>org.apache.openmeetings.db.entity.user.Organisation_Users</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecording</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingLog</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaData</class>
		<class>org.apache.openmeetings.db.entity.record.FlvRecordingMetaDelta</class>
		<class>org.apache.openmeetings.db.entity.room.Invitation</class>
		<class>org.apache.openmeetings.db.entity.label.FieldLanguage</class>
		<class>org.apache.openmeetings.db.entity.label.Fieldlanguagesvalues</class>
		<class>org.apache.openmeetings.db.entity.label.Fieldvalues</class>
		<class>org.apache.openmeetings.db.entity.log.ConferenceLog</class>
		<class>org.apache.openmeetings.db.entity.log.ConferenceLogType</class>
		<class>org.apache.openmeetings.db.entity.room.PollType</class>
		<class>org.apache.openmeetings.db.entity.room.RoomPoll</class>
		<class>org.apache.openmeetings.db.entity.room.RoomPollAnswers</class>
		<class>org.apache.openmeetings.db.entity.room.Client</class>
		<class>org.apache.openmeetings.db.entity.room.RoomModerator</class>
		<class>org.apache.openmeetings.db.entity.room.Room</class>
		<class>org.apache.openmeetings.db.entity.room.RoomType</class>
		<class>org.apache.openmeetings.db.entity.room.Whiteboard</class>
		<class>org.apache.openmeetings.db.entity.room.WhiteboardItem</class>
		<class>org.apache.openmeetings.db.entity.room.RoomOrganisation</class>
		<class>org.apache.openmeetings.db.entity.user.Address</class>
		<class>org.apache.openmeetings.db.entity.user.State</class>
		<class>org.apache.openmeetings.db.entity.user.PrivateMessage</class>
		<class>org.apache.openmeetings.db.entity.user.PrivateMessageFolder</class>
		<class>org.apache.openmeetings.db.entity.user.Salutation</class>
		<class>org.apache.openmeetings.db.entity.user.UserContact</class>
		<class>org.apache.openmeetings.db.entity.user.Userdata</class>
		<class>org.apache.openmeetings.db.entity.user.User</class>
		<class>org.apache.openmeetings.db.entity.file.FileExplorerItem</class>
		<class>org.apache.openmeetings.db.entity.user.AsteriskSipUser</class>
		<class>org.apache.openmeetings.db.entity.server.OAuthServer</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=com.mysql.jdbc.Driver
					, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000
					, MaxActive=100
					, MaxWait=10000
					, TestOnBorrow=true
					, poolPreparedStatements=true
					, Username=root
					, Password=" />
			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
			<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO" />
			<property name="openjpa.DataCache" value="true" />
			<!-- QueryCache disabled due to changes outside of JPA doesn't take effect with caching -->
			<property name="openjpa.QueryCache" value="false" />
			<property name="openjpa.jdbc.DBDictionary" value="batchLimit=100" />
			<property name="openjpa.jdbc.QuerySQLCache" value="false" />
		</properties>
	</persistence-unit>
</persistence>
