<?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.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.dbcp2.BasicDataSource" />
			<property name="openjpa.ConnectionProperties"
				value="DriverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
					, Url=jdbc:sqlserver://localhost:1433;databaseName=openmeetings
					, Username=Username
					, Password=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>
