From 16f1627f68cbff2d055579a663199cac1e236fe9 Mon Sep 17 00:00:00 2001 From: Will Abson Date: Tue, 1 Jul 2014 15:09:11 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud) 75024: Merged WAT2 (5.0/Cloud) to HEAD-BUG-FIX (5.0/Cloud) 71708: Initial implementation of Alfresco Events publishing interfaces git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@75352 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/core-services-context.xml | 5 +- pom.xml | 5 ++ .../alfresco/repo/events/EventPreparator.java | 42 +++++++++++++++ .../alfresco/repo/events/EventPublisher.java | 45 ++++++++++++++++ .../repo/events/NoOpEventPublisher.java | 53 +++++++++++++++++++ 5 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 source/java/org/alfresco/repo/events/EventPreparator.java create mode 100644 source/java/org/alfresco/repo/events/EventPublisher.java create mode 100644 source/java/org/alfresco/repo/events/NoOpEventPublisher.java diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index c926f87837..bf29bfdcf2 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -1090,10 +1090,11 @@ - - + + + diff --git a/pom.xml b/pom.xml index 60818e2ef1..47c8c9c98b 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,11 @@ javax.mail 1.5.2 + + org.alfresco.services + alfresco-events + 1.1-SNAPSHOT + com.icegreen greenmail diff --git a/source/java/org/alfresco/repo/events/EventPreparator.java b/source/java/org/alfresco/repo/events/EventPreparator.java new file mode 100644 index 0000000000..cd08adc653 --- /dev/null +++ b/source/java/org/alfresco/repo/events/EventPreparator.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * 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 . + */ +package org.alfresco.repo.events; + +import org.alfresco.events.types.Event; + + +/** +* Creates and prepares event information. +* +* The primary reason for this interface is to allow for deferred creation +* of the Event. If a NoOpEventPublisher is being used then the prepareEvent() +* method will never get called. +* +* As of Java 8 a Lambda expression could be used as the implementation of +* this FunctionalInterface +* +* @author Gethin James +* @since 5.0 +**/ + +//@FunctionalInterface +public interface EventPreparator +{ + public Event prepareEvent(String user, String networkId, String transactionId); +} diff --git a/source/java/org/alfresco/repo/events/EventPublisher.java b/source/java/org/alfresco/repo/events/EventPublisher.java new file mode 100644 index 0000000000..e25e76344e --- /dev/null +++ b/source/java/org/alfresco/repo/events/EventPublisher.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * 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 . + */ +package org.alfresco.repo.events; + +import org.alfresco.events.types.Event; + +/** + * EventPublisher can be used to broadcast events. + * + * @author Gethin James + * @since 5.0 + */ +public interface EventPublisher +{ + //TODO AbstractEventsService should probably implement this interface + + /** + * Publish the event + * @param event Event + */ + public void publishEvent(Event event); + + /** + * Publish the event using an EventPreparator + * @param prep EventPreparator + */ + public void publishEvent(EventPreparator prep); + +} diff --git a/source/java/org/alfresco/repo/events/NoOpEventPublisher.java b/source/java/org/alfresco/repo/events/NoOpEventPublisher.java new file mode 100644 index 0000000000..1ed70f6420 --- /dev/null +++ b/source/java/org/alfresco/repo/events/NoOpEventPublisher.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * 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 . + */ +package org.alfresco.repo.events; + +import org.alfresco.events.types.Event; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * An implementation of EventPublisher that does nothing. + * + * @author Gethin James + * @since 5.0 + */ +public class NoOpEventPublisher implements EventPublisher { + + private static final Logger logger = LoggerFactory.getLogger(NoOpEventPublisher.class); + + @Override + public void publishEvent(Event event) + { + if (logger.isDebugEnabled()) + { + logger.debug("No event published for [" + event + "]"); + } + } + + @Override + public void publishEvent(EventPreparator prep) + { + if (logger.isDebugEnabled()) + { + logger.debug("No event published with preparator."); + } + } + +} \ No newline at end of file