Author: taylor
Date: Tue Apr 28 04:50:40 2009
New Revision: 769238

URL: http://svn.apache.org/viewvc?rev=769238&view=rev
Log:
https://issues.apache.org/jira/browse/JS2-981
Fix for edit defaults mode being broken

Modified:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentPreferenceImpl.java
    
portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesServiceImpl.java
    
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/registry.xml

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentPreferenceImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentPreferenceImpl.java?rev=769238&r1=769237&r2=769238&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentPreferenceImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentPreferenceImpl.java
 Tue Apr 28 04:50:40 2009
@@ -19,6 +19,7 @@
 import java.util.List;
 
 import org.apache.jetspeed.om.preference.FragmentPreference;
+import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
 
 /**
  * 
@@ -56,6 +57,10 @@
     
     public List getValueList()
     {
+        if (this.values == null)
+        {
+            this.values = DatabasePageManagerUtils.createList();            
+        }
         return this.values;
     }
     

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesServiceImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesServiceImpl.java?rev=769238&r1=769237&r2=769238&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesServiceImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesServiceImpl.java
 Tue Apr 28 04:50:40 2009
@@ -28,14 +28,18 @@
 import javax.portlet.ValidatorException;
 
 import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.cache.CacheElement;
 import org.apache.jetspeed.cache.JetspeedCache;
 import org.apache.jetspeed.container.PortletWindow;
 import org.apache.jetspeed.factory.PortletFactory;
+import org.apache.jetspeed.om.page.ContentFragment;
 import org.apache.jetspeed.om.portlet.PortletApplication;
 import org.apache.jetspeed.om.portlet.Preference;
 import org.apache.jetspeed.om.portlet.Preferences;
 import org.apache.jetspeed.om.preference.FragmentPreference;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.security.SubjectHelper;
 import org.apache.jetspeed.security.User;
 import org.apache.ojb.broker.query.Criteria;
@@ -65,6 +69,7 @@
     protected static final String EMPTY_VALUE = "_";
     
     private PortletFactory portletFactory;
+    private PageManager pageManager;
     /**
      * Cache elements are stored as element type JetspeedPreferencesMap
      */
@@ -85,17 +90,18 @@
         this.useEntityPreferences = useEntityPreferences;
     }
 
-    public PortletPreferencesServiceImpl(PortletFactory portletFactory, 
JetspeedCache preferenceCache)
+    public PortletPreferencesServiceImpl(PortletFactory portletFactory, 
JetspeedCache preferenceCache, PageManager pageManager)
             throws ClassNotFoundException
     {
         this.portletFactory = portletFactory;
         this.preferenceCache = preferenceCache;
+        this.pageManager = pageManager;
     }
     
-    public PortletPreferencesServiceImpl(PortletFactory portletFactory, 
JetspeedCache preferenceCache, List<String> apps, boolean preloadEntities)
+    public PortletPreferencesServiceImpl(PortletFactory portletFactory, 
JetspeedCache preferenceCache, PageManager pageManager, List<String> apps, 
boolean preloadEntities)
     throws ClassNotFoundException
     {
-        this(portletFactory, preferenceCache);
+        this(portletFactory, preferenceCache, pageManager);
         this.preloadedApplications = apps;
         this.preloadEntities = preloadEntities;
     }
@@ -129,24 +135,7 @@
             }            
             else
             {
-                List<FragmentPreference> fragmentPrefs = 
window.getFragment().getPreferences();
-                if (fragmentPrefs.size() > 0)
-                {
-                    entityMap = new JetspeedPreferencesMap();                 
-                    for (FragmentPreference fragmentPref : fragmentPrefs)
-                    {                  
-                        String[] entityValues = new 
String[fragmentPref.getValueList().size()];
-                        int ix = 0;
-                        for (Object value : fragmentPref.getValueList())
-                        {
-                            entityValues[ix] = (String)value;
-                            ix++;
-                        }
-                        JetspeedPreferenceImpl preference = new 
JetspeedPreferenceImpl(fragmentPref.getName(), entityValues);
-                        preference.setReadOnly(fragmentPref.isReadOnly());     
               
-                        entityMap.put(fragmentPref.getName(), preference);     
               
-                    }
-                }
+                entityMap = retrieveEntityPreferences(window, request);        
        
             }
             // merge default with entity preferences
             if (entityMap != null && entityMap.size() > 0)
@@ -445,20 +434,71 @@
         preferenceCache.put(preferenceCache.createElement(defaultsCacheKey, 
map));                    
     }
 
-    public  Map<String, PortletPreference>  
retrieveEntityPreferences(PortletWindow window, PortletRequest request)
+    public  JetspeedPreferencesMap  retrieveEntityPreferences(PortletWindow 
window, PortletRequest request)
     {
-        // TODO: 2.2 implement - need to better look at use cases for edit 
defaults mode
-        // we are currently not storing entity preferences in the database. 
-        throw new UnsupportedOperationException();
+        JetspeedPreferencesMap entityMap = new JetspeedPreferencesMap();
+        List<FragmentPreference> fragmentPrefs = 
window.getFragment().getPreferences();
+        if (fragmentPrefs.size() > 0)
+        {
+            entityMap = new JetspeedPreferencesMap();                 
+            for (FragmentPreference fragmentPref : fragmentPrefs)
+            {                  
+                String[] entityValues = new 
String[fragmentPref.getValueList().size()];
+                int ix = 0;
+                for (Object value : fragmentPref.getValueList())
+                {
+                    entityValues[ix] = (String)value;
+                    ix++;
+                }
+                JetspeedPreferenceImpl preference = new 
JetspeedPreferenceImpl(fragmentPref.getName(), entityValues);
+                preference.setReadOnly(fragmentPref.isReadOnly());             
       
+                entityMap.put(fragmentPref.getName(), preference);             
       
+            }
+        }
+        return entityMap;
     }
     
-    public void storeEntityPreferences(PortletWindow pw, PortletRequest 
request,
+    @SuppressWarnings("unchecked")
+    public void storeEntityPreferences(PortletWindow window, PortletRequest 
request,
             Map<String, PortletPreference> map)
             throws PortletContainerException
     {
-        // TODO: 2.2 implement - need to better look at use cases for edit 
defaults mode
-        // we are currently not storing entity preferences in the database. 
-        throw new UnsupportedOperationException();
+        ContentFragment fragment = window.getFragment();
+        List<FragmentPreference> fragmentPrefs = fragment.getPreferences();
+        fragmentPrefs.clear();
+        for (Entry<String, PortletPreference> entry : map.entrySet())
+        {
+            String name = entry.getKey();
+            PortletPreference pref = entry.getValue();
+            FragmentPreference fp = pageManager.newFragmentPreference();
+            fp.setName(name);
+            fp.setReadOnly(pref.isReadOnly());
+            String [] values = pref.getValues();
+            if (values != null)
+            {
+                List<String> list = (List<String>)fp.getValueList();
+                for (String value : values)
+                {
+                    list.add(value);
+                }
+            }
+            fragmentPrefs.add(fp);
+            org.apache.jetspeed.om.portlet.PortletDefinition pd = 
window.getPortletDefinition();
+            String entityId = window.getPortletEntityId();            
+            String appName = pd.getApplication().getName();
+            String portletName = pd.getPortletName();
+            String entityCacheKey = this.getEntityPreferenceKey(appName, 
portletName, entityId);
+            preferenceCache.remove(entityCacheKey);
+        }
+        RequestContext rc = (RequestContext) 
request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        try
+        {
+            pageManager.updatePage(rc.getPage());
+        }
+        catch (Exception e)
+        {
+            throw new PortletContainerException(e);
+        }
     }
 
 

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/registry.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/registry.xml?rev=769238&r1=769237&r2=769238&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/registry.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/registry.xml
 Tue Apr 28 04:50:40 2009
@@ -100,6 +100,9 @@
     <constructor-arg index="1">
       <ref bean="preferencesCache" />
     </constructor-arg>    
+    <constructor-arg index='2'>
+       <ref bean='org.apache.jetspeed.page.PageManager'/>
+    </constructor-arg>
     <property name="useEntityPreferences" ><value>true</value></property>
     </bean>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to