Author: cziegeler Date: Mon Jan 17 00:45:38 2005 New Revision: 125403 URL: http://svn.apache.org/viewcvs?view=rev&rev=125403 Log: Fix copying of profile Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/modules/input/PortletURLModule.java Mon Jan 17 00:45:38 2005 @@ -113,16 +113,16 @@ if (name.length() > 0) { parameters.put(PortletEnvironment.PARAMETER_PATH_INFO, name); } - for (Iterator i = parameters.keySet().iterator(); i.hasNext();) { - String param = (String) i.next(); - Object values = parameters.get(param); + for (Iterator i = parameters.entrySet().iterator(); i.hasNext();) { + Map.Entry me = (Map.Entry)i.next(); + String param = (String)me.getKey(); + Object values = me.getValue(); if (values instanceof String) { url.setParameter(param, (String) values); } else { url.setParameter(param, (String[]) values); } } - return url.toString(); } if (name.startsWith(PREFIX_RENDER)) { Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/NOPVariableResolver.java Mon Jan 17 00:45:38 2005 @@ -63,4 +63,5 @@ public String resolve() throws PatternException { return this.expression; } + } Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/variables/PreparedVariableResolver.java Mon Jan 17 00:45:38 2005 @@ -58,6 +58,7 @@ public PreparedVariableResolver(String expr, ServiceManager manager, Context context) throws PatternException { + super(null); this.expression = expr; this.manager = manager; Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java Mon Jan 17 00:45:38 2005 @@ -25,10 +25,11 @@ import org.apache.avalon.framework.service.ServiceSelector; import org.apache.cocoon.components.modules.input.InputModule; import org.apache.cocoon.portal.PortalService; +import org.apache.cocoon.portal.layout.Layout; import org.apache.cocoon.portal.layout.SkinDescription; /** - * FIXME We can use the module chaining! + * This input module provides information about the current selected skin * * @version CVS $Id: SkinModule.java,v 1.4 2005/01/07 10:21:46 cziegeler Exp $ */ @@ -77,11 +78,21 @@ portalService = (PortalService)this.manager.lookup(PortalService.ROLE); + String skinName = null; // get the current skin - // TODO - String skinName = (String)this.globalModule.getAttribute("skin", modeConf, objectModel); + // the skin is stored as a parameter on the root layout + // if not, the global module is used + // fallback is: common + final Layout rootLayout = portalService.getComponentManager().getProfileManager().getPortalLayout(null, null); + if ( rootLayout != null ) { + skinName = (String)rootLayout.getParameters().get("skin"); + } + // use the global module + if ( skinName == null ) { + skinName = (String)this.globalModule.getAttribute("skin", modeConf, objectModel); if ( skinName == null ) { - skinName = "basic"; + skinName = "common"; + } } // find the correct skin @@ -100,6 +111,14 @@ return desc.getBasePath(); } else if ( "skin.thumbnailpath".equals(name) ) { return desc.getThumbnailPath(); + } else if ( name.startsWith("skin.thumbnailuri.") ) { + String selectedSkinName = name.substring(name.lastIndexOf(".")+ 1, name.length()); + for(Iterator it = portalService.getSkinDescriptions().iterator(); it.hasNext();) { + SkinDescription selected = (SkinDescription) it.next(); + if(selected.getName().equals(selectedSkinName)) { + return selected.getBasePath() + "/" + selected.getThumbnailPath(); + } + } } } return null; Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java Mon Jan 17 00:45:38 2005 @@ -94,7 +94,7 @@ Boolean addParams = (Boolean)this.getConfiguration(coplet, "appendParameters"); if ( addParams != null && addParams.booleanValue() ) { final StringBuffer uri = new StringBuffer(event.getLink()); - boolean hasParams = (uri.indexOf("?") != -1); + boolean hasParams = (uri.toString().indexOf("?") != -1); // append parameters - if any final Map objectModel = ContextHelper.getObjectModel(this.context); Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/event/aspect/impl/RequestParameterEventAspect.java Mon Jan 17 00:45:38 2005 @@ -54,12 +54,10 @@ } } else { List list = (List) request.getAttribute("org.apache.cocoon.portal." + parameterName); - if (list != null) - { + if (list != null) { Event[] events = (Event[]) list.toArray(new Event[0]); final Publisher publisher = context.getEventPublisher(); - for (int i = 0; i < events.length; i++) - { + for (int i = 0; i < events.length; i++) { publisher.publish(events[i]); } } Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java Mon Jan 17 00:45:38 2005 @@ -141,8 +141,7 @@ if (!comparableEvent || !current.equalsEvent((ComparableEvent) event)) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); } buffer.append((String) objects[1]).append('=').append(SourceUtil.encode((String) objects[2])); @@ -208,8 +207,7 @@ if (!found) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); } buffer.append((String) objects[1]).append('=').append(SourceUtil.encode((String) objects[2])); @@ -223,12 +221,10 @@ final Object current = iter.next(); if (current instanceof Event) { hasParams = this.addEvent(buffer, (Event) current, hasParams); - } - else if (current instanceof ParameterDescription) { + } else if ( current instanceof ParameterDescription ) { if (hasParams) { buffer.append('&'); - } - else { + } else { buffer.append('?'); hasParams = true; } @@ -388,4 +384,4 @@ } return parameterName; } -} \ No newline at end of file +} Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java Mon Jan 17 00:45:38 2005 @@ -42,13 +42,6 @@ protected Map parameters = new LinkedMap(); - /* - * Default constructor - */ - public AbstractLayout() { - - } - /* (non-Javadoc) * @see org.apache.cocoon.portal.layout.Parameters#getParameters() */ Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java Mon Jan 17 00:45:38 2005 @@ -43,8 +43,10 @@ */ public final void setLayout(Layout layout) { this.layout = layout; + if(layout != null) { layout.setParent(this); } + } public final CompositeLayout getParent() { return this.parentLayout; @@ -71,6 +73,7 @@ Item clone = (Item)this.clone(); if ( this.layout != null ) { clone.layout = this.layout.copy(); + clone.layout.setParent(clone); } clone.parentLayout = parent; return clone; Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java Mon Jan 17 00:45:38 2005 @@ -40,7 +40,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a> * - * @version CVS $Id: AbstractCompositeAspect.java,v 1.7 2004/04/25 20:09:34 haul Exp $ + * @version CVS $Id$ */ public abstract class AbstractCompositeAspect extends AbstractAspect { @@ -81,9 +81,11 @@ * renderer for a layout to render it. */ protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException { - final String rendererName = layout.getRendererName(); - final Renderer renderer = service.getComponentManager().getRenderer(rendererName); - renderer.toSAX(layout, service, handler); + if ( layout != null ) { + final String rendererName = layout.getRendererName(); + final Renderer renderer = service.getComponentManager().getRenderer(rendererName); + renderer.toSAX(layout, service, handler); + } } } Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java Mon Jan 17 00:45:38 2005 @@ -116,14 +116,6 @@ Collection getCopletDatas(); /** - * Copy the current (default) layout and store it under - * the provided key. - * The copy includes copying of layout objects (with attached - * items) and coplet instance datas. - */ - Layout copyProfile(String layoutKey); - - /** * Store the provided profile under the layoutKey. * This method can be used to overwrite a profile with another * one. Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Mon Jan 17 00:45:38 2005 @@ -108,17 +108,4 @@ // overwrite in subclass } - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#copyProfile(java.lang.String) - */ - public Layout copyProfile(String layoutKey) { - throw new RuntimeException("Copy profile is not implemented."); - } - - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) - */ - public void storeProfile(Layout rootLayout, String layoutKey) { - throw new RuntimeException("Store profile is not implemented."); - } } Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java Mon Jan 17 00:45:38 2005 @@ -411,4 +411,25 @@ } } + /* (non-Javadoc) + * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) + */ + public void storeProfile(Layout rootLayout, String layoutKey) { + PortalService service = null; + + try { + service = (PortalService) this.manager.lookup(PortalService.ROLE); + if ( null == layoutKey ) { + layoutKey = service.getDefaultLayoutKey(); + } + + final String layoutAttributeKey = "Layout:" + layoutKey; + + service.setAttribute(layoutAttributeKey, rootLayout); + } catch (Exception ce) { + throw new CascadingRuntimeException("Exception during loading of profile.", ce); + } finally { + this.manager.release(service); + } + } } Modified: cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?view=diff&rev=125403&p1=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r1=125402&p2=cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r2=125403 ============================================================================== --- cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original) +++ cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Mon Jan 17 00:45:38 2005 @@ -364,4 +364,12 @@ this.manager.release(service); } } + + + /* (non-Javadoc) + * @see org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout, java.lang.String) + */ + public void storeProfile(Layout rootLayout, String layoutKey) { + throw new RuntimeException("The static profile manager does not support the storeProfile() method."); + } }