You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ie...@apache.org on 2013/02/26 04:03:09 UTC
svn commit: r1450003 - in
/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing:
integration/HttpTestBase.java jcr/RepositoryProvider.java
Author: ieb
Date: Tue Feb 26 03:03:08 2013
New Revision: 1450003
URL: http://svn.apache.org/r1450003
Log:
SLING-2750 moved the null check on instance inside the synchronised method to conform to rules about double null checks and synchronised blocks.
Modified:
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryProvider.java
Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java?rev=1450003&r1=1450002&r2=1450003&view=diff
==============================================================================
--- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java (original)
+++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/integration/HttpTestBase.java Tue Feb 26 03:03:08 2013
@@ -84,6 +84,8 @@ public class HttpTestBase extends TestCa
/** Means "don't care about Content-Type" in getContent(...) methods */
public static final String CONTENT_TYPE_DONTCARE = "*";
+ private static final Object startupCheckLock = new Object();
+
/** URLs stored here are deleted in tearDown */
protected final List<String> urlsToDelete = new LinkedList<String>();
@@ -196,17 +198,21 @@ public class HttpTestBase extends TestCa
*/
protected void waitForSlingStartup() throws Exception {
// Use a static flag to make sure this runs only once in our test suite
- if (slingStartupOk != null) {
- if(slingStartupOk) {
+ // we must synchronize on this if we don't 2 threads could enter the check concurrently
+ // which would leave to random results.
+ synchronized(startupCheckLock) {
+ if (slingStartupOk != null) {
+ if(slingStartupOk) {
+ return;
+ }
+ fail("Sling services not available. Already checked in earlier tests.");
+ }
+ if ( System.getProperty(PROPERTY_SKIP_STARTUP_CHECK) != null ) {
+ slingStartupOk = true;
return;
}
- fail("Sling services not available. Already checked in earlier tests.");
- }
- if ( System.getProperty(PROPERTY_SKIP_STARTUP_CHECK) != null ) {
- slingStartupOk = true;
- return;
+ slingStartupOk = false;
}
- slingStartupOk = false;
System.err.println("Checking if the required Sling services are started (timeout " + READY_TIMEOUT_SECONDS + " seconds)...");
System.err.println("(base URLs=" + HTTP_BASE_URL + " and " + WEBDAV_BASE_URL + "; servlet context="+ SERVLET_CONTEXT +")");
Modified: sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryProvider.java?rev=1450003&r1=1450002&r2=1450003&view=diff
==============================================================================
--- sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryProvider.java (original)
+++ sling/trunk/bundles/commons/testing/src/main/java/org/apache/sling/commons/testing/jcr/RepositoryProvider.java Tue Feb 26 03:03:08 2013
@@ -44,13 +44,9 @@ public class RepositoryProvider {
private RepositoryProvider() {
}
- public static RepositoryProvider instance() {
+ public synchronized static RepositoryProvider instance() {
if(INSTANCE == null) {
- synchronized (RepositoryProvider.class) {
- if(INSTANCE == null) {
- INSTANCE = new RepositoryProvider();
- }
- }
+ INSTANCE = new RepositoryProvider();
}
return INSTANCE;
}
@@ -58,18 +54,12 @@ public class RepositoryProvider {
/** Return a SlingRepository. First call initializes it, and a JVM
* shutdown hook is registered to stop it.
**/
- public SlingRepository getRepository() throws RepositoryException {
- if(repository != null) {
- return repository;
- }
-
- synchronized (RepositoryTestBase.class) {
- if(repository == null) {
- RepositoryUtil.startRepository();
- repository = RepositoryUtil.getRepository();
- Runtime.getRuntime().addShutdownHook(new ShutdownThread());
- }
- return repository;
+ public synchronized SlingRepository getRepository() throws RepositoryException {
+ if(repository == null) {
+ RepositoryUtil.startRepository();
+ repository = RepositoryUtil.getRepository();
+ Runtime.getRuntime().addShutdownHook(new ShutdownThread());
}
+ return repository;
}
}
\ No newline at end of file