You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2016/03/30 18:30:10 UTC
svn commit: r1737132 - in /aries/trunk/tx-control:
tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/
tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/
Author: timothyjward
Date: Wed Mar 30 16:30:10 2016
New Revision: 1737132
URL: http://svn.apache.org/viewvc?rev=1737132&view=rev
Log:
[tx-control] Add logging to configuration-driven JDBCConnectionProvider services for easier debug
Modified:
aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/ManagedServiceFactoryImpl.java
aries/trunk/tx-control/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/ManagedServiceFactoryImpl.java
Modified: aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/ManagedServiceFactoryImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/ManagedServiceFactoryImpl.java?rev=1737132&r1=1737131&r2=1737132&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/ManagedServiceFactoryImpl.java (original)
+++ aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/ManagedServiceFactoryImpl.java Wed Mar 30 16:30:10 2016
@@ -37,9 +37,13 @@ import org.osgi.service.jdbc.DataSourceF
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProvider;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class ManagedServiceFactoryImpl implements ManagedServiceFactory {
+ private static final Logger LOG = LoggerFactory.getLogger(ManagedServiceFactoryImpl.class);
+
private static final String DSF_TARGET_FILTER = "aries.dsf.target.filter";
private static final String JDBC_PROP_NAMES = "aries.jdbc.property.names";
private static final List<String> JDBC_PROPERTIES = asList(JDBC_DATABASE_NAME, JDBC_DATASOURCE_NAME,
@@ -70,13 +74,14 @@ public class ManagedServiceFactoryImpl i
propsMap.put(key, properties.get(key));
}
- Properties jdbcProps = getJdbcProps(propsMap);
+ Properties jdbcProps = getJdbcProps(pid, propsMap);
try {
- ManagedJDBCResourceProvider mjrp = new ManagedJDBCResourceProvider(context, jdbcProps, propsMap);
+ ManagedJDBCResourceProvider mjrp = new ManagedJDBCResourceProvider(context, pid, jdbcProps, propsMap);
ofNullable(managedInstances.put(pid, mjrp)).ifPresent(ManagedJDBCResourceProvider::stop);
mjrp.start();
} catch (InvalidSyntaxException e) {
+ LOG.error("The configuration {} contained an invalid target filter {}", pid, e.getFilter());
throw new ConfigurationException(DSF_TARGET_FILTER, "The target filter was invalid", e);
}
}
@@ -86,7 +91,7 @@ public class ManagedServiceFactoryImpl i
}
@SuppressWarnings("unchecked")
- private Properties getJdbcProps(Map<String, Object> properties) throws ConfigurationException {
+ private Properties getJdbcProps(String pid, Map<String, Object> properties) throws ConfigurationException {
Object object = properties.getOrDefault(JDBC_PROP_NAMES, JDBC_PROPERTIES);
Collection<String> propnames;
@@ -97,6 +102,7 @@ public class ManagedServiceFactoryImpl i
} else if (object instanceof Collection) {
propnames = (Collection<String>) object;
} else {
+ LOG.error("The configuration {} contained an invalid list of JDBC property names", pid, object);
throw new ConfigurationException(JDBC_PROP_NAMES,
"The jdbc property names must be a String+ or comma-separated String");
}
@@ -119,6 +125,7 @@ public class ManagedServiceFactoryImpl i
implements ServiceTrackerCustomizer<DataSourceFactory, DataSourceFactory> {
private final BundleContext context;
+ private final String pid;
private final Properties jdbcProperties;
private final Map<String, Object> providerProperties;
private final ServiceTracker<DataSourceFactory, DataSourceFactory> dsfTracker;
@@ -126,9 +133,10 @@ public class ManagedServiceFactoryImpl i
private final AtomicReference<DataSourceFactory> activeDsf = new AtomicReference<>();
private final AtomicReference<ServiceRegistration<JDBCConnectionProvider>> serviceReg = new AtomicReference<>();
- public ManagedJDBCResourceProvider(BundleContext context, Properties jdbcProperties,
+ public ManagedJDBCResourceProvider(BundleContext context, String pid, Properties jdbcProperties,
Map<String, Object> providerProperties) throws InvalidSyntaxException, ConfigurationException {
this.context = context;
+ this.pid = pid;
this.jdbcProperties = jdbcProperties;
this.providerProperties = providerProperties;
@@ -136,6 +144,7 @@ public class ManagedServiceFactoryImpl i
if (targetFilter == null) {
String driver = (String) providerProperties.get(OSGI_JDBC_DRIVER_CLASS);
if (driver == null) {
+ LOG.error("The configuration {} must specify a target filter or a JDBC driver class", pid);
throw new ConfigurationException(OSGI_JDBC_DRIVER_CLASS,
"The configuration must specify either a target filter or a JDBC driver class");
}
@@ -179,6 +188,7 @@ public class ManagedServiceFactoryImpl i
throw new IllegalStateException("Unable to set the JDBC connection provider registration");
}
} catch (Exception e) {
+ LOG.error("An error occurred when creating the connection provider for {}.", pid, e);
activeDsf.compareAndSet(service, null);
}
}
@@ -210,7 +220,7 @@ public class ManagedServiceFactoryImpl i
try {
oldReg.unregister();
} catch (IllegalStateException ise) {
-
+ LOG.debug("An exception occurred when unregistering a service for {}", pid);
}
}
Modified: aries/trunk/tx-control/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/ManagedServiceFactoryImpl.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/ManagedServiceFactoryImpl.java?rev=1737132&r1=1737131&r2=1737132&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/ManagedServiceFactoryImpl.java (original)
+++ aries/trunk/tx-control/tx-control-provider-jdbc-xa/src/main/java/org/apache/aries/tx/control/jdbc/xa/impl/ManagedServiceFactoryImpl.java Wed Mar 30 16:30:10 2016
@@ -37,9 +37,13 @@ import org.osgi.service.jdbc.DataSourceF
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProvider;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class ManagedServiceFactoryImpl implements ManagedServiceFactory {
+ private static final Logger LOG = LoggerFactory.getLogger(ManagedServiceFactoryImpl.class);
+
private static final String DSF_TARGET_FILTER = "aries.dsf.target.filter";
private static final String JDBC_PROP_NAMES = "aries.jdbc.property.names";
private static final List<String> JDBC_PROPERTIES = asList(JDBC_DATABASE_NAME, JDBC_DATASOURCE_NAME,
@@ -70,13 +74,14 @@ public class ManagedServiceFactoryImpl i
propsMap.put(key, properties.get(key));
}
- Properties jdbcProps = getJdbcProps(propsMap);
+ Properties jdbcProps = getJdbcProps(pid, propsMap);
try {
- ManagedJDBCResourceProvider mjrp = new ManagedJDBCResourceProvider(context, jdbcProps, propsMap);
+ ManagedJDBCResourceProvider mjrp = new ManagedJDBCResourceProvider(context, pid, jdbcProps, propsMap);
ofNullable(managedInstances.put(pid, mjrp)).ifPresent(ManagedJDBCResourceProvider::stop);
mjrp.start();
} catch (InvalidSyntaxException e) {
+ LOG.error("The configuration {} contained an invalid target filter {}", pid, e.getFilter());
throw new ConfigurationException(DSF_TARGET_FILTER, "The target filter was invalid", e);
}
}
@@ -86,7 +91,7 @@ public class ManagedServiceFactoryImpl i
}
@SuppressWarnings("unchecked")
- private Properties getJdbcProps(Map<String, Object> properties) throws ConfigurationException {
+ private Properties getJdbcProps(String pid, Map<String, Object> properties) throws ConfigurationException {
Object object = properties.getOrDefault(JDBC_PROP_NAMES, JDBC_PROPERTIES);
Collection<String> propnames;
@@ -97,6 +102,7 @@ public class ManagedServiceFactoryImpl i
} else if (object instanceof Collection) {
propnames = (Collection<String>) object;
} else {
+ LOG.error("The configuration {} contained an invalid list of JDBC property names", pid, object);
throw new ConfigurationException(JDBC_PROP_NAMES,
"The jdbc property names must be a String+ or comma-separated String");
}
@@ -119,6 +125,7 @@ public class ManagedServiceFactoryImpl i
implements ServiceTrackerCustomizer<DataSourceFactory, DataSourceFactory> {
private final BundleContext context;
+ private final String pid;
private final Properties jdbcProperties;
private final Map<String, Object> providerProperties;
private final ServiceTracker<DataSourceFactory, DataSourceFactory> dsfTracker;
@@ -126,9 +133,10 @@ public class ManagedServiceFactoryImpl i
private final AtomicReference<DataSourceFactory> activeDsf = new AtomicReference<>();
private final AtomicReference<ServiceRegistration<JDBCConnectionProvider>> serviceReg = new AtomicReference<>();
- public ManagedJDBCResourceProvider(BundleContext context, Properties jdbcProperties,
+ public ManagedJDBCResourceProvider(BundleContext context, String pid, Properties jdbcProperties,
Map<String, Object> providerProperties) throws InvalidSyntaxException, ConfigurationException {
this.context = context;
+ this.pid = pid;
this.jdbcProperties = jdbcProperties;
this.providerProperties = providerProperties;
@@ -136,6 +144,7 @@ public class ManagedServiceFactoryImpl i
if (targetFilter == null) {
String driver = (String) providerProperties.get(OSGI_JDBC_DRIVER_CLASS);
if (driver == null) {
+ LOG.error("The configuration {} must specify a target filter or a JDBC driver class", pid);
throw new ConfigurationException(OSGI_JDBC_DRIVER_CLASS,
"The configuration must specify either a target filter or a JDBC driver class");
}
@@ -179,6 +188,7 @@ public class ManagedServiceFactoryImpl i
throw new IllegalStateException("Unable to set the JDBC connection provider registration");
}
} catch (Exception e) {
+ LOG.error("An error occurred when creating the connection provider for {}.", pid, e);
activeDsf.compareAndSet(service, null);
}
}
@@ -210,7 +220,7 @@ public class ManagedServiceFactoryImpl i
try {
oldReg.unregister();
} catch (IllegalStateException ise) {
-
+ LOG.debug("An exception occurred when unregistering a service for {}", pid);
}
}