#
#  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.
#

org.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false
user.language=en
user.country=US

openejb.system.apps=true
openejb.deployments.classpath=true
tomee.remote.support=true
openejb.embedded.remotable=true
openejb.environment.default=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:%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.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.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

PERSISTENCEUNIT.CTS-EM.eclipselink.target-database=Derby
PERSISTENCEUNIT.CTS-EM.eclipselink.logging.level=ALL
PERSISTENCEUNIT.CTS-EM-NOTX.eclipselink.target-database=Derby
PERSISTENCEUNIT.CTS-EM-NOTX.eclipselink.logging.level=ALL

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

openejb.classloader.forced-load = com.sun.ts.tests.
openejb.classloader.forced-skip=com.sun.ts.tests.jaspic.tssv.util.

# not sure why we have to duplicate this one here
log.file.location=%user.dir%/%openejb.home%/logs
vendor.authconfig.factory=org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl
provider.configuration.file=%user.dir%/%openejb.home%/conf/ProviderConfiguration.xml
j2eelogin.name=j2ee
j2eelogin.password=j2ee

#
#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
