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)
