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);
+        }
+    }
 }


Reply via email to