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/11/27 23:40:22 UTC

svn commit: r598794 - in /cocoon/trunk/blocks/cocoon-portal: cocoon-portal-api/src/main/java/org/apache/cocoon/portal/ cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/ cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/ cocoon-porta...

Author: cziegeler
Date: Tue Nov 27 14:40:20 2007
New Revision: 598794

URL: http://svn.apache.org/viewvc?rev=598794&view=rev
Log:
Create new spi interface to decouple portal implementation from cocoon and continue fixing stuff.

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/RequestContext.java
      - copied, changed from r598782, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/RequestContext.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java   (with props)
Removed:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/RequestContext.java
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/coplet/adapter/impl/URICopletAdapter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/InformationProviderServiceImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortalContextProviderImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/resources/META-INF/cocoon/spring/cocoon-portal-sitemap-components.xml

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/RequestContext.java (from r598782, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/RequestContext.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/RequestContext.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/RequestContext.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/RequestContext.java&r1=598782&r2=598794&rev=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/RequestContext.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/RequestContext.java Tue Nov 27 14:40:20 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.cocoon.portal;
 
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -37,4 +38,6 @@
       * @return true if this is an Ajax request
       */
      boolean isAjaxRequest();
+
+     ServletContext getServletContext();
 }

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java?rev=598794&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java Tue Nov 27 14:40:20 2007
@@ -0,0 +1,29 @@
+/*
+ * 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.spi;
+
+import org.apache.cocoon.portal.RequestContext;
+
+/**
+ * This service provides the current request context.
+ *
+ * @version $Id$
+ */
+public interface RequestContextProvider {
+
+    RequestContext getCurrentRequestContext();
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-api/src/main/java/org/apache/cocoon/portal/spi/RequestContextProvider.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/coplet/adapter/impl/URICopletAdapter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/coplet/adapter/impl/URICopletAdapter.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/coplet/adapter/impl/URICopletAdapter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/coplet/adapter/impl/URICopletAdapter.java Tue Nov 27 14:40:20 2007
@@ -29,13 +29,16 @@
 import org.xml.sax.SAXException;
 
 /**
- * This is the adapter to use pipelines as coplets.
+ * This is the adapter to use uris through the java.net.* classes as coplets.
  *
+ * TODO - We should provide a configuration option to directly stream the output
+ *        into the resulting output stream like the portlet adapter does.
  * @version $Id$
  */
 public class URICopletAdapter
     extends AbstractCopletAdapter {
 
+    /** The parser for parsing the output and streaming it into the pipeline. */
     protected SAXParser parser;
 
     public void setParser(final SAXParser p) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalServiceImpl.java Tue Nov 27 14:40:20 2007
@@ -24,8 +24,6 @@
 import java.util.Map;
 
 import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.avalon.framework.activity.Disposable;
 import org.apache.avalon.framework.configuration.Configurable;
@@ -35,7 +33,6 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.ajax.AjaxHelper;
 import org.apache.cocoon.portal.PortalRuntimeException;
 import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.RequestContext;
@@ -52,7 +49,7 @@
 import org.apache.cocoon.portal.services.UserService;
 import org.apache.cocoon.portal.services.VariableResolver;
 import org.apache.cocoon.portal.services.VariableResolver.CompiledExpression;
-import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.portal.spi.RequestContextProvider;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceResolver;
@@ -116,20 +113,20 @@
     /** The portal manager. */
     protected PortalManager portalManager;
 
-    /** The process info provider. */
-    protected ProcessInfoProvider processInfoProvider;
-
     /** The user service. */
     protected UserService userService;
 
+    /** The request context provider. */
+    protected RequestContextProvider requestContextProvider;
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
     public void service(ServiceManager serviceManager) throws ServiceException {
         this.manager = serviceManager;
-        this.processInfoProvider = (ProcessInfoProvider)this.manager.lookup(ProcessInfoProvider.ROLE);
         this.renderers = (Map)this.manager.lookup(Renderer.class.getName()+"Map");
         this.copletAdapters = (Map)this.manager.lookup(CopletAdapter.class.getName()+"Map");
+        this.requestContextProvider = (RequestContextProvider)this.manager.lookup(RequestContextProvider.class.getName());
     }
 
     /**
@@ -169,10 +166,10 @@
             this.eventManager = null;
             this.manager.release(this.portalManager);
             this.portalManager = null;
-            this.manager.release(this.processInfoProvider);
-            this.processInfoProvider = null;
             this.manager.release(this.userService);
             this.userService = null;
+            this.manager.release(this.requestContextProvider);
+            this.requestContextProvider = null;
             this.manager = null;
         }
     }
@@ -405,11 +402,10 @@
     }
 
     /**
-     * TODO - Remove dependency on ProcessInfoProvider!
      * @see org.apache.cocoon.portal.PortalService#getRequestContext()
      */
     public RequestContext getRequestContext() {
-        return new RequestContextImpl(this.processInfoProvider);
+        return this.requestContextProvider.getCurrentRequestContext();
     }
 
     /**
@@ -441,37 +437,6 @@
 
         public String resolve() {
             return this.expression;
-        }
-
-    }
-    public static final class RequestContextImpl implements RequestContext {
-
-        protected final ProcessInfoProvider provider;
-
-        public RequestContextImpl(ProcessInfoProvider prov) {
-            this.provider = prov;
-        }
-
-        /**
-         * @see org.apache.cocoon.portal.RequestContext#getRequest()
-         */
-        public HttpServletRequest getRequest() {
-            return this.provider.getRequest();
-        }
-
-        /**
-         * @see org.apache.cocoon.portal.RequestContext#getResponse()
-         */
-        public HttpServletResponse getResponse() {
-            return this.provider.getResponse();
-        }
-
-        /**
-         * @see org.apache.cocoon.portal.RequestContext#isAjaxRequest()
-         */
-        public boolean isAjaxRequest() {
-            final HttpServletRequest req = this.getRequest();
-            return req.getParameter(AjaxHelper.AJAX_REQUEST_PARAMETER) != null;
         }
 
     }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/InformationProviderServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/InformationProviderServiceImpl.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/InformationProviderServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/InformationProviderServiceImpl.java Tue Nov 27 14:40:20 2007
@@ -58,8 +58,8 @@
      */
     public StaticInformationProvider getStaticProvider() {
         if ( this.staticProvider == null ) {
-            this.staticProvider = new StaticInformationProviderImpl(this.getPortalContextProvider(), 
-                    (PortletDefinitionRegistry)this.portletContainerEnvironment.getContainerService(PortletDefinitionRegistry.class));            
+            this.staticProvider = new StaticInformationProviderImpl(this.getPortalContextProvider(),
+                    (PortletDefinitionRegistry)this.portletContainerEnvironment.getContainerService(PortletDefinitionRegistry.class));
         }
         return this.staticProvider;
     }
@@ -86,8 +86,8 @@
      */
     protected PortalContextProviderImpl getPortalContextProvider() {
         if ( this.provider == null ) {
-            this.provider = new PortalContextProviderImpl(this.portalService.getProcessInfoProvider().getObjectModel());
+            this.provider = new PortalContextProviderImpl(this.portalService.getRequestContext());
         }
-        return this.provider;        
+        return this.provider;
     }
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortalContextProviderImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortalContextProviderImpl.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortalContextProviderImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortalContextProviderImpl.java Tue Nov 27 14:40:20 2007
@@ -18,15 +18,14 @@
 
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Map;
 import java.util.Vector;
 
 import javax.portlet.PortletMode;
 import javax.portlet.WindowState;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.cocoon.Constants;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.portal.RequestContext;
 import org.apache.pluto.services.information.PortalContextProvider;
 
 /**
@@ -34,7 +33,7 @@
  *
  * @version $Id$
  */
-public class PortalContextProviderImpl 
+public class PortalContextProviderImpl
 implements PortalContextProvider {
 
     /** Portal information */
@@ -64,15 +63,15 @@
     /**
      * Constructor
      */
-    public PortalContextProviderImpl(Map objectModel) {        
-        // these are the minimum modes that the portal needs to support        
+    public PortalContextProviderImpl(RequestContext context) {
+        // these are the minimum modes that the portal needs to support
         this.modes = this.getDefaultModes();
-        // these are the minimum states that the portal needs to support        
-        this.states = this.getDefaultStates(); 
-        // set info       
+        // these are the minimum states that the portal needs to support
+        this.states = this.getDefaultStates();
+        // set info
         this.info = "Apache Cocoon/" + Constants.VERSION;
         this.properties = new HashMap();
-        this.init(objectModel);
+        this.init(context);
     }
 
     /**
@@ -144,8 +143,8 @@
     /**
      * Initialize some infos.
      */
-    protected void init(Map objectModel) {
-        final Request request = ObjectModelHelper.getRequest(objectModel);
+    protected void init(final RequestContext requestContext) {
+        final HttpServletRequest request = requestContext.getRequest();
         final String hostName   = request.getServerName();
         final String contextRoot = request.getContextPath();
         final int hostPortHTTP  = request.getServerPort();

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java Tue Nov 27 14:40:20 2007
@@ -56,7 +56,7 @@
  */
 public class TestProfileManager extends GroupBasedProfileManager {
 
-    protected ProfileHolder loadProfile() 
+    protected ProfileHolder loadProfile()
     throws ProfileException {
         final PortalUser user = this.portalService.getUserService().getUser();
         if ( user.getUserName().equals("test") ) {
@@ -65,7 +65,7 @@
                 // display the portlets specified with the parameter. Otherwise
                 // we show all portlets
                 final List portletNames = new ArrayList();
-                final HttpServletRequest r = this.portalService.getProcessInfoProvider().getRequest();
+                final HttpServletRequest r = this.portalService.getRequestContext().getRequest();
                 final String[] values = r.getParameterValues("portletName");
                 if ( values != null && values.length > 0 ) {
                     for(int i=0; i<values.length; i++) {
@@ -73,14 +73,14 @@
                     }
                 }
                 final ProfileHolder profile = new ProfileHolder();
-    
+
                 // first "load" the global coplet types
                 profile.setCopletTypes( this.getGlobalCopletTypes() );
                 profile.setCopletDefinitions( this.getGlobalCopletDefinitions( user, profile ) );
-    
+
                 // create root layout
                 CompositeLayout rootLayout = new CompositeLayout("root", "row");
-    
+
                 // create coplet instances and layouts
                 final List instances = new ArrayList();
                 final Iterator i = this.deployedCopletDefinitions.values().iterator();
@@ -103,7 +103,7 @@
                 }
                 profile.setCopletInstances(this.processCopletInstances(profile, instances));
                 profile.setRootLayout(this.processLayout(profile, rootLayout));
-    
+
                 this.storeUserProfile(profile);
                 return profile;
             } catch (ProfileException e) {
@@ -124,7 +124,7 @@
         if ( event instanceof UserIsAccessingEvent ) {
             if ( "test".equals(event.getPortalUser().getUserName()) ) {
                 final List portletNames = new ArrayList();
-                final HttpServletRequest r = this.portalService.getProcessInfoProvider().getRequest();
+                final HttpServletRequest r = this.portalService.getRequestContext().getRequest();
                 final String[] values = r.getParameterValues("portletName");
                 if ( values != null && values.length > 0 ) {
                     for(int i=0; i<values.length; i++) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletDefinitionRegistryImpl.java Tue Nov 27 14:40:20 2007
@@ -66,7 +66,7 @@
  *
  * @version $Id$
  */
-public class PortletDefinitionRegistryImpl 
+public class PortletDefinitionRegistryImpl
     extends AbstractComponent
     implements PortletDefinitionRegistry, Receiver, Parameterizable, Runnable {
 
@@ -80,7 +80,7 @@
     /** The mapping */
     public static final String PORTLET_MAPPING = "resource://org/apache/cocoon/portal/pluto/om/portletdefinitionmapping.xml";
 
-    /** The mapping */    
+    /** The mapping */
     public static final String WEBXML_MAPPING = "resource://org/apache/cocoon/portal/pluto/om/servletdefinitionmapping.xml";
 
     /** The portlet application entity list */
@@ -137,7 +137,7 @@
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
-    public void service(ServiceManager serviceManager) 
+    public void service(ServiceManager serviceManager)
     throws ServiceException {
         super.service(serviceManager);
         this.entityResolver = (EntityResolver) this.manager.lookup(EntityResolver.ROLE);
@@ -182,7 +182,7 @@
         }
         super.initialize();
 
-        this.servletContext = this.portalService.getProcessInfoProvider().getServletContext();
+        this.servletContext = this.portalService.getRequestContext().getServletContext();
 
         // get our context path
         String baseWMDir = this.servletContext.getRealPath("");
@@ -250,7 +250,7 @@
             }
         } finally {
             this.manager.release(resolver);
-        } 
+        }
 
         // now load existing webapps/portlets
         if ( this.scanOnStartup ) {
@@ -273,7 +273,7 @@
         try {
             if ( this.webAppDir == null ) {
                 if (this.getLogger().isWarnEnabled()) {
-                    this.getLogger().warn("Only local portlets are supported when deployed as a war " 
+                    this.getLogger().warn("Only local portlets are supported when deployed as a war "
                                         + "and 'webapp-directory' is not configured.");
                 }
                 this.contextName = "local";
@@ -300,7 +300,7 @@
         return (PortletDefinition)portletsKeyObjectId.get(id);
     }
 
-    protected void scanWebapps() 
+    protected void scanWebapps()
     throws Exception {
         File f = new File(this.webAppDir);
         String[] entries = f.list();
@@ -344,7 +344,7 @@
             InputSource copletSource = null;
             if ( url != null ) {
                 copletSource = new InputSource(url.openStream());
-                copletSource.setSystemId(url.toExternalForm());                
+                copletSource.setSystemId(url.toExternalForm());
             }
             this.load(portletSource, webSource, copletSource, this.contextName);
         }
@@ -374,7 +374,7 @@
                 entry = war.getEntry(COPLET_XML);
                 if ( entry != null ) {
                     copletSource = new InputSource(war.getInputStream(entry));
-                    copletSource.setSystemId("/" + COPLET_XML);                    
+                    copletSource.setSystemId("/" + COPLET_XML);
                 }
                 this.load(portletSource, webSource, copletSource, webModule);
             }
@@ -420,7 +420,7 @@
             InputSource copletSource = null;
             if ( copletXml.exists() ) {
                 copletSource = new InputSource(new FileInputStream(copletXml));
-                copletSource.setSystemId(copletXml.toURL().toExternalForm());    
+                copletSource.setSystemId(copletXml.toURL().toExternalForm());
             }
 
             this.load(portletSource, webSource, copletSource, webModule);
@@ -498,7 +498,7 @@
             if (this.contextName.equals(webModule)) {
                 ((PortletDefinitionImpl) portlet).setLocalPortlet(true);
             } else if ( portlet.getServletDefinition() == null ) {
-                throw new DeploymentException("Unable to deploy portlet '" + portlet.getId() + 
+                throw new DeploymentException("Unable to deploy portlet '" + portlet.getId() +
                           "'. Servlet definition for '"+WebApplicationRewriter.CONTAINER+"' not found in web.xml.");
             }
             ((PortletDefinitionImpl) portlet).setPortletClassLoader(Thread.currentThread()
@@ -544,7 +544,7 @@
             try {
                 File toFile = new File(this.webAppDir, fileName);
                 if ( Deployer.deploy(event.getDeploymentObject().getSource(),
-                                     toFile.getAbsolutePath(), 
+                                     toFile.getAbsolutePath(),
                                      this.stripLoggers,
                                      this.getLogger(), this.manager) ) {
                     // let's wait some seconds to give the web container time to

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/services/factory/FactoryManagerServiceImpl.java Tue Nov 27 14:40:20 2007
@@ -73,7 +73,7 @@
  * @see Factory
  * @version $Id$
  */
-public class FactoryManagerServiceImpl 
+public class FactoryManagerServiceImpl
     extends AbstractComponent
     implements FactoryManagerService, Parameterizable {
 
@@ -124,7 +124,7 @@
         public String getServletName() {
             return this.servletContext.getServletContextName();
         }
-        
+
     }
     /**
      * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
@@ -139,11 +139,11 @@
     public void initialize()
     throws Exception {
         super.initialize();
-        final ServletContext servletContext = this.portalService.getProcessInfoProvider().getServletContext();
+        final ServletContext servletContext = this.portalService.getRequestContext().getServletContext();
         this.servletConfig = new PortalServletConfig(servletContext);
         final Map factories = new HashMap();
 
-        factories.put(ActionRequest.class.getName(), 
+        factories.put(ActionRequest.class.getName(),
                       this.parameters.getParameter("action-request-factory", ActionRequestFactoryImpl.class.getName()));
         factories.put(RenderRequest.class.getName(),
                       this.parameters.getParameter("render-request-factory", RenderRequestFactoryImpl.class.getName()));

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java?rev=598794&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java Tue Nov 27 14:40:20 2007
@@ -0,0 +1,88 @@
+/*
+ * 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.sitemap.impl;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.cocoon.ajax.AjaxHelper;
+import org.apache.cocoon.portal.RequestContext;
+import org.apache.cocoon.portal.spi.RequestContextProvider;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+
+/**
+ * This service provides the current request context.
+ *
+ * @version $Id$
+ */
+public class CocoonRequestContextProvider implements RequestContextProvider {
+
+    /** The process info provider. */
+    protected ProcessInfoProvider processInfoProvider;
+
+    public void setProcessInfoProvider(final ProcessInfoProvider p) {
+        this.processInfoProvider = p;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.spi.RequestContextProvider#getCurrentRequestContext()
+     */
+    public RequestContext getCurrentRequestContext() {
+        // TODO Should we cache the object creation?
+        return new RequestContextImpl(this.processInfoProvider);
+    }
+
+    public static final class RequestContextImpl implements RequestContext {
+
+        protected final ProcessInfoProvider provider;
+
+        public RequestContextImpl(ProcessInfoProvider prov) {
+            this.provider = prov;
+        }
+
+        /**
+         * @see org.apache.cocoon.portal.RequestContext#getRequest()
+         */
+        public HttpServletRequest getRequest() {
+            return this.provider.getRequest();
+        }
+
+        /**
+         * @see org.apache.cocoon.portal.RequestContext#getResponse()
+         */
+        public HttpServletResponse getResponse() {
+            return this.provider.getResponse();
+        }
+
+        /**
+         * @see org.apache.cocoon.portal.RequestContext#isAjaxRequest()
+         */
+        public boolean isAjaxRequest() {
+            final HttpServletRequest req = this.getRequest();
+            return req.getParameter(AjaxHelper.AJAX_REQUEST_PARAMETER) != null;
+        }
+
+        /**
+         * @see org.apache.cocoon.portal.RequestContext#getServletContext()
+         */
+        public ServletContext getServletContext() {
+            return this.provider.getServletContext();
+        }
+
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/java/org/apache/cocoon/portal/sitemap/impl/CocoonRequestContextProvider.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/resources/META-INF/cocoon/spring/cocoon-portal-sitemap-components.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/resources/META-INF/cocoon/spring/cocoon-portal-sitemap-components.xml?rev=598794&r1=598793&r2=598794&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/resources/META-INF/cocoon/spring/cocoon-portal-sitemap-components.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sitemap/src/main/resources/META-INF/cocoon/spring/cocoon-portal-sitemap-components.xml Tue Nov 27 14:40:20 2007
@@ -31,6 +31,14 @@
                            http://cocoon.apache.org/schema/configurator http://cocoon.apache.org/schema/configurator/cocoon-configurator-1.0.1.xsd">
 
   <!--+
+      | SPI Implementations
+      +-->
+    <bean name="org.apache.cocoon.portal.spi.RequestContextProvider"
+          class="org.apache.cocoon.portal.sitemap.impl.CocoonRequestContextProvider">
+      <property name="processInfoProvider" ref="org.apache.cocoon.processing.ProcessInfoProvider"/>
+    </bean>
+    
+  <!--+
       | Coplet Adapters
       |
       +-->