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
This commit is contained in:
Will Abson
2014-07-01 15:09:11 +00:00
parent 9aaca71a50
commit 16f1627f68
5 changed files with 148 additions and 2 deletions

View File

@@ -1090,10 +1090,11 @@
<!-- Replacement for Spring's multicaster, that queues up events until the application is started -->
<bean id="applicationEventMulticaster" class="org.alfresco.repo.management.SafeApplicationEventMulticaster"/>
<bean id="repositoryState" class="org.alfresco.repo.admin.RepositoryState" />
<!-- Alfresco Events Publisher -->
<bean id="eventPublisher" class="org.alfresco.repo.events.NoOpEventPublisher" />
<!-- index subsystem proxies -->
<bean id="Search" class="org.alfresco.repo.management.subsystems.SwitchableApplicationContextFactory" parent="abstractPropertyBackedBean">

View File

@@ -39,6 +39,11 @@
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>org.alfresco.services</groupId>
<artifactId>alfresco-events</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.icegreen</groupId>
<artifactId>greenmail</artifactId>

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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);
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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);
}

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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.");
}
}
}