You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2007/02/26 15:17:01 UTC
svn commit: r511812 [1/2] - in /cocoon/trunk/blocks/cocoon-portal:
cocoon-portal-api/ cocoon-portal-bridges-impl/src/main/resources/
cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/
cocoon-portal-impl/src/main/java/org/apache/coc...
Author: cziegeler
Date: Mon Feb 26 06:16:59 2007
New Revision: 511812
URL: http://svn.apache.org/viewvc?view=rev&rev=511812
Log:
Correct properties
Removed:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-bridges-impl/src/main/resources/
Modified:
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/PrefixParameterMatcher.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/test/java/org/apache/cocoon/portal/MockProcessInfoProvider.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/resources/org/apache/cocoon/portal/pluto/deployment/portlet.tld (props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/avalon/cocoon-portal-sample.xconf (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-borderless-window.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-column.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-decorated-frame.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-frame.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-link.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-linktab.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-nowindow.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-rawtab.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-row.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-tab.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/renderer-window.xml (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/portal-sample.xsamples (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/acting/helpers/FullScreenMapping.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/generation/AbstractCopletGenerator.java (contents, props changed)
cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/service/UserRightsService.java (contents, props changed)
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml Mon Feb 26 06:16:59 2007
@@ -1,68 +1,68 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<!--+
- | @version $Id: pom.xml 483960 2006-12-08 12:28:55Z reinhard $
- +-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <parent>
- <groupId>org.apache.cocoon</groupId>
- <artifactId>cocoon-portal</artifactId>
- <version>1-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>cocoon-portal-api</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>Portal Block API</name>
-
- <distributionManagement>
- <site>
- <id>website</id>
- <url>${docs.deploymentBaseUrl}/blocks/portal/${docs.version}/</url>
- </site>
- </distributionManagement>
-
- <properties>
- <docs.name>Cocoon Portal</docs.name>
- <docs.version>1.0</docs.version>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.daisycms</groupId>
- <artifactId>daisy-maven-plugin</artifactId>
- <configuration>
- <navDocId>1234</navDocId>
- <collection>cdocs-portal</collection>
- <skipFirstNavigationDocumentLevel>true</skipFirstNavigationDocumentLevel>
- </configuration>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.3</version>
- </dependency>
- </dependencies>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<!--+
+ | @version $Id$
+ +-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <parent>
+ <groupId>org.apache.cocoon</groupId>
+ <artifactId>cocoon-portal</artifactId>
+ <version>1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>cocoon-portal-api</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>Portal Block API</name>
+
+ <distributionManagement>
+ <site>
+ <id>website</id>
+ <url>${docs.deploymentBaseUrl}/blocks/portal/${docs.version}/</url>
+ </site>
+ </distributionManagement>
+
+ <properties>
+ <docs.name>Cocoon Portal</docs.name>
+ <docs.version>1.0</docs.version>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.daisycms</groupId>
+ <artifactId>daisy-maven-plugin</artifactId>
+ <configuration>
+ <navDocId>1234</navDocId>
+ <collection>cdocs-portal</collection>
+ <skipFirstNavigationDocumentLevel>true</skipFirstNavigationDocumentLevel>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.3</version>
+ </dependency>
+ </dependencies>
+</project>
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/pom.xml
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java Mon Feb 26 06:16:59 2007
@@ -29,7 +29,7 @@
* This data object is used for loading the profile. It decouples the
* portal from the used authentication method.
*
- * @version $Id: MapProfileLS.java 30941 2004-07-29 19:56:58Z vgritsenko $
+ * @version $Id$
*/
public abstract class AbstractPortalUser
implements PortalUser, Serializable {
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractPortalUser.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Mon Feb 26 06:16:59 2007
@@ -65,7 +65,7 @@
*
* THIS IS A WORK IN PROGRESS - IT'S NOT FINISHED YET
*
- * @version $Id: AbstractUserProfileManager.java 37123 2004-08-27 12:11:53Z cziegeler $
+ * @version $Id$
*/
public class GroupBasedProfileManager
extends AbstractProfileManager {
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java Mon Feb 26 06:16:59 2007
@@ -1,249 +1,249 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.portal.services.impl;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.cocoon.ajax.AjaxHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.portal.PortalException;
-import org.apache.cocoon.portal.layout.renderer.Renderer;
-import org.apache.cocoon.portal.om.CopletInstance;
-import org.apache.cocoon.portal.om.CopletInstanceFeatures;
-import org.apache.cocoon.portal.om.Layout;
-import org.apache.cocoon.portal.om.LayoutException;
-import org.apache.cocoon.portal.om.LayoutFeatures;
-import org.apache.cocoon.portal.profile.ProfileManager;
-import org.apache.cocoon.portal.services.PortalManager;
-import org.apache.cocoon.portal.services.aspects.RequestProcessorAspect;
-import org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext;
-import org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect;
-import org.apache.cocoon.portal.services.aspects.ResponseProcessorAspectContext;
-import org.apache.cocoon.portal.services.aspects.impl.support.RequestProcessorAspectContextImpl;
-import org.apache.cocoon.portal.services.aspects.impl.support.ResponseProcessorAspectContextImpl;
-import org.apache.cocoon.portal.services.aspects.support.AspectChain;
-import org.apache.cocoon.portal.util.AbstractBean;
-import org.apache.cocoon.xml.AttributesImpl;
-import org.apache.cocoon.xml.XMLUtils;
-import org.apache.commons.lang.StringUtils;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @version $Id: PortalManagerImpl.java 507453 2007-02-14 09:41:57Z cziegeler $
- */
-public class DefaultPortalManager
- extends AbstractBean
- implements PortalManager, RequestProcessorAspect, ResponseProcessorAspect {
-
- /** The aspect chain for additional request processing. */
- protected AspectChain requestChain;
-
- /** The aspect chain for additional response processing. */
- protected AspectChain responseChain;
-
- /**
- * Set the request aspect chain.
- * @param a A chain.
- */
- public void setRequestAspectChain(AspectChain a) {
- this.requestChain = a;
- }
-
- /**
- * Set the response aspect chain.
- * @param a A chain.
- */
- public void setResponseAspectChain(AspectChain a) {
- this.responseChain = a;
- }
-
- /**
- * @see org.apache.cocoon.portal.services.PortalManager#process()
- */
- public void process()
- throws PortalException {
- RequestProcessorAspectContextImpl aspectContext =
- new RequestProcessorAspectContextImpl(this.portalService, this.requestChain);
- aspectContext.invokeNext();
- }
-
- /**
- * @see PortalManager#render(ContentHandler, Properties)
- */
- public void render(ContentHandler contentHandler, Properties properties)
- throws SAXException {
- ResponseProcessorAspectContextImpl aspectContext =
- new ResponseProcessorAspectContextImpl(this.portalService, this.responseChain);
- aspectContext.invokeNext(contentHandler, properties);
- }
-
- /**
- * Initialize
- */
- public void init()
- throws PortalException {
- if ( this.requestChain == null ) {
- this.requestChain = new AspectChain(RequestProcessorAspect.class);
- }
- this.requestChain.addAspect(this, null);
- if ( this.responseChain == null ) {
- this.responseChain = new AspectChain(ResponseProcessorAspect.class);
- }
- this.responseChain.addAspect(this, null);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.aspects.RequestProcessorAspect#process(org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext)
- */
- public void process(RequestProcessorAspectContext rpContext) {
- // by defaut, we have nothing to do
- }
-
- /**
- * @see org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect#render(org.apache.cocoon.portal.services.aspects.ResponseProcessorAspectContext, org.xml.sax.ContentHandler, java.util.Properties)
- */
- public void render(ResponseProcessorAspectContext renderContext,
- ContentHandler ch,
- Properties properties)
- throws SAXException {
- final ProfileManager profileManager = this.portalService.getProfileManager();
-
- final Request req = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
- // check for render parameters
- // if a parameter for a layout or a coplet is defined
- // then only this coplet or layout object is rendered
- final String copletId = (properties == null ? null : properties.getProperty(PortalManager.PROPERTY_RENDER_COPLET, null));
- final String layoutId = (properties == null ? null : properties.getProperty(PortalManager.PROPERTY_RENDER_LAYOUT, null));
- if ( StringUtils.isNotEmpty(copletId) && StringUtils.isNotEmpty(layoutId) ) {
- throw new SAXException("Only one of the paramteters can be specified for rendering: coplet or layout.");
- }
- Layout portalLayout = null;
-
- if ( StringUtils.isNotEmpty(copletId) ) {
- final CopletInstance cid = profileManager.getCopletInstance(copletId);
- if ( cid != null ) {
- portalLayout = LayoutFeatures.searchLayout(this.portalService, cid.getId(), profileManager.getLayout(null));
- if ( portalLayout == null) {
- getLogger().error("No Layout to render for coplet instance with id: " + copletId);
- return;
- }
- }
- } else if ( StringUtils.isNotEmpty(layoutId) ) {
- portalLayout = profileManager.getLayout(layoutId);
- if ( portalLayout == null) {
- getLogger().error("No Layout to render for layout instance with id: " + layoutId);
- return;
- }
- }
-
- ch.startDocument();
-
- // If no parameter is specified test for ajax request which will
- // only render the changed coplets
- if ( portalLayout == null && AjaxHelper.isAjaxRequest(req) ) {
- Layout rootLayout = profileManager.getLayout(null);
- XMLUtils.startElement(ch, "coplets");
- final List changed = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(this.portalService);
- final Iterator i = changed.iterator();
- while ( i.hasNext() ) {
- final CopletInstance current = (CopletInstance)i.next();
- final AttributesImpl a = new AttributesImpl();
- a.addCDATAAttribute("id", current.getId());
- XMLUtils.startElement(ch, "coplet", a);
- final Layout l = LayoutFeatures.searchLayout(this.portalService, current.getId(), rootLayout);
- Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(l));
- try {
- portalLayoutRenderer.toSAX(l, this.portalService, ch);
- } catch (LayoutException e) {
- throw new SAXException(e);
- }
- XMLUtils.endElement(ch, "coplet");
- }
- XMLUtils.endElement(ch, "coplets");
- } else {
- if ( StringUtils.isNotEmpty(copletId) ) {
- XMLUtils.startElement(ch, "coplets");
- final AttributesImpl a = new AttributesImpl();
- a.addCDATAAttribute("id", copletId);
- XMLUtils.startElement(ch, "coplet", a);
- } else if ( StringUtils.isNotEmpty(layoutId) ) {
- final AttributesImpl a = new AttributesImpl();
- a.addCDATAAttribute("id", layoutId);
- XMLUtils.startElement(ch, "layout", a);
- }
-
- // if no render parameter is specified we render the whole page or just the full screen coplet
- if ( portalLayout == null ) {
- // first check for a full screen layout
- portalLayout = LayoutFeatures.getFullScreenInfo(this.portalService);
- if ( portalLayout == null ) {
- portalLayout = profileManager.getLayout(null);
- }
- }
-
- try {
- final Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(portalLayout));
-
- portalLayoutRenderer.toSAX(portalLayout, this.portalService, ch);
- } catch (LayoutException e) {
- throw new SAXException(e);
- }
- if ( StringUtils.isNotEmpty(copletId) ) {
- XMLUtils.endElement(ch, "coplet");
- XMLUtils.endElement(ch, "coplets");
- } else if ( StringUtils.isNotEmpty(layoutId) ) {
- XMLUtils.endElement(ch, "layout");
- }
- }
-
- ch.endDocument();
- // although we should be the last in the queue,
- // let's invoke the next
- renderContext.invokeNext(ch, properties);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.PortalManager#register(org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect)
- */
- public void register(ResponseProcessorAspect aspect) {
- try {
- this.responseChain.addAspect(aspect, null, 0);
- } catch (PortalException pe) {
- final IllegalArgumentException e = new IllegalArgumentException("Unable to add portal manager aspects.");
- e.initCause(pe);
- throw e;
- }
- }
-
- /**
- * @see org.apache.cocoon.portal.services.PortalManager#register(org.apache.cocoon.portal.services.aspects.RequestProcessorAspect)
- */
- public void register(RequestProcessorAspect aspect) {
- try {
- this.responseChain.addAspect(aspect, null, 0);
- } catch (PortalException pe) {
- final IllegalArgumentException e = new IllegalArgumentException("Unable to add portal manager aspects.");
- e.initCause(pe);
- throw e;
- }
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.cocoon.ajax.AjaxHelper;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.portal.PortalException;
+import org.apache.cocoon.portal.layout.renderer.Renderer;
+import org.apache.cocoon.portal.om.CopletInstance;
+import org.apache.cocoon.portal.om.CopletInstanceFeatures;
+import org.apache.cocoon.portal.om.Layout;
+import org.apache.cocoon.portal.om.LayoutException;
+import org.apache.cocoon.portal.om.LayoutFeatures;
+import org.apache.cocoon.portal.profile.ProfileManager;
+import org.apache.cocoon.portal.services.PortalManager;
+import org.apache.cocoon.portal.services.aspects.RequestProcessorAspect;
+import org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext;
+import org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect;
+import org.apache.cocoon.portal.services.aspects.ResponseProcessorAspectContext;
+import org.apache.cocoon.portal.services.aspects.impl.support.RequestProcessorAspectContextImpl;
+import org.apache.cocoon.portal.services.aspects.impl.support.ResponseProcessorAspectContextImpl;
+import org.apache.cocoon.portal.services.aspects.support.AspectChain;
+import org.apache.cocoon.portal.util.AbstractBean;
+import org.apache.cocoon.xml.AttributesImpl;
+import org.apache.cocoon.xml.XMLUtils;
+import org.apache.commons.lang.StringUtils;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @version $Id$
+ */
+public class DefaultPortalManager
+ extends AbstractBean
+ implements PortalManager, RequestProcessorAspect, ResponseProcessorAspect {
+
+ /** The aspect chain for additional request processing. */
+ protected AspectChain requestChain;
+
+ /** The aspect chain for additional response processing. */
+ protected AspectChain responseChain;
+
+ /**
+ * Set the request aspect chain.
+ * @param a A chain.
+ */
+ public void setRequestAspectChain(AspectChain a) {
+ this.requestChain = a;
+ }
+
+ /**
+ * Set the response aspect chain.
+ * @param a A chain.
+ */
+ public void setResponseAspectChain(AspectChain a) {
+ this.responseChain = a;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.PortalManager#process()
+ */
+ public void process()
+ throws PortalException {
+ RequestProcessorAspectContextImpl aspectContext =
+ new RequestProcessorAspectContextImpl(this.portalService, this.requestChain);
+ aspectContext.invokeNext();
+ }
+
+ /**
+ * @see PortalManager#render(ContentHandler, Properties)
+ */
+ public void render(ContentHandler contentHandler, Properties properties)
+ throws SAXException {
+ ResponseProcessorAspectContextImpl aspectContext =
+ new ResponseProcessorAspectContextImpl(this.portalService, this.responseChain);
+ aspectContext.invokeNext(contentHandler, properties);
+ }
+
+ /**
+ * Initialize
+ */
+ public void init()
+ throws PortalException {
+ if ( this.requestChain == null ) {
+ this.requestChain = new AspectChain(RequestProcessorAspect.class);
+ }
+ this.requestChain.addAspect(this, null);
+ if ( this.responseChain == null ) {
+ this.responseChain = new AspectChain(ResponseProcessorAspect.class);
+ }
+ this.responseChain.addAspect(this, null);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.aspects.RequestProcessorAspect#process(org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext)
+ */
+ public void process(RequestProcessorAspectContext rpContext) {
+ // by defaut, we have nothing to do
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect#render(org.apache.cocoon.portal.services.aspects.ResponseProcessorAspectContext, org.xml.sax.ContentHandler, java.util.Properties)
+ */
+ public void render(ResponseProcessorAspectContext renderContext,
+ ContentHandler ch,
+ Properties properties)
+ throws SAXException {
+ final ProfileManager profileManager = this.portalService.getProfileManager();
+
+ final Request req = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
+ // check for render parameters
+ // if a parameter for a layout or a coplet is defined
+ // then only this coplet or layout object is rendered
+ final String copletId = (properties == null ? null : properties.getProperty(PortalManager.PROPERTY_RENDER_COPLET, null));
+ final String layoutId = (properties == null ? null : properties.getProperty(PortalManager.PROPERTY_RENDER_LAYOUT, null));
+ if ( StringUtils.isNotEmpty(copletId) && StringUtils.isNotEmpty(layoutId) ) {
+ throw new SAXException("Only one of the paramteters can be specified for rendering: coplet or layout.");
+ }
+ Layout portalLayout = null;
+
+ if ( StringUtils.isNotEmpty(copletId) ) {
+ final CopletInstance cid = profileManager.getCopletInstance(copletId);
+ if ( cid != null ) {
+ portalLayout = LayoutFeatures.searchLayout(this.portalService, cid.getId(), profileManager.getLayout(null));
+ if ( portalLayout == null) {
+ getLogger().error("No Layout to render for coplet instance with id: " + copletId);
+ return;
+ }
+ }
+ } else if ( StringUtils.isNotEmpty(layoutId) ) {
+ portalLayout = profileManager.getLayout(layoutId);
+ if ( portalLayout == null) {
+ getLogger().error("No Layout to render for layout instance with id: " + layoutId);
+ return;
+ }
+ }
+
+ ch.startDocument();
+
+ // If no parameter is specified test for ajax request which will
+ // only render the changed coplets
+ if ( portalLayout == null && AjaxHelper.isAjaxRequest(req) ) {
+ Layout rootLayout = profileManager.getLayout(null);
+ XMLUtils.startElement(ch, "coplets");
+ final List changed = CopletInstanceFeatures.getChangedCopletInstanceDataObjects(this.portalService);
+ final Iterator i = changed.iterator();
+ while ( i.hasNext() ) {
+ final CopletInstance current = (CopletInstance)i.next();
+ final AttributesImpl a = new AttributesImpl();
+ a.addCDATAAttribute("id", current.getId());
+ XMLUtils.startElement(ch, "coplet", a);
+ final Layout l = LayoutFeatures.searchLayout(this.portalService, current.getId(), rootLayout);
+ Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(l));
+ try {
+ portalLayoutRenderer.toSAX(l, this.portalService, ch);
+ } catch (LayoutException e) {
+ throw new SAXException(e);
+ }
+ XMLUtils.endElement(ch, "coplet");
+ }
+ XMLUtils.endElement(ch, "coplets");
+ } else {
+ if ( StringUtils.isNotEmpty(copletId) ) {
+ XMLUtils.startElement(ch, "coplets");
+ final AttributesImpl a = new AttributesImpl();
+ a.addCDATAAttribute("id", copletId);
+ XMLUtils.startElement(ch, "coplet", a);
+ } else if ( StringUtils.isNotEmpty(layoutId) ) {
+ final AttributesImpl a = new AttributesImpl();
+ a.addCDATAAttribute("id", layoutId);
+ XMLUtils.startElement(ch, "layout", a);
+ }
+
+ // if no render parameter is specified we render the whole page or just the full screen coplet
+ if ( portalLayout == null ) {
+ // first check for a full screen layout
+ portalLayout = LayoutFeatures.getFullScreenInfo(this.portalService);
+ if ( portalLayout == null ) {
+ portalLayout = profileManager.getLayout(null);
+ }
+ }
+
+ try {
+ final Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(portalLayout));
+
+ portalLayoutRenderer.toSAX(portalLayout, this.portalService, ch);
+ } catch (LayoutException e) {
+ throw new SAXException(e);
+ }
+ if ( StringUtils.isNotEmpty(copletId) ) {
+ XMLUtils.endElement(ch, "coplet");
+ XMLUtils.endElement(ch, "coplets");
+ } else if ( StringUtils.isNotEmpty(layoutId) ) {
+ XMLUtils.endElement(ch, "layout");
+ }
+ }
+
+ ch.endDocument();
+ // although we should be the last in the queue,
+ // let's invoke the next
+ renderContext.invokeNext(ch, properties);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.PortalManager#register(org.apache.cocoon.portal.services.aspects.ResponseProcessorAspect)
+ */
+ public void register(ResponseProcessorAspect aspect) {
+ try {
+ this.responseChain.addAspect(aspect, null, 0);
+ } catch (PortalException pe) {
+ final IllegalArgumentException e = new IllegalArgumentException("Unable to add portal manager aspects.");
+ e.initCause(pe);
+ throw e;
+ }
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.PortalManager#register(org.apache.cocoon.portal.services.aspects.RequestProcessorAspect)
+ */
+ public void register(RequestProcessorAspect aspect) {
+ try {
+ this.responseChain.addAspect(aspect, null, 0);
+ } catch (PortalException pe) {
+ final IllegalArgumentException e = new IllegalArgumentException("Unable to add portal manager aspects.");
+ e.initCause(pe);
+ throw e;
+ }
+ }
+}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/DefaultPortalManager.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java Mon Feb 26 06:16:59 2007
@@ -1,34 +1,34 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.portal.services.impl.links;
-
-/**
- *
- * @version $Id$
- */
-public final class ConstantParameterMatcher implements ParameterMatcher {
-
- protected final String name;
-
- public ConstantParameterMatcher(String value) {
- this.name = value;
- }
-
- public boolean match(String matchingName) {
- return this.name.equals(matchingName);
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl.links;
+
+/**
+ *
+ * @version $Id$
+ */
+public final class ConstantParameterMatcher implements ParameterMatcher {
+
+ protected final String name;
+
+ public ConstantParameterMatcher(String value) {
+ this.name = value;
+ }
+
+ public boolean match(String matchingName) {
+ return this.name.equals(matchingName);
+ }
}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ConstantParameterMatcher.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java Mon Feb 26 06:16:59 2007
@@ -1,379 +1,379 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.portal.services.impl.links;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Response;
-import org.apache.cocoon.portal.PortalRuntimeException;
-import org.apache.cocoon.portal.event.ComparableEvent;
-import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.event.EventConverter;
-import org.apache.cocoon.portal.event.EventManager;
-import org.apache.cocoon.portal.services.LinkService;
-import org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext;
-import org.apache.cocoon.portal.util.AbstractBean;
-
-/**
- * This is the default implementation of the {@link LinkService}.
- * In order to work properly this component has to be configured with the correct
- * ports.
- *
- * @version $Id$
- */
-public class DefaultLinkService
- extends AbstractBean
- implements LinkService {
-
- /** Default port used for http. */
- protected int defaultPort = 80;
-
- /** Default port used for https. */
- protected int defaultSecurePort = 443;
-
- /** List of matchers for internal parameters. */
- protected List internalParametersMatchers = new ArrayList();
-
- /** The name of the request parameter for events. */
- protected String requestParameterName = LinkService.DEFAULT_EVENT_REQUEST_PARAMETER_NAME;
-
- /**
- * Construct a new link service.
- */
- public DefaultLinkService() {
- this.setInternalParameters(LinkService.DEFAULT_INTERNAL_PARAMETERS);
- }
-
- /**
- * Set the default port for http.
- */
- public void setDefaultPort(int defaultPort) {
- this.defaultPort = defaultPort;
- }
-
- /**
- * Set the default port for https.
- */
- public void setDefaultSecurePort(int defaultSecurePort) {
- this.defaultSecurePort = defaultSecurePort;
- }
-
- /**
- * Set the request parameter name used for adding event information to the url.
- */
- public void setRequestParameterName(String requestParameterName) {
- this.requestParameterName = requestParameterName;
- }
-
- /**
- * Set the list of internal parameters.
- */
- public void setInternalParameters(List internalParams) {
- this.internalParametersMatchers.clear();
- if ( internalParams != null ) {
- final Iterator i = internalParams.iterator();
- while ( i.hasNext() ) {
- final String parameter = i.next().toString();
- if ( parameter.endsWith("*") ) {
- this.internalParametersMatchers.add(new PrefixParameterMatcher(parameter));
- } else {
- this.internalParametersMatchers.add(new ConstantParameterMatcher(parameter));
- }
- }
- }
- }
-
- /**
- * Return the current info for the request.
- * @return A LinkInfo object.
- */
- protected LinkInfo getInfo() {
- final Request request = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
- LinkInfo info = (LinkInfo)request.getAttribute(DefaultLinkService.class.getName());
- if ( info == null ) {
- info = (LinkInfo)request.getAttribute(DefaultLinkService.class.getName());
- if ( info == null ) {
- info = new LinkInfo(request, this.defaultPort, this.defaultSecurePort);
- request.setAttribute(DefaultLinkService.class.getName(), info);
- }
- }
- return info;
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#isSecure()
- */
- public boolean isSecure() {
- final Request request = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
- return request.isSecure();
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#encodeURL(String url)
- */
- public String encodeURL(String url) {
- final Response response = ObjectModelHelper.getResponse(this.portalService.getProcessInfoProvider().getObjectModel());
- return response.encodeURL(url);
- }
-
- /**
- * Add one event to the buffer
- * @return Returns true, if the link contains a parameter
- */
- protected boolean addEvent(StringBuffer buffer, Event event, boolean hasParams) {
- if ( hasParams ) {
- buffer.append('&');
- } else {
- buffer.append('?');
- }
- final String value = this.portalService.getEventConverter().encode(event);
- try {
- buffer.append(this.requestParameterName).append('=').append(URLEncoder.encode(value, "utf-8"));
- } catch (UnsupportedEncodingException uee) {
- // ignore this as utf-8 is always supported
- }
- return true;
- }
-
- protected boolean addParameter(StringBuffer buffer, String name, String value, boolean hasParams) {
- if ( hasParams ) {
- buffer.append('&');
- } else {
- buffer.append('?');
- }
- try {
- buffer.append(name).append('=').append(URLEncoder.encode(value, "utf-8"));
- } catch (UnsupportedEncodingException uee) {
- // ignore this as utf-8 is always supported
- }
- return true;
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event)
- */
- public String getLinkURI(Event event) {
- return this.getLinkURI(event, null);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event, Boolean)
- */
- public String getLinkURI(Event event, Boolean secure) {
- return this.getLinkURI(Collections.singletonList(event), secure);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(java.util.List)
- */
- public String getLinkURI(List events) {
- return this.getLinkURI(events, null);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(java.util.List)
- */
- public String getLinkURI(List events, Boolean secure) {
- if (events == null || events.size() == 0) {
- return this.getRefreshLinkURI(secure);
- }
- final LinkInfo info = this.getInfo();
- // let's collect all events
- final List allEvents = new ArrayList();
-
- // add comparable events
- if ( info.comparableEvents != null ) {
- final Iterator iter = info.comparableEvents.iterator();
- while (iter.hasNext()) {
- final ComparableEvent current = (ComparableEvent)iter.next();
-
- final Iterator eventIterator = events.iterator();
- boolean found = false;
- while (!found && eventIterator.hasNext()) {
- final Object inEvent = eventIterator.next();
- if (inEvent instanceof ComparableEvent
- && current.equalsEvent((ComparableEvent) inEvent)) {
- found = true;
- }
- }
- if ( !found ) {
- allEvents.add(current);
- }
- }
- }
-
- // add events
- if ( info.events != null ) {
- allEvents.addAll(info.events);
- }
-
- // now add supplied events and parameters
- List parameterDescriptions = null;
- final Iterator iter = events.iterator();
- while (iter.hasNext()) {
- final Object current = iter.next();
- if (current instanceof Event) {
- allEvents.add(current);
- } else if ( current instanceof ParameterDescription ) {
- if ( parameterDescriptions == null ) {
- parameterDescriptions = new ArrayList();
- }
- parameterDescriptions.add(current);
- } else {
- throw new PortalRuntimeException("Unknown object passed to create a link. Only events " +
- "and parameter descriptions are allowed. Unknown object: " + current);
- }
- }
-
- return this.createUrl(allEvents, parameterDescriptions, secure);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#addEventToLink(org.apache.cocoon.portal.event.Event)
- */
- public void addEventToLink(Event event) {
- final LinkInfo info = this.getInfo();
- info.addEvent(event);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#addParameterToLink(java.lang.String, java.lang.String)
- */
- public void addParameterToLink(String name, String value) {
- final LinkInfo info = this.getInfo();
- info.addParameter(name, value);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#addUniqueParameterToLink(java.lang.String, java.lang.String)
- */
- public void addUniqueParameterToLink(String name, String value) {
- final LinkInfo info = this.getInfo();
- info.deleteParameter(name);
- info.addParameter(name, value);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getRefreshLinkURI()
- */
- public String getRefreshLinkURI() {
- return this.getRefreshLinkURI(null);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#getRefreshLinkURI(java.lang.Boolean)
- */
- public String getRefreshLinkURI(Boolean secure) {
- final LinkInfo info = this.getInfo();
-
- // let's collect all events
- final List allEvents = new ArrayList();
- if ( info.comparableEvents != null ) {
- allEvents.addAll(info.comparableEvents);
- }
- if ( info.events != null ) {
- allEvents.addAll(info.events);
- }
- return this.createUrl(allEvents, null, secure);
- }
-
- /**
- * @see org.apache.cocoon.portal.services.LinkService#isInternalParameterName(java.lang.String)
- */
- public boolean isInternalParameterName(String name) {
- final Iterator i = this.internalParametersMatchers.iterator();
- while ( i.hasNext() ) {
- final ParameterMatcher current = (ParameterMatcher)i.next();
- if ( current.match(name) ) {
- return true;
- }
- }
- return false;
- }
-
- protected String createUrl(List events, List parameterDescriptions, Boolean secure) {
- final LinkInfo info = this.getInfo();
-
- final StringBuffer buffer = new StringBuffer(info.getBase(secure));
- boolean hasParams = buffer.indexOf("?") != -1;
-
- // add events
- final Iterator iter = events.iterator();
- while (iter.hasNext()) {
- final Event current = (Event)iter.next();
- hasParams = this.addEvent(buffer, current, hasParams);
- }
-
- // add parameters
- if ( info.parameters != null ) {
- final Iterator pIter = info.parameters.entrySet().iterator();
- while ( pIter.hasNext() ) {
- final Map.Entry current = (Map.Entry)pIter.next();
- final String parameterName = current.getKey().toString();
- final String [] values = (String[])current.getValue();
- for(int i=0; i<values.length; i++) {
- hasParams = this.addParameter(buffer, parameterName, values[i], hasParams);
- }
- }
- }
- // add optional parameter descriptions
- if ( parameterDescriptions != null ) {
- final Iterator dIter = parameterDescriptions.iterator();
- while ( dIter.hasNext() ) {
- final ParameterDescription desc = (ParameterDescription)dIter.next();
- if (hasParams) {
- buffer.append('&');
- } else {
- buffer.append('?');
- hasParams = true;
- }
- buffer.append(desc.parameters);
- }
- }
-
- return buffer.toString();
- }
-
- /**
- * @see org.apache.cocoon.portal.services.aspects.RequestProcessorAspect#process(org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext)
- */
- public void process(RequestProcessorAspectContext context) {
- final Request request = ObjectModelHelper.getRequest(context.getPortalService().getProcessInfoProvider().getObjectModel());
- final EventManager publisher = context.getPortalService().getEventManager();
- final EventConverter converter = context.getPortalService().getEventConverter();
-
- final String[] values = request.getParameterValues( this.requestParameterName );
- if ( values != null ) {
- for(int i=0; i<values.length; i++) {
- final String current = values[i];
- final Event e = converter.decode(current);
- if ( null != e) {
- publisher.send(e);
- }
- }
- }
- context.invokeNext();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl.links;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.Response;
+import org.apache.cocoon.portal.PortalRuntimeException;
+import org.apache.cocoon.portal.event.ComparableEvent;
+import org.apache.cocoon.portal.event.Event;
+import org.apache.cocoon.portal.event.EventConverter;
+import org.apache.cocoon.portal.event.EventManager;
+import org.apache.cocoon.portal.services.LinkService;
+import org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext;
+import org.apache.cocoon.portal.util.AbstractBean;
+
+/**
+ * This is the default implementation of the {@link LinkService}.
+ * In order to work properly this component has to be configured with the correct
+ * ports.
+ *
+ * @version $Id$
+ */
+public class DefaultLinkService
+ extends AbstractBean
+ implements LinkService {
+
+ /** Default port used for http. */
+ protected int defaultPort = 80;
+
+ /** Default port used for https. */
+ protected int defaultSecurePort = 443;
+
+ /** List of matchers for internal parameters. */
+ protected List internalParametersMatchers = new ArrayList();
+
+ /** The name of the request parameter for events. */
+ protected String requestParameterName = LinkService.DEFAULT_EVENT_REQUEST_PARAMETER_NAME;
+
+ /**
+ * Construct a new link service.
+ */
+ public DefaultLinkService() {
+ this.setInternalParameters(LinkService.DEFAULT_INTERNAL_PARAMETERS);
+ }
+
+ /**
+ * Set the default port for http.
+ */
+ public void setDefaultPort(int defaultPort) {
+ this.defaultPort = defaultPort;
+ }
+
+ /**
+ * Set the default port for https.
+ */
+ public void setDefaultSecurePort(int defaultSecurePort) {
+ this.defaultSecurePort = defaultSecurePort;
+ }
+
+ /**
+ * Set the request parameter name used for adding event information to the url.
+ */
+ public void setRequestParameterName(String requestParameterName) {
+ this.requestParameterName = requestParameterName;
+ }
+
+ /**
+ * Set the list of internal parameters.
+ */
+ public void setInternalParameters(List internalParams) {
+ this.internalParametersMatchers.clear();
+ if ( internalParams != null ) {
+ final Iterator i = internalParams.iterator();
+ while ( i.hasNext() ) {
+ final String parameter = i.next().toString();
+ if ( parameter.endsWith("*") ) {
+ this.internalParametersMatchers.add(new PrefixParameterMatcher(parameter));
+ } else {
+ this.internalParametersMatchers.add(new ConstantParameterMatcher(parameter));
+ }
+ }
+ }
+ }
+
+ /**
+ * Return the current info for the request.
+ * @return A LinkInfo object.
+ */
+ protected LinkInfo getInfo() {
+ final Request request = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
+ LinkInfo info = (LinkInfo)request.getAttribute(DefaultLinkService.class.getName());
+ if ( info == null ) {
+ info = (LinkInfo)request.getAttribute(DefaultLinkService.class.getName());
+ if ( info == null ) {
+ info = new LinkInfo(request, this.defaultPort, this.defaultSecurePort);
+ request.setAttribute(DefaultLinkService.class.getName(), info);
+ }
+ }
+ return info;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#isSecure()
+ */
+ public boolean isSecure() {
+ final Request request = ObjectModelHelper.getRequest(this.portalService.getProcessInfoProvider().getObjectModel());
+ return request.isSecure();
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#encodeURL(String url)
+ */
+ public String encodeURL(String url) {
+ final Response response = ObjectModelHelper.getResponse(this.portalService.getProcessInfoProvider().getObjectModel());
+ return response.encodeURL(url);
+ }
+
+ /**
+ * Add one event to the buffer
+ * @return Returns true, if the link contains a parameter
+ */
+ protected boolean addEvent(StringBuffer buffer, Event event, boolean hasParams) {
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ }
+ final String value = this.portalService.getEventConverter().encode(event);
+ try {
+ buffer.append(this.requestParameterName).append('=').append(URLEncoder.encode(value, "utf-8"));
+ } catch (UnsupportedEncodingException uee) {
+ // ignore this as utf-8 is always supported
+ }
+ return true;
+ }
+
+ protected boolean addParameter(StringBuffer buffer, String name, String value, boolean hasParams) {
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ }
+ try {
+ buffer.append(name).append('=').append(URLEncoder.encode(value, "utf-8"));
+ } catch (UnsupportedEncodingException uee) {
+ // ignore this as utf-8 is always supported
+ }
+ return true;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event)
+ */
+ public String getLinkURI(Event event) {
+ return this.getLinkURI(event, null);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(org.apache.cocoon.portal.event.Event, Boolean)
+ */
+ public String getLinkURI(Event event, Boolean secure) {
+ return this.getLinkURI(Collections.singletonList(event), secure);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(java.util.List)
+ */
+ public String getLinkURI(List events) {
+ return this.getLinkURI(events, null);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getLinkURI(java.util.List)
+ */
+ public String getLinkURI(List events, Boolean secure) {
+ if (events == null || events.size() == 0) {
+ return this.getRefreshLinkURI(secure);
+ }
+ final LinkInfo info = this.getInfo();
+ // let's collect all events
+ final List allEvents = new ArrayList();
+
+ // add comparable events
+ if ( info.comparableEvents != null ) {
+ final Iterator iter = info.comparableEvents.iterator();
+ while (iter.hasNext()) {
+ final ComparableEvent current = (ComparableEvent)iter.next();
+
+ final Iterator eventIterator = events.iterator();
+ boolean found = false;
+ while (!found && eventIterator.hasNext()) {
+ final Object inEvent = eventIterator.next();
+ if (inEvent instanceof ComparableEvent
+ && current.equalsEvent((ComparableEvent) inEvent)) {
+ found = true;
+ }
+ }
+ if ( !found ) {
+ allEvents.add(current);
+ }
+ }
+ }
+
+ // add events
+ if ( info.events != null ) {
+ allEvents.addAll(info.events);
+ }
+
+ // now add supplied events and parameters
+ List parameterDescriptions = null;
+ final Iterator iter = events.iterator();
+ while (iter.hasNext()) {
+ final Object current = iter.next();
+ if (current instanceof Event) {
+ allEvents.add(current);
+ } else if ( current instanceof ParameterDescription ) {
+ if ( parameterDescriptions == null ) {
+ parameterDescriptions = new ArrayList();
+ }
+ parameterDescriptions.add(current);
+ } else {
+ throw new PortalRuntimeException("Unknown object passed to create a link. Only events " +
+ "and parameter descriptions are allowed. Unknown object: " + current);
+ }
+ }
+
+ return this.createUrl(allEvents, parameterDescriptions, secure);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#addEventToLink(org.apache.cocoon.portal.event.Event)
+ */
+ public void addEventToLink(Event event) {
+ final LinkInfo info = this.getInfo();
+ info.addEvent(event);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#addParameterToLink(java.lang.String, java.lang.String)
+ */
+ public void addParameterToLink(String name, String value) {
+ final LinkInfo info = this.getInfo();
+ info.addParameter(name, value);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#addUniqueParameterToLink(java.lang.String, java.lang.String)
+ */
+ public void addUniqueParameterToLink(String name, String value) {
+ final LinkInfo info = this.getInfo();
+ info.deleteParameter(name);
+ info.addParameter(name, value);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getRefreshLinkURI()
+ */
+ public String getRefreshLinkURI() {
+ return this.getRefreshLinkURI(null);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#getRefreshLinkURI(java.lang.Boolean)
+ */
+ public String getRefreshLinkURI(Boolean secure) {
+ final LinkInfo info = this.getInfo();
+
+ // let's collect all events
+ final List allEvents = new ArrayList();
+ if ( info.comparableEvents != null ) {
+ allEvents.addAll(info.comparableEvents);
+ }
+ if ( info.events != null ) {
+ allEvents.addAll(info.events);
+ }
+ return this.createUrl(allEvents, null, secure);
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.LinkService#isInternalParameterName(java.lang.String)
+ */
+ public boolean isInternalParameterName(String name) {
+ final Iterator i = this.internalParametersMatchers.iterator();
+ while ( i.hasNext() ) {
+ final ParameterMatcher current = (ParameterMatcher)i.next();
+ if ( current.match(name) ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected String createUrl(List events, List parameterDescriptions, Boolean secure) {
+ final LinkInfo info = this.getInfo();
+
+ final StringBuffer buffer = new StringBuffer(info.getBase(secure));
+ boolean hasParams = buffer.indexOf("?") != -1;
+
+ // add events
+ final Iterator iter = events.iterator();
+ while (iter.hasNext()) {
+ final Event current = (Event)iter.next();
+ hasParams = this.addEvent(buffer, current, hasParams);
+ }
+
+ // add parameters
+ if ( info.parameters != null ) {
+ final Iterator pIter = info.parameters.entrySet().iterator();
+ while ( pIter.hasNext() ) {
+ final Map.Entry current = (Map.Entry)pIter.next();
+ final String parameterName = current.getKey().toString();
+ final String [] values = (String[])current.getValue();
+ for(int i=0; i<values.length; i++) {
+ hasParams = this.addParameter(buffer, parameterName, values[i], hasParams);
+ }
+ }
+ }
+ // add optional parameter descriptions
+ if ( parameterDescriptions != null ) {
+ final Iterator dIter = parameterDescriptions.iterator();
+ while ( dIter.hasNext() ) {
+ final ParameterDescription desc = (ParameterDescription)dIter.next();
+ if (hasParams) {
+ buffer.append('&');
+ } else {
+ buffer.append('?');
+ hasParams = true;
+ }
+ buffer.append(desc.parameters);
+ }
+ }
+
+ return buffer.toString();
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.services.aspects.RequestProcessorAspect#process(org.apache.cocoon.portal.services.aspects.RequestProcessorAspectContext)
+ */
+ public void process(RequestProcessorAspectContext context) {
+ final Request request = ObjectModelHelper.getRequest(context.getPortalService().getProcessInfoProvider().getObjectModel());
+ final EventManager publisher = context.getPortalService().getEventManager();
+ final EventConverter converter = context.getPortalService().getEventConverter();
+
+ final String[] values = request.getParameterValues( this.requestParameterName );
+ if ( values != null ) {
+ for(int i=0; i<values.length; i++) {
+ final String current = values[i];
+ final Event e = converter.decode(current);
+ if ( null != e) {
+ publisher.send(e);
+ }
+ }
+ }
+ context.invokeNext();
+ }
+}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/DefaultLinkService.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java Mon Feb 26 06:16:59 2007
@@ -1,155 +1,155 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.portal.services.impl.links;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.portal.event.ComparableEvent;
-import org.apache.cocoon.portal.event.Event;
-
-/**
- * Helper class containing the information about common parts for each link
- * that will be generated in the portal page.
- *
- * @version $Id: LinkInfo.java 449173 2006-09-23 05:52:37Z crossley $
- */
-public class LinkInfo {
-
- /** Link base contains the base url for the http protocol. */
- protected final String httpLinkBase;
- protected final String secureLinkBase;
- protected List comparableEvents;
- protected List events;
- protected Map parameters;
-
- /** Is the page called using https? */
- protected final boolean isSecure;
-
- public LinkInfo(Request request, int defaultPort, int defaultSecurePort) {
- this.isSecure = request.getScheme().equals("https");
- // create relative url
- String relativeURI = request.getSitemapURI();
- final int pos = relativeURI.lastIndexOf('/');
- if ( pos != -1 ) {
- relativeURI = relativeURI.substring(pos+1);
- }
-
- // do we need a protocol shift for link base?
- if ( this.isSecure ) {
- this.httpLinkBase = this.getAbsoluteUrl(request, false, defaultPort);
- this.secureLinkBase = relativeURI;
- } else {
- this.httpLinkBase = relativeURI;
- this.secureLinkBase = this.getAbsoluteUrl(request, true, defaultSecurePort);
- }
- }
-
- protected String getAbsoluteUrl(Request request, boolean useSecure, int port) {
- final StringBuffer buffer = new StringBuffer();
- if ( useSecure ) {
- buffer.append("https://");
- } else {
- buffer.append("http://");
- }
- buffer.append(request.getServerName());
- if ( ( useSecure && port != 443)
- || ( !useSecure && port != 80 ) ) {
- buffer.append(':');
- buffer.append(port);
- }
- if ( request.getContextPath().length() > 0 ) {
- buffer.append(request.getContextPath());
- }
- buffer.append('/');
- if ( request.getSitemapURIPrefix().length() > 0 ) {
- buffer.append(request.getSitemapURIPrefix());
- }
- buffer.append(request.getSitemapURI());
- return buffer.toString();
- }
-
- public String getBase(Boolean secure) {
- // if no information is provided, we stay with the same protocol
- if ( (secure == null && this.isSecure ) || (secure != null && secure.booleanValue() )) {
- return this.secureLinkBase;
- }
- return this.httpLinkBase;
- }
-
- /**
- * Delete a parameter.
- */
- public void deleteParameter(String parameterName) {
- if ( this.parameters != null ) {
- this.parameters.remove(parameterName);
- }
- }
-
- /**
- * Add a parameter to each link in this page.
- */
- public void addParameter(String name, String value) {
- if ( this.parameters == null ) {
- this.parameters = new HashMap();
- }
- // do we already have a value for this parameter?
- final String[] previousValues = (String[]) this.parameters.get(name);
- if ( previousValues == null ) {
- this.parameters.put(name, new String[] {value});
- } else {
- final String[] newValues = new String[previousValues.length+1];
- System.arraycopy(previousValues, 0, newValues, 0, previousValues.length);
- newValues[previousValues.length] = value;
- this.parameters.put(name, newValues);
- }
- }
-
- /**
- * Add an event to each link in this page.
- */
- public void addEvent(Event event) {
- if ( event != null ) {
- if (event instanceof ComparableEvent) {
- if ( this.comparableEvents != null ) {
- // search if we already have an event for this!
- final Iterator iter = this.comparableEvents.iterator();
- boolean found = false;
- while (!found && iter.hasNext()) {
- final ComparableEvent e = (ComparableEvent)iter.next();
- if (e.equalsEvent((ComparableEvent) event)) {
- found = true;
- iter.remove();
- }
- }
- } else {
- this.comparableEvents = new ArrayList();
- }
- this.comparableEvents.add(event);
- } else {
- if ( this.events == null ) {
- this.events = new ArrayList();
- }
- this.events.add(event);
- }
- }
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl.links;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.portal.event.ComparableEvent;
+import org.apache.cocoon.portal.event.Event;
+
+/**
+ * Helper class containing the information about common parts for each link
+ * that will be generated in the portal page.
+ *
+ * @version $Id$
+ */
+public class LinkInfo {
+
+ /** Link base contains the base url for the http protocol. */
+ protected final String httpLinkBase;
+ protected final String secureLinkBase;
+ protected List comparableEvents;
+ protected List events;
+ protected Map parameters;
+
+ /** Is the page called using https? */
+ protected final boolean isSecure;
+
+ public LinkInfo(Request request, int defaultPort, int defaultSecurePort) {
+ this.isSecure = request.getScheme().equals("https");
+ // create relative url
+ String relativeURI = request.getSitemapURI();
+ final int pos = relativeURI.lastIndexOf('/');
+ if ( pos != -1 ) {
+ relativeURI = relativeURI.substring(pos+1);
+ }
+
+ // do we need a protocol shift for link base?
+ if ( this.isSecure ) {
+ this.httpLinkBase = this.getAbsoluteUrl(request, false, defaultPort);
+ this.secureLinkBase = relativeURI;
+ } else {
+ this.httpLinkBase = relativeURI;
+ this.secureLinkBase = this.getAbsoluteUrl(request, true, defaultSecurePort);
+ }
+ }
+
+ protected String getAbsoluteUrl(Request request, boolean useSecure, int port) {
+ final StringBuffer buffer = new StringBuffer();
+ if ( useSecure ) {
+ buffer.append("https://");
+ } else {
+ buffer.append("http://");
+ }
+ buffer.append(request.getServerName());
+ if ( ( useSecure && port != 443)
+ || ( !useSecure && port != 80 ) ) {
+ buffer.append(':');
+ buffer.append(port);
+ }
+ if ( request.getContextPath().length() > 0 ) {
+ buffer.append(request.getContextPath());
+ }
+ buffer.append('/');
+ if ( request.getSitemapURIPrefix().length() > 0 ) {
+ buffer.append(request.getSitemapURIPrefix());
+ }
+ buffer.append(request.getSitemapURI());
+ return buffer.toString();
+ }
+
+ public String getBase(Boolean secure) {
+ // if no information is provided, we stay with the same protocol
+ if ( (secure == null && this.isSecure ) || (secure != null && secure.booleanValue() )) {
+ return this.secureLinkBase;
+ }
+ return this.httpLinkBase;
+ }
+
+ /**
+ * Delete a parameter.
+ */
+ public void deleteParameter(String parameterName) {
+ if ( this.parameters != null ) {
+ this.parameters.remove(parameterName);
+ }
+ }
+
+ /**
+ * Add a parameter to each link in this page.
+ */
+ public void addParameter(String name, String value) {
+ if ( this.parameters == null ) {
+ this.parameters = new HashMap();
+ }
+ // do we already have a value for this parameter?
+ final String[] previousValues = (String[]) this.parameters.get(name);
+ if ( previousValues == null ) {
+ this.parameters.put(name, new String[] {value});
+ } else {
+ final String[] newValues = new String[previousValues.length+1];
+ System.arraycopy(previousValues, 0, newValues, 0, previousValues.length);
+ newValues[previousValues.length] = value;
+ this.parameters.put(name, newValues);
+ }
+ }
+
+ /**
+ * Add an event to each link in this page.
+ */
+ public void addEvent(Event event) {
+ if ( event != null ) {
+ if (event instanceof ComparableEvent) {
+ if ( this.comparableEvents != null ) {
+ // search if we already have an event for this!
+ final Iterator iter = this.comparableEvents.iterator();
+ boolean found = false;
+ while (!found && iter.hasNext()) {
+ final ComparableEvent e = (ComparableEvent)iter.next();
+ if (e.equalsEvent((ComparableEvent) event)) {
+ found = true;
+ iter.remove();
+ }
+ }
+ } else {
+ this.comparableEvents = new ArrayList();
+ }
+ this.comparableEvents.add(event);
+ } else {
+ if ( this.events == null ) {
+ this.events = new ArrayList();
+ }
+ this.events.add(event);
+ }
+ }
+ }
}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/LinkInfo.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java?view=diff&rev=511812&r1=511811&r2=511812
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java Mon Feb 26 06:16:59 2007
@@ -1,27 +1,27 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cocoon.portal.services.impl.links;
-
-/**
- *
- * @version $Id$
- */
-public interface ParameterMatcher {
-
- boolean match(String name);
-
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.services.impl.links;
+
+/**
+ *
+ * @version $Id$
+ */
+public interface ParameterMatcher {
+
+ boolean match(String name);
+
}
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/services/impl/links/ParameterMatcher.java
------------------------------------------------------------------------------
svn:keywords = Id