You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/10/18 23:26:08 UTC

[sling-org-apache-sling-nosql-couchbase-resourceprovider] 02/42: SLING-4381 simplify couchbase client reference

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-couchbase-resourceprovider.git

commit 1f41a5259816bd70a57fd3bf5f04c78ca59df117
Author: Stefan Seifert <ss...@apache.org>
AuthorDate: Wed May 20 15:13:31 2015 +0000

    SLING-4381 simplify couchbase client reference
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1680597 13f79535-47bb-0310-9956-ffa450edef68
---
 .../CouchbaseNoSqlResourceProviderFactory.java     | 52 ++++------------------
 .../CouchbaseNoSqlResourceProviderIT.java          |  2 +-
 ...chbaseNoSqlResourceProviderTransactionalIT.java |  2 +-
 3 files changed, 10 insertions(+), 46 deletions(-)

diff --git a/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlResourceProviderFactory.java b/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlResourceProviderFactory.java
index 3f20e6c..84ffbf3 100644
--- a/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlResourceProviderFactory.java
+++ b/src/main/java/org/apache/sling/nosql/couchbase/resourceprovider/impl/CouchbaseNoSqlResourceProviderFactory.java
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Property;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
@@ -32,13 +31,8 @@ import org.apache.sling.commons.osgi.PropertiesUtil;
 import org.apache.sling.nosql.couchbase.client.CouchbaseClient;
 import org.apache.sling.nosql.generic.adapter.NoSqlAdapter;
 import org.apache.sling.nosql.generic.resource.AbstractNoSqlResourceProviderFactory;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
 import org.osgi.service.event.EventAdmin;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * {@link ResourceProviderFactory} implementation that uses couchbase as
@@ -48,10 +42,11 @@ import org.slf4j.LoggerFactory;
 @Service(value = ResourceProviderFactory.class)
 public class CouchbaseNoSqlResourceProviderFactory extends AbstractNoSqlResourceProviderFactory {
 
-    @Property(label = "Couchbase Client ID", description = "ID referencing the matching couchbase client configuration and bucket for caching.", value = CouchbaseNoSqlResourceProviderFactory.COUCHBASE_CLIENT_ID_DEFAULT)
-    static final String COUCHBASE_CLIENT_ID_PROPERTY = "couchbaseClientID";
-    private static final String COUCHBASE_CLIENT_ID_DEFAULT = "caravan-resourceprovider-couchbase";
-
+    /**
+     * Couchbase Client ID for Couchbase Resource Provier
+     */
+    public static final String COUCHBASE_CLIENT_ID = "sling-resourceprovider-couchbase";
+    
     @Property(label = "Cache Key Prefix", description = "Prefix for caching keys.", value = CouchbaseNoSqlResourceProviderFactory.CACHE_KEY_PREFIX_DEFAULT)
     static final String CACHE_KEY_PREFIX_PROPERTY = "cacheKeyPrefix";
     private static final String CACHE_KEY_PREFIX_DEFAULT = "sling-resource:";
@@ -59,52 +54,21 @@ public class CouchbaseNoSqlResourceProviderFactory extends AbstractNoSqlResource
     @Property(label = "Root paths", description = "Root paths for resource provider.", cardinality = Integer.MAX_VALUE)
     static final String PROVIDER_ROOTS_PROPERTY = ResourceProvider.ROOTS;
 
+    @Reference(target = "(" + CouchbaseClient.CLIENT_ID_PROPERTY + "=" + COUCHBASE_CLIENT_ID + ")")
+    private CouchbaseClient couchbaseClient;
+
     @Reference
     private EventAdmin eventAdmin;
 
-    private String couchbaseClientId;
-    private ServiceReference couchbaseClientServiceReference;
     private NoSqlAdapter noSqlAdapter;
 
-    private static final Logger log = LoggerFactory.getLogger(CouchbaseNoSqlResourceProviderFactory.class);
-
     @Activate
     private void activate(ComponentContext componentContext, Map<String, Object> config) {
-        CouchbaseClient couchbaseClient = null;
-        try {
-            couchbaseClientId = PropertiesUtil.toString(config.get(COUCHBASE_CLIENT_ID_PROPERTY),
-                    COUCHBASE_CLIENT_ID_DEFAULT);
-            BundleContext bundleContext = componentContext.getBundleContext();
-            ServiceReference[] serviceReferences = bundleContext.getServiceReferences(
-                    CouchbaseClient.class.getName(), "(" + CouchbaseClient.CLIENT_ID_PROPERTY + "=" + couchbaseClientId + ")");
-            if (serviceReferences.length == 1) {
-                couchbaseClientServiceReference = serviceReferences[0];
-                couchbaseClient = (CouchbaseClient)bundleContext.getService(couchbaseClientServiceReference);
-            }
-            else if (serviceReferences.length > 1) {
-                log.error("Multiple couchbase clients registered for client id '{}', caching is disabled.",
-                        couchbaseClientId);
-            }
-            else {
-                log.error("No couchbase clients registered for client id '{}', caching is disabled.", couchbaseClientId);
-            }
-        }
-        catch (InvalidSyntaxException ex) {
-            log.error("Invalid service filter, couchbase caching is disabled.", ex);
-        }
-
         String cacheKeyPrefix = PropertiesUtil
                 .toString(config.get(CACHE_KEY_PREFIX_PROPERTY), CACHE_KEY_PREFIX_DEFAULT);
         noSqlAdapter = new CouchbaseNoSqlAdapter(couchbaseClient, cacheKeyPrefix);
     }
 
-    @Deactivate
-    private void deactivate(ComponentContext componentContext) {
-        if (couchbaseClientServiceReference != null) {
-            componentContext.getBundleContext().ungetService(couchbaseClientServiceReference);
-        }
-    }
-
     @Override
     protected NoSqlAdapter getNoSqlAdapter() {
         return noSqlAdapter;
diff --git a/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderIT.java b/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderIT.java
index ed64041..cacf7f8 100644
--- a/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderIT.java
+++ b/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderIT.java
@@ -43,7 +43,7 @@ public class CouchbaseNoSqlResourceProviderIT extends AbstractNoSqlResourceProvi
         context.registerInjectActivateService(
                 new CouchbaseClientImpl(),
                 ImmutableMap.<String, Object> builder()
-                        .put(CouchbaseClient.CLIENT_ID_PROPERTY, "caravan-resourceprovider-couchbase")
+                        .put(CouchbaseClient.CLIENT_ID_PROPERTY, CouchbaseNoSqlResourceProviderFactory.COUCHBASE_CLIENT_ID)
                         .put("couchbaseHosts", System.getProperty("couchbaseHosts", "localhost:8091"))
                         .put("bucketName", System.getProperty("bucketName", "resource-test")).build());
 
diff --git a/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderTransactionalIT.java b/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderTransactionalIT.java
index 3c62e9d..76f87a5 100644
--- a/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderTransactionalIT.java
+++ b/src/test/java/org/apache/sling/nosql/couchbase/resourceprovider/integration/CouchbaseNoSqlResourceProviderTransactionalIT.java
@@ -43,7 +43,7 @@ public class CouchbaseNoSqlResourceProviderTransactionalIT extends AbstractNoSql
         context.registerInjectActivateService(
                 new CouchbaseClientImpl(),
                 ImmutableMap.<String, Object> builder()
-                        .put(CouchbaseClient.CLIENT_ID_PROPERTY, "caravan-resourceprovider-couchbase")
+                        .put(CouchbaseClient.CLIENT_ID_PROPERTY, CouchbaseNoSqlResourceProviderFactory.COUCHBASE_CLIENT_ID)
                         .put("couchbaseHosts", System.getProperty("couchbaseHosts", "localhost:8091"))
                         .put("bucketName", System.getProperty("bucketName", "resource-test")).build());
 

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.