#
#  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.
#
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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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

PERSISTENCEUNIT.ejblite-pu.openjpa.ManagedRuntime=auto
PERSISTENCEUNIT.CTS-EM.openjpa.Specification=JPA 2.0
PERSISTENCEUNIT.CTS-EM.openjpa.jdbc.SchemaFactory=native(ForeignKeys=true)
PERSISTENCEUNIT.CTS-EM.openjpa.jdbc.SynchronizeMappings=buildSchema(IgnoreErrors=true)
PERSISTENCEUNIT.CTS-EM.openjpa.Compatibility=StrictIdentityValues=true,NonDefaultMappingAllowed=true,ConvertPositionalParametersToNamed=true
PERSISTENCEUNIT.CTS-EM-NOTX.openjpa.Specification=JPA 2.0
PERSISTENCEUNIT.CTS-EM-NOTX.openjpa.ManagedRuntime=auto
PERSISTENCEUNIT.CTS-EM-NOTX.openjpa.jdbc.SchemaFactory=native(ForeignKeys=true)
PERSISTENCEUNIT.CTS-EM-NOTX.openjpa.jdbc.SynchronizeMappings=buildSchema(IgnoreErrors=true)
PERSISTENCEUNIT.CTS-EM-NOTX.openjpa.Compatibility=StrictIdentityValues=true,NonDefaultMappingAllowed=true,ConvertPositionalParametersToNamed=true

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:%derby.server.port%/derbydb;create=true
compds.UserName=cts
compds.Password=cts

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

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

defaultds2.JdbcDriver=org.apache.derby.jdbc.ClientDriver
defaultds2.JdbcUrl=jdbc:derby://localhost:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/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:%derby.server.port%/derbydb;create=true
#$n.UserName=cts
#$n.Password=cts
#
#EOF
#done
