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/02/17 17:51:21 UTC

svn commit: r1730872 - in /aries/trunk/tx-control: ./ tx-control-api/ tx-control-itests/ tx-control-itests/src/ tx-control-itests/src/test/ tx-control-itests/src/test/java/ tx-control-itests/src/test/java/org/ tx-control-itests/src/test/java/org/apache...

Author: timothyjward
Date: Wed Feb 17 16:51:21 2016
New Revision: 1730872

URL: http://svn.apache.org/viewvc?rev=1730872&view=rev
Log:
[tx-control] Add simple integration tests for the Local transaction control and JDBC resource provider

Added:
    aries/trunk/tx-control/tx-control-itests/
    aries/trunk/tx-control/tx-control-itests/.gitignore
    aries/trunk/tx-control/tx-control-itests/pom.xml
    aries/trunk/tx-control/tx-control-itests/src/
    aries/trunk/tx-control/tx-control-itests/src/test/
    aries/trunk/tx-control/tx-control-itests/src/test/java/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/
    aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleTransactionTest.java
Modified:
    aries/trunk/tx-control/pom.xml
    aries/trunk/tx-control/tx-control-api/pom.xml
    aries/trunk/tx-control/tx-control-provider-jdbc-local/pom.xml
    aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/JDBCConnectionProviderFactoryImpl.java
    aries/trunk/tx-control/tx-control-service-local/pom.xml

Modified: aries/trunk/tx-control/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/pom.xml?rev=1730872&r1=1730871&r2=1730872&view=diff
==============================================================================
--- aries/trunk/tx-control/pom.xml (original)
+++ aries/trunk/tx-control/pom.xml Wed Feb 17 16:51:21 2016
@@ -37,5 +37,6 @@
         <module>tx-control-api</module>
         <module>tx-control-service-local</module>
         <module>tx-control-provider-jdbc-local</module>
+        <module>tx-control-itests</module>
     </modules>
 </project>
\ No newline at end of file

Modified: aries/trunk/tx-control/tx-control-api/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-api/pom.xml?rev=1730872&r1=1730871&r2=1730872&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-api/pom.xml (original)
+++ aries/trunk/tx-control/tx-control-api/pom.xml Wed Feb 17 16:51:21 2016
@@ -44,6 +44,7 @@
 			org.osgi.service.transaction.control.jpa,
 			*
 		</aries.osgi.import.pkg>
+		<lastReleaseVersion>0.0.1-SNAPSHOT</lastReleaseVersion>
 	</properties>
 
 	<dependencies>
@@ -76,6 +77,13 @@
 	<build>
 		<plugins>
 			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
 				<groupId>org.apache.aries.versioning</groupId>
 				<artifactId>org.apache.aries.versioning.plugin</artifactId>
 				<executions>

Added: aries/trunk/tx-control/tx-control-itests/.gitignore
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/.gitignore?rev=1730872&view=auto
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/.gitignore (added)
+++ aries/trunk/tx-control/tx-control-itests/.gitignore Wed Feb 17 16:51:21 2016
@@ -0,0 +1 @@
+/target/

Added: aries/trunk/tx-control/tx-control-itests/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/pom.xml?rev=1730872&view=auto
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/pom.xml (added)
+++ aries/trunk/tx-control/tx-control-itests/pom.xml Wed Feb 17 16:51:21 2016
@@ -0,0 +1,217 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.aries</groupId>
+		<artifactId>parent</artifactId>
+		<version>2.0.1</version>
+		<relativePath>../../parent/pom.xml</relativePath>
+	</parent>
+	<groupId>org.apache.aries.tx-control</groupId>
+	<artifactId>org.apache.aries.tx-control-itests</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>Apache Aries Transaction Control iTests</name>
+	<description>
+        Integration tests using for the Transaction Control service
+    </description>
+
+	<scm>
+		<connection>
+            scm:svn:http://svn.apache.org/repos/asf/aries/trunk/tx-control/tx-control-itests
+        </connection>
+		<developerConnection>
+            scm:svn:https://svn.apache.org/repos/asf/aries/trunk/tx-control/tx-control-itests
+        </developerConnection>
+		<url>
+            http://svn.apache.org/viewvc/aries/trunk/proxy/tx-control/tx-control-itests
+        </url>
+	</scm>
+
+
+	<properties>
+		<exam.version>3.4.0</exam.version>
+		<url.version>1.6.0</url.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.framework</artifactId>
+			<scope>test</scope>
+			<version>5.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.aries.tx-control</groupId>
+			<artifactId>tx-control-api</artifactId>
+			<scope>provided</scope>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.aries.tx-control</groupId>
+			<artifactId>tx-control-service-local</artifactId>
+			<scope>test</scope>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.coordinator</artifactId>
+			<scope>test</scope>
+			<version>1.0.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.aries.tx-control</groupId>
+			<artifactId>tx-control-provider-jdbc-local</artifactId>
+			<scope>test</scope>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.service.jdbc</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<version>1.4.191</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.aries.testsupport</groupId>
+			<artifactId>org.apache.aries.testsupport.unit</artifactId>
+			<version>2.0.0-SNAPSHOT</version>
+			<scope>test</scope>
+		</dependency>
+
+		<!-- pax exam -->
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.7.7</version>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.exam</groupId>
+			<artifactId>pax-exam</artifactId>
+			<version>${exam.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.exam</groupId>
+			<artifactId>pax-exam-container-forked</artifactId>
+			<version>${exam.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.exam</groupId>
+			<artifactId>pax-exam-junit4</artifactId>
+			<version>${exam.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.exam</groupId>
+			<artifactId>pax-exam-link-mvn</artifactId>
+			<version>${exam.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.url</groupId>
+			<artifactId>pax-url-aether</artifactId>
+			<version>${url.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-core</artifactId>
+			<version>0.9.29</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>ch.qos.logback</groupId>
+			<artifactId>logback-classic</artifactId>
+			<version>0.9.29</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.tinybundles</groupId>
+			<artifactId>tinybundles</artifactId>
+			<version>2.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.inject</groupId>
+			<artifactId>javax.inject</artifactId>
+			<version>1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.logging</groupId>
+			<artifactId>pax-logging-api</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.ops4j.pax.logging</groupId>
+			<artifactId>pax-logging-service</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<forkMode>pertest</forkMode>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.servicemix.tooling</groupId>
+				<artifactId>depends-maven-plugin</artifactId>
+				<version>1.2</version>
+				<executions>
+					<execution>
+						<id>generate-depends-file</id>
+						<goals>
+							<goal>generate-depends-file</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<profiles>
+		<profile>
+			<id>ci-build-profile</id>
+			<activation>
+				<property>
+					<name>maven.repo.local</name>
+				</property>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.apache.maven.plugins</groupId>
+						<artifactId>maven-surefire-plugin</artifactId>
+						<configuration>
+							<!-- when the local repo location has been specified, we need to pass 
+								on this information to PAX mvn url -->
+							<argLine>-Dorg.ops4j.pax.url.mvn.localRepository=${maven.repo.local}</argLine>
+						</configuration>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+	</profiles>
+
+</project>
\ No newline at end of file

Added: aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleTransactionTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleTransactionTest.java?rev=1730872&view=auto
==============================================================================
--- aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleTransactionTest.java (added)
+++ aries/trunk/tx-control/tx-control-itests/src/test/java/org/apache/aries/tx/control/itests/SimpleTransactionTest.java Wed Feb 17 16:51:21 2016
@@ -0,0 +1,147 @@
+/*
+ * 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 WARRANTIESOR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.aries.tx.control.itests;
+
+import static org.junit.Assert.assertEquals;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.options;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.when;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+import javax.inject.Inject;
+
+import org.apache.aries.itest.AbstractIntegrationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.CoreOptions;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.osgi.service.jdbc.DataSourceFactory;
+import org.osgi.service.transaction.control.TransactionControl;
+import org.osgi.service.transaction.control.jdbc.JDBCConnectionProviderFactory;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class SimpleTransactionTest extends AbstractIntegrationTest {
+
+	@Inject
+	TransactionControl txControl;
+
+	@Inject
+	JDBCConnectionProviderFactory resourceProviderFactory;
+	
+	@Inject
+	DataSourceFactory dsf;
+	
+	Connection connection;
+
+	@Before
+	public void setUp() {
+		Properties jdbc = new Properties();
+		
+		jdbc.setProperty(DataSourceFactory.JDBC_URL, "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1");
+		
+		connection = resourceProviderFactory.getProviderFor(dsf, jdbc, null).getResource(txControl);
+		
+		
+		txControl.required(() -> {
+				Statement s = connection.createStatement();
+				try {
+					s.execute("DROP TABLE TEST_TABLE");
+				} catch (SQLException sqle) {}
+					s.execute("CREATE TABLE TEST_TABLE ( message varchar(255) )");
+					return null;
+			});
+	}
+	
+	@After
+	public void tearDown() {
+
+		txControl.required(() -> connection.createStatement()
+				.execute("DROP TABLE TEST_TABLE"));
+
+	}
+	
+	@Test
+	public void testTx() {
+		txControl.required(() -> connection.createStatement()
+				.execute("Insert into TEST_TABLE values ( 'Hello World!' )"));
+
+		assertEquals("Hello World!", txControl.notSupported(() -> {
+			ResultSet rs = connection.createStatement()
+					.executeQuery("Select * from TEST_TABLE");
+			rs.next();
+			return rs.getString(1);
+		}));
+	}
+
+	@Test
+	public void testRollback() {
+		txControl.required(() -> {
+			connection.createStatement().execute(
+					"Insert into TEST_TABLE values ( 'Hello World!' )");
+			txControl.setRollbackOnly();
+			return null;
+		});
+
+		assertEquals(Integer.valueOf(0), txControl.notSupported(() -> {
+			ResultSet rs = connection.createStatement()
+					.executeQuery("Select count(*) from TEST_TABLE");
+			rs.next();
+			return rs.getInt(1);
+		}));
+	}
+
+	@Configuration
+	public Option[] configuration() {
+		String localRepo = System.getProperty("maven.repo.local");
+		if (localRepo == null) {
+			localRepo = System.getProperty("org.ops4j.pax.url.mvn.localRepository");
+		}
+		return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
+				when(localRepo != null)
+						.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
+				mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
+				mavenBundle("org.apache.felix", "org.apache.felix.coordinator").versionAsInProject(),
+				mavenBundle("org.apache.aries.tx-control", "tx-control-service-local").versionAsInProject(),
+				mavenBundle("com.h2database", "h2").versionAsInProject(),
+				mavenBundle("org.apache.aries.tx-control", "tx-control-provider-jdbc-local").versionAsInProject(),
+				mavenBundle("org.ops4j.pax.logging", "pax-logging-api").versionAsInProject(),
+				mavenBundle("org.ops4j.pax.logging", "pax-logging-service").versionAsInProject()
+		/*
+		 * vmOption
+		 * ("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"),
+		 * waitForFrameworkStartup(),
+		 */
+		);
+	}
+
+}

Modified: aries/trunk/tx-control/tx-control-provider-jdbc-local/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-provider-jdbc-local/pom.xml?rev=1730872&r1=1730871&r2=1730872&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-provider-jdbc-local/pom.xml (original)
+++ aries/trunk/tx-control/tx-control-provider-jdbc-local/pom.xml Wed Feb 17 16:51:21 2016
@@ -40,17 +40,19 @@
 		<aries.osgi.private.pkg>
 			org.apache.aries.tx.control.jdbc.*,
 			com.zaxxer.hikari,
+			com.zaxxer.hikari.metrics,
 			com.zaxxer.hikari.pool,
 			com.zaxxer.hikari.util
 		</aries.osgi.private.pkg>
 		<aries.osgi.import.pkg>
 			!com.codahale.*,
-			!com.zaxxer.hikari.metrics.*,
+			!com.zaxxer.hikari.metrics.dropwizard,
 			!javassist.*,
-			!javax.naming.*,
-			org.osgi.service.transaction.control.jdbc;version="[0.0.1,0.0.1]",
+			org.osgi.service.transaction.control;version="[0.0.1,0.0.2)",
+			org.osgi.service.transaction.control.jdbc;version="[0.0.1,0.0.2)",
 			*
 		</aries.osgi.import.pkg>
+		<lastReleaseVersion>0.0.1-SNAPSHOT</lastReleaseVersion>
 	</properties>
 
 	<dependencies>

Modified: aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/JDBCConnectionProviderFactoryImpl.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/JDBCConnectionProviderFactoryImpl.java?rev=1730872&r1=1730871&r2=1730872&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/JDBCConnectionProviderFactoryImpl.java (original)
+++ aries/trunk/tx-control/tx-control-provider-jdbc-local/src/main/java/org/apache/aries/tx/control/jdbc/local/impl/JDBCConnectionProviderFactoryImpl.java Wed Feb 17 16:51:21 2016
@@ -1,5 +1,6 @@
 package org.apache.aries.tx.control.jdbc.local.impl;
 
+import static java.util.Optional.ofNullable;
 import static java.util.concurrent.TimeUnit.HOURS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 import static org.osgi.service.jdbc.DataSourceFactory.JDBC_URL;
@@ -32,7 +33,7 @@ public class JDBCConnectionProviderFacto
 
 		DataSource unpooled;
 		try {
-			if (toBoolean(resourceProviderProperties.get(USE_DRIVER), false)) {
+			if (toBoolean(resourceProviderProperties, USE_DRIVER, false)) {
 				unpooled = new DriverDataSource(dsf.createDriver(null), jdbcProperties.getProperty(JDBC_URL),
 						jdbcProperties);
 			} else {
@@ -81,9 +82,9 @@ public class JDBCConnectionProviderFacto
 	}
 
 	private void checkEnlistment(Map<String, Object> resourceProviderProperties) {
-		if (toBoolean(resourceProviderProperties.get(XA_ENLISTMENT_ENABLED), false)) {
+		if (toBoolean(resourceProviderProperties, XA_ENLISTMENT_ENABLED, false)) {
 			throw new TransactionException("This Resource Provider does not support XA transactions");
-		} else if (!toBoolean(resourceProviderProperties.get(LOCAL_ENLISTMENT_ENABLED), true)) {
+		} else if (!toBoolean(resourceProviderProperties, LOCAL_ENLISTMENT_ENABLED, true)) {
 			throw new TransactionException(
 					"This Resource Provider always enlists in local transactions as it does not support XA");
 		}
@@ -92,18 +93,18 @@ public class JDBCConnectionProviderFacto
 	private DataSource poolIfNecessary(Map<String, Object> resourceProviderProperties, DataSource unpooled) {
 		DataSource toUse;
 
-		if (toBoolean(resourceProviderProperties.get(CONNECTION_POOLING_ENABLED), true)) {
+		if (toBoolean(resourceProviderProperties, CONNECTION_POOLING_ENABLED, true)) {
 			HikariConfig hcfg = new HikariConfig();
 			hcfg.setDataSource(unpooled);
 
 			// Sizes
-			hcfg.setMaximumPoolSize(toInt(resourceProviderProperties.get(MAX_CONNECTIONS), 10));
-			hcfg.setMinimumIdle(toInt(resourceProviderProperties.get(MIN_CONNECTIONS), 10));
+			hcfg.setMaximumPoolSize(toInt(resourceProviderProperties, MAX_CONNECTIONS, 10));
+			hcfg.setMinimumIdle(toInt(resourceProviderProperties, MIN_CONNECTIONS, 10));
 
 			// Timeouts
-			hcfg.setConnectionTimeout(toLong(resourceProviderProperties.get(CONNECTION_TIMEOUT), SECONDS.toMillis(30)));
-			hcfg.setIdleTimeout(toLong(resourceProviderProperties.get(IDLE_TIMEOUT), TimeUnit.MINUTES.toMillis(3)));
-			hcfg.setMaxLifetime(toLong(resourceProviderProperties.get(CONNECTION_LIFETIME), HOURS.toMillis(3)));
+			hcfg.setConnectionTimeout(toLong(resourceProviderProperties, CONNECTION_TIMEOUT, SECONDS.toMillis(30)));
+			hcfg.setIdleTimeout(toLong(resourceProviderProperties, IDLE_TIMEOUT, TimeUnit.MINUTES.toMillis(3)));
+			hcfg.setMaxLifetime(toLong(resourceProviderProperties, CONNECTION_LIFETIME, HOURS.toMillis(3)));
 
 			toUse = new HikariDataSource(hcfg);
 
@@ -113,37 +114,48 @@ public class JDBCConnectionProviderFacto
 		return toUse;
 	}
 
-	private boolean toBoolean(Object o, boolean defaultValue) {
+	private boolean toBoolean(Map<String, Object> props, String key, boolean defaultValue) {
+		Object o =  ofNullable(props)
+			.map(m -> m.get(key))
+			.orElse(defaultValue);
+		
 		if (o instanceof Boolean) {
 			return ((Boolean) o).booleanValue();
-		} else if (o instanceof String) {
+		} else if(o instanceof String) {
 			return Boolean.parseBoolean((String) o);
-		} else if (o == null) {
-			return defaultValue;
+		} else {
+			throw new IllegalArgumentException("The property " + key + " cannot be converted to a boolean");
 		}
-		throw new IllegalArgumentException("The value " + o + " cannot be converted to a boolean");
 	}
 
-	private int toInt(Object o, int defaultValue) {
+	private int toInt(Map<String, Object> props, String key, int defaultValue) {
+		
+		Object o =  ofNullable(props)
+				.map(m -> m.get(key))
+				.orElse(defaultValue);
+		
 		if (o instanceof Number) {
 			return ((Number) o).intValue();
-		} else if (o instanceof String) {
+		} else if(o instanceof String) {
 			return Integer.parseInt((String) o);
-		} else if (o == null) {
-			return defaultValue;
+		} else {
+			throw new IllegalArgumentException("The property " + key + " cannot be converted to an int");
 		}
-		throw new IllegalArgumentException("The value " + o + " cannot be converted to an int");
 	}
 
-	private long toLong(Object o, long defaultValue) {
+	private long toLong(Map<String, Object> props, String key, long defaultValue) {
+		
+		Object o =  ofNullable(props)
+				.map(m -> m.get(key))
+				.orElse(defaultValue);
+		
 		if (o instanceof Number) {
 			return ((Number) o).longValue();
-		} else if (o instanceof String) {
+		} else if(o instanceof String) {
 			return Long.parseLong((String) o);
-		} else if (o == null) {
-			return defaultValue;
+		} else {
+			throw new IllegalArgumentException("The property " + key + " cannot be converted to a long");
 		}
-		throw new IllegalArgumentException("The value " + o + " cannot be converted to a long");
 	}
 
 }

Modified: aries/trunk/tx-control/tx-control-service-local/pom.xml
URL: http://svn.apache.org/viewvc/aries/trunk/tx-control/tx-control-service-local/pom.xml?rev=1730872&r1=1730871&r2=1730872&view=diff
==============================================================================
--- aries/trunk/tx-control/tx-control-service-local/pom.xml (original)
+++ aries/trunk/tx-control/tx-control-service-local/pom.xml Wed Feb 17 16:51:21 2016
@@ -40,9 +40,10 @@
             org.apache.aries.tx.control.service.local.*
         </aries.osgi.private.pkg>
 		<aries.osgi.import.pkg>
-			org.osgi.service.transaction.control;version="[0.0.1,0.0.1]",
+			org.osgi.service.transaction.control;version="[0.0.1,0.0.2)",
 			*
 		</aries.osgi.import.pkg>
+		<lastReleaseVersion>0.0.1-SNAPSHOT</lastReleaseVersion>
 	</properties>
 
 	<dependencies>