You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ni...@apache.org on 2007/08/09 17:36:53 UTC
svn commit: r564246 -
/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/
Author: nilsga
Date: Thu Aug 9 08:36:52 2007
New Revision: 564246
URL: http://svn.apache.org/viewvc?view=rev&rev=564246
Log:
WW-1989,WW-2053 Provide "mock" implentation of servlet classes wrapping the portlet classes. Eases reuse of components/interceptors that has references to servlet api objects.
Added:
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletHttpSession.java Thu Aug 9 08:36:52 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 {@link PortletSession} as a {@link HttpSession} instance.
+ * Clients accessing this session object will in fact operate on the
+ * {@link 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/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletConfig.java Thu Aug 9 08:36:52 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 {@link PortletConfig} as a {@link ServletConfig} instance.
+ * Clients accessing this config object will in fact operate on the
+ * {@link 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 {@link PortletContext} as a {@link 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 {@link PortletConfig} instance.
+ * @return The wrapped {@link PortletConfig} instance.
+ */
+ public PortletConfig getPortletConfig() {
+ return portletConfig;
+ }
+
+}
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletContext.java Thu Aug 9 08:36:52 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 {@link PortletContext} as a {@link ServletContext} instance.
+ * Clients accessing this context object will in fact operate on the
+ * {@link 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 {@link PortletServletRequestDispatcher} wrapping the {@link PortletRequestDispatcher}
+ * as a {@link 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 {@link PortletServletRequestDispatcher} wrapping the {@link PortletRequestDispatcher}
+ * as a {@link 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 {@link PortletContext} instance.
+ * @return The wrapped {@link PortletContext} instance.
+ */
+ public PortletContext getPortletContext() {
+ return portletContext;
+ }
+
+}
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletInputStream.java Thu Aug 9 08:36:52 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 {@link InputStream} from a portlet as a {@link ServletInputStream} instance.
+ * Clients accessing this stream object will in fact operate on the
+ * {@link 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 {@link InputStream} instance.
+ * @return The wrapped {@link InputStream} instance.
+ */
+ public InputStream getInputStream() {
+ return portletInputStream;
+ }
+
+}
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletOutputStream.java Thu Aug 9 08:36:52 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 {@link OutputStream} from a portlet as a {@link ServletOutputStream} instance.
+ * Clients accessing this stream object will in fact operate on the
+ * {@link 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 {@link OutputStream} instance.
+ * @return The wrapped {@link OutputStream} instance.
+ */
+ public OutputStream getOutputStream() {
+ return portletOutputStream;
+ }
+}
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequest.java Thu Aug 9 08:36:52 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 {@link PortletRequest} as a {@link HttpServletRequest} instance.
+ * Clients accessing this request object will in fact operate on the
+ * {@link 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 {@link PortletRequest}. Note that a {@link 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 {@link PortletRequest}. Note that a {@link 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 {@link PortletRequest}. Note that a
+ * {@link 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 {@link 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 {@link PortletSession} as a {@link PortletHttpSession} instance.
+ * @see javax.servlet.http.HttpServletRequest#getSession()
+ */
+ public HttpSession getSession() {
+ return new PortletHttpSession(portletRequest.getPortletSession());
+ }
+
+ /**
+ * Get the {@link PortletSession} as a {@link 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 {@link PortletRequest}. If the attribute name is
+ * <tt>javax.servlet.include.servlet_path</tt>, it returns the same as
+ * {@link 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 {@link InputStream} as a {@link 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 {@link PortletRequestDispatcher} as a {@link 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 {@link PortletRequest} instance.
+ * @return The wrapped {@link PortletRequest} instance.
+ */
+ public PortletRequest getPortletRequest() {
+ return portletRequest;
+ }
+}
Added: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletRequestDispatcher.java Thu Aug 9 08:36:52 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/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/PortletServletResponse.java Thu Aug 9 08:36:52 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/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html?view=auto&rev=564246
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html (added)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/servlet/package.html Thu Aug 9 08:36:52 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