Lior Vernia has uploaded a new change for review. Change subject: webadmin: Parameterize Event and IEventListener ......................................................................
webadmin: Parameterize Event and IEventListener This to further promote type-safety and not have to unsafely-cast specific event arguments. Also took the chance to parameterize an event in ReportsListModel (it wouldn't compile off the bat, and I preferred to parameterize properly than add a cast). Change-Id: I1ad96ebbc2a4d2baff514d53dba8a222a08d1306 Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Event.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/IEventListener.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java 4 files changed, 24 insertions(+), 23 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/31194/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java index 0111196..61567b9 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/reports/ReportsListModel.java @@ -28,10 +28,10 @@ HtmlParameters htmlParams = new HtmlParameters(); private String lastResourceId = ""; //$NON-NLS-1$ private final String reportUrl; - private final Event reportModelRefreshEvent = new Event(new EventDefinition("ReportModelRefreshed", //$NON-NLS-1$ - ReportsListModel.class)); + private final Event<EventArgs> reportModelRefreshEvent = + new Event<EventArgs>(new EventDefinition("ReportModelRefreshed", ReportsListModel.class)); //$NON-NLS-1$ - public Event getReportModelRefreshEvent() { + public Event<EventArgs> getReportModelRefreshEvent() { return reportModelRefreshEvent; } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Event.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Event.java index 114aecb..c86c3a1 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Event.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Event.java @@ -6,9 +6,9 @@ import java.util.Map; -public class Event { - private List<IEventListener> listeners; - private Map<IEventListener, Object> contexts; +public class Event<T extends EventArgs> { + private List<IEventListener<T>> listeners; + private Map<IEventListener<T>, Object> contexts; private Class<?> privateOwnerType; public Class<?> getOwnerType() { @@ -48,8 +48,8 @@ setName(name); setOwnerType(ownerType); - listeners = new ArrayList<IEventListener>(); - contexts = new HashMap<IEventListener, Object>(); + listeners = new ArrayList<IEventListener<T>>(); + contexts = new HashMap<IEventListener<T>, Object>(); } public Event() @@ -64,18 +64,18 @@ /** Add listener with no context specified. */ - public void addListener(IEventListener listener) + public void addListener(IEventListener<T> listener) { listeners.add(listener); } - public void addListener(IEventListener listener, Object context) + public void addListener(IEventListener<T> listener, Object context) { listeners.add(listener); contexts.put(listener, context); } - public void removeListener(IEventListener listener) + public void removeListener(IEventListener<T> listener) { listeners.remove(listener); @@ -85,18 +85,18 @@ } } - public void raise(Object sender, EventArgs e) + public void raise(Object sender, T e) { //Iterate on a new instance of listeners list, //to enable listener unsubscribe from event //as a result on event fairing. - ArrayList<IEventListener> list = new ArrayList<IEventListener>(); - for (IEventListener listener : listeners) + ArrayList<IEventListener<T>> list = new ArrayList<IEventListener<T>>(); + for (IEventListener<T> listener : listeners) { list.add(listener); } - for (IEventListener listener : list) + for (IEventListener<T> listener : list) { //Update current context. setContext(contexts.containsKey(listener) ? contexts.get(listener) : null); @@ -122,7 +122,7 @@ return false; if (getClass() != obj.getClass()) return false; - Event other = (Event) obj; + Event<?> other = (Event<?>) obj; if (privateName == null) { if (other.privateName != null) return false; @@ -135,6 +135,7 @@ return false; return true; } + public boolean matchesDefinition(EventDefinition other) { if(other == null){ return false; @@ -143,11 +144,11 @@ && getOwnerType() == other.getOwnerType(); } - public List<IEventListener> getListeners() { + public List<IEventListener<T>> getListeners() { return listeners; } - public void setListeners(List<IEventListener> listeners) { + public void setListeners(List<IEventListener<T>> listeners) { this.listeners = listeners; } } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/IEventListener.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/IEventListener.java index 1fb6471..298e7aa 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/IEventListener.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/IEventListener.java @@ -1,6 +1,6 @@ package org.ovirt.engine.ui.uicompat; -public interface IEventListener +public interface IEventListener<T extends EventArgs> { - void eventRaised(Event ev, Object sender, EventArgs args); + void eventRaised(Event<T> ev, Object sender, T args); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java index 882ffc6..05e87c6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/MainTabReportsPresenter.java @@ -119,7 +119,7 @@ } private boolean hasReportsModelRefreshEvent() { - for (IEventListener listnr : getModel().getReportModelRefreshEvent().getListeners()) { + for (IEventListener<EventArgs> listnr : getModel().getReportModelRefreshEvent().getListeners()) { if (listnr instanceof ReportsModelRefreshEvent) { return true; } @@ -127,9 +127,9 @@ return false; } - class ReportsModelRefreshEvent implements IEventListener { + class ReportsModelRefreshEvent implements IEventListener<EventArgs> { @Override - public void eventRaised(Event ev, Object sender, EventArgs args) { + public void eventRaised(Event<EventArgs> ev, Object sender, EventArgs args) { if (reportsWebappDeployed) { getView().updateReportsPanel(getModel().getUrl(), getModel().getParams()); } else { -- To view, visit http://gerrit.ovirt.org/31194 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1ad96ebbc2a4d2baff514d53dba8a222a08d1306 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
