blob: c3e5c32b648aa948edce9f691a8b92b5cb8c289c [file] [log] [blame]
package org.apache.aries.tx.control.jdbc.local.impl;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_DATABASE_NAME;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_DATASOURCE_NAME;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_DESCRIPTION;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_NETWORK_PROTOCOL;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_PASSWORD;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_PORT_NUMBER;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_ROLE_NAME;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_SERVER_NAME;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_URL;
import static org.osgi.service.jdbc.DataSourceFactory.JDBC_USER;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.AttributeType;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
@ObjectClassDefinition(factoryPid="org.apache.aries.tx.control.jdbc.local", description="Aries Transaction Control Factory for Local JDBCResourceProvider Services")
public @interface Config {
// Most commonly used properties declared first so that they go into the metatype first
@AttributeDefinition(required=false,
description="The name of the driver class for the DataSourceFactory service. This property need not be defined if aries.dsf.target.filter is defined.")
String osgi_jdbc_driver_class();
@AttributeDefinition(required=false, description="The JDBC URL to pass to the DataSourceFactory")
String url();
@AttributeDefinition(required=false, description="The userid to pass to the DataSourceFactory")
String user();
@AttributeDefinition(type=AttributeType.PASSWORD, required=false,
description="The password to pass to the DataSourceFactory (not visible as a service property)")
String password();
// Pool configuration properties
@AttributeDefinition(required=false, description="Is connection pooling enabled for this JDBCResourceProvider")
boolean osgi_connection_pooling_enabled() default true;
@AttributeDefinition(required=false, description="The maximum number of connections in the pool")
int osgi_connection_max() default 10;
@AttributeDefinition(required=false, description="The minimum number of connections in the pool")
int osgi_connection_min() default 10;
@AttributeDefinition(required=false, description="The maximum time (in ms) that the pool will wait for a connection before failing")
long osgi_connection_timeout() default 30000;
@AttributeDefinition(required=false, description="The minimum time (in ms) a connection will be idle before being reclaimed by the pool")
long osgi_idle_timeout() default 180000;
@AttributeDefinition(required=false, description="The maximum time (in ms) that a connection will stay in the pool before being discarded")
long osgi_connection_lifetime() default 10800000;
// Detailed Configuration
@AttributeDefinition(required=false, description="The filter to use when finding the DataSourceFactory service. This property need not be defined if osgi.jdbc.driver.class is defined.")
String aries_dsf_target_filter();
@AttributeDefinition(required=false, description="The names of the properties from this configuration that should be passed to the DataSourceFactory")
String[] aries_jdbc_property_names() default {JDBC_DATABASE_NAME, JDBC_DATASOURCE_NAME,
JDBC_DESCRIPTION, JDBC_NETWORK_PROTOCOL, JDBC_PASSWORD, JDBC_PORT_NUMBER, JDBC_ROLE_NAME, JDBC_SERVER_NAME,
JDBC_URL, JDBC_USER};
//Raw JDBC configuration
@AttributeDefinition(required=false, description="JDBC configuration property")
String databaseName();
@AttributeDefinition(required=false, description="JDBC configuration property")
String dataSourceName();
@AttributeDefinition(required=false, description="JDBC configuration property")
String description();
@AttributeDefinition(required=false, description="JDBC configuration property")
String networkProtocol();
@AttributeDefinition(required=false, description="JDBC configuration property")
int portNumber();
@AttributeDefinition(required=false, description="JDBC configuration property")
String roleName();
@AttributeDefinition(required=false, description="JDBC configuration property")
String serverName();
}