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/11/07 09:25:33 UTC

[sling-org-apache-sling-discovery-base] 03/09: SLING-5173 : rename commons impl packages to base as they are meant for reuse by discovery.impl and discovery.oak - plus avoid using abstract component class with scr annotations - use abstract getters instead - plus some more fine-tuning of log messages - plus make discovery.impl's Config also implement DiscoveryLiteConfig - plus properly handle binds happening before activate in DiscoveryServiceImpl

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.discovery.base-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-discovery-base.git

commit e37566826399bf3faf79c1b16e38fee80b1720c5
Author: Stefan Egli <st...@apache.org>
AuthorDate: Wed Oct 21 08:29:08 2015 +0000

    SLING-5173 : rename commons impl packages to base as they are meant for reuse by discovery.impl and discovery.oak - plus avoid using abstract component class with scr annotations - use abstract getters instead - plus some more fine-tuning of log messages - plus make discovery.impl's Config also implement DiscoveryLiteConfig - plus properly handle binds happening before activate in DiscoveryServiceImpl
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/extensions/discovery/base@1709751 13f79535-47bb-0310-9956-ffa450edef68
---
 .../base/commons/BaseDiscoveryService.java         | 17 ++----
 .../discovery/base/commons/BaseViewChecker.java    | 66 +++++++++-------------
 .../base/commons/DummyDiscoveryService.java        | 15 -----
 .../announcement/AnnouncementRegistryImplTest.java |  2 +-
 .../connectors/ping/ConnectorRegistryImplTest.java |  2 +-
 .../discovery/base/its/setup/VirtualInstance.java  |  2 +-
 .../base/its/setup/VirtualInstanceBuilder.java     |  2 +-
 .../base/its/setup/mock/DummyViewChecker.java      | 47 +++++++++++++++
 8 files changed, 84 insertions(+), 69 deletions(-)

diff --git a/src/main/java/org/apache/sling/discovery/base/commons/BaseDiscoveryService.java b/src/main/java/org/apache/sling/discovery/base/commons/BaseDiscoveryService.java
index cf9563d..40afb95 100644
--- a/src/main/java/org/apache/sling/discovery/base/commons/BaseDiscoveryService.java
+++ b/src/main/java/org/apache/sling/discovery/base/commons/BaseDiscoveryService.java
@@ -47,12 +47,6 @@ public abstract class BaseDiscoveryService implements DiscoveryService {
     
     protected abstract void handleIsolatedFromTopology();
     
-    public abstract void updateProperties();
-
-    public abstract void handlePotentialTopologyChange();
-
-    public abstract void handleTopologyChanging();
-
     protected DefaultTopologyView getOldView() {
         return oldView;
     }
@@ -69,16 +63,17 @@ public abstract class BaseDiscoveryService implements DiscoveryService {
      * @see DiscoveryService#getTopology()
      */
     public TopologyView getTopology() {
-        ClusterViewService clusterViewService = getClusterViewService();
-        if (clusterViewService == null) {
-            throw new IllegalStateException(
-                    "DiscoveryService not yet initialized with IClusterViewService");
-        }
         // create a new topology view
         final DefaultTopologyView topology = new DefaultTopologyView();
 
         LocalClusterView localClusterView = null;
         try {
+            ClusterViewService clusterViewService = getClusterViewService();
+            if (clusterViewService == null) {
+                throw new UndefinedClusterViewException(
+                        Reason.REPOSITORY_EXCEPTION,
+                        "no ClusterViewService available at the moment");
+            }
             localClusterView = clusterViewService.getLocalClusterView();
             topology.setLocalClusterView(localClusterView);
         } catch (UndefinedClusterViewException e) {
diff --git a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
index 516e8ec..754bb18 100644
--- a/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
+++ b/src/main/java/org/apache/sling/discovery/base/commons/BaseViewChecker.java
@@ -28,7 +28,6 @@ import java.util.UUID;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.discovery.base.connectors.BaseConfig;
@@ -66,27 +65,6 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
     /** the name used for the period job with the scheduler **/
     protected String NAME = "discovery.impl.heartbeat.runner.";
 
-    @Reference
-    protected SlingSettingsService slingSettingsService;
-
-    @Reference
-    protected ResourceResolverFactory resourceResolverFactory;
-
-    @Reference
-    protected ConnectorRegistry connectorRegistry;
-
-    @Reference
-    protected AnnouncementRegistry announcementRegistry;
-
-    @Reference
-    protected Scheduler scheduler;
-
-    @Reference
-    protected BaseConfig connectorConfig;
-
-    /** the discovery service reference is used to get properties updated before heartbeats are sent **/
-    protected BaseDiscoveryService discoveryService;
-
     /** the sling id of the local instance **/
     protected String slingId;
     
@@ -116,6 +94,18 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
     		startupFinished(mode);
     	}
     }
+    
+    protected abstract SlingSettingsService getSlingSettingsService();
+
+    protected abstract ResourceResolverFactory getResourceResolverFactory();
+
+    protected abstract ConnectorRegistry getConnectorRegistry();
+
+    protected abstract AnnouncementRegistry getAnnouncementRegistry();
+
+    protected abstract Scheduler getScheduler();
+
+    protected abstract BaseConfig getConnectorConfig();
 
     public void startupFinished(StartupMode mode) {
     	synchronized(lock) {
@@ -133,7 +123,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
     	synchronized(lock) {
     		this.context = context;
 
-	        slingId = slingSettingsService.getSlingId();
+	        slingId = getSlingSettingsService().getSlingId();
 	        NAME = "discovery.connectors.common.runner." + slingId;
 
 	        doActivate();
@@ -143,9 +133,9 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
 
     protected void doActivate() {
         try {
-            final long interval = connectorConfig.getConnectorPingInterval();
+            final long interval = getConnectorConfig().getConnectorPingInterval();
             logger.info("doActivate: starting periodic connectorPing job for "+slingId+" with interval "+interval+" sec.");
-            scheduler.addPeriodicJob(NAME, this,
+            getScheduler().addPeriodicJob(NAME, this,
                     null, interval, false);
         } catch (Exception e) {
             logger.error("doActivate: Could not start connectorPing runner: " + e, e);
@@ -158,7 +148,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
         // SLING-3365 : dont synchronize on deactivate
         activated = false;
         logger.info("deactivate: deactivated slingId: {}, this: {}", slingId, this);
-    	scheduler.removeJob(NAME);
+    	getScheduler().removeJob(NAME);
     }
     
     /** for testing only **/
@@ -175,7 +165,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
     
     @Override
     public void heartbeatAndCheckView() {
-        logger.info("run: start. [ConnectorPinger of slingId="+slingId+"]");
+        logger.debug("run: start. [for slingId="+slingId+"]");
         synchronized(lock) {
         	if (!activated) {
         		// SLING:2895: avoid heartbeats if not activated
@@ -189,7 +179,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
             // check the view
             doCheckView();
         }
-        logger.info("run: end. [ConnectorPinger of slingId="+slingId+"]");
+        logger.debug("run: end. [for slingId="+slingId+"]");
     }
 
     /** Trigger the issuance of the next heartbeat asap instead of at next heartbeat interval **/
@@ -201,7 +191,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
             // 'fireJob' checks for a job from the same job-class to already exist
             // 'fireJobAt' though allows to pass a name for the job - which can be made unique, thus does not conflict/already-exist
             logger.info("triggerConnectorPing: firing job to trigger heartbeat");
-            scheduler.fireJobAt(NAME+UUID.randomUUID(), this, null, new Date(System.currentTimeMillis()-1000 /* make sure it gets triggered immediately*/));
+            getScheduler().fireJobAt(NAME+UUID.randomUUID(), this, null, new Date(System.currentTimeMillis()-1000 /* make sure it gets triggered immediately*/));
         } catch (Exception e) {
             logger.info("triggerConnectorPing: Could not trigger heartbeat: " + e);
         }
@@ -216,18 +206,16 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
      * which announce this part of the topology to others)
      */
     protected void issueHeartbeat() {
-        if (discoveryService == null) {
-            logger.error("issueHeartbeat: discoveryService is null");
-        } else {
-            discoveryService.updateProperties();
-        }
-//        issueClusterLocalHeartbeat();
+        updateProperties();
+
         issueConnectorPings();
     }
 
+    protected abstract void updateProperties();
+
     /** Issue a remote heartbeat using the topology connectors **/
     protected void issueConnectorPings() {
-        if (connectorRegistry == null) {
+        if (getConnectorRegistry() == null) {
             logger.error("issueConnectorPings: connectorRegistry is null");
             return;
         }
@@ -238,7 +226,7 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
         if (logger.isDebugEnabled()) {
             logger.debug("issueConnectorPings: pinging outgoing topology connectors (if there is any) for "+slingId);
         }
-        connectorRegistry.pingOutgoingConnectors(forcePing);
+        getConnectorRegistry().pingOutgoingConnectors(forcePing);
         forcePing = false;
     }
 
@@ -247,11 +235,11 @@ public abstract class BaseViewChecker implements ViewChecker, Runnable, StartupL
      */
     protected void doCheckView() {
         // check the remotes first
-        if (announcementRegistry == null) {
+        if (getAnnouncementRegistry() == null) {
             logger.error("announcementRegistry is null");
             return;
         }
-        announcementRegistry.checkExpiredAnnouncements();
+        getAnnouncementRegistry().checkExpiredAnnouncements();
     }
 
     /**
diff --git a/src/test/java/org/apache/sling/discovery/base/commons/DummyDiscoveryService.java b/src/test/java/org/apache/sling/discovery/base/commons/DummyDiscoveryService.java
index ddde4fc..c7928ab 100644
--- a/src/test/java/org/apache/sling/discovery/base/commons/DummyDiscoveryService.java
+++ b/src/test/java/org/apache/sling/discovery/base/commons/DummyDiscoveryService.java
@@ -39,11 +39,6 @@ public class DummyDiscoveryService extends BaseDiscoveryService {
     }
     
     @Override
-    public void updateProperties() {
-        throw new IllegalStateException("updateProperties not yet impl");
-    }
-
-    @Override
     protected ClusterViewService getClusterViewService() {
         return clusterViewService;
     }
@@ -58,14 +53,4 @@ public class DummyDiscoveryService extends BaseDiscoveryService {
         throw new IllegalStateException("handleIsolatedFromTopology not yet impl");
     }
     
-    @Override
-    public void handlePotentialTopologyChange() {
-        throw new IllegalStateException("handlePotentialTopologyChange not yet impl");
-    }
-    
-    @Override
-    public void handleTopologyChanging() {
-        throw new IllegalStateException("handleTopologyChanging not yet impl");
-    }
-    
 }
diff --git a/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java b/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
index 6a38bea..062a56b 100644
--- a/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
+++ b/src/test/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImplTest.java
@@ -40,7 +40,7 @@ import org.apache.sling.discovery.base.its.setup.mock.MockFactory;
 import org.apache.sling.discovery.base.its.setup.mock.SimpleConnectorConfig;
 import org.apache.sling.discovery.commons.providers.DefaultClusterView;
 import org.apache.sling.discovery.commons.providers.DefaultInstanceDescription;
-import org.apache.sling.discovery.commons.providers.spi.impl.DummySlingSettingsService;
+import org.apache.sling.discovery.commons.providers.spi.base.DummySlingSettingsService;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java b/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
index 9972e85..f743418 100644
--- a/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
+++ b/src/test/java/org/apache/sling/discovery/base/connectors/ping/ConnectorRegistryImplTest.java
@@ -31,7 +31,7 @@ import org.apache.sling.discovery.base.its.setup.VirtualInstance;
 import org.apache.sling.discovery.base.its.setup.VirtualInstanceBuilder;
 import org.apache.sling.discovery.base.its.setup.mock.MockFactory;
 import org.apache.sling.discovery.base.its.setup.mock.SimpleConnectorConfig;
-import org.apache.sling.discovery.commons.providers.spi.impl.DummySlingSettingsService;
+import org.apache.sling.discovery.commons.providers.spi.base.DummySlingSettingsService;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
index a21becb..9e10871 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstance.java
@@ -338,7 +338,7 @@ public class VirtualInstance {
         try {
             stopViewChecker();
         } catch (Throwable e) {
-            throw new Exception("Caught Throwable in stopConnectorPinger: "+e, e);
+            throw new Exception("Caught Throwable in stop(): "+e, e);
         }
 
         if (resourceResolver != null) {
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
index feaaf97..fb287d6 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/VirtualInstanceBuilder.java
@@ -33,7 +33,7 @@ import org.apache.sling.discovery.base.connectors.announcement.AnnouncementRegis
 import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistry;
 import org.apache.sling.discovery.base.connectors.ping.ConnectorRegistryImpl;
 import org.apache.sling.discovery.base.its.setup.mock.FailingScheduler;
-import org.apache.sling.discovery.commons.providers.spi.impl.DummySlingSettingsService;
+import org.apache.sling.discovery.commons.providers.spi.base.DummySlingSettingsService;
 import org.apache.sling.settings.SlingSettingsService;
 
 import junitx.util.PrivateAccessor;
diff --git a/src/test/java/org/apache/sling/discovery/base/its/setup/mock/DummyViewChecker.java b/src/test/java/org/apache/sling/discovery/base/its/setup/mock/DummyViewChecker.java
index e66ec09..e83556c 100644
--- a/src/test/java/org/apache/sling/discovery/base/its/setup/mock/DummyViewChecker.java
+++ b/src/test/java/org/apache/sling/discovery/base/its/setup/mock/DummyViewChecker.java
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.discovery.base.its.setup.mock;
 
+import org.apache.felix.scr.annotations.Reference;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.commons.scheduler.Scheduler;
 import org.apache.sling.discovery.base.commons.BaseViewChecker;
@@ -28,6 +29,18 @@ import org.apache.sling.settings.SlingSettingsService;
 
 public class DummyViewChecker extends BaseViewChecker {
     
+    protected SlingSettingsService slingSettingsService;
+
+    protected ResourceResolverFactory resourceResolverFactory;
+
+    protected ConnectorRegistry connectorRegistry;
+
+    protected AnnouncementRegistry announcementRegistry;
+
+    protected Scheduler scheduler;
+
+    protected BaseConfig connectorConfig;
+
     public static DummyViewChecker testConstructor(
             SlingSettingsService slingSettingsService,
             ResourceResolverFactory resourceResolverFactory,
@@ -45,4 +58,38 @@ public class DummyViewChecker extends BaseViewChecker {
         return pinger;
     }
 
+    @Override
+    protected SlingSettingsService getSlingSettingsService() {
+        return slingSettingsService;
+    }
+
+    @Override
+    protected ResourceResolverFactory getResourceResolverFactory() {
+        return resourceResolverFactory;
+    }
+
+    @Override
+    protected ConnectorRegistry getConnectorRegistry() {
+        return connectorRegistry;
+    }
+
+    @Override
+    protected AnnouncementRegistry getAnnouncementRegistry() {
+        return announcementRegistry;
+    }
+
+    @Override
+    protected Scheduler getScheduler() {
+        return scheduler;
+    }
+
+    @Override
+    protected BaseConfig getConnectorConfig() {
+        return connectorConfig;
+    }
+
+    @Override
+    protected void updateProperties() {
+        // nothing done for the dummyViewChecker
+    }
 }

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