[gatein-issues] [JBoss JIRA] (GTNPORTAL-511) userPref of gadgets are not sometime not saved correctly

Tuyen Nguyen The (JIRA) jira-events at lists.jboss.org
Fri Nov 8 05:05:02 EST 2013


    [ https://issues.jboss.org/browse/GTNPORTAL-511?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12921690#comment-12921690 ] 

Tuyen Nguyen The commented on GTNPORTAL-511:
--------------------------------------------

We can reproduce using TODO gadget, we change the method #save() in java script to:
{code}
function save() {
	values = [];
  var nodeParent = document.getElementById("write");
  var inputList = nodeParent.getElementsByTagName("input");
	for (var i = 0; i < inputList.length; i++) {
			if(inputList[i].value != null && inputList[i].value != "") {
      	values.push(inputList[i].value);
      	prefs.setArray("todoList", values);
			}
	}          
}
{code}

In this code, with each element in inputList, it call an ajax to server to store TODO list in server.

And When we put many todo list, it will not save correctly (you will se it after refresh some todo is lost)
                
> userPref of gadgets are not sometime not saved correctly
> --------------------------------------------------------
>
>                 Key: GTNPORTAL-511
>                 URL: https://issues.jboss.org/browse/GTNPORTAL-511
>             Project: GateIn Portal
>          Issue Type: Bug
>          Components: User Interface
>    Affects Versions: 3.0.0-Beta04
>         Environment: svn r1330
>            Reporter: jerem j
>            Assignee: Tuyen Nguyen The
>             Fix For: 3.5.7.Final
>
>         Attachments: GTNPORTAL-511.js.patch, GTNPORTAL-511.patch, stacktrace.txt
>
>   Original Estimate: 2 days
>          Time Spent: 4 hours
>  Remaining Estimate: 1 day, 4 hours
>
> Every call to gadgets.Prefs.set generate a call to save the data in the backend (an action in the dashboard portlet). To save we send all the set of preferences.
> The jira gadget call this API multiple times in a very short time. So there is multiple ajax request sent to the backend but not in a precise order. So it might happen that the first request arrive the last one, and so old preferences are saved.
> To fix:
> In the file Gadgets.js, function "gadgets.IfrGadgetService.prototype.setUserPref", prefs is updated with all the name/value, and ALL the prefs object is saved. Instead of saving all the preferences, we should only save the updated preferences.
> In org.exoplatform.portal.pom.spi.gadget.Gadget it will be needed to be able to add preference by name, something like :
> public void setUserPref(String name, String value)
> code :
> Gadgets.js: http://fisheye.exoplatform.org/browse/projects/portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/gadget/Gadgets.js?r=HEAD
> ExoBasedUserPrefStore.js: http://fisheye.exoplatform.org/browse/projects/portal/trunk/web/eXoResources/src/main/webapp/javascript/eXo/gadget/ExoBasedUserPrefStore.js?r=HEAD
> links:
> API doc about adgets.Prefs.set: http://code.google.com/apis/gadgets/docs/reference/#gadgets.Prefs.set
> Jira gadget to test: http://jira4j.exoplatform.org/rest/gadgets/1.0/g/com.atlassian.jira.gadgets:watched-gadget/gadgets/watched-gadget.xml

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the gatein-issues mailing list