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

# suppress inspection "UnusedProperty" for whole file

datasource.component.name = Apache Sling Connection Pooled DataSource
datasource.component.description = Creates a DataSource services based on configuration provided. For more details \
  on the various properties refer to http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes

datasource.name.name = Datasource name(*)
datasource.name.description = Name of this data source (required)

datasource.svc.properties.name = Additional Properties
datasource.svc.properties.description = Properties that are added additionally to the underlying DataSource \
  provider(name=value pairs). Refer to http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Common_Attributes \
  for various property names and details.

url.name=JDBC connection URI
url.description=URI of the JDBC connection to use e.g. jdbc:mysql://localhost:3306/mysql

driverClassName.name=JDBC driver class
driverClassName.description=Java class name of the JDBC driver to use

username.name=Username
username.description=The connection username to be passed to our JDBC driver to establish a connection

password.name=Password
password.description=The connection password to be passed to our JDBC driver to establish a connection.

defaultAutoCommit.name=Auto Commit
defaultAutoCommit.description=The default auto-commit state of connections created by this pool. (If 'default' \
  then the setAutoCommit method will not be called.)

defaultReadOnly.name=Readonly
defaultReadOnly.description=The default read-only state of connections created by this pool.

defaultTransactionIsolation.name=Transaction Isolation
defaultTransactionIsolation.description=The default TransactionIsolation state of connections created by this \
  pool. If 'default', the method will not be called and it defaults to the JDBC driver.

defaultCatalog.name=Catalog Name
defaultCatalog.description=The default catalog of connections created by this pool.

maxActive.name=Max Active Connections
maxActive.description=The maximum number of active connections that can be allocated from this pool at \
  the same time. The default value is 100

maxIdle.name=Max Idle Connections
maxIdle.description=The maximum number of connections that should be kept in the pool at all times. Idle \
  connections are checked periodically (if enabled) and connections that been idle for longer than \
  minEvictableIdleTimeMillis will be released. (also see testWhileIdle)

minIdle.name=Min Idle Connections
minIdle.description=The minimum number of established connections that should be kept in the pool at all times. \
  The connection pool can shrink below this number if validation queries fail. Default value is derived from\
   initialSize:10 (also see testWhileIdle)

initialSize.name=Initial Size
initialSize.description=The initial number of connections that are created when the pool is started. \
  Default value is 10

maxWait.name=Max Wait
maxWait.description=The maximum number of milliseconds that the pool will wait (when there are no available\
   connections) for a connection to be returned before throwing an exception. Default value is 30000 (30 seconds)

maxAge.name=Max Age
maxAge.description=Time in milliseconds to keep this connection.

validationQuery.name=Validation Query
validationQuery.description=The SQL query that will be used to validate connections from this pool before \
  returning them to the caller. If specified, this query does not have to return any data, it just can't \
  throw a SQLException. The default value is null. Example values are SELECT 1(mysql), select 1 from \
  dual(oracle), SELECT 1(MS Sql Server)

validationQueryTimeout.name=Validation Query timeout
validationQueryTimeout.description=The timeout in seconds before a connection validation queries fail. A value \
  less than or equal to zero will disable this feature. The default value is -1.

testOnBorrow.name=Test on Borrow
testOnBorrow.description=The indication of whether objects will be validated before being borrowed from the pool.

testOnReturn.name=Test on Return
testOnReturn.description=The indication of whether objects will be validated before being returned to the pool.

testWhileIdle.name=Test while Idle
testWhileIdle.description=The indication of whether objects will be validated by the idle object evictor (if any).

timeBetweenEvictionRunsMillis.name=Eviction Run Interval
timeBetweenEvictionRunsMillis.description=The number of milliseconds to sleep between runs of the idle connection\
   validation/cleaner thread.

minEvictableIdleTimeMillis.name=Eviction Idle Time
minEvictableIdleTimeMillis.description=The minimum amount of time an object may sit idle in the pool before it \
  is eligible for eviction.

connectionProperties.name=Connection Properties
connectionProperties.description=The connection properties that will be sent to our JDBC driver when establishing \
  new connections. Format of the string must be [propertyName=property;]* NOTE - The "user" and "password" properties\
   will be passed explicitly, so they do not need to be included here.

initSQL.name=Init Sql
initSQL.description=A custom query to be run when a connection is first created

jdbcInterceptors.name=JDBC Interceptors
jdbcInterceptors.description= A semicolon separated list of classnames of JDBCInterceptor. See \
  http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Configuring_JDBC_interceptors for more details

validationInterval.name=Validation Interval
validationInterval.description=avoid excess validation, only run validation at most at this frequency - time in \
  milliseconds. If a connection is due for validation, but has been validated previously within this interval, \
  it will not be validated again.

logValidationErrors.name=Log Validation Error
logValidationErrors.description=Set this to true to log errors during the validation phase to the log file

datasource.svc.prop.name.name=DataSource Service Property Name
datasource.svc.prop.name.name.description=Name of the service property which would store the DataSource Name while\
  registering the DataSource instance as OSGi service


