Alona Kaplan has uploaded a new change for review.

Change subject: webadmin: SetupNetwork>edit network(with pencil)>can't edit 
network
......................................................................

webadmin: SetupNetwork>edit network(with pencil)>can't edit network

EnumRadioEditor used the global eventBus to fire ValueChangeEvent.
Since UiCommonEditorVisitor subscribes all the editors of type
HasValueChangeHandlers to this event- all the instances of EnumRadioEditor
were subscribed to the same eventBus.
Therefore, each instance pf EnumRadioEditor got the value change events
of the other instances- which caused wrong behaviour and in some cases
ClassCasException.
To fix the issue a separate handlerManger is used for each instance of
EnumRadioEditor.

Note: addValueChangeHandler(..) cannot register to the valueChangeHanlder
of the peer since the peer's 'value' is all the list of enum-items and not
just the selected item as desired.

Change-Id: I83c330b8340ba1cf6b2382877b23d07c25fc1afb
Bug-Url: https://bugzilla.redhat.com/1108014
Signed-off-by: Alona Kaplan <alkap...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EnumRadioEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SerialNumberPolicyWidget.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostBondPopupView.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
4 files changed, 9 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/29990/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EnumRadioEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EnumRadioEditor.java
index af464cb..fa368fe 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EnumRadioEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EnumRadioEditor.java
@@ -20,8 +20,8 @@
 import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 import com.google.gwt.event.logical.shared.ValueChangeHandler;
-import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerManager;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
@@ -201,7 +201,7 @@
 
     }
 
-    private final EventBus bus;
+    private final HandlerManager handlerManager;
     private TakesValueWithChangeHandlersEditor<E> editor;
     private final EnumRadioCellTable<E> peer;
 
@@ -213,8 +213,8 @@
      * @param enumClass
      *            the enum class
      */
-    public EnumRadioEditor(Class<E> enumClass, EventBus bus) {
-        this.bus = bus;
+    public EnumRadioEditor(Class<E> enumClass) {
+        this.handlerManager = new HandlerManager(this);
         peer = new EnumRadioCellTable<E>(enumClass,
                 GWT.<EnumRadioCellTableResources> 
create(EnumRadioCellTableResources.class));
 
@@ -259,7 +259,7 @@
     @Override
     public HandlerRegistration addValueChangeHandler(final 
ValueChangeHandler<E> handler) {
         // don't add to peer, since its changed value is the entire item list
-        return bus.addHandler(ValueChangeEvent.getType(), handler);
+        return handlerManager.addHandler(ValueChangeEvent.getType(), handler);
     }
 
     @Override
@@ -277,7 +277,7 @@
 
     @Override
     public void fireEvent(GwtEvent<?> event) {
-        bus.fireEvent(event);
+        handlerManager.fireEvent(event);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SerialNumberPolicyWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SerialNumberPolicyWidget.java
index 140493f..fcc5be4 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SerialNumberPolicyWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/SerialNumberPolicyWidget.java
@@ -64,7 +64,7 @@
                                     CommonApplicationResources 
applicationResources,
                                     VisibilityRenderer visibilityRenderer) {
         overrideSerialNumberPolicy = new 
EntityModelCheckBoxEditor(Align.RIGHT, visibilityRenderer, false);
-        serialNumberPolicy = new 
EnumRadioEditor<SerialNumberPolicy>(SerialNumberPolicy.class, eventBus);
+        serialNumberPolicy = new 
EnumRadioEditor<SerialNumberPolicy>(SerialNumberPolicy.class);
         serialNumberInfoIcon = new 
InfoIcon(applicationTemplates.italicText(applicationMessages.serialNumberInfo()),
 applicationResources);
 
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostBondPopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostBondPopupView.java
index 75a3bf8..7a63a5f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostBondPopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostBondPopupView.java
@@ -149,7 +149,7 @@
                 return value;
             }
         });
-        bootProtocol = new 
EnumRadioEditor<NetworkBootProtocol>(NetworkBootProtocol.class, eventBus);
+        bootProtocol = new 
EnumRadioEditor<NetworkBootProtocol>(NetworkBootProtocol.class);
 
         checkConnectivity = new EntityModelCheckBoxEditor(Align.RIGHT);
         commitChanges = new EntityModelCheckBoxEditor(Align.RIGHT);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
index 7f98244..3e6f91c 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostInterfacePopupView.java
@@ -190,7 +190,7 @@
                 return value;
             }
         });
-        bootProtocol = new 
EnumRadioEditor<NetworkBootProtocol>(NetworkBootProtocol.class, eventBus);
+        bootProtocol = new 
EnumRadioEditor<NetworkBootProtocol>(NetworkBootProtocol.class);
         qosWidget = new NetworkQosWidget(constants);
         customPropertiesWidget = new KeyValueWidget<KeyValueModel>("310px", 
"140px"); //$NON-NLS-1$ $NON-NLS-2$
 


-- 
To view, visit http://gerrit.ovirt.org/29990
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I83c330b8340ba1cf6b2382877b23d07c25fc1afb
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Alona Kaplan <alkap...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to