Author: sseifert
Date: Tue Jan 19 16:42:12 2016
New Revision: 1725565
URL: http://svn.apache.org/viewvc?rev=1725565&view=rev
Log:
SLING-5437 The NoSQL providers should throw LoginException if the connection to
the NoSQL database can't be established (patch provided by Robert Munteanu)
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java
sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java
sling/trunk/contrib/nosql/mongodb-resourceprovider/pom.xml
sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java
Tue Jan 19 16:42:12 2016
@@ -20,6 +20,8 @@ package org.apache.sling.nosql.generic.a
import java.util.Iterator;
+import org.apache.sling.api.resource.LoginException;
+
import aQute.bnd.annotation.ConsumerType;
/**
@@ -40,4 +42,9 @@ public abstract class AbstractNoSqlAdapt
return null;
}
+ @Override
+ public void checkConnection() throws LoginException {
+ // not supported unless it is overwritten explicitly
+ }
+
}
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java
Tue Jan 19 16:42:12 2016
@@ -20,6 +20,7 @@ package org.apache.sling.nosql.generic.a
import java.util.Iterator;
+import org.apache.sling.api.resource.LoginException;
import org.slf4j.Logger;
/**
@@ -89,6 +90,11 @@ public final class MetricsNoSqlAdapterWr
}
}
+ @Override
+ public void checkConnection() throws LoginException {
+ delegate.checkConnection();
+ }
+
private class Metrics {
private long startTime;
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java
Tue Jan 19 16:42:12 2016
@@ -20,6 +20,8 @@ package org.apache.sling.nosql.generic.a
import java.util.Iterator;
+import org.apache.sling.api.resource.LoginException;
+
import aQute.bnd.annotation.ConsumerType;
/**
@@ -73,5 +75,12 @@ public interface NoSqlAdapter {
* @return Query result or null if query not supported
*/
Iterator<NoSqlData> query(String query, String language);
-
+
+ /**
+ * Checks whether the connection to the NoSQL database is possible
+ *
+ * @throws LoginException in case of any errors
+ */
+ void checkConnection() throws LoginException;
+
}
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java
Tue Jan 19 16:42:12 2016
@@ -19,5 +19,5 @@
/**
* Adapter for NoSQL resource provider implementation.
*/
[email protected]("1.0.0")
[email protected]("2.0.0")
package org.apache.sling.nosql.generic.adapter;
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java
Tue Jan 19 16:42:12 2016
@@ -37,7 +37,9 @@ import aQute.bnd.annotation.ConsumerType
public abstract class AbstractNoSqlResourceProviderFactory implements
ResourceProviderFactory {
public final ResourceProvider getResourceProvider(Map<String, Object>
authenticationInfo) throws LoginException {
- return new NoSqlResourceProvider(getNoSqlAdapter(), getEventAdmin());
+ NoSqlAdapter adapter = getNoSqlAdapter();
+ adapter.checkConnection();
+ return new NoSqlResourceProvider(adapter, getEventAdmin());
}
public final ResourceProvider
getAdministrativeResourceProvider(Map<String, Object> authenticationInfo)
throws LoginException {
Modified:
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java
Tue Jan 19 16:42:12 2016
@@ -30,6 +30,7 @@ import java.util.Map;
import javax.xml.bind.DatatypeConverter;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.nosql.generic.adapter.NoSqlAdapter;
import org.apache.sling.nosql.generic.adapter.NoSqlData;
import org.slf4j.Logger;
@@ -163,6 +164,11 @@ class ValueMapConvertingNoSqlAdapter imp
return new NoSqlData(data.getPath(), deserializedMap);
}
+ @Override
+ public void checkConnection() throws LoginException {
+ delegate.checkConnection();
+ }
+
private static DateFormat getISO8601Format() {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
}
Modified:
sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java
(original)
+++
sling/trunk/contrib/nosql/generic/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java
Tue Jan 19 16:42:12 2016
@@ -28,6 +28,7 @@ import java.util.TreeMap;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.nosql.generic.adapter.NoSqlAdapter;
import org.apache.sling.nosql.generic.adapter.NoSqlData;
import org.apache.sling.nosql.generic.resource.impl.PathUtil;
@@ -114,4 +115,9 @@ public class SimpleNoSqlAdapter implemen
return Collections.<NoSqlData>emptyList().iterator();
}
+ @Override
+ public void checkConnection() throws LoginException {
+
+ }
+
}
Modified: sling/trunk/contrib/nosql/mongodb-resourceprovider/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/mongodb-resourceprovider/pom.xml?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
--- sling/trunk/contrib/nosql/mongodb-resourceprovider/pom.xml (original)
+++ sling/trunk/contrib/nosql/mongodb-resourceprovider/pom.xml Tue Jan 19
16:42:12 2016
@@ -49,7 +49,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.nosql.generic</artifactId>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
@@ -84,7 +84,7 @@
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.nosql.generic</artifactId>
<classifier>tests</classifier>
- <version>1.0.0</version>
+ <version>1.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
Modified:
sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java?rev=1725565&r1=1725564&r2=1725565&view=diff
==============================================================================
---
sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
(original)
+++
sling/trunk/contrib/nosql/mongodb-resourceprovider/src/main/java/org/apache/sling/nosql/mongodb/resourceprovider/impl/MongoDBNoSqlAdapter.java
Tue Jan 19 16:42:12 2016
@@ -23,6 +23,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;
+import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.nosql.generic.adapter.AbstractNoSqlAdapter;
import org.apache.sling.nosql.generic.adapter.MultiValueMode;
@@ -33,6 +34,7 @@ import org.slf4j.LoggerFactory;
import com.mongodb.DuplicateKeyException;
import com.mongodb.MongoClient;
+import com.mongodb.MongoException;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
@@ -145,4 +147,13 @@ public final class MongoDBNoSqlAdapter e
return result.getDeletedCount() > 0;
}
+ @Override
+ public void checkConnection() throws LoginException {
+ // the query is not relevant, just the successful round-trip
+ try {
+ collection.find(Filters.eq(PN_PATH, "/")).first();
+ } catch (MongoException e) {
+ throw new LoginException(e);
+ }
+ }
}