You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-commits@incubator.apache.org by jw...@apache.org on 2007/01/31 18:34:24 UTC

svn commit: r501939 - in /incubator/adffaces/branches/jwaldman-portal/trinidad: trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/ trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/ trinidad-demo/src/main/webapp/WEB-INF/ trinid...

Author: jwaldman
Date: Wed Jan 31 10:34:22 2007
New Revision: 501939

URL: http://svn.apache.org/viewvc?view=rev&rev=501939
Log:
ADFFACES-234 Filter logic for Portlets  to jwaldman-portal branch
http://issues.apache.org/jira/browse/ADFFACES-234
Patch  11-ADFFACES-234.patch
(committed for Scott O'Bryan)

Added:
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletApplicationMap.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletInitParameterMap.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletRequestMap.java
Modified:
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContextFactory.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-demo/src/main/webapp/WEB-INF/web.xml
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextFactoryImpl.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletApplicationMap.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletExternalContext.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletInitParameterMap.java
    incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletRequestMap.java

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContextFactory.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContextFactory.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/context/RequestContextFactory.java Wed Jan 31 10:34:22 2007
@@ -55,12 +55,29 @@
       _FACTORIES.put(cl, factory);
     }
   }
-
+  
   /**
-   * Create a RequestContext.
+   * Create a RequestContext from a ServletContext and ServletRequest.
+   * 
+   * @param context an object which must be a ServletContext
+   * @param request an object which must be a ServletRequest
+   * 
+   * @deprecated This method does not work in a Portal environment.  It will
+   *             only work with a ServletRequest.  Please use 
+   *             {@link #createContext(ExternalContext)} which is container
+   *             agnostic.
    */
-  abstract public RequestContext createContext(ExternalContext context);
-
+  @Deprecated
+  abstract public RequestContext createContext(Object context,
+                                                Object request);
+  
+  /**
+   * Creates a RequestContext.
+   * 
+   * @param ec The current ExternalContext.
+   */
+  abstract public RequestContext createContext(ExternalContext ec);
+  
   static private ClassLoader _getClassLoader()
   {
     return Thread.currentThread().getContextClassLoader();

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/webapp/UploadedFileProcessor.java Wed Jan 31 10:34:22 2007
@@ -80,9 +80,10 @@
   /**
    * Initialize the UploadedFileProcessor with access to the current
    * web application context. 
-   * @param context the current ServletContext, if in a servlet environment
+   * 
+   * @param context the current ServletContext or PortletContext
    */
-  public void init(ExternalContext context);
+  public void init(Object context);
 
   /**
    * Process a single uploaded file, moving it from temporary
@@ -106,11 +107,11 @@
    *  guarantees that {@link UploadedFile#dispose}</code> will be called before
    *  the request completes.
    *  </p>
-   * @param ec the current external context
+   * @param request the current servlet or portlet reque
    * @param file a temporary file object
    * @return a new instance of UploadedFile.  It is legal to return null,
    *   in which case the file will not be available later in the request.
    */
   public UploadedFile processFile(
-    ExternalContext ec, UploadedFile file) throws IOException;
+    Object request, UploadedFile file) throws IOException;
 }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-demo/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-demo/src/main/webapp/WEB-INF/web.xml?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-demo/src/main/webapp/WEB-INF/web.xml (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-demo/src/main/webapp/WEB-INF/web.xml Wed Jan 31 10:34:22 2007
@@ -80,10 +80,6 @@
     <param-value>userInputHere:</param-value>
   </context-param--> 
 
-  <listener>
-	<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
-  </listener>
-
   <filter>
     <filter-name>trinidad</filter-name>
     <filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/ConfigParser.java Wed Jan 31 10:34:22 2007
@@ -124,7 +124,7 @@
     UploadedFileProcessor ufp = (UploadedFileProcessor)
       bean.getProperty(RequestContextBean.UPLOADED_FILE_PROCESSOR_KEY);
 
-    ufp.init(externalContext);
+    ufp.init(externalContext.getContext());
 
     if (_LOG.isInfo())
     {

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/dispatch/DispatchResponseConfiguratorImpl.java Wed Jan 31 10:34:22 2007
@@ -46,6 +46,9 @@
   @Override
   public ExternalContext getExternalContext(ExternalContext externalContext)
   {
+    // TODO sobryan (dependency = JSF 1.2)
+    // For JSF 1.2, we can probably simply wrap the request objects and set them on
+    // the existing ExternalContext.
     if(!isApplied(externalContext))
     {
       if(ExternalContextUtils.isPortlet(externalContext))

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/FileUploadConfiguratorImpl.java Wed Jan 31 10:34:22 2007
@@ -164,7 +164,10 @@
       @SuppressWarnings("unchecked")
       Map<String, String[]> parameters = new HashMap<String, String[]>(externalContext.getRequestParameterValuesMap());
       parameters.putAll(addedParams);
-
+      
+      // TODO sobryan (dependency = JSF 1.2)
+      // For JSF 1.2, we can probably simply wrap the request objects and set them on
+      // the existing ExternalContext.
       return _getExternalContextWrapper(externalContext, addedParams);
     }
     
@@ -190,7 +193,7 @@
     final UploadedFile temp = new TempUploadedFile(item);
 
     final UploadedFile file =
-      context.getUploadedFileProcessor().processFile(externalContext, temp);
+      context.getUploadedFileProcessor().processFile(externalContext.getRequest(), temp);
 
     if (file != null)
     {

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/config/upload/UploadedFileProcessorImpl.java Wed Jan 31 10:34:22 2007
@@ -18,11 +18,23 @@
 import java.io.File;
 import java.io.IOException;
 
-import javax.faces.context.ExternalContext;
+import java.util.Map;
+
+import javax.portlet.PortletContext;
+import javax.portlet.PortletRequest;
+
+import javax.servlet.ServletContext;
 import javax.servlet.ServletRequest;
 
+import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 import org.apache.myfaces.trinidad.model.UploadedFile;
 import org.apache.myfaces.trinidad.webapp.UploadedFileProcessor;
+import org.apache.myfaces.trinidadinternal.context.external.PortletApplicationMap;
+import org.apache.myfaces.trinidadinternal.context.external.PortletInitParameterMap;
+import org.apache.myfaces.trinidadinternal.context.external.PortletRequestMap;
+import org.apache.myfaces.trinidadinternal.context.external.ServletApplicationMap;
+import org.apache.myfaces.trinidadinternal.context.external.ServletInitParameterMap;
+import org.apache.myfaces.trinidadinternal.context.external.ServletRequestMap;
 
 public class UploadedFileProcessorImpl implements UploadedFileProcessor
 {
@@ -30,15 +42,24 @@
   {
   }
 
-  public void init(ExternalContext context)
+  public void init(Object context)
   {
+    ContextInfo info;
+    if(_PORTLET_CONTEXT_CLASS != null && _PORTLET_CONTEXT_CLASS.isInstance(context))
+    {
+      info = _getPortletContextInfo(context);
+    }
+    else
+    {
+      info = _getServletContextInfo(context);
+    }
+
     //
     // Get MaxMemory and TempDir properties from servlet init params
     //
     if (_maxMemory == -1)
     {
-      String maxMemory = context.getInitParameter(
-                                 MAX_MEMORY_PARAM_NAME);
+      String maxMemory = info.initParams.get(MAX_MEMORY_PARAM_NAME);
       if (maxMemory != null)
       {
         try
@@ -58,8 +79,7 @@
       
     if (_maxDiskSpace == -1)
     {
-      String maxDiskSpace = context.getInitParameter(
-                                                  MAX_DISK_SPACE_PARAM_NAME);
+      String maxDiskSpace = info.initParams.get(MAX_DISK_SPACE_PARAM_NAME);
       if (maxDiskSpace != null)
       {
         try
@@ -79,24 +99,23 @@
     
     if (_tempDir == null)
     {
-      _tempDir = context.getInitParameter(TEMP_DIR_PARAM_NAME);
+      _tempDir = info.initParams.get(TEMP_DIR_PARAM_NAME);
       // Use the webapp temporary directory if the temporary directory
       // has not been explicitly set.
       if (_tempDir == null)
       {
         File tempDirFile = (File)
-          context.getApplicationMap().get("javax.servlet.context.tempdir");
+          info.attributes.get("javax.servlet.context.tempdir");
         if (tempDirFile != null)
           _tempDir = tempDirFile.getAbsolutePath();
       }
     }
   }
 
-  public UploadedFile processFile(ExternalContext ec,
-                                  UploadedFile tempFile)
-    throws IOException
-  {
-    RequestInfo info = _getRequestInfo(ec);
+  public UploadedFile processFile(
+      Object request, UploadedFile tempFile) throws IOException
+  {   
+    RequestInfo info = _getRequestInfo(request);
 
     // Process one new file, loading only as much as can fit
     // in the remaining memory and disk space.
@@ -120,27 +139,83 @@
     return file;
   }
 
-  private RequestInfo _getRequestInfo(ExternalContext ec)
+  private RequestInfo _getRequestInfo(Object request)
   {
-    @SuppressWarnings("unchecked")      
-    RequestInfo info = (RequestInfo) ec.getRequestMap().get(_REQUEST_INFO_KEY);
+    Map<String, Object> attributes;
+    if (_PORTLET_REQUEST_CLASS != null && _PORTLET_REQUEST_CLASS.isInstance(request))
+    {
+      attributes = _getPortletRequestMap(request);
+    }
+    else
+    {
+      attributes = _getServletRequestMap(request);
+    }
+
+
+    RequestInfo info = (RequestInfo) attributes.get(_REQUEST_INFO_KEY);
     
     if (info == null)
     {
       info = new RequestInfo();
-      ec.getRequestMap().put(_REQUEST_INFO_KEY, info);
+      attributes.put(_REQUEST_INFO_KEY, info);
     }
     
     return info;
   }
+  
+  private static final ContextInfo _getServletContextInfo(final Object context)
+  {
+    assert(context instanceof ServletContext);
+    
+    final ServletContext sContext = (ServletContext)context;
+    return new ContextInfo(
+             new ServletInitParameterMap(sContext),
+             new ServletApplicationMap(sContext));
+  }
+  
+  private static final ContextInfo _getPortletContextInfo(final Object context)
+  {
+    assert(context instanceof PortletContext);
+    
+    final PortletContext pContext = (PortletContext)context;
+    return new ContextInfo(
+             new PortletInitParameterMap(pContext),
+             new PortletApplicationMap(pContext));
+  }
+  
+  private static final Map<String, Object> _getServletRequestMap(final Object request)
+  {
+    assert(request instanceof ServletRequest);
+    
+    return new ServletRequestMap((ServletRequest) request);
+  }
+  
+  private static final Map<String, Object> _getPortletRequestMap(final Object request)
+  {
+    assert(request instanceof PortletRequest);
+    
+    return new PortletRequestMap((PortletRequest) request);
+  }
 
-
+  
   static private class RequestInfo
   {
     public long totalBytesInMemory;
     public long totalBytesOnDisk;
   }
-
+  
+  static private class ContextInfo
+  {
+    public ContextInfo(Map<String,String> init, Map<String, Object> attrib)
+    {
+      initParams= init;
+      attributes = attrib;
+    }
+    
+    public Map<String, String> initParams;
+    public Map<String, Object> attributes;
+  }
+  
   private long   _maxMemory = -1;
   private long   _maxDiskSpace = -1;
   private String _tempDir = null;
@@ -150,5 +225,31 @@
 
   private static final String _REQUEST_INFO_KEY = UploadedFileProcessorImpl.class.getName()+
     ".UploadedFilesInfo";
+  
+  private static final TrinidadLogger _LOG = 
+    TrinidadLogger.createTrinidadLogger(UploadedFileProcessorImpl.class);
+  
+  private static final Class          _PORTLET_CONTEXT_CLASS;
+  private static final Class          _PORTLET_REQUEST_CLASS;
+  
+  static
+  {
+    Class context;
+    Class request;
+    try
+    {
+      context = Class.forName("javax.portlet.PortletContext");
+      request = Class.forName("javax.portlet.PortletRequest");
+    }
+    catch (final ClassNotFoundException e)
+    {
+      _LOG
+          .info("Portlet API is not available on the classpath.  Portlet configurations are disabled.");
+      context = null;
+      request = null;
+    }
 
+    _PORTLET_CONTEXT_CLASS = context;
+    _PORTLET_REQUEST_CLASS = request;
+  }
 }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextFactoryImpl.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextFactoryImpl.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/RequestContextFactoryImpl.java Wed Jan 31 10:34:22 2007
@@ -20,6 +20,8 @@
 import javax.faces.context.ExternalContext;
 import javax.servlet.ServletContext;
 
+import javax.servlet.ServletRequest;
+
 import org.apache.myfaces.trinidad.context.RequestContext;
 import org.apache.myfaces.trinidad.context.RequestContextFactory;
 import org.apache.myfaces.trinidad.context.PageFlowScopeProvider;
@@ -28,6 +30,7 @@
 import org.apache.myfaces.trinidad.util.ClassLoaderUtils;
 
 import org.apache.myfaces.trinidadinternal.config.ConfigParser;
+import org.apache.myfaces.trinidadinternal.context.external.ServletExternalContext;
 
 /**
  * @author The Oracle ADF Faces Team
@@ -39,6 +42,13 @@
   }
 
   @Override
+  @Deprecated
+  public RequestContext createContext(Object context, Object request)
+  {
+    return createContext(new ServletExternalContext((ServletContext)context, (ServletRequest)request, null));
+  }
+
+  @Override
   public RequestContext createContext(ExternalContext externalContext)
   {
     RequestContextImpl impl =  new RequestContextImpl(_getBean(externalContext));
@@ -97,4 +107,5 @@
     "org.apache.myfaces.trinidad.context.PageResolver";
   static private final String _PAGE_FLOW_SCOPE_PROVIDER_URL =
     "org.apache.myfaces.trinidad.context.PageFlowScopeProvider";
+
 }

Added: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletApplicationMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletApplicationMap.java?view=auto&rev=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletApplicationMap.java (added)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletApplicationMap.java Wed Jan 31 10:34:22 2007
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed 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.myfaces.trinidadinternal.context.external;
+
+import java.util.Enumeration;
+
+import javax.portlet.PortletContext;
+
+
+/**
+ * PortletContext attributes as a Map.
+ *
+ * @author  Stan Silvert (latest modification by $Author: oros $)
+ * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
+ */
+public class PortletApplicationMap extends ModifiableAbstractAttributeMap<String, Object>
+{
+  public PortletApplicationMap(final PortletContext portletContext)
+  {
+    _portletContext = portletContext;
+  }
+
+  @Override
+  protected Object getAttribute(final Object key)
+  {
+    if (key.toString().equals(key))
+    {
+      return _portletContext.getAttribute(key.toString());
+    }
+    return null;
+  }
+
+  @Override
+  protected Enumeration<String> getAttributeNames()
+  {
+    @SuppressWarnings("unchecked")
+    final Enumeration<String> attributeNames = _portletContext.getAttributeNames();
+
+    return attributeNames;
+  }
+
+  @Override
+  protected void removeAttribute(final Object key)
+  {
+    if (key.toString().equals(key))
+    {
+      _portletContext.removeAttribute(key.toString());
+    }
+  }
+
+  @Override
+  protected void setAttribute(final String key, final Object value)
+  {
+    _portletContext.setAttribute(key, value);
+  }
+
+  final PortletContext _portletContext;
+}

Added: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletInitParameterMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletInitParameterMap.java?view=auto&rev=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletInitParameterMap.java (added)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletInitParameterMap.java Wed Jan 31 10:34:22 2007
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed 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.myfaces.trinidadinternal.context.external;
+
+import java.util.Enumeration;
+import javax.portlet.PortletContext;
+
+/**
+ * portletContext init parameters as Map.
+ *
+ * @author  Stan Silvert (latest modification by $Author: oros $)
+ * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
+ */
+public class PortletInitParameterMap extends AbstractAttributeMap
+{
+  public PortletInitParameterMap(final PortletContext portletContext)
+  {
+    _portletContext = portletContext;
+  }
+
+  @Override
+  protected Object getAttribute(final Object key)
+  {
+    if (key.toString().equals(key))
+    {
+      return _portletContext.getInitParameter(key.toString());
+    }
+    return null;
+  }
+
+  @Override
+  protected Enumeration getAttributeNames()
+  {
+    return _portletContext.getInitParameterNames();
+  }
+
+  final PortletContext _portletContext;
+}

Added: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletRequestMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletRequestMap.java?view=auto&rev=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletRequestMap.java (added)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/PortletRequestMap.java Wed Jan 31 10:34:22 2007
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed 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.myfaces.trinidadinternal.context.external;
+
+import java.util.Enumeration;
+
+import javax.portlet.PortletRequest;
+
+
+/**
+ * PortletRequest attributes Map.
+ *
+ * @author  Stan Silvert (latest modification by $Author: oros $)
+ * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
+ */
+public class PortletRequestMap extends ModifiableAbstractAttributeMap<String, Object>
+{
+  public PortletRequestMap(final PortletRequest portletRequest)
+  {
+    _portletRequest = portletRequest;
+  }
+
+  @Override
+  protected Object getAttribute(final Object key)
+  {
+    if (key.toString().equals(key))
+    {
+      return _portletRequest.getAttribute(key.toString());
+    }
+    return null;
+  }
+
+  @Override
+  protected Enumeration<String> getAttributeNames()
+  {
+    @SuppressWarnings("unchecked")
+    Enumeration<String> attributeNames = _portletRequest.getAttributeNames();
+    return attributeNames;
+  }
+
+  @Override
+  protected void removeAttribute(final Object key)
+  {
+    if (key.toString().equals(key))
+    {
+      _portletRequest.removeAttribute(key.toString());
+    }
+  }
+
+  @Override
+  protected void setAttribute(final String key, final Object value)
+  {
+    _portletRequest.setAttribute(key, value);
+  }
+
+  final PortletRequest _portletRequest;
+}

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletApplicationMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletApplicationMap.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletApplicationMap.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletApplicationMap.java Wed Jan 31 10:34:22 2007
@@ -26,9 +26,9 @@
  * @author Anton Koinov (latest modification by $Author: oros $)
  * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
  */
-class ServletApplicationMap extends ModifiableAbstractAttributeMap<String, Object>
+public class ServletApplicationMap extends ModifiableAbstractAttributeMap<String, Object>
 {
-  ServletApplicationMap(final ServletContext servletContext)
+  public ServletApplicationMap(final ServletContext servletContext)
   {
     _servletContext = servletContext;
   }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletExternalContext.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletExternalContext.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletExternalContext.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletExternalContext.java Wed Jan 31 10:34:22 2007
@@ -65,7 +65,11 @@
     if (servletRequest != null && servletRequest instanceof HttpServletRequest)
     {
       _httpServletRequest = (HttpServletRequest) servletRequest;
-      _httpServletResponse = (HttpServletResponse) servletResponse;
+      
+      if(_servletResponse != null)
+      {
+        _httpServletResponse = (HttpServletResponse) servletResponse;
+      }
     }
 
     if (_httpServletRequest != null)
@@ -118,6 +122,7 @@
   public void dispatch(final String path) throws IOException, FacesException
   {
     _checkRequest();
+    _checkResponse();
     final RequestDispatcher requestDispatcher = _servletRequest.getRequestDispatcher(path);
 
     // If there is no dispatcher, send NOT_FOUND
@@ -476,11 +481,7 @@
   @Override
   public void redirect(final String url) throws IOException
   {
-    _checkRequest();
-    if (_servletRequest == null)
-    {
-      throw new UnsupportedOperationException("No request object present on this context");
-    }
+    _checkResponse();
 
     if (_servletResponse instanceof HttpServletResponse)
     {
@@ -521,8 +522,16 @@
   {
     if(_servletRequest == null)
     {
-      throw new UnsupportedOperationException("Request and Response is null on this context.");
+      throw new UnsupportedOperationException("Request is null on this context.");
     }
+  }
+  
+  private void _checkResponse()
+  {
+    if(_servletResponse == null)
+    {
+      throw new UnsupportedOperationException("Response is null on this context.");
+    } 
   }
   
   private String _lookupCharacterEncoding(final String contentType)

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletInitParameterMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletInitParameterMap.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletInitParameterMap.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletInitParameterMap.java Wed Jan 31 10:34:22 2007
@@ -26,9 +26,9 @@
  * @author Anton Koinov (latest modification by $Author: oros $)
  * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
  */
-class ServletInitParameterMap extends AbstractAttributeMap
+public class ServletInitParameterMap extends AbstractAttributeMap
 {
-  ServletInitParameterMap(final ServletContext servletContext)
+  public ServletInitParameterMap(final ServletContext servletContext)
   {
     _servletContext = servletContext;
   }

Modified: incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletRequestMap.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletRequestMap.java?view=diff&rev=501939&r1=501938&r2=501939
==============================================================================
--- incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletRequestMap.java (original)
+++ incubator/adffaces/branches/jwaldman-portal/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/context/external/ServletRequestMap.java Wed Jan 31 10:34:22 2007
@@ -25,9 +25,9 @@
  * @author Anton Koinov (latest modification by $Author: oros $)
  * @version $Revision: 278654 $ $Date: 2005-09-04 18:32:35 -0600 (Sun, 04 Sep 2005) $
  */
-class ServletRequestMap extends ModifiableAbstractAttributeMap<String, Object>
+public class ServletRequestMap extends ModifiableAbstractAttributeMap<String, Object>
 {
-  ServletRequestMap(final ServletRequest servletRequest)
+  public ServletRequestMap(final ServletRequest servletRequest)
   {
     _servletRequest = servletRequest;
   }