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]