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

cschneider pushed a commit to branch SLING-11692
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git

commit 8ccf2794b67c523b1c64a6bd31c0c6bfdcd951a7
Author: Christian Schneider <[email protected]>
AuthorDate: Tue Nov 22 12:06:36 2022 +0100

    SLING-11692 - refactor activate method for better readability
---
 .../impl/publisher/DistributionPublisher.java      | 64 +++++++++++-----------
 1 file changed, 31 insertions(+), 33 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
index 792e930..ff98ce9 100644
--- 
a/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
+++ 
b/src/main/java/org/apache/sling/distribution/journal/impl/publisher/DistributionPublisher.java
@@ -23,6 +23,7 @@ import static java.lang.String.format;
 import static java.util.Objects.requireNonNull;
 import static org.apache.sling.distribution.DistributionRequestState.ACCEPTED;
 import static org.apache.sling.distribution.DistributionRequestType.*;
+import static 
org.apache.sling.distribution.journal.shared.DistributionMetricsService.PUB_COMPONENT;
 import static 
org.apache.sling.distribution.journal.shared.DistributionMetricsService.timed;
 import static 
org.apache.sling.distribution.journal.shared.Strings.requireNotBlank;
 
@@ -150,40 +151,24 @@ public class DistributionPublisher implements 
DistributionAgent {
         requireNonNull(factory);
         requireNonNull(distributionMetricsService);
         pubAgentName = requireNotBlank(config.name());
-
         queuedTimeout = config.queuedTimeout();
-
         pkgType = packageBuilder.getType();
 
-        this.sender = messagingProvider.createSender(topics.getPackageTopic());
-        
-        Dictionary<String, Object> props = createServiceProps(config);
-        componentReg = 
requireNonNull(context.registerService(DistributionAgent.class, this, props));
-        
         distributionLogEventListener = new 
DistributionLogEventListener(context, log, pubAgentName);
-
-        DistPublisherJMX bean;
-        try {
-            bean = new DistPublisherJMX(pubAgentName, discoveryService, this);
-        } catch (NotCompliantMBeanException e) {
-            throw new RuntimeException(e);
-        }
-        reg = new JMXRegistration(bean, "agent", pubAgentName);
-        
-        String msg = format("Started Publisher agent %s with packageBuilder 
%s, queuedTimeout %s",
-                pubAgentName, pkgType, queuedTimeout);
-        distributionMetricsService.createGauge(
-                DistributionMetricsService.PUB_COMPONENT + 
".subscriber_count;pub_name=" + pubAgentName,
-                () -> 
discoveryService.getTopologyView().getSubscribedAgentIds().size()
-        );
+        reg = registerJMXBean();
+        String subscriberCountName = PUB_COMPONENT + 
".subscriber_count;pub_name=" + pubAgentName;
+        distributionMetricsService.createGauge(subscriberCountName, 
this::getNumSubscribedAgents);
         
+        sender = messagingProvider.createSender(topics.getPackageTopic());
         statusPoller = messagingProvider.createPoller(
                 topics.getStatusTopic(),
                 Reset.earliest,
                 HandlerAdapter.create(PackageStatusMessage.class, 
pubQueueProvider::handleStatus)
                 );
         
-        log.info(msg);
+        componentReg = registerService(context, config);
+        log.info("Started Publisher agent {} with packageBuilder {}, 
queuedTimeout {}",
+                pubAgentName, pkgType, queuedTimeout);
     }
 
     @Deactivate
@@ -195,16 +180,6 @@ public class DistributionPublisher implements 
DistributionAgent {
         log.info(msg);
     }
     
-    private Dictionary<String, Object> 
createServiceProps(PublisherConfiguration config) {
-        Dictionary<String, Object> props = new Hashtable<>();
-        props.put("name", config.name());
-        props.put("title", config.name());
-        props.put("details", config.name());
-        props.put("packageBuilder.target", config.packageBuilder_target());
-        props.put("webconsole.configurationFactory.nameHint", 
config.webconsole_configurationFactory_nameHint());
-        return props;
-    }
-
     /**
      * Get queue names for alive subscribed subscriber agents.
      */
@@ -253,6 +228,29 @@ public class DistributionPublisher implements 
DistributionAgent {
         }
     }
 
+    private ServiceRegistration<DistributionAgent> 
registerService(BundleContext context, PublisherConfiguration config) {
+        Dictionary<String, Object> props = new Hashtable<>();
+        props.put("name", config.name());
+        props.put("title", config.name());
+        props.put("details", config.name());
+        props.put("packageBuilder.target", config.packageBuilder_target());
+        props.put("webconsole.configurationFactory.nameHint", 
config.webconsole_configurationFactory_nameHint());
+        return requireNonNull(context.registerService(DistributionAgent.class, 
this, props));
+    }
+
+    private int getNumSubscribedAgents() {
+        return 
discoveryService.getTopologyView().getSubscribedAgentIds().size();
+    }
+
+    private JMXRegistration registerJMXBean() {
+        try {
+            DistPublisherJMX bean = new DistPublisherJMX(pubAgentName, 
discoveryService, this);
+            return new JMXRegistration(bean, "agent", pubAgentName);
+        } catch (NotCompliantMBeanException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     private DistributionResponse execute(ResourceResolver resourceResolver,
                                          DistributionRequest request,
                                          ToLongFunction<PackageMessage> sender)

Reply via email to