
org.dspace.app.ldn.LDNRouter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dspace-api Show documentation
Show all versions of dspace-api Show documentation
DSpace core data model and service APIs.
The newest version!
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.ldn;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Logger;
import org.dspace.app.ldn.processor.LDNProcessor;
/**
* Linked Data Notification router.
*/
public class LDNRouter {
private Map, LDNProcessor> incomingProcessors = new HashMap<>();
private Map, LDNProcessor> outcomingProcessors = new HashMap<>();
private static final Logger log = org.apache.logging.log4j.LogManager.getLogger(LDNRouter.class);
/**
* Route notification to processor
*
* @return LDNProcessor processor to process notification, can be null
*/
public LDNProcessor route(LDNMessageEntity ldnMessage) {
if (ldnMessage == null) {
log.warn("A null LDNMessage was received and could not be routed.");
return null;
}
if (StringUtils.isEmpty(ldnMessage.getType())) {
log.warn("LDNMessage " + ldnMessage + " was received. It has no type, so it couldn't be routed.");
return null;
}
Set ldnMessageTypeSet = new HashSet();
ldnMessageTypeSet.add(ldnMessage.getActivityStreamType());
ldnMessageTypeSet.add(ldnMessage.getCoarNotifyType());
LDNProcessor processor = null;
if (ldnMessage.getTarget() == null) {
processor = incomingProcessors.get(ldnMessageTypeSet);
} else if (ldnMessage.getOrigin() == null) {
processor = outcomingProcessors.get(ldnMessageTypeSet);
}
return processor;
}
/**
* Get all incoming routes.
*
* @return Map, LDNProcessor>
*/
public Map, LDNProcessor> getIncomingProcessors() {
return incomingProcessors;
}
/**
* Set all incoming routes.
*
* @param incomingProcessors
*/
public void setIncomingProcessors(Map, LDNProcessor> incomingProcessors) {
this.incomingProcessors = incomingProcessors;
}
/**
* Get all outcoming routes.
*
* @return Map, LDNProcessor>
*/
public Map, LDNProcessor> getOutcomingProcessors() {
return outcomingProcessors;
}
/**
* Set all outcoming routes.
*
* @param outcomingProcessors
*/
public void setOutcomingProcessors(Map, LDNProcessor> outcomingProcessors) {
this.outcomingProcessors = outcomingProcessors;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy