You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by cd...@apache.org on 2007/09/20 12:45:30 UTC

svn commit: r577677 - in /portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto: core/ internal/impl/

Author: cdoremus
Date: Thu Sep 20 03:45:29 2007
New Revision: 577677

URL: http://svn.apache.org/viewvc?rev=577677&view=rev
Log:
Applied RequestImpl_for_requestDispatcher_030907.patch  for PLUTO-423. Thank you Torsten!

Modified:
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionRequestImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionResponseImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletResponseImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderRequestImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderResponseImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceRequestImpl.java
    portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceResponseImpl.java

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/core/PortletServlet.java Thu Sep 20 03:45:29 2007
@@ -125,7 +125,8 @@
         }
         portletConfig = new PortletConfigImpl(getServletConfig(),
                                               portletContext,
-                                              portletDD);
+                                              portletDD,
+                                              portletAppDD);
         
         // Create and initialize the portlet wrapped in the servlet.
         try {

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionRequestImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionRequestImpl.java Thu Sep 20 03:45:29 2007
@@ -20,15 +20,16 @@
 
 import javax.portlet.ActionRequest;
 import javax.portlet.PortletPreferences;
+import javax.servlet.ServletInputStream;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.Constants;
 import org.apache.pluto.PortletContainer;
 import org.apache.pluto.internal.InternalActionRequest;
 import org.apache.pluto.internal.InternalPortletWindow;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.logging.Log;
 
 /**
  * Implementation of the <code>javax.portlet.ActionRequest</code> interface.
@@ -106,5 +107,18 @@
 		// TODO Auto-generated method stub
 		throw new UnsupportedOperationException("This method needs to be implemented.");
 	}
+	/////////////////////////////////////////////////////////////////////////////////////////
+	//for RequestDispatcher include and forward 
+	/////////////////////////////////////////////////////////////////////////////////////////	
+	
     
+	
+    
+    public int getContentLength() {
+        return (super.isIncluded()) ? 0 : super.getContentLength();
+    }
+    
+    public ServletInputStream getInputStream() throws IOException {
+        return (super.isIncluded() || super.isForwarded()) ? (ServletInputStream)getPortletInputStream() : super.getInputStream();
+    }
 }

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionResponseImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ActionResponseImpl.java Thu Sep 20 03:45:29 2007
@@ -181,44 +181,6 @@
 	}
 
 	@Override
-	public String encodeRedirectUrl(String arg0) {
-		if (super.isForwarded() || super.isIncluded()){
-			return null;
-		}
-		else
-		return super.encodeRedirectUrl(arg0);
-	}
-
-	@Override
-	public String encodeRedirectURL(String arg0) {
-		if (super.isForwarded() || super.isIncluded()){
-			return null;
-		}
-		else
-			return super.encodeRedirectURL(arg0);
-	}
-
-	@Override
-	public void sendError(int arg0) throws IOException {
-		if (super.isForwarded() || super.isIncluded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0);
-	}
-	
-	
-
-	@Override
-	public void sendError(int arg0, String arg1) throws IOException {
-		if (super.isForwarded() || super.isIncluded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0, arg1);
-	}
-
-	@Override
 	public void setStatus(int arg0, String arg1) {
 		if (super.isForwarded() || super.isIncluded()){
 			// no operation

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java Thu Sep 20 03:45:29 2007
@@ -17,12 +17,16 @@
 package org.apache.pluto.internal.impl;
 
 
+import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.Serializable;
 import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
 
 import javax.portlet.Event;
 import javax.portlet.EventRequest;
 import javax.portlet.PortletPreferences;
+import javax.servlet.ServletInputStream;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.xml.bind.JAXBContext;
@@ -183,4 +187,38 @@
 		// TODO Auto-generated method stub
 		throw new UnsupportedOperationException("This method needs to be implemented.");
 	}
+	
+	
+    
+    //////////////////////////////////////////////////////////////////
+	//for forward and include
+	//////////////////////////////////////////////////////////////////
+	
+	public String getCharacterEncoding() {
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getCharacterEncoding();
+    }
+	
+	public int getContentLength() {
+        return (super.isIncluded() || super.isForwarded()) ? 0 : super.getContentLength();
+    }
+	
+	public String getContentType() {
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getContentType();
+    }
+	
+	public ServletInputStream getInputStream() throws IOException {
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getInputStream();
+    }
+	
+	public BufferedReader getReader()
+    throws UnsupportedEncodingException, IOException {
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getReader();
+    }
+	
+	public void setCharacterEncoding(String encoding)
+    throws UnsupportedEncodingException {
+        if (!super.isIncluded() && !super.isForwarded()) {
+        	super.setCharacterEncoding(encoding);
+        }
+    }
 }

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java Thu Sep 20 03:45:29 2007
@@ -183,42 +183,6 @@
 	}
 
 	@Override
-	public String encodeRedirectUrl(String arg0) {
-		if (super.isForwarded() || super.isIncluded()){
-			return null;
-		}
-		else
-		return super.encodeRedirectUrl(arg0);
-	}
-
-	@Override
-	public String encodeRedirectURL(String arg0) {
-		if (super.isForwarded() || super.isIncluded()){
-			return null;
-		}
-		else
-			return super.encodeRedirectURL(arg0);
-	}
-
-	@Override
-	public void sendError(int arg0) throws IOException {
-		if (super.isForwarded() || super.isIncluded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0);
-	}
-	
-	@Override
-	public void sendError(int arg0, String arg1) throws IOException {
-		if (super.isForwarded() || super.isIncluded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0, arg1);
-	}
-
-	@Override
 	public void setStatus(int arg0, String arg1) {
 		if (super.isForwarded() || super.isIncluded()){
 			// no operation

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java Thu Sep 20 03:45:29 2007
@@ -16,18 +16,25 @@
  */
 package org.apache.pluto.internal.impl;
 
-import org.apache.pluto.internal.InternalPortletConfig;
-import org.apache.pluto.descriptors.common.InitParamDD;
-import org.apache.pluto.descriptors.portlet.PortletDD;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
 
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletContext;
 import javax.servlet.ServletConfig;
 import javax.xml.namespace.QName;
 
-import java.util.*;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pluto.descriptors.common.InitParamDD;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
+import org.apache.pluto.descriptors.portlet.PortletDD;
+import org.apache.pluto.internal.InternalPortletConfig;
 
 public class PortletConfigImpl implements PortletConfig, InternalPortletConfig {
 
@@ -47,15 +54,22 @@
      * The portlet descriptor.
      */
     protected PortletDD portletDD;
+    
+    /**
+     * The portlet application descriptor.
+     */
+    private PortletAppDD portletAppDD;
 
     private ResourceBundleFactory bundles;
 
     public PortletConfigImpl(ServletConfig servletConfig,
                              PortletContext portletContext,
-                             PortletDD portletDD) {
+                             PortletDD portletDD,
+                             PortletAppDD portletAppDD) {
         this.servletConfig = servletConfig;
         this.portletContext = portletContext;
         this.portletDD = portletDD;
+        this.portletAppDD = portletAppDD;
     }
 
     public String getPortletName() {
@@ -127,9 +141,7 @@
 	}
 
 	public String getDefaultNamespace() {
-		// how to get the corresponding porletAppDD
-		// TODO Auto-generated method stub
-		throw new UnsupportedOperationException("This method needs to be implemented.");
+		return portletAppDD.getDefaultNamespace();
 	}
 
 	public Enumeration<QName> getProcessingEventQNames() {

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java Thu Sep 20 03:45:29 2007
@@ -16,6 +16,34 @@
  */
 package org.apache.pluto.internal.impl;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.ccpp.Profile;
+import javax.portlet.PortalContext;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletPreferences;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletSession;
+import javax.portlet.WindowState;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpSession;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.PortletContainer;
@@ -34,35 +62,6 @@
 import org.apache.pluto.util.StringUtils;
 import org.apache.pluto.util.impl.NamespaceMapperImpl;
 
-import javax.ccpp.Profile;
-import javax.portlet.PortalContext;
-import javax.portlet.Portlet;
-import javax.portlet.PortletContext;
-import javax.portlet.PortletMode;
-import javax.portlet.PortletPreferences;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletSession;
-import javax.portlet.PortletURL;
-import javax.portlet.WindowState;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpSession;
-import java.io.BufferedReader;
-import java.io.UnsupportedEncodingException;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-import java.util.Locale;
-import java.security.Principal;
-
 /**
  * Abstract <code>javax.portlet.PortletRequest</code> implementation.
  * This class also implements InternalPortletRequest.
@@ -770,9 +769,165 @@
 		String lifecyclePhase = getLifecyclePhase();
 		this.setAttribute(LIFECYCLE_PHASE, lifecyclePhase);
 	}
+	
+	@Override
+	public String getLocalAddr() {
+		return (isIncluded() || isForwarded()) ? null : super.getLocalAddr();
+	}
+	
 
-	// ============= private methods ==================
+	@Override
+	public String getLocalName() {
+		return (isIncluded() || isForwarded()) ? null : super.getLocalName();
+	}
+
+	@Override
+	public int getLocalPort() {
+		return (isIncluded() || isForwarded()) ? null : super.getLocalPort();
+	}
+	
+	public String getProtocol() {
+        return (isIncluded() || isForwarded()) ? "HTTP/1.1" : super.getProtocol();
+    }
+
+	@Override
+	public String getRealPath(String arg0) {
+		return (isIncluded() || isForwarded()) ? null : super.getRealPath(arg0);
+	}
+
+	@Override
+	public String getRemoteAddr() {
+		return (isIncluded() || isForwarded()) ? null : super.getRemoteAddr();
+	}
+
+	@Override
+	public String getRemoteHost() {
+		return (isIncluded() || isForwarded()) ? null : super.getRemoteHost();
+	}
+
+	@Override
+	public int getRemotePort() {
+		return (isIncluded() || isForwarded()) ? 0 : super.getRemotePort();
+	}
+	
+	@Override
+	public Cookie[] getCookies() {
+		if (isIncluded() || isForwarded()){
+			// TODO:return Cookies from properties
+			return null;
+		}
+		else
+			return super.getCookies();
+	}
+
+	@Override
+	public long getDateHeader(String arg0) {
+		if (isIncluded() || isForwarded()){
+			// TODO:return header from properties
+			return 0;
+		}
+		else
+			return super.getDateHeader(arg0);
+	}
+
+	@Override
+	public String getHeader(String arg0) {
+		if (isIncluded() || isForwarded()){
+			// TODO:return Cookies from properties
+			return null;
+		}
+		else
+			return super.getHeader(arg0);
+	}
+
+	@Override
+	public Enumeration getHeaderNames() {
+		if (isIncluded() || isForwarded()){
+			// TODO:return Cookies from properties
+			return null;
+		}
+		else
+			return super.getHeaderNames();
+	}
+
+	@Override
+	public Enumeration getHeaders(String arg0) {
+		if (isIncluded() || isForwarded()){
+			// TODO:return Cookies from properties
+			return null;
+		}
+		else
+			return super.getHeaders(arg0);
+	}
+
+	@Override
+	public int getIntHeader(String arg0) {
+		if (isIncluded() || isForwarded()){
+			// TODO:return Cookies from properties
+			return 0;
+		}
+		else
+			return super.getIntHeader(arg0);
+	}
 	
+	public String getPathInfo() {
+    	if (isIncluded())
+    		return (String) super.getAttribute("javax.servlet.include.path_info");
+    	else if (isForwarded())
+    		return (String) super.getAttribute("javax.servlet.forward.path_info");
+    	else
+    		return super.getPathInfo();
+    }
+
+    public String getQueryString() {
+    	if (isIncluded())
+    		return (String) super.getAttribute("javax.servlet.include.query_string");
+    	else if (isForwarded())
+    		return (String) super.getAttribute("javax.servlet.forward.query_string");
+    	else
+	    	return super.getQueryString();
+    }
+    
+    
+    public String getPathTranslated() {
+    	if (isIncluded() || isForwarded()){
+    		String path = getServletPath() + getPathInfo() + "?" + getQueryString();
+    		return getRealPath(path);
+    	}
+    	return super.getPathTranslated();
+    }
+    
+    public String getRequestURI() {
+    	if (isIncluded())
+    		return (String) super.getAttribute("javax.servlet.include.request_uri");
+    	else if (isForwarded())
+    		return (String) super.getAttribute("javax.servlet.forward.request_uri");
+    	else
+    		return super.getRequestURI();
+    }
+    
+    public String getServletPath() {
+    	if (isIncluded())
+    		return (String) super.getAttribute("javax.servlet.include.servlet_path");
+    	else if (isForwarded())
+    		return (String) super.getAttribute("javax.servlet.forward.servlet_path");
+    	else
+    		return super.getServletPath();
+    }
+    
+    public StringBuffer getRequestURL() {
+        return (isIncluded() || isForwarded()) ? null : super.getRequestURL();
+    }
+    
+    
+	
+	// ============= private methods ==================
+
+	public String getLifecyclePhase() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 	private void setCCPPProfile() {
 		Profile profile = container.getRequiredContainerServices().getCCPPProfileService().getCCPPProfile(servletRequest);
 		this.setAttribute(CCPP_PROFILE, profile);

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletResponseImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletResponseImpl.java Thu Sep 20 03:45:29 2007
@@ -281,6 +281,44 @@
 	     }
 	     return validNamespace.toString();
 	}
+	
+	@Override
+	public String encodeRedirectUrl(String arg0) {
+		if (isForwarded() || isIncluded()){
+			return null;
+		}
+		else
+		return super.encodeRedirectUrl(arg0);
+	}
+
+	@Override
+	public String encodeRedirectURL(String arg0) {
+		if (isForwarded() || isIncluded()){
+			return null;
+		}
+		else
+			return super.encodeRedirectURL(arg0);
+	}
+	
+	@Override
+	public void sendError(int arg0) throws IOException {
+		if (isForwarded() || isIncluded()){
+			// no operation
+		}
+		else
+			super.sendError(arg0);
+	}
+	
+	
+
+	@Override
+	public void sendError(int arg0, String arg1) throws IOException {
+		if (isForwarded() || isIncluded()){
+			// no operation
+		}
+		else
+			super.sendError(arg0, arg1);
+	}
 // InternalRenderResponse Impl ---------------------------------------------
     
     public void setIncluded(boolean included) {

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderRequestImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderRequestImpl.java Thu Sep 20 03:45:29 2007
@@ -16,20 +16,6 @@
  */
 package org.apache.pluto.internal.impl;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.pluto.Constants;
-import org.apache.pluto.PortletContainer;
-import org.apache.pluto.internal.InternalPortletWindow;
-import org.apache.pluto.internal.InternalPortletRequest;
-import org.apache.pluto.internal.InternalRenderRequest;
-
-import javax.portlet.PortletPreferences;
-import javax.portlet.RenderRequest;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -40,6 +26,21 @@
 import java.util.Map;
 import java.util.StringTokenizer;
 
+import javax.portlet.PortletPreferences;
+import javax.portlet.RenderRequest;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pluto.Constants;
+import org.apache.pluto.PortletContainer;
+import org.apache.pluto.internal.InternalPortletRequest;
+import org.apache.pluto.internal.InternalPortletWindow;
+import org.apache.pluto.internal.InternalRenderRequest;
+
 /**
  * Implementation of the <code>javax.portlet.RenderRequest</code> interface.
  * 
@@ -99,7 +100,7 @@
      * flag is set to true, this method returns null.
      */
     public String getContentType() {
-        return super.isIncluded() ? null : super.getContentType();
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getContentType();
     }
     
     /**
@@ -107,7 +108,7 @@
      * flag is set to true, this method returns 0.
      */
     public int getContentLength() {
-        return super.isIncluded() ? 0 : super.getContentLength();
+        return (super.isIncluded() || super.isForwarded()) ? 0 : super.getContentLength();
     }
     
     /**
@@ -116,7 +117,7 @@
      */
     public BufferedReader getReader()
     throws UnsupportedEncodingException, IOException {
-        return super.isIncluded() ? null : super.getReader();
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getReader();
     }
     
     /**
@@ -124,7 +125,7 @@
      * response. If the included flag is set to true, this method returns null.
      */
     public ServletInputStream getInputStream() throws IOException {
-        return super.isIncluded() ? null : super.getInputStream();
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getInputStream();
     }
     
     
@@ -175,124 +176,19 @@
     	}
     }
     
-    
     // Included HttpServletRequest (Limited) Impl ------------------------------
     
-    /*
-     * -------------------------------------------------------------------------
-     * (non-javadoc)
-     * Portlet Spec. PLT. 16.3.3.
-     * The following methods of the HttpServletRequest must return the path and
-     * query string information used to obtain the PortletRequestDispatcher
-     * object:
-     *   getPathInfo
-     *   getPathTranslated
-     *   getQueryString
-     *   getRequestURI
-     *   getServletPath
-     * -------------------------------------------------------------------------
-     */
-    
-    public String getPathInfo() {
-    	String attr = (String) super.getAttribute(
-    			"javax.servlet.include.path_info");
-    	return (super.isIncluded() && attr != null) ? attr : super.getPathInfo();
-    }
-
-    public String getQueryString() {
-    	String attr = (String) super.getAttribute(
-    			"javax.servlet.include.query_string");
-    	return (super.isIncluded() && attr != null) ? attr : super.getQueryString();
-    }
-    
-    /**
-     * TODO: check PLT.16.3.3. page 67, line 10.
-     */
-    public String getPathTranslated() {
-    	// TODO:
-//        return null;
-		throw new UnsupportedOperationException("This method needs to be implemented.");
-    }
-    
-    public String getRequestURI() {
-    	String attr = (String) super.getAttribute(
-    			"javax.servlet.include.request_uri");
-        return (super.isIncluded() && attr != null) ? attr : super.getRequestURI();
-    }
-    
-    public String getServletPath() {
-        String attr = (String) super.getAttribute(
-                "javax.servlet.include.servlet_path");
-        return (super.isIncluded() && attr != null) ? attr : super.getServletPath();
-    }
-    
-    /*
-     * -------------------------------------------------------------------------
-     * (non-Javadoc)
-     * Portlet Spec. PLT. 16.3.3.
-     * The following methods of the HttpServletRequest must return null:
-     *   getProtocol
-     *   getRemoteAddr
-     *   getRemoteHost
-     *   getRealPath
-     *   getRequestURL
-     * -------------------------------------------------------------------------
-     */
-    
-    public String getProtocol() {
-        return super.isIncluded() ? null : super.getProtocol();
-    }
-
-    public String getRemoteAddr() {
-        return super.isIncluded() ? null : super.getRemoteAddr();
-    }
-
-    public String getRemoteHost() {
-        return super.isIncluded() ? null : super.getRemoteHost();
-    }
-
-    public String getRealPath(String path) {
-        return super.isIncluded() ? null : super.getRealPath(path);
-    }
-
-    public StringBuffer getRequestURL() {
-        return super.isIncluded() ? null : super.getRequestURL();
-    }
-    
-    /*
-     * -------------------------------------------------------------------------
-     * (non-Javadoc)
-     * Portlet Spec. PLT. 16.3.3.
-     * The following methods of the HttpServletRequest must do no operations
-     * and return null:
-     *   getCharacterEncoding
-     *   setCharacterEncoding
-     *   getContentType
-     *   getInputStream
-     *   getReader
-     * The getContentLength method of the HttpServletRequest must return 0.
-     * -------------------------------------------------------------------------
-     */
-    
     public String getCharacterEncoding() {
-        return super.isIncluded() ? null : super.getCharacterEncoding();
+        return (super.isIncluded() || super.isForwarded()) ? null : super.getCharacterEncoding();
     }
     
     public void setCharacterEncoding(String encoding)
     throws UnsupportedEncodingException {
-        if (!super.isIncluded()) {
+        if (!super.isIncluded() && !super.isForwarded()) {
         	super.setCharacterEncoding(encoding);
         }
     }
     
-    /*
-     * -------------------------------------------------------------------------
-     * (non-javadoc)
-     * Portlet Spec. PLT. 16.3.3.
-     * The getMethod method of the HttpServletRequest must always return 'GET'.
-     * -------------------------------------------------------------------------
-     */
-    
     public String getMethod() {
     	return "GET";
     }
@@ -376,5 +272,12 @@
 		// TODO Auto-generated method stub
 		throw new UnsupportedOperationException("This method needs to be implemented.");
 	}
-    
+
+	@Override
+	public HttpSession getSession() {
+		if (isIncluded() || isForwarded()){
+			return (HttpSession) this.getPortletSession();
+		}
+		return super.getSession();
+	}
 }

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderResponseImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/RenderResponseImpl.java Thu Sep 20 03:45:29 2007
@@ -323,44 +323,6 @@
 	}
 
 	// Included HttpServletResponse (Limited) Impl -----------------------------
-    
-    @Override
-    public String encodeRedirectUrl(String url) {
-    	if (super.isIncluded() || super.isForwarded()) {
-    		return null;
-    	} else {
-    		return super.encodeRedirectUrl(url);
-    	}
-    }
-    
-    @Override
-    public String encodeRedirectURL(String url) {
-    	if (super.isIncluded() || super.isForwarded()) {
-    		return null;
-    	} else {
-    		return super.encodeRedirectURL(url);
-    	}
-    }
-	
-	@Override
-	public void sendError(int arg0, String arg1) throws IOException {
-		if (super.isIncluded() || super.isForwarded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0, arg1);
-	}
-
-
-	@Override
-	public void sendError(int arg0) throws IOException {
-		if (super.isIncluded() || super.isForwarded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0);
-	}
-
 
 	@Override
 	public void sendRedirect(String arg0) throws IOException {

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceRequestImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceRequestImpl.java Thu Sep 20 03:45:29 2007
@@ -21,6 +21,7 @@
 
 import javax.portlet.PortletPreferences;
 import javax.portlet.ResourceRequest;
+import javax.servlet.ServletInputStream;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 
@@ -31,7 +32,6 @@
 import org.apache.pluto.internal.InternalPortletWindow;
 import org.apache.pluto.internal.InternalResourceRequest;
 import org.apache.pluto.spi.PortletURLProvider;
-import org.apache.pluto.spi.PublicRenderParameterProvider;
 import org.apache.pluto.util.ArgumentUtility;
 import org.apache.pluto.util.StringUtils;
 
@@ -164,4 +164,7 @@
 		throw new UnsupportedOperationException("This method needs to be implemented.");
 	}
 	
+	public ServletInputStream getInputStream() throws IOException {
+        return (super.isIncluded() || super.isForwarded()) ? (ServletInputStream)getPortletInputStream() : super.getInputStream();
+    }
 }

Modified: portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceResponseImpl.java?rev=577677&r1=577676&r2=577677&view=diff
==============================================================================
--- portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-trunk-merge/pluto-container/src/main/java/org/apache/pluto/internal/impl/ResourceResponseImpl.java Thu Sep 20 03:45:29 2007
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.util.Iterator;
 import java.util.Locale;
 
 import javax.portlet.CacheControl;
@@ -32,10 +33,14 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pluto.PortletContainer;
+import org.apache.pluto.descriptors.portlet.PortletDD;
+import org.apache.pluto.descriptors.portlet.SupportsDD;
 import org.apache.pluto.internal.InternalPortletWindow;
 import org.apache.pluto.internal.InternalResourceResponse;
 import org.apache.pluto.spi.PortalCallbackService;
+import org.apache.pluto.util.ArgumentUtility;
 import org.apache.pluto.util.StringManager;
+import org.apache.pluto.util.StringUtils;
 
 public class ResourceResponseImpl extends StateAwareResponseImpl
 implements ResourceResponse, InternalResourceResponse {
@@ -114,6 +119,68 @@
         return super.getWriter();
     }
 	
+    public void setContentType(String contentType)
+    throws IllegalArgumentException {
+    	if (super.isIncluded()){
+    		//no operation
+    	}
+    	else{
+    		ArgumentUtility.validateNotNull("contentType", contentType);
+            String mimeType = StringUtils.getMimeTypeWithoutEncoding(contentType);
+            if (!isValidContentType(mimeType)) {
+                throw new IllegalArgumentException("Specified content type '"
+                		+ mimeType + "' is not supported.");
+            }
+            getHttpServletResponse().setContentType(mimeType);
+            this.currentContentType = mimeType;
+    	}
+    }
+    
+    /**
+     * Checks if the specified content type is valid (supported by the portlet).
+     * The specified content type should be a tripped mime type without any
+     * character encoding suffix.
+     * @param contentType  the content type to check.
+     * @return true if the content type is valid, false otherwise.
+     */
+    private boolean isValidContentType(String contentType) {
+    	boolean valid = false;
+    	
+        PortletDD portletDD = getInternalPortletWindow().getPortletEntity()
+        		.getPortletDefinition();
+        for (Iterator it = portletDD.getSupports().iterator();
+        		!valid && it.hasNext(); ) {
+            
+        	SupportsDD supportsDD = (SupportsDD) it.next();
+            String supportedType = supportsDD.getMimeType();
+            
+            // Content type is supported by an exact match.
+            if (supportedType.equals(contentType)) {
+            	valid = true;
+            }
+            // The supported type contains a wildcard.
+            else if (supportedType.indexOf("*") >= 0) {
+            	
+                int index = supportedType.indexOf("/");
+                String supportedPrefix = supportedType.substring(0, index);
+                String supportedSuffix = supportedType.substring(index + 1);
+                
+                index = contentType.indexOf("/");
+                String typePrefix = contentType.substring(0, index);
+                String typeSuffix = contentType.substring(index + 1);
+                
+                // Check if the prefixes match AND the suffixes match.
+                if (supportedPrefix.equals("*") || supportedPrefix.equals(typePrefix)) {
+                    if (supportedSuffix.equals("*") || supportedSuffix.equals(typeSuffix)) {
+                        valid = true;
+                    }
+                }
+            }
+        }
+        // Return the check result.
+        return valid;
+    }
+    
 	public Locale getLocale() {
         return getHttpServletRequest().getLocale();
     }
@@ -219,44 +286,6 @@
 	}
 
 	// Included HttpServletResponse (Limited) Impl -----------------------------
-    
-    @Override
-    public String encodeRedirectUrl(String url) {
-    	if (super.isIncluded() || super.isForwarded()) {
-    		return null;
-    	} else {
-    		return super.encodeRedirectUrl(url);
-    	}
-    }
-    
-    @Override
-    public String encodeRedirectURL(String url) {
-    	if (super.isIncluded() || super.isForwarded()) {
-    		return null;
-    	} else {
-    		return super.encodeRedirectURL(url);
-    	}
-    }
-	
-	@Override
-	public void sendError(int arg0, String arg1) throws IOException {
-		if (super.isIncluded() || super.isForwarded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0, arg1);
-	}
-
-
-	@Override
-	public void sendError(int arg0) throws IOException {
-		if (super.isIncluded() || super.isForwarded()){
-			// no operation
-		}
-		else
-			super.sendError(arg0);
-	}
-
 
 	@Override
 	public void sendRedirect(String arg0) throws IOException {