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