try {
JahiaPreferencesProvider portletPreferenceProvider = jahiaPreferencesService.getPreferencesProviderByType("portlet");
Collection<PortletPreference > preferences = stringPortletPreferenceMap.values();
for (PortletPreference curPlutoPreference : preferences) {
String portletName = portletWindow.getPortletDefinition().getApplication().getContextPath() + "." + portletWindow.getPortletDefinition().getPortletName();
JahiaPreference portletPreference = portletPreferenceProvider.getJahiaPreference(request.getUserPrincipal(), JahiaPreferencesQueryHelper.getPortletSQL(portletName, curPlutoPreference.getName()));
if (portletPreference == null) {
portletPreference = portletPreferenceProvider.createJahiaPreferenceNode(request.getUserPrincipal());
JahiaPortletPreference node = (JahiaPortletPreference) portletPreference.getNode();
node.setPortletName(portletName);
node.setPrefName(curPlutoPreference.getName());
} else {
// if values == null then delete the corresponding preference
if (curPlutoPreference.getValues() == null) {
portletPreferenceProvider.deleteJahiaPreference(portletPreference);
}
}
// if values == null the pref is not saved
if (curPlutoPreference.getValues() != null) {
JahiaPortletPreference node = (JahiaPortletPreference) portletPreference.getNode();
node.setReadOnly(curPlutoPreference.isReadOnly());
node.setValues(curPlutoPreference.getValues());
portletPreferenceProvider.setJahiaPreference(portletPreference);
}
}