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

Reply via email to