Author: rgielen Date: Thu Aug 23 02:05:56 2007 New Revision: 568896 URL: http://svn.apache.org/viewvc?rev=568896&view=rev Log: WW-1989, WW-2052, WW-2053, WW-2101, WW-2105: Backporting portlet servlet wrapping, portlet redirect/redirectAction result and related issues to 2.0.x
Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/package.html Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,214 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import javax.portlet.PortletSession; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionContext; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] PortletSession} as a [EMAIL PROTECTED] HttpSession} instance. + * Clients accessing this session object will in fact operate on the + * [EMAIL PROTECTED] PortletSession} object wrapped by this session object. + */ +public class PortletHttpSession implements HttpSession { + + private PortletSession portletSession; + + public PortletHttpSession(PortletSession portletSession) { + this.portletSession = portletSession; + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getAttribute(java.lang.String) + */ + public Object getAttribute(String name) { + return portletSession.getAttribute(name); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getAttributeNames() + */ + public Enumeration getAttributeNames() { + return portletSession.getAttributeNames(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getCreationTime() + */ + public long getCreationTime() { + return portletSession.getCreationTime(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getId() + */ + public String getId() { + return portletSession.getId(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getLastAccessedTime() + */ + public long getLastAccessedTime() { + return portletSession.getLastAccessedTime(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getMaxInactiveInterval() + */ + public int getMaxInactiveInterval() { + return portletSession.getMaxInactiveInterval(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getServletContext() + */ + public ServletContext getServletContext() { + return new PortletServletContext(portletSession.getPortletContext()); + } + + /** + * @see javax.servlet.http.HttpSession#getSessionContext() + * @throws IllegalStateException + * Not supported in a portlet. + */ + public HttpSessionContext getSessionContext() { + throw new IllegalStateException("Not supported in a portlet"); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getValue(java.lang.String) + */ + public Object getValue(String name) { + return getAttribute(name); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#getValueNames() + */ + public String[] getValueNames() { + List<String> names = new ArrayList<String>(); + Enumeration attrNames = getAttributeNames(); + while (attrNames.hasMoreElements()) { + names.add((String) attrNames.nextElement()); + } + return names.toArray(new String[0]); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#invalidate() + */ + public void invalidate() { + portletSession.invalidate(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#isNew() + */ + public boolean isNew() { + return portletSession.isNew(); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#putValue(java.lang.String, + * java.lang.Object) + */ + public void putValue(String name, Object value) { + setAttribute(name, value); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#removeAttribute(java.lang.String) + */ + public void removeAttribute(String name) { + portletSession.removeAttribute(name); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#removeValue(java.lang.String) + */ + public void removeValue(String name) { + removeAttribute(name); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#setAttribute(java.lang.String, + * java.lang.Object) + */ + public void setAttribute(String name, Object value) { + portletSession.setAttribute(name, value); + } + + /* + * (non-Javadoc) + * + * @see javax.servlet.http.HttpSession#setMaxInactiveInterval(int) + */ + public void setMaxInactiveInterval(int interval) { + portletSession.setMaxInactiveInterval(interval); + } + + /** + * Get the wrapped portlet session. + * + * @return The wrapped portlet session. + */ + public PortletSession getPortletSession() { + return portletSession; + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,81 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.util.Enumeration; + +import javax.portlet.PortletConfig; +import javax.portlet.PortletContext; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] PortletConfig} as a [EMAIL PROTECTED] ServletConfig} instance. + * Clients accessing this config object will in fact operate on the + * [EMAIL PROTECTED] PortletConfig} object wrapped by this config object. + */ +public class PortletServletConfig implements ServletConfig { + + private PortletConfig portletConfig; + + public PortletServletConfig(PortletConfig portletConfig) { + this.portletConfig = portletConfig; + } + + /* (non-Javadoc) + * @see javax.servlet.ServletConfig#getInitParameter(java.lang.String) + */ + public String getInitParameter(String name) { + return portletConfig.getInitParameter(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletConfig#getInitParameterNames() + */ + public Enumeration getInitParameterNames() { + return portletConfig.getInitParameterNames(); + } + + /** + * Get the [EMAIL PROTECTED] PortletContext} as a [EMAIL PROTECTED] PortletServletContext} instance. + * @see javax.servlet.ServletConfig#getServletContext() + */ + public ServletContext getServletContext() { + return new PortletServletContext(portletConfig.getPortletContext()); + } + + /** + * Will return the portlet name. + * @see javax.servlet.ServletConfig#getServletName() + */ + public String getServletName() { + return portletConfig.getPortletName(); + } + + /** + * Get the wrapped [EMAIL PROTECTED] PortletConfig} instance. + * @return The wrapped [EMAIL PROTECTED] PortletConfig} instance. + */ + public PortletConfig getPortletConfig() { + return portletConfig; + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,235 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Enumeration; +import java.util.Set; + +import javax.portlet.PortletContext; +import javax.portlet.PortletRequestDispatcher; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] PortletContext} as a [EMAIL PROTECTED] ServletContext} instance. + * Clients accessing this context object will in fact operate on the + * [EMAIL PROTECTED] PortletContext} object wrapped by this context object. + */ +public class PortletServletContext implements ServletContext { + + private PortletContext portletContext; + + public PortletServletContext(PortletContext portletContext) { + this.portletContext = portletContext; + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getAttribute(java.lang.String) + */ + public Object getAttribute(String name) { + return portletContext.getAttribute(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getAttributeNames() + */ + public Enumeration getAttributeNames() { + return portletContext.getAttributeNames(); + } + + /** + * @see javax.servlet.ServletContext#getContext(java.lang.String) + * @throws IllegalStateException Not supported in a portlet. + */ + public ServletContext getContext(String uripath) { + throw new IllegalStateException("Not supported in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getInitParameter(java.lang.String) + */ + public String getInitParameter(String name) { + return portletContext.getInitParameter(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getInitParameterNames() + */ + public Enumeration getInitParameterNames() { + return portletContext.getInitParameterNames(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getMajorVersion() + */ + public int getMajorVersion() { + return portletContext.getMajorVersion(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getMimeType(java.lang.String) + */ + public String getMimeType(String file) { + return portletContext.getMimeType(file); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getMinorVersion() + */ + public int getMinorVersion() { + return portletContext.getMinorVersion(); + } + + /** + * Returns a [EMAIL PROTECTED] PortletServletRequestDispatcher} wrapping the [EMAIL PROTECTED] PortletRequestDispatcher} + * as a [EMAIL PROTECTED] RequestDispatcher} instance. + * @see javax.servlet.ServletContext#getNamedDispatcher(java.lang.String) + * @return PortletServletRequestDispatcher + */ + public RequestDispatcher getNamedDispatcher(String name) { + return new PortletServletRequestDispatcher(portletContext.getNamedDispatcher(name)); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getRealPath(java.lang.String) + */ + public String getRealPath(String path) { + return portletContext.getRealPath(path); + } + + /** + * Returns a [EMAIL PROTECTED] PortletServletRequestDispatcher} wrapping the [EMAIL PROTECTED] PortletRequestDispatcher} + * as a [EMAIL PROTECTED] RequestDispatcher} instance. + * @see javax.servlet.ServletContext#getNamedDispatcher(java.lang.String) + * @return PortletServletRequestDispatcher + */ + public RequestDispatcher getRequestDispatcher(String path) { + return new PortletServletRequestDispatcher(portletContext.getRequestDispatcher(path)); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getResource(java.lang.String) + */ + public URL getResource(String path) throws MalformedURLException { + return portletContext.getResource(path); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getResourceAsStream(java.lang.String) + */ + public InputStream getResourceAsStream(String path) { + return portletContext.getResourceAsStream(path); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getResourcePaths(java.lang.String) + */ + public Set getResourcePaths(String path) { + return portletContext.getResourcePaths(path); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getServerInfo() + */ + public String getServerInfo() { + return portletContext.getServerInfo(); + } + + /** + * @see javax.servlet.ServletContext#getServlet(java.lang.String) + * @throws IllegalStateException Not supported in a portlet. + */ + public Servlet getServlet(String name) throws ServletException { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#getServletContextName() + */ + public String getServletContextName() { + return portletContext.getPortletContextName(); + } + + /** + * @see javax.servlet.ServletContext#getServletNames() + * @throws IllegalStateException Not supported in a portlet. + */ + public Enumeration getServletNames() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * @see javax.servlet.ServletContext#getServlets() + * @throws IllegalStateException Not supported in a portlet. + */ + public Enumeration getServlets() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#log(java.lang.String) + */ + public void log(String msg) { + portletContext.log(msg); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#log(java.lang.Exception, java.lang.String) + */ + public void log(Exception exception, String msg) { + log(msg, exception); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#log(java.lang.String, java.lang.Throwable) + */ + public void log(String message, Throwable throwable) { + portletContext.log(message, throwable); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#removeAttribute(java.lang.String) + */ + public void removeAttribute(String name) { + portletContext.removeAttribute(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object) + */ + public void setAttribute(String name, Object object) { + portletContext.setAttribute(name, object); + } + + /** + * Get the wrapped [EMAIL PROTECTED] PortletContext} instance. + * @return The wrapped [EMAIL PROTECTED] PortletContext} instance. + */ + public PortletContext getPortletContext() { + return portletContext; + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,121 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.IOException; +import java.io.InputStream; + +import javax.servlet.ServletInputStream; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] InputStream} from a portlet as a [EMAIL PROTECTED] ServletInputStream} instance. + * Clients accessing this stream object will in fact operate on the + * [EMAIL PROTECTED] InputStream} object wrapped by this stream object. + */ +public class PortletServletInputStream extends ServletInputStream { + + private InputStream portletInputStream; + + public PortletServletInputStream(InputStream portletInputStream) { + this.portletInputStream = portletInputStream; + } + + /* (non-Javadoc) + * @see java.io.InputStream#read() + */ + @Override + public int read() throws IOException { + return portletInputStream.read(); + } + + /* (non-Javadoc) + * @see java.io.InputStream#available() + */ + @Override + public int available() throws IOException { + return portletInputStream.available(); + } + + /* (non-Javadoc) + * @see java.io.InputStream#close() + */ + @Override + public void close() throws IOException { + portletInputStream.close(); + } + + /* (non-Javadoc) + * @see java.io.InputStream#mark(int) + */ + @Override + public synchronized void mark(int readlimit) { + portletInputStream.mark(readlimit); + } + + /* (non-Javadoc) + * @see java.io.InputStream#markSupported() + */ + @Override + public boolean markSupported() { + return portletInputStream.markSupported(); + } + + /* (non-Javadoc) + * @see java.io.InputStream#read(byte[], int, int) + */ + @Override + public int read(byte[] b, int off, int len) throws IOException { + return portletInputStream.read(b, off, len); + } + + /* (non-Javadoc) + * @see java.io.InputStream#read(byte[]) + */ + @Override + public int read(byte[] b) throws IOException { + return portletInputStream.read(b); + } + + /* (non-Javadoc) + * @see java.io.InputStream#reset() + */ + @Override + public synchronized void reset() throws IOException { + portletInputStream.reset(); + } + + /* (non-Javadoc) + * @see java.io.InputStream#skip(long) + */ + @Override + public long skip(long n) throws IOException { + return portletInputStream.skip(n); + } + + /** + * Get the wrapped [EMAIL PROTECTED] InputStream} instance. + * @return The wrapped [EMAIL PROTECTED] InputStream} instance. + */ + public InputStream getInputStream() { + return portletInputStream; + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,88 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.IOException; +import java.io.OutputStream; + +import javax.servlet.ServletOutputStream; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] OutputStream} from a portlet as a [EMAIL PROTECTED] ServletOutputStream} instance. + * Clients accessing this stream object will in fact operate on the + * [EMAIL PROTECTED] OutputStream} object wrapped by this stream object. + */ +public class PortletServletOutputStream extends ServletOutputStream { + + private OutputStream portletOutputStream; + + public PortletServletOutputStream(OutputStream portletOutputStream) { + this.portletOutputStream = portletOutputStream; + } + + /* (non-Javadoc) + * @see java.io.OutputStream#write(int) + */ + @Override + public void write(int ch) throws IOException { + portletOutputStream.write(ch); + } + + /* (non-Javadoc) + * @see java.io.OutputStream#close() + */ + @Override + public void close() throws IOException { + portletOutputStream.close(); + } + + /* (non-Javadoc) + * @see java.io.OutputStream#flush() + */ + @Override + public void flush() throws IOException { + portletOutputStream.flush(); + } + + /* (non-Javadoc) + * @see java.io.OutputStream#write(byte[]) + */ + @Override + public void write(byte[] b) throws IOException { + portletOutputStream.write(b); + } + + /* (non-Javadoc) + * @see java.io.OutputStream#write(byte[], int, int) + */ + @Override + public void write(byte[] b, int off, int len) throws IOException { + portletOutputStream.write(b, off, len); + } + + /** + * Get the wrapped [EMAIL PROTECTED] OutputStream} instance. + * @return The wrapped [EMAIL PROTECTED] OutputStream} instance. + */ + public OutputStream getOutputStream() { + return portletOutputStream; + } +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,558 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.security.Principal; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; + +import javax.portlet.ActionRequest; +import javax.portlet.PortletContext; +import javax.portlet.PortletRequest; +import javax.portlet.PortletRequestDispatcher; +import javax.portlet.PortletSession; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.struts2.portlet.PortletActionConstants; + +/** + * Wrapper object exposing a [EMAIL PROTECTED] PortletRequest} as a [EMAIL PROTECTED] HttpServletRequest} instance. + * Clients accessing this request object will in fact operate on the + * [EMAIL PROTECTED] PortletRequest} object wrapped by this request object. + */ +public class PortletServletRequest implements HttpServletRequest, PortletActionConstants { + + private PortletRequest portletRequest; + private PortletContext portletContext; + + public PortletServletRequest(PortletRequest portletRequest, PortletContext portletContext) { + this.portletRequest = portletRequest; + this.portletContext = portletContext; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getAuthType() + */ + public String getAuthType() { + return portletRequest.getAuthType(); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getContextPath() + */ + public String getContextPath() { + return portletRequest.getContextPath(); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public Cookie[] getCookies() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getCookies(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public long getDateHeader(String name) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Gets a property from the [EMAIL PROTECTED] PortletRequest}. Note that a [EMAIL PROTECTED] PortletRequest} is not + * guaranteed to map properties to headers. + * @see PortletRequest#getProperty(String) + * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String) + */ + public String getHeader(String name) { + return portletRequest.getProperty(name); + } + + /** + * Gets the property names from the [EMAIL PROTECTED] PortletRequest}. Note that a [EMAIL PROTECTED] PortletRequest} is not + * guaranteed to map properties to headers. + * @see PortletRequest#getPropertyNames() + * @see javax.servlet.http.HttpServletRequest#getHeaderNames() + */ + public Enumeration getHeaderNames() { + return portletRequest.getPropertyNames(); + } + + /** + * Gets the values for the specified property from the [EMAIL PROTECTED] PortletRequest}. Note that a + * [EMAIL PROTECTED] PortletRequest} is not guaranteed to map properties to headers. + * @see PortletRequest#getProperties(String) + * @see HttpServletRequest#getHeaders(String) + */ + public Enumeration getHeaders(String name) { + return portletRequest.getProperties(name); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public int getIntHeader(String name) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getMethod() + */ + public String getMethod() { + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getPathInfo() + */ + public String getPathInfo() { + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getPathTranslated() + */ + public String getPathTranslated() { + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getQueryString() + */ + public String getQueryString() { + return null; + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getRemoteUser() + */ + public String getRemoteUser() { + return portletRequest.getRemoteUser(); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getRequestURI() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public StringBuffer getRequestURL() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId() + */ + public String getRequestedSessionId() { + return portletRequest.getRequestedSessionId(); + } + + /** + * A [EMAIL PROTECTED] PortletRequest} has no servlet path. But for compatibility with Struts 2 components and + * interceptors, the action parameter on the request is mapped to the servlet path. + * @see javax.servlet.http.HttpServletRequest#getServletPath() + */ + public String getServletPath() { + String actionPath = getParameter(ACTION_PARAM); + if(actionPath != null && !actionPath.endsWith(".action")) { + actionPath += ".action"; + } + return actionPath; + } + + /** + * Get the [EMAIL PROTECTED] PortletSession} as a [EMAIL PROTECTED] PortletHttpSession} instance. + * @see javax.servlet.http.HttpServletRequest#getSession() + */ + public HttpSession getSession() { + return new PortletHttpSession(portletRequest.getPortletSession()); + } + + /** + * Get the [EMAIL PROTECTED] PortletSession} as a [EMAIL PROTECTED] PortletHttpSession} instance. + * @see javax.servlet.http.HttpServletRequest#getSession(boolean) + */ + public HttpSession getSession(boolean create) { + return new PortletHttpSession(portletRequest.getPortletSession(create)); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#getUserPrincipal() + */ + public Principal getUserPrincipal() { + return portletRequest.getUserPrincipal(); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public boolean isRequestedSessionIdFromCookie() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public boolean isRequestedSessionIdFromURL() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public boolean isRequestedSessionIdFromUrl() { + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid() + */ + public boolean isRequestedSessionIdValid() { + return portletRequest.isRequestedSessionIdValid(); + } + + /* (non-Javadoc) + * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String) + */ + public boolean isUserInRole(String role) { + return portletRequest.isUserInRole(role); + } + + /** + * Gets an attribute value on the [EMAIL PROTECTED] PortletRequest}. If the attribute name is + * <tt>javax.servlet.include.servlet_path</tt>, it returns the same as + * [EMAIL PROTECTED] PortletServletRequest#getServletPath()} + * @see javax.servlet.ServletRequest#getAttribute(java.lang.String) + */ + public Object getAttribute(String name) { + if("javax.servlet.include.servlet_path".equals(name)) { + return getServletPath(); + } + else { + return portletRequest.getAttribute(name); + } + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getAttributeNames() + */ + public Enumeration getAttributeNames() { + return portletRequest.getAttributeNames(); + } + + /** + * Can only be invoked in the event phase. + * @see ServletRequest#getCharacterEncoding() + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public String getCharacterEncoding() { + if(portletRequest instanceof ActionRequest) { + return ((ActionRequest)portletRequest).getCharacterEncoding(); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /** + * Can only be invoked in the event phase. + * @see ServletRequest#getContentLength() + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public int getContentLength() { + if(portletRequest instanceof ActionRequest) { + return ((ActionRequest)portletRequest).getContentLength(); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /** + * Can only be invoked in the event phase. + * @see ServletRequest#getContentType() + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public String getContentType() { + if(portletRequest instanceof ActionRequest) { + return ((ActionRequest)portletRequest).getContentType(); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /** + * Can only be invoked in the event phase. When invoked in the event phase, it will wrap the + * portlet's [EMAIL PROTECTED] InputStream} as a [EMAIL PROTECTED] PortletServletInputStream}. + * @see ServletRequest#getInputStream() + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public ServletInputStream getInputStream() throws IOException { + if(portletRequest instanceof ActionRequest) { + return new PortletServletInputStream(((ActionRequest)portletRequest).getPortletInputStream()); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getLocalAddr() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getLocalAddr(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getLocalName() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getLocalName(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public int getLocalPort() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getLocalPort(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getLocale() + */ + public Locale getLocale() { + return portletRequest.getLocale(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getLocales() + */ + public Enumeration getLocales() { + return portletRequest.getLocales(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getParameter(java.lang.String) + */ + public String getParameter(String name) { + return portletRequest.getParameter(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getParameterMap() + */ + public Map getParameterMap() { + return portletRequest.getParameterMap(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getParameterNames() + */ + public Enumeration getParameterNames() { + return portletRequest.getParameterNames(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String) + */ + public String[] getParameterValues(String name) { + return portletRequest.getParameterValues(name); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getProtocol() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getProtocol(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Can only be invoked in the event phase. + * @see ServletRequest#getReader() + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public BufferedReader getReader() throws IOException { + if(portletRequest instanceof ActionRequest) { + return ((ActionRequest)portletRequest).getReader(); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getRealPath(java.lang.String) + */ + public String getRealPath(String path) { + return portletContext.getRealPath(path); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getRemoteAddr() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getRemoteAddr(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public String getRemoteHost() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getRemoteHost(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public int getRemotePort() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getRemotePort(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /** + * Get the [EMAIL PROTECTED] PortletRequestDispatcher} as a [EMAIL PROTECTED] PortletServletRequestDispatcher} instance. + * @see javax.servlet.ServletRequest#getRequestDispatcher(java.lang.String) + */ + public RequestDispatcher getRequestDispatcher(String path) { + return new PortletServletRequestDispatcher(portletContext.getRequestDispatcher(path)); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getScheme() + */ + public String getScheme() { + return portletRequest.getScheme(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#getServerName() + */ + public String getServerName() { + return portletRequest.getServerName(); + } + + /** + * Not allowed in a portlet. + * @throws IllegalStateException Not allowed in a portlet. + */ + public int getServerPort() { + if(portletRequest instanceof HttpServletRequest) { + return ((HttpServletRequest)portletRequest).getServerPort(); + } + throw new IllegalStateException("Not allowed in a portlet"); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#isSecure() + */ + public boolean isSecure() { + return portletRequest.isSecure(); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String) + */ + public void removeAttribute(String name) { + portletRequest.removeAttribute(name); + } + + /* (non-Javadoc) + * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object) + */ + public void setAttribute(String name, Object o) { + portletRequest.setAttribute(name, o); + } + + /** + * Can only be invoked in the event phase. + * @see ServletRequest#setCharacterEncoding(String) + * @throws IllegalStateException If the portlet is not in the event phase. + */ + public void setCharacterEncoding(String env) throws UnsupportedEncodingException { + if(portletRequest instanceof ActionRequest) { + ((ActionRequest)portletRequest).setCharacterEncoding(env); + } + else { + throw new IllegalStateException("Not allowed in render phase"); + } + } + + /** + * Get the wrapped [EMAIL PROTECTED] PortletRequest} instance. + * @return The wrapped [EMAIL PROTECTED] PortletRequest} instance. + */ + public PortletRequest getPortletRequest() { + return portletRequest; + } +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,70 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.IOException; + +import javax.portlet.PortletException; +import javax.portlet.PortletRequest; +import javax.portlet.PortletRequestDispatcher; +import javax.portlet.PortletResponse; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class PortletServletRequestDispatcher implements RequestDispatcher { + + private PortletRequestDispatcher portletRequestDispatcher; + + public PortletServletRequestDispatcher(PortletRequestDispatcher portletRequestDispatcher) { + this.portletRequestDispatcher = portletRequestDispatcher; + } + + public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException { + throw new IllegalStateException("Not allowed in a portlet"); + + } + + public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException { + if(request instanceof PortletServletRequest && response instanceof PortletServletResponse) { + PortletRequest req = ((PortletServletRequest)request).getPortletRequest(); + PortletResponse resp = ((PortletServletResponse)response).getPortletResponse(); + if(req instanceof RenderRequest && resp instanceof RenderResponse) { + try { + portletRequestDispatcher.include((RenderRequest)req, (RenderResponse)resp); + } + catch(PortletException e) { + throw new ServletException(e); + } + } + else { + throw new IllegalStateException("Can only be invoked in the render phase"); + } + } + else { + throw new IllegalStateException("Can only be invoked in a portlet"); + } + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java Thu Aug 23 02:05:56 2007 @@ -0,0 +1,233 @@ +/* + * $Id: $ + * + * 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.struts2.portlet.servlet; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Locale; + +import javax.portlet.PortletResponse; +import javax.portlet.RenderResponse; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; + +public class PortletServletResponse implements HttpServletResponse { + + private PortletResponse portletResponse; + + public PortletServletResponse(PortletResponse portletResponse) { + this.portletResponse = portletResponse; + } + + public void addCookie(Cookie cookie) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void addDateHeader(String name, long date) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void addHeader(String name, String value) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void addIntHeader(String name, int value) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public boolean containsHeader(String name) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public String encodeRedirectURL(String url) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public String encodeRedirectUrl(String url) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public String encodeURL(String url) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public String encodeUrl(String url) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void sendError(int sc) throws IOException { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void sendError(int sc, String msg) throws IOException { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void sendRedirect(String location) throws IOException { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setDateHeader(String name, long date) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setHeader(String name, String value) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setIntHeader(String name, int value) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setStatus(int sc) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setStatus(int sc, String sm) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void flushBuffer() throws IOException { + if(portletResponse instanceof RenderResponse) { + ((RenderResponse)portletResponse).flushBuffer(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public int getBufferSize() { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).getBufferSize(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public String getCharacterEncoding() { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).getCharacterEncoding(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public String getContentType() { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).getContentType(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public Locale getLocale() { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).getLocale(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public ServletOutputStream getOutputStream() throws IOException { + if(portletResponse instanceof RenderResponse) { + return new PortletServletOutputStream(((RenderResponse)portletResponse).getPortletOutputStream()); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public PrintWriter getWriter() throws IOException { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).getWriter(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public boolean isCommitted() { + if(portletResponse instanceof RenderResponse) { + return ((RenderResponse)portletResponse).isCommitted(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public void reset() { + if(portletResponse instanceof RenderResponse) { + ((RenderResponse)portletResponse).reset(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public void resetBuffer() { + if(portletResponse instanceof RenderResponse) { + ((RenderResponse)portletResponse).resetBuffer(); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public void setBufferSize(int size) { + if(portletResponse instanceof RenderResponse) { + ((RenderResponse)portletResponse).setBufferSize(size); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public void setCharacterEncoding(String charset) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setContentLength(int len) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public void setContentType(String type) { + if(portletResponse instanceof RenderResponse) { + ((RenderResponse)portletResponse).setContentType(type); + } + else { + throw new IllegalStateException("Not allowed in event phase"); + } + } + + public void setLocale(Locale loc) { + throw new IllegalStateException("Not allowed in a portlet"); + } + + public PortletResponse getPortletResponse() { + return portletResponse; + } + +} Added: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/package.html URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/package.html?rev=568896&view=auto ============================================================================== --- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/package.html (added) +++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/servlet/package.html Thu Aug 23 02:05:56 2007 @@ -0,0 +1,27 @@ +<!-- +/* + * $Id: package.html 559206 2007-07-24 21:01:18Z apetrelli $ + * + * 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. + */ +--> +<body> + Portlet wrapper objects for some of the servlet api objects. The wrappers simply delegate to the + underlying, corresponding portlet objects. The portlet wrapper objects makes it easier to reuse + interceptors and components from struts2 core. +</body> \ No newline at end of file