This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-nosql-generic.git
commit 05e2961ce883ffa8375ca628e47c11734fba5d16 Author: Stefan Seifert <[email protected]> AuthorDate: Tue Jan 19 16:42:12 2016 +0000 SLING-5437 The NoSQL providers should throw LoginException if the connection to the NoSQL database can't be established (patch provided by Robert Munteanu) git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1725565 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/nosql/generic/adapter/AbstractNoSqlAdapter.java | 7 +++++++ .../nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java | 6 ++++++ .../org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java | 11 ++++++++++- .../org/apache/sling/nosql/generic/adapter/package-info.java | 2 +- .../resource/AbstractNoSqlResourceProviderFactory.java | 4 +++- .../generic/resource/impl/ValueMapConvertingNoSqlAdapter.java | 6 ++++++ .../nosql/generic/simple/provider/SimpleNoSqlAdapter.java | 6 ++++++ 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java b/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java index 38eff2b..d8672e6 100644 --- a/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java +++ b/src/main/java/org/apache/sling/nosql/generic/adapter/AbstractNoSqlAdapter.java @@ -20,6 +20,8 @@ package org.apache.sling.nosql.generic.adapter; import java.util.Iterator; +import org.apache.sling.api.resource.LoginException; + import aQute.bnd.annotation.ConsumerType; /** @@ -40,4 +42,9 @@ public abstract class AbstractNoSqlAdapter implements NoSqlAdapter { return null; } + @Override + public void checkConnection() throws LoginException { + // not supported unless it is overwritten explicitly + } + } diff --git a/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java b/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java index dfcf7a7..68a8381 100644 --- a/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java +++ b/src/main/java/org/apache/sling/nosql/generic/adapter/MetricsNoSqlAdapterWrapper.java @@ -20,6 +20,7 @@ package org.apache.sling.nosql.generic.adapter; import java.util.Iterator; +import org.apache.sling.api.resource.LoginException; import org.slf4j.Logger; /** @@ -89,6 +90,11 @@ public final class MetricsNoSqlAdapterWrapper implements NoSqlAdapter { } } + @Override + public void checkConnection() throws LoginException { + delegate.checkConnection(); + } + private class Metrics { private long startTime; diff --git a/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java b/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java index ab3d823..d86cd29 100644 --- a/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java +++ b/src/main/java/org/apache/sling/nosql/generic/adapter/NoSqlAdapter.java @@ -20,6 +20,8 @@ package org.apache.sling.nosql.generic.adapter; 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; + } diff --git a/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java b/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java index aed682e..88474a2 100644 --- a/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java +++ b/src/main/java/org/apache/sling/nosql/generic/adapter/package-info.java @@ -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; diff --git a/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java b/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java index 2e56b2b..c1e7811 100644 --- a/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java +++ b/src/main/java/org/apache/sling/nosql/generic/resource/AbstractNoSqlResourceProviderFactory.java @@ -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 { diff --git a/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java b/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java index 62974f0..52ef419 100644 --- a/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java +++ b/src/main/java/org/apache/sling/nosql/generic/resource/impl/ValueMapConvertingNoSqlAdapter.java @@ -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 implements NoSqlAdapter { 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); } diff --git a/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java b/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java index f1743ff..6702e1a 100644 --- a/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java +++ b/src/test/java/org/apache/sling/nosql/generic/simple/provider/SimpleNoSqlAdapter.java @@ -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 implements NoSqlAdapter { return Collections.<NoSqlData>emptyList().iterator(); } + @Override + public void checkConnection() throws LoginException { + + } + } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
