Compare commits
2 Commits
120a9e915d
...
7c5a1f1a2b
Author | SHA1 | Date |
---|---|---|
Jörg Prante | 7c5a1f1a2b | 6 months ago |
Jörg Prante | 09a7a95b25 | 6 months ago |
@ -1,33 +0,0 @@
|
||||
package org.xbib.event;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class DefaultEvent implements Event {
|
||||
|
||||
private String key;
|
||||
|
||||
private Map<String, Object> map;
|
||||
|
||||
public DefaultEvent() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMap(Map<String, Object> map) {
|
||||
this.map = map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getMap() {
|
||||
return map;
|
||||
}
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
package org.xbib.event.clock;
|
||||
|
||||
import org.xbib.event.DefaultEvent;
|
||||
import org.xbib.event.common.EventImpl;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public class DefaultClockEvent extends DefaultEvent implements ClockEvent {
|
||||
public class ClockEventImpl extends EventImpl implements ClockEvent {
|
||||
|
||||
private Instant instant;
|
||||
|
||||
public DefaultClockEvent() {
|
||||
public ClockEventImpl() {
|
||||
}
|
||||
|
||||
@Override
|
@ -0,0 +1,53 @@
|
||||
package org.xbib.event.common;
|
||||
|
||||
import org.xbib.datastructures.json.tiny.Json;
|
||||
import org.xbib.event.Event;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
public class EventImpl implements Event {
|
||||
|
||||
private String type;
|
||||
|
||||
private Map<String, Object> map;
|
||||
|
||||
public EventImpl() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMap(Map<String, Object> map) {
|
||||
this.map = map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getMap() {
|
||||
return map;
|
||||
}
|
||||
|
||||
public static EventImpl fromJson(String json) {
|
||||
Map<String, Object> map = Json.toMap(json);
|
||||
EventImpl event = new EventImpl();
|
||||
event.setType((String) map.get("type"));
|
||||
event.setMap(map);
|
||||
return event;
|
||||
}
|
||||
|
||||
public String toJson() throws IOException {
|
||||
return Json.toString(map);
|
||||
}
|
||||
|
||||
public boolean isNullEvent() {
|
||||
return type == null;
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package org.xbib.event.common;
|
||||
|
||||
import org.xbib.event.bus.EventBus;
|
||||
import org.xbib.settings.Settings;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
public interface EventManagerService {
|
||||
|
||||
EventManagerService init(Settings settings, EventBus eventBus, ClassLoader classLoader, ExecutorService executorService);
|
||||
}
|
@ -1,20 +1,20 @@
|
||||
package org.xbib.event.generic;
|
||||
|
||||
import org.xbib.event.DefaultEvent;
|
||||
import org.xbib.event.common.EventImpl;
|
||||
|
||||
public class DefaultGenericEvent extends DefaultEvent implements GenericEvent {
|
||||
public class GenericEventImpl extends EventImpl implements GenericEvent {
|
||||
|
||||
private Listener listener;
|
||||
|
||||
public DefaultGenericEvent() {
|
||||
public GenericEventImpl() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public DefaultGenericEvent(Listener listener) {
|
||||
public GenericEventImpl(Listener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public DefaultGenericEvent setListener(Listener listener) {
|
||||
public GenericEventImpl setListener(Listener listener) {
|
||||
this.listener = listener;
|
||||
return this;
|
||||
}
|
@ -1,16 +1,16 @@
|
||||
package org.xbib.event.path;
|
||||
|
||||
import org.xbib.event.DefaultEvent;
|
||||
import org.xbib.event.common.EventImpl;
|
||||
|
||||
import java.nio.file.Path;
|
||||
|
||||
public class DefaultFileFollowEvent extends DefaultEvent implements FileFollowEvent {
|
||||
public class FileFollowEventImpl extends EventImpl implements FileFollowEvent {
|
||||
|
||||
private Path path;
|
||||
|
||||
private String content;
|
||||
|
||||
public DefaultFileFollowEvent() {
|
||||
public FileFollowEventImpl() {
|
||||
}
|
||||
|
||||
@Override
|
@ -1,14 +1,14 @@
|
||||
package org.xbib.event.timer;
|
||||
|
||||
import org.xbib.event.DefaultEvent;
|
||||
import org.xbib.event.common.EventImpl;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
public class DefaultTimerEvent extends DefaultEvent implements TimerEvent {
|
||||
public class TimerEventImpl extends EventImpl implements TimerEvent {
|
||||
|
||||
private Instant instant;
|
||||
|
||||
public DefaultTimerEvent() {
|
||||
public TimerEventImpl() {
|
||||
}
|
||||
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package org.xbib.event.clock;
|
||||
|
||||
public class TestClockEvent extends DefaultClockEvent {
|
||||
public class TestClockEvent extends ClockEventImpl {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.xbib.event.path;
|
||||
|
||||
public class TestFileFollowEvent extends DefaultFileFollowEvent {
|
||||
public class TestFileFollowEvent extends FileFollowEventImpl {
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.xbib.event.timer;
|
||||
|
||||
public class TestTimerEvent extends DefaultTimerEvent {
|
||||
public class TestTimerEvent extends TimerEventImpl {
|
||||
}
|
||||
|
@ -0,0 +1,6 @@
|
||||
dependencies {
|
||||
api project(':event-common')
|
||||
api libs.net.http.server.netty
|
||||
api libs.net.http.client.netty
|
||||
implementation libs.datastructures.json.tiny
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
module org.xbib.event.net.http {
|
||||
exports org.xbib.event.net.http;
|
||||
requires org.xbib.event.api;
|
||||
requires org.xbib.event.common;
|
||||
requires org.xbib.net.http;
|
||||
requires org.xbib.net.http.client;
|
||||
requires org.xbib.net.http.client.netty;
|
||||
requires org.xbib.net.http.client.netty.secure;
|
||||
requires org.xbib.net.http.server;
|
||||
requires org.xbib.net.http.server.netty;
|
||||
requires org.xbib.net.http.server.netty.secure;
|
||||
requires java.logging;
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package org.xbib.event.net.http;
|
||||
|
||||
import org.xbib.event.common.EventManager;
|
||||
import org.xbib.event.common.EventImpl;
|
||||
import org.xbib.net.http.HttpHeaderNames;
|
||||
import org.xbib.net.http.HttpHeaderValues;
|
||||
import org.xbib.net.http.HttpMethod;
|
||||
import org.xbib.net.http.server.service.BaseHttpService;
|
||||
import org.xbib.net.http.server.service.HttpService;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.xbib.net.http.HttpResponseStatus.NOT_FOUND;
|
||||
import static org.xbib.net.http.HttpResponseStatus.OK;
|
||||
|
||||
public class EventReceiverService {
|
||||
|
||||
private final EventManager eventManager;
|
||||
|
||||
public EventReceiverService(EventManager eventManager) {
|
||||
this.eventManager = eventManager;
|
||||
}
|
||||
|
||||
public HttpService createService(String prefix) {
|
||||
return BaseHttpService.builder()
|
||||
.setPrefix(prefix)
|
||||
.setPath("/event/{type}")
|
||||
.setMethod(HttpMethod.POST)
|
||||
.setHandler(ctx -> {
|
||||
EventImpl event = EventImpl.fromJson(ctx.getRequest().asJson());
|
||||
if (event.isNullEvent()) {
|
||||
ctx.status(NOT_FOUND).done();
|
||||
} else {
|
||||
eventManager.submit(event);
|
||||
ctx.status(OK)
|
||||
.header(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON)
|
||||
.charset(StandardCharsets.UTF_8)
|
||||
.body(event.toJson())
|
||||
.done();
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
dependencies {
|
||||
api project(':event-common')
|
||||
implementation libs.datastructures.json.tiny
|
||||
implementation libs.netty.handler
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
import org.xbib.event.common.EventManagerService;
|
||||
import org.xbib.event.syslog.SyslogEventManagerService;
|
||||
|
||||
module org.xbib.event.syslog {
|
||||
exports org.xbib.event.syslog;
|
||||
provides EventManagerService with SyslogEventManagerService;
|
||||
requires org.xbib.event.common;
|
||||
requires org.xbib.datastructures.json.tiny;
|
||||
requires io.netty.buffer;
|
||||
requires io.netty.common;
|
||||
requires io.netty.transport;
|
||||
requires io.netty.handler;
|
||||
requires io.netty.codec;
|
||||
requires java.logging;
|
||||
requires org.xbib.settings.api;
|
||||
requires org.xbib.event.api;
|
||||
}
|
@ -0,0 +1 @@
|
||||
org.xbib.event.syslog.SyslogEventManagerService
|
@ -1,3 +1,3 @@
|
||||
group = org.xbib
|
||||
name = event
|
||||
version = 0.1.0
|
||||
version = 0.2.0
|
||||
|
Loading…
Reference in New Issue