Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Event Publish subscribe framework #782

Merged
merged 1 commit into from
Feb 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions common/client/src/main/java/zingg/common/client/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import zingg.common.client.event.events.IEvent;
import zingg.common.client.event.events.ZinggStartEvent;
import zingg.common.client.event.events.ZinggStopEvent;
import zingg.common.client.event.listeners.EventsListener;
import zingg.common.client.event.listeners.IEventListener;
import zingg.common.client.event.listeners.ZinggStartListener;
import zingg.common.client.event.listeners.ZinggStopListener;
import zingg.common.client.options.ZinggOptions;
import zingg.common.client.util.Email;
import zingg.common.client.util.EmailBody;
Expand Down Expand Up @@ -323,5 +330,14 @@ protected ArgumentsUtil getArgsUtil() {
}
return argsUtil;
}

public void addListener(IEvent event, IEventListener listener) {
EventsListener.getInstance().addListener(event.getClass(), listener);
}

public void initializeListeners() {
addListener(new ZinggStartEvent(), new ZinggStartListener());
addListener(new ZinggStopEvent(), new ZinggStopListener());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package zingg.common.client.event.events;

public class DataCountEvent extends IEvent{

public static final String INPUT_DATA_COUNT = "INPUT_DATA_COUNT";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package zingg.common.client.event.events;

import java.util.HashMap;

public class IEvent {

public HashMap<String, Object> getProps(){
return null;
}

public void setProps(HashMap<String, Object> props){

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package zingg.common.client.event.events;

public class ZinggStartEvent extends IEvent{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package zingg.common.client.event.events;

public class ZinggStopEvent extends IEvent{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package zingg.common.client.event.listeners;

import zingg.common.client.event.events.IEvent;
import zingg.common.client.util.ListMap;

public class EventsListener {
private static EventsListener eventsListener = null;
private final ListMap<Class<? extends IEvent>, IEventListener> eventListeners;

private EventsListener() {
eventListeners = new ListMap<>();
}

public static EventsListener getInstance() {
if (eventsListener == null)
eventsListener = new EventsListener();
return eventsListener;
}

public void addListener(Class<? extends IEvent> eventClass, IEventListener listener) {
eventListeners.add(eventClass, listener);
}

public void fireEvent(IEvent event) {
listen(event);
}

private void listen(IEvent event) {
Class<? extends IEvent> eventClass = event.getClass();
for (IEventListener listener : eventListeners.get(eventClass)) {
listener.listen(event);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package zingg.common.client.event.listeners;

import zingg.common.client.event.events.IEvent;

public class IEventListener {

public void listen(IEvent event){

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package zingg.common.client.event.listeners;

import zingg.common.client.event.events.IEvent;

public class ZinggStartListener extends IEventListener {

@Override
public void listen(IEvent event) {
System.out.println("ZinggStartListener: I am listening");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package zingg.common.client.event.listeners;

import zingg.common.client.event.events.IEvent;

public class ZinggStopListener extends IEventListener {

@Override
public void listen(IEvent event) {
System.out.println("ZinggStopListener: I am listening");
}
}
Loading