From ccaeda45dc016fc4e3fc747fcf0d03716e85e150 Mon Sep 17 00:00:00 2001 From: Ancuta Morarasu Date: Tue, 12 Sep 2017 02:01:40 +0300 Subject: [PATCH] REPO-2625 / REPO-2854: Update HBDataSenderService definition --- .../heartbeat/HBDataCollectorServiceImpl.java | 4 ++ .../heartbeat/HBDataSenderServiceFactory.java | 57 +++++++++++++++++++ .../org/alfresco/heartbeat/HeartBeat.java | 42 +++++++++----- .../resources/alfresco/heartbeat-context.xml | 11 +++- 4 files changed, 98 insertions(+), 16 deletions(-) create mode 100644 src/main/java/org/alfresco/heartbeat/HBDataSenderServiceFactory.java diff --git a/src/main/java/org/alfresco/heartbeat/HBDataCollectorServiceImpl.java b/src/main/java/org/alfresco/heartbeat/HBDataCollectorServiceImpl.java index 08332d6ceb..5a00916ff9 100644 --- a/src/main/java/org/alfresco/heartbeat/HBDataCollectorServiceImpl.java +++ b/src/main/java/org/alfresco/heartbeat/HBDataCollectorServiceImpl.java @@ -27,7 +27,9 @@ package org.alfresco.heartbeat; import java.util.LinkedList; import java.util.List; + import org.alfresco.heartbeat.datasender.HBData; +import org.alfresco.heartbeat.datasender.HBDataSenderServiceBuilder; import org.alfresco.heartbeat.datasender.HBDataSenderService; import org.alfresco.service.cmr.repository.HBDataCollectorService; import org.apache.commons.logging.Log; @@ -116,6 +118,8 @@ public class HBDataCollectorServiceImpl implements HBDataCollectorService public synchronized void setHbEnabled(boolean enabled) { this.enabled = enabled; + + this.hbDataSenderService = HBDataSenderServiceBuilder.builder().enable(enabled).update(hbDataSenderService); } } diff --git a/src/main/java/org/alfresco/heartbeat/HBDataSenderServiceFactory.java b/src/main/java/org/alfresco/heartbeat/HBDataSenderServiceFactory.java new file mode 100644 index 0000000000..bae13bd5ec --- /dev/null +++ b/src/main/java/org/alfresco/heartbeat/HBDataSenderServiceFactory.java @@ -0,0 +1,57 @@ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ +package org.alfresco.heartbeat; + +import org.alfresco.heartbeat.datasender.HBDataSenderServiceBuilder; +import org.alfresco.heartbeat.datasender.HBDataSenderService; + +/** + * @author Ancuta Morarasu + * + */ +public class HBDataSenderServiceFactory +{ + private String target; + private boolean heartbeatEnabled; + + public void setTarget(String target) + { + this.target = target; + } + + public void setHeartbeatEnabled(boolean heartbeatEnabled) + { + this.heartbeatEnabled = heartbeatEnabled; + } + + public HBDataSenderService createInstance() + { + return HBDataSenderServiceBuilder.builder() + .withHeartbeatURL(target) + .enable(heartbeatEnabled) + .build(); + } +} diff --git a/src/main/java/org/alfresco/heartbeat/HeartBeat.java b/src/main/java/org/alfresco/heartbeat/HeartBeat.java index 88468fa896..35b6ca16bf 100644 --- a/src/main/java/org/alfresco/heartbeat/HeartBeat.java +++ b/src/main/java/org/alfresco/heartbeat/HeartBeat.java @@ -25,8 +25,6 @@ */ package org.alfresco.heartbeat; -import java.io.IOException; -import java.security.GeneralSecurityException; import java.util.Date; import org.alfresco.service.cmr.repository.HBDataCollectorService; @@ -56,7 +54,7 @@ import org.springframework.context.ApplicationContext; public class HeartBeat implements LicenseChangeHandler { - /** The logger. */ + /** The logger */ private static final Log logger = LogFactory.getLog(HeartBeat.class); private LicenseService licenseService; @@ -91,14 +89,17 @@ public class HeartBeat implements LicenseChangeHandler * are we running in test mode? If so we send data to local port 9999 rather than an alfresco server. We * also use a special test encryption certificate and ping on a more frequent basis. */ - public HeartBeat(final ApplicationContext context, final Boolean testModel) + public HeartBeat(final ApplicationContext context, final Boolean testMode) { - logger.debug("Initialising HeartBeat"); + if (logger.isDebugEnabled()) + { + logger.debug("Initialising HeartBeat"); + } this.dataCollectorService = (HBDataCollectorService) context.getBean("hbDataCollectorService"); this.scheduler = (Scheduler) context.getBean("schedulerFactory"); - this.testMode = testModel; + this.testMode = testMode; try { @@ -141,13 +142,19 @@ public class HeartBeat implements LicenseChangeHandler */ public synchronized void onLicenseChange(LicenseDescriptor licenseDescriptor) { - logger.debug("Update license called"); + if (logger.isDebugEnabled()) + { + logger.debug("Update license called"); + } boolean newEnabled = !licenseDescriptor.isHeartBeatDisabled(); if (newEnabled != dataCollectorService.isHbEnabled()) { - logger.debug("State change of heartbeat"); + if (logger.isDebugEnabled()) + { + logger.debug("State change of heartbeat"); + } dataCollectorService.setHbEnabled(newEnabled); try { @@ -170,7 +177,10 @@ public class HeartBeat implements LicenseChangeHandler if (newEnabled != dataCollectorService.isHbEnabled()) { - logger.debug("State change of heartbeat"); + if (logger.isDebugEnabled()) + { + logger.debug("State change of heartbeat"); + } dataCollectorService.setHbEnabled(newEnabled); try { @@ -190,13 +200,17 @@ public class HeartBeat implements LicenseChangeHandler private synchronized void scheduleJob() throws SchedulerException { // Schedule the heart beat to run regularly + final String triggerName = JOB_NAME + "Trigger"; if(dataCollectorService.isHbEnabled()) { - logger.debug("heartbeat job scheduled"); + if (logger.isDebugEnabled()) + { + logger.debug("heartbeat job scheduled"); + } final JobDetail jobDetail = new JobDetail(JOB_NAME, Scheduler.DEFAULT_GROUP, HeartBeatJob.class); jobDetail.getJobDataMap().put("heartBeat", this); + // Ensure the job wasn't already scheduled in an earlier retry of this transaction - final String triggerName = JOB_NAME + "Trigger"; scheduler.unscheduleJob(triggerName, Scheduler.DEFAULT_GROUP); final Trigger trigger = new SimpleTrigger(triggerName, Scheduler.DEFAULT_GROUP, new Date(), null, //SimpleTrigger.REPEAT_INDEFINITELY, testMode ? 1000 : 4 * 60 * 60 * 1000); @@ -205,8 +219,10 @@ public class HeartBeat implements LicenseChangeHandler } else { - logger.debug("heartbeat job unscheduled"); - final String triggerName = JOB_NAME + "Trigger"; + if (logger.isDebugEnabled()) + { + logger.debug("heartbeat job unscheduled"); + } scheduler.unscheduleJob(triggerName, Scheduler.DEFAULT_GROUP); } } diff --git a/src/main/resources/alfresco/heartbeat-context.xml b/src/main/resources/alfresco/heartbeat-context.xml index e106777a33..701df9a1dd 100644 --- a/src/main/resources/alfresco/heartbeat-context.xml +++ b/src/main/resources/alfresco/heartbeat-context.xml @@ -3,9 +3,14 @@ - - - + + + + + + + +