# HG changeset patch
# User Jorge Garcia <jorge.garcia@openbravo.com>
# Date 1496757182 -7200
#      Tue Jun 06 15:53:02 2017 +0200
# Node ID 161fd846c0c6850a624574a25ce2a1607b6c630d
# Parent  9ed7057ba7555ed7629b8e9d15bb16a4f23571b9
Fixed issue 36098: getAllPreferences function is called twice during the login

The solution is to get the preference values from the session.

diff --git a/src/org/openbravo/mobile/core/login/RolePermissions.java b/src/org/openbravo/mobile/core/login/RolePermissions.java
--- a/src/org/openbravo/mobile/core/login/RolePermissions.java
+++ b/src/org/openbravo/mobile/core/login/RolePermissions.java
@@ -13,23 +13,22 @@
 import java.io.Writer;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
 import javax.servlet.ServletException;
+import javax.servlet.http.HttpSession;
 
 import org.apache.log4j.Logger;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.client.kernel.RequestContext;
 import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.dal.service.OBQuery;
-import org.openbravo.erpCommon.businessUtility.Preferences;
 import org.openbravo.mobile.core.MobileCoreConstants;
 import org.openbravo.mobile.core.process.JSONRowConverter;
 import org.openbravo.mobile.core.process.SecuredJSONProcess;
-import org.openbravo.model.ad.domain.Preference;
 import org.openbravo.service.json.JsonConstants;
 
 public class RolePermissions extends SecuredJSONProcess {
@@ -118,22 +117,20 @@
   }
 
   private Map<String, Object> getPreferenceValues(List<String> preferenceKeys) {
-    HashSet<String> prefKeys = new HashSet<String>(preferenceKeys);
-    List<Preference> preferences = Preferences.getAllPreferences(OBContext.getOBContext()
-        .getCurrentClient().getId(), OBContext.getOBContext().getCurrentOrganization().getId(),
-        OBContext.getOBContext().getUser().getId(), OBContext.getOBContext().getRole().getId());
+    HttpSession session = RequestContext.get().getSession();
     Map<String, Object> result = new HashMap<String, Object>();
-    for (Preference preference : preferences) {
-      if (preference.getProperty() == null || !prefKeys.contains(preference.getProperty())) {
+    for (String preferenceKey : preferenceKeys) {
+      String realKey = ("P|" + preferenceKey).toUpperCase();
+      if (session.getAttribute(realKey) == null) {
         continue;
       }
-      Object prefValue = preference.getSearchKey();
+      Object prefValue = session.getAttribute(realKey);
       if ("Y".equals(prefValue)) {
         prefValue = Boolean.TRUE;
       } else if ("N".equals(prefValue)) {
         prefValue = Boolean.FALSE;
       }
-      result.put(preference.getProperty(), prefValue);
+      result.put(preferenceKey, prefValue);
     }
     return result;
   }
