You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2006/01/09 08:30:23 UTC
svn commit: r367234 - in /portals/jetspeed-2/trunk:
components/registry/src/java/org/apache/jetspeed/components/portletentity/
jetspeed-api/src/java/org/apache/jetspeed/
jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/
layout-portlet...
Author: rwatler
Date: Sun Jan 8 23:30:17 2006
New Revision: 367234
URL: http://svn.apache.org/viewcvs?rev=367234&view=rev
Log:
- explicity update PortletEntity and PortletWindow on root page layout change
instead of relying on id modification to propagate edits, (id modification
not supported by DB PageManager for page root fragment).
- add updatePortletEntity() to PortletEntityAccessor component API.
- add PortletWindowAccessor component to LayoutPortlet.
Modified:
portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponent.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml
Modified: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java (original)
+++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java Sun Jan 8 23:30:17 2006
@@ -315,6 +315,38 @@
}
}
+ /**
+ * <p>
+ * updatePortletEntity
+ * </p>
+ *
+ * Updates portlet definition associated with the portlet
+ * entity to match the fragment configuration
+ *
+ * @param portletEntity
+ * @param fragment
+ * @throws PortletEntityNotStoredException
+ */
+ public void updatePortletEntity(PortletEntity portletEntity, ContentFragment fragment) throws PortletEntityNotStoredException
+ {
+ // validate portlet entity id
+ if (!fragment.getId().equals(portletEntity.getId().toString()))
+ {
+ throw new PortletEntityNotStoredException("Fragment and PortletEntity ids do not match, update skipped: " + fragment.getId() + " != " + portletEntity.getId() );
+ }
+
+ // update portlet definition from fragment
+ PortletDefinition pd = registry.getPortletDefinitionByUniqueName(fragment.getName());
+ if (pd != null)
+ {
+ ((PortletEntityImpl)portletEntity).setPortletDefinition(pd);
+ }
+ else
+ {
+ throw new PortletEntityNotStoredException("Fragment PortletDefinition not found: " + fragment.getName() );
+ }
+ }
+
public void storePortletEntity( PortletEntity portletEntity ) throws PortletEntityNotStoredException
{
try
@@ -365,4 +397,4 @@
String portletName = pd.getName();
return appName+"::"+portletName+"::"+new UID().toString();
}
-}
\ No newline at end of file
+}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java Sun Jan 8 23:30:17 2006
@@ -35,6 +35,7 @@
public final static String CPS_PORTLET_FACTORY_COMPONENT = "cps:PortletFactory";
public final static String CPS_DEPLOYMENT_MANAGER_COMPONENT = "cps:DeploymentManager";
public final static String CPS_ENTITY_ACCESS_COMPONENT = "cps:EntityAccessor";
+ public final static String CPS_WINDOW_ACCESS_COMPONENT = "cps:WindowAccessor";
public final static String CPS_ID_GENERATOR_COMPONENT = "cps:IdGenerator";
public final static String CPS_JETSPEED_POWERTOOL_FACTORY = "cps:Powertools";
public final static String CPS_HEADER_RESOURCE_FACTORY = "cps:HeaderResource";
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponent.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponent.java?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponent.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponent.java Sun Jan 8 23:30:17 2006
@@ -146,6 +146,20 @@
void removeFromCache(PortletEntity entity);
/**
+ * <p>
+ * updatePortletEntity
+ * </p>
+ *
+ * Updates portlet definition associated with the portlet
+ * entity to match the fragment configuration
+ *
+ * @param portletEntity
+ * @param fragment
+ * @throws PortletEntityNotStoredException
+ */
+ void updatePortletEntity(PortletEntity portletEntity, ContentFragment fragment) throws PortletEntityNotStoredException;
+
+ /**
*
* <p>
* storePortletEntity
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/LayoutPortlet.java Sun Jan 8 23:30:17 2006
@@ -37,6 +37,7 @@
import org.apache.jetspeed.capabilities.CapabilityMap;
import org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent;
import org.apache.jetspeed.components.portletregistry.PortletRegistry;
+import org.apache.jetspeed.container.window.PortletWindowAccessor;
import org.apache.jetspeed.locator.LocatorDescriptor;
import org.apache.jetspeed.locator.TemplateDescriptor;
import org.apache.jetspeed.locator.TemplateLocator;
@@ -76,6 +77,7 @@
protected JetspeedPowerToolFactory jptFactory;
protected TemplateLocator templateLocator;
protected PortletEntityAccessComponent entityAccess;
+ protected PortletWindowAccessor windowAccess;
protected TemplateLocator decorationLocator;
public void init( PortletConfig config ) throws PortletException
@@ -102,6 +104,12 @@
if (null == entityAccess)
{
throw new PortletException("Failed to find the Entity Access on portlet initialization");
+ }
+
+ windowAccess = (PortletWindowAccessor) getPortletContext().getAttribute(CommonPortletServices.CPS_WINDOW_ACCESS_COMPONENT);
+ if (null == windowAccess)
+ {
+ throw new PortletException("Failed to find the Window Access on portlet initialization");
}
templateLocator = (TemplateLocator) getPortletContext().getAttribute("TemplateLocator");
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java Sun Jan 8 23:30:17 2006
@@ -218,7 +218,7 @@
}
catch (Exception e)
{
- throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ throw new PortletException("Unable to access page for editing: "+e.getMessage(), e);
}
}
else if (request.getParameter("move") != null
@@ -232,7 +232,7 @@
}
catch (Exception e)
{
- throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ throw new PortletException("Unable to access page for editing: "+e.getMessage(), e);
}
Fragment rootFragment = page.getRootFragment();
@@ -301,7 +301,7 @@
}
catch (Exception e)
{
- throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ throw new PortletException("Unable to access page for editing: "+e.getMessage(), e);
}
Fragment fragment = page.getFragmentById(fragmentChange);
@@ -318,45 +318,58 @@
}
catch (Exception e)
{
- throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage());
+ throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage(), e);
}
}
else if (themeChange != null &&
layoutChange != null &&
editingPage != null)
{
+ // get page to be edited
ContentPage page;
try
{
+ // access content page to be edited
page = pageManager.getContentPage(editingPage);
}
catch (Exception e)
{
- throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ throw new PortletException("Unable to access page for editing: "+e.getMessage(), e);
}
-
- page.setDefaultDecorator(themeChange, Fragment.LAYOUT);
-
+
+ // edit and update page
+ boolean layoutPortletChanged = !layoutChange.equals(page.getRootFragment().getName());
try
{
- PortletEntity oldEntity = this.entityAccess.getPortletEntity(page.getRootFragment().getId());
- if (oldEntity != null)
- {
- PortletEntity newEntity =
- this.entityAccess.generateEntityFromFragment((ContentFragment)page.getRootFragment(), null);
- this.entityAccess.removePortletEntity(oldEntity);
- Fragment newFragment = pageManager.copyFragment(page.getRootFragment(), layoutChange);
- page.setRootFragment(newFragment);
-
- this.entityAccess.storePortletEntity(newEntity);
- pageManager.updatePage(page);
- }
+ // update page theme and/or root fragment
+ // layout portlet change
+ page.setDefaultDecorator(themeChange, Fragment.LAYOUT);
+ page.getRootFragment().setName(layoutChange);
+ pageManager.updatePage(page);
}
catch (Exception e)
{
- throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage());
+ throw new PortletException("Unable to update page: "+e.getMessage(), e);
}
+ // update portlet entity and portlet window if layout portlet modified
+ if (layoutPortletChanged)
+ {
+ try
+ {
+ // update matching portlet entity
+ PortletEntity portletEntity = this.entityAccess.getPortletEntity(page.getRootFragment().getId());
+ this.entityAccess.updatePortletEntity(portletEntity, (ContentFragment)page.getRootFragment());
+ this.entityAccess.storePortletEntity(portletEntity);
+
+ // update matching portlet window
+ this.windowAccess.createPortletWindow(portletEntity, page.getRootFragment().getId());
+ }
+ catch (Exception e)
+ {
+ throw new PortletException("Unable to update portlet entity or window: "+e.getMessage(), e);
+ }
+ }
}
else
{
Modified: portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml Sun Jan 8 23:30:17 2006
@@ -33,6 +33,7 @@
<js:service name='Powertools'/>
<js:service name='DecorationFactory'/>
<js:service name='EntityAccessor'/>
+ <js:service name='WindowAccessor'/>
</js:services>
</portlet-app>
Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml?rev=367234&r1=367233&r2=367234&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml (original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml Sun Jan 8 23:30:17 2006
@@ -52,6 +52,9 @@
<entry key="EntityAccessor">
<ref bean='org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent'/>
</entry>
+ <entry key="WindowAccessor">
+ <ref bean='org.apache.jetspeed.container.window.PortletWindowAccessor'/>
+ </entry>
<!-- ApplicationServerManager currently only supported for Tomcat. Comment out for others like JBoss -->
<entry key="ApplicationServerManager">
<ref bean="org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManager"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org