event-publisher-library/src/main/java/org/gcube/event/publisher/AbstractEventPublisher.java

70 lines
1.8 KiB
Java
Raw Normal View History

2020-06-18 12:55:34 +02:00
package org.gcube.event.publisher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class AbstractEventPublisher implements EventPublisher {
protected static final Logger logger = LoggerFactory.getLogger(AbstractEventPublisher.class);
private EventSender eventSender;
private ResultsParser resultsParser;
2020-06-18 12:55:34 +02:00
public AbstractEventPublisher() {
this.eventSender = createEventSender();
this.resultsParser = createResultsParser();
2020-06-18 12:55:34 +02:00
}
@Override
public void publish(Event event) {
publish(event, false);
}
@Override
public String publish(Event event, boolean waitForResult) {
2020-06-18 12:55:34 +02:00
if (event != null) {
if (waitForResult) {
return getEventSender().sendAndGetResult(event);
} else {
getEventSender().send(event);
}
2020-06-18 12:55:34 +02:00
} else {
2020-06-29 16:58:16 +02:00
logger.warn("Cannot publish a null event");
2020-06-18 12:55:34 +02:00
}
return null;
}
@Override
public EventStatus check(String instanceId) {
if (instanceId != null) {
return getResultsParser().parseResults(eventSender.retrive(instanceId));
} else {
logger.warn("Cannot check with a null instance ID");
return EventStatus.NOT_FOUND();
}
2020-06-18 12:55:34 +02:00
}
protected abstract EventSender createEventSender();
protected ResultsParser createResultsParser() {
return new ConductorResultsParser();
}
2020-06-18 12:55:34 +02:00
public EventSender getEventSender() {
return eventSender;
}
public void setEventSender(EventSender eventSender) {
this.eventSender = eventSender;
}
public ResultsParser getResultsParser() {
return resultsParser;
}
public void setResultsParser(ResultsParser resultsParser) {
this.resultsParser = resultsParser;
}
2020-06-18 12:55:34 +02:00
}