Hello Daniel Erez,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/8132

to review the following change.

Change subject: userportal: SearchResultsLimit race condition (#853904)
......................................................................

userportal: SearchResultsLimit race condition (#853904)

https://bugzilla.redhat.com/853904

SearchableListModel - a race condition in SearchResultsLimit
configuration value fetching prevented auto-refresh mechanism.

* SearchableListModel -> Search()
If 'SearchResultsLimit' isn't fetched yet,
'searchRequested' flag is marked on RequestSearch().

* RequestSearch()
Clear model's items and raise changed events
(affects only for first search).

* 'GetSearchResultsLimit' -> OnSuccess()
Search command should be invoked iff 'searchRequested' and
model's timer isn't running (since Search starts the timer).
Checking 'getIsTimerDisabled' is not sufficient since the timer
is being started only *after* SearchResultsLimit value is fetched.

* MainTabBasicDetailsView
Add clear() method for cleaning details pane.

Change-Id: I6dfe218a57694f61fcd3445894c06f8918fe3739
Signed-off-by: Daniel Erez <[email protected]>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java
3 files changed, 37 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/8132/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
index 13a4f5e..2145580 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
@@ -876,6 +876,9 @@
         public void RequestSearch()
         {
             searchRequested = true;
+            model.setItems(new ArrayList());
+            model.getSelectedItemChangedEvent().raise(this, new EventArgs());
+            model.getSelectedItemsChangedEvent().raise(this, new EventArgs());
         }
 
         private void ApplySearchPageSize(int value)
@@ -883,7 +886,7 @@
             model.setSearchPageSize(value);
 
             // If there search was requested before max result limit was 
retrieved, do it now.
-            if (searchRequested && model.getIsTimerDisabled())
+            if (searchRequested && !model.getTimer().isActive())
             {
                 model.getSearchCommand().Execute();
             }
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
index 0a2ef57..0198a6c 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java
@@ -37,6 +37,10 @@
         void setEditConsoleEnabled(boolean enabled);
 
         HasClickHandlers getEditButton();
+
+        void clear();
+
+        void displayVmOsImages(boolean dispaly);
     }
 
     private final ConsoleUtils consoleUtils;
@@ -91,9 +95,7 @@
                 if (modelProvider.getModel().getSelectedItem() == null) {
                     return;
                 }
-                @SuppressWarnings("unchecked")
-                Iterable<DiskImage> diskImages = 
modelProvider.getModel().getvmBasicDiskListModel().getItems();
-                getView().editDistItems(diskImages);
+                setupDisks(modelProvider);
             }
         });
     }
@@ -104,9 +106,12 @@
             @Override
             public void eventRaised(Event ev, Object sender, EventArgs args) {
                 if (modelProvider.getModel().getSelectedItem() == null) {
+                    getView().clear();
                     return;
                 }
                 getView().edit(modelProvider.getModel());
+                getView().displayVmOsImages(true);
+                setupDisks(modelProvider);
                 setupConsole(modelProvider);
             }
 
@@ -126,6 +131,14 @@
         }));
     }
 
+    private void setupDisks(final UserPortalBasicListProvider modelProvider) {
+        @SuppressWarnings("unchecked")
+        Iterable<DiskImage> diskImages = 
modelProvider.getModel().getvmBasicDiskListModel().getItems();
+        if (diskImages != null) {
+            getView().editDistItems(diskImages);
+        }
+    }
+
     private void setupConsole(final UserPortalBasicListProvider modelProvider) 
{
         UserPortalItemModel item = modelProvider.getModel().getSelectedItem();
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java
index 5fb00bc..8a10723 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java
@@ -152,8 +152,25 @@
     }
 
     @Override
+    public void displayVmOsImages(boolean dispaly) {
+        osImage.setVisible(dispaly);
+        vmImage.setVisible(dispaly);
+    }
+
+    @Override
     public HasClickHandlers getEditButton() {
         return editProtocolLink;
     }
 
+    @Override
+    public void clear() {
+        vmName.setText(null);
+        vmDescription.setText(null);
+        protocolMessage.setText(null);
+        memory.setValue(null);
+        numberOfCores.setValue(null);
+        operatingSystem.getElement().setInnerHTML(""); //$NON-NLS-1$
+        disks.clear();
+        displayVmOsImages(false);
+    }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6dfe218a57694f61fcd3445894c06f8918fe3739
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Oved Ourfali <[email protected]>
Gerrit-Reviewer: Daniel Erez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to