#
#  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.
#
javax.persistence.provider=org.hibernate.ejb.HibernatePersistence

PERSISTENCEUNIT.CTS-EM.hibernate.transaction.manager_lookup_class=org.apache.openejb.hibernate.TransactionManagerLookup
PERSISTENCEUNIT.CTS-EM.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect
PERSISTENCEUNIT.CTS-EM.hibernate.jdbc.batch_size=1
PERSISTENCEUNIT.CTS-EM.hibernate.hbm2ddl.auto=update
PERSISTENCEUNIT.CTS-EM.hibernate.show.sql=true

PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.transaction.manager_lookup_class=org.apache.openejb.hibernate.TransactionManagerLookup
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.jdbc.batch_size=1
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.current_session_context_class=jta
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.hbm2ddl.auto=update
PERSISTENCEUNIT.CTS-EM-NOTX.hibernate.show.sql=true

RESOURCE.whitebox-notx-param|poolMaxSize=100
RESOURCE.whitebox-notx|poolMaxSize=100
RESOURCE.whitebox-tx-param|poolMaxSize=100
RESOURCE.whitebox-tx|poolMaxSize=100
RESOURCE.whitebox-xa-param|poolMaxSize=100
RESOURCE.whitebox-xa|poolMaxSize=100

RESOURCE.JDBCwhitebox-notx-param|ConnectionURL=jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts
RESOURCE.JDBCwhitebox-notx-param|DriverName=org.apache.derby.jdbc.ClientDriver
RESOURCE.JDBCwhitebox-notx-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-notx|ConnectionURL=jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts
RESOURCE.JDBCwhitebox-notx|DriverName=org.apache.derby.jdbc.ClientDriver
RESOURCE.JDBCwhitebox-notx|poolMaxSize=100

RESOURCE.JDBCwhitebox-tx-param|ConnectionURL=jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts
RESOURCE.JDBCwhitebox-tx-param|DriverName=org.apache.derby.jdbc.ClientDriver
RESOURCE.JDBCwhitebox-tx-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-tx|ConnectionURL=jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts
RESOURCE.JDBCwhitebox-tx|DriverName=org.apache.derby.jdbc.ClientDriver
RESOURCE.JDBCwhitebox-tx|poolMaxSize=100

RESOURCE.JDBCwhitebox-xa-param|XAProps=JdbcUrl="jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts"
RESOURCE.JDBCwhitebox-xa-param|XADataSourceName=org.apache.openejb.cts.DriverManagerXADataSource
RESOURCE.JDBCwhitebox-xa-param|poolMaxSize=100

RESOURCE.JDBCwhitebox-xa|XAProps=JdbcUrl='jdbc:jdbc:derby://localhost:1527/derbydb;create=true;user=cts;password=cts'
RESOURCE.JDBCwhitebox-xa|XADataSourceName=org.apache.openejb.cts.DriverManagerXADataSource
RESOURCE.JDBCwhitebox-xa|poolMaxSize=100

RESOURCE.whitebox-xa.rar|TSRValue=java:comp/TransactionSynchronizationRegistry

openejb.convert-jpa-properties=true
openejb.descriptors.output=false
openejb.deploymentId.format={appId}/{ejbJarId}/{ejbName}
openejb.vendor.config = glassfish

#openejb.jsessionid-support=false
openejb.crosscontext=true
openejb.web.xml.major=3
jsp_config_general_web.openejb.web.xml.major=2

old-dd-whitebox-notx-param.rar.moduleId=oldwhitebox-notx-param
old-dd-whitebox-notx.rar.moduleId=oldwhitebox-notx
old-dd-whitebox-tx-param.rar.moduleId=oldwhitebox-tx-param
old-dd-whitebox-tx.rar.moduleId=oldwhitebox-tx
old-dd-whitebox-xa-param.rar.moduleId=oldwhitebox-xa-param
old-dd-whitebox-xa.rar.moduleId=oldwhitebox-xa


compds.JdbcDriver=org.apache.derby.jdbc.ClientDriver
compds.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
compds.UserName=cts
compds.Password=cts

compds2.JdbcDriver=org.apache.derby.jdbc.ClientDriver
compds2.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
compds2.UserName=cts
compds2.Password=cts

defaultds.JdbcDriver=org.apache.derby.jdbc.ClientDriver
defaultds.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
defaultds.UserName=cts
defaultds.Password=cts

defaultds2.JdbcDriver=org.apache.derby.jdbc.ClientDriver
defaultds2.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
defaultds2.UserName=cts
defaultds2.Password=cts

module/env/moduleds.JdbcDriver=org.apache.derby.jdbc.ClientDriver
module/env/moduleds.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
module/env/moduleds.UserName=cts
module/env/moduleds.Password=cts

module/env/moduleds2.JdbcDriver=org.apache.derby.jdbc.ClientDriver
module/env/moduleds2.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
module/env/moduleds2.UserName=cts
module/env/moduleds2.Password=cts

app/env/appds2.JdbcDriver=org.apache.derby.jdbc.ClientDriver
app/env/appds2.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
app/env/appds2.UserName=cts
app/env/appds2.Password=cts

app/env/appds.JdbcDriver=org.apache.derby.jdbc.ClientDriver
app/env/appds.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
app/env/appds.UserName=cts
app/env/appds.Password=cts

#
#for n in app/env/appds2; do
#cat <<EOF
#$n.JdbcDriver=org.apache.derby.jdbc.ClientDriver
#$n.JdbcUrl=jdbc:derby://localhost:1527/derbydb;create=true
#$n.UserName=cts
#$n.Password=cts
#
#EOF
#done
