You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@portals.apache.org by ta...@apache.org on 2015/07/13 18:40:01 UTC
svn commit: r1690750 [4/6] - in
/portals/portlet-spec/trunk/portlet-api_2.1.0_spec: ./ src/ src/main/
src/main/appended-resources/ src/main/appended-resources/META-INF/
src/main/java/ src/main/java/META-INF/ src/main/java/javax/
src/main/java/javax/por...
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSession.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSession.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSession.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSession.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,417 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.util.Map;
+
+
+
+/**
+ * The <CODE>PortletSession</CODE> interface provides a way to identify a user
+ * across more than one request and to store transient information about that user.
+ * <p>
+ * A <code>PortletSession</code> is created per user client per portlet application.
+ * <p>
+ * A portlet can bind an object attribute into a <code>PortletSession</code> by name.
+ * The <code>PortletSession</code> interface defines two scopes for storing objects:
+ * <ul>
+ * <li><code>APPLICATION_SCOPE</code>
+ * <li><code>PORTLET_SCOPE</code>
+ * </ul>
+ * All objects stored in the session using the <code>APPLICATION_SCOPE</code>
+ * must be available to all the portlets, servlets and
+ * JSPs that belongs to the same portlet application and that handles a
+ * request identified as being a part of the same session.
+ * Objects stored in the session using the <code>PORTLET_SCOPE</code> must be
+ * available to the portlet during requests for the same portlet window
+ * that the objects where stored from. Attributes stored in the
+ * <code>PORTLET_SCOPE</code> are not protected from other web components
+ * of the portlet application. They are just conveniently namespaced.
+ * <P>
+ * The portlet session is based on the <code>HttpSession</code>. Therefore all
+ * <code>HttpSession</code> listeners do apply to the portlet session and
+ * attributes set in the portlet session are visible in the <code>HttpSession</code>
+ * and vice versa.
+ */
+public interface PortletSession
+{
+
+ /**
+ * This constant defines an application wide scope for the session attribute.
+ * <code>APPLICATION_SCOPE</code> session attributes enable Portlets
+ * within one portlet application to share data.
+ * <p>
+ * Portlets may need to prefix attributes set in this scope with some
+ * ID, to avoid overwriting each other's attributes in the
+ * case where two portlets of the same portlet definition
+ * are created.
+ * <p>
+ * Value: <code>0x01</code>
+ */
+ public static final int APPLICATION_SCOPE = 0x01;
+
+ /**
+ * This constant defines the scope of the session attribute to be
+ * private to the portlet and its included resources.
+ * <p>
+ * Value: <code>0x02</code>
+ */
+ public static final int PORTLET_SCOPE = 0x02;
+
+
+
+ /**
+ * Returns the object bound with the specified name in this session
+ * under the <code>PORTLET_SCOPE</code>, or <code>null</code> if no
+ * object is bound under the name in that scope.
+ *
+ * @param name a string specifying the name of the object
+ *
+ * @return the object with the specified name for
+ * the <code>PORTLET_SCOPE</code>.
+ *
+ * @exception java.lang.IllegalStateException if this method is called on an
+ * invalidated session.
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public java.lang.Object getAttribute(java.lang.String name);
+
+
+ /**
+ * Returns the object bound with the specified name in this session,
+ * or <code>null</code> if no object is bound under the name in the given scope.
+ *
+ * @param name a string specifying the name of the object
+ * @param scope session scope of this attribute
+ *
+ * @return the object with the specified name
+ *
+ * @exception java.lang.IllegalStateException if this method is called on an
+ * invalidated session, or the scope is unknown to the container.
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public java.lang.Object getAttribute(java.lang.String name,int scope);
+
+
+ /**
+ * Returns an <code>Enumeration</code> of String objects containing the names of
+ * all the objects bound to this session under the <code>PORTLET_SCOPE</code>, or an
+ * empty <code>Enumeration</code> if no attributes are available.
+ *
+ * @return an <code>Enumeration</code> of
+ * <code>String</code> objects specifying the
+ * names of all the objects bound to
+ * this session, or an empty <code>Enumeration</code>
+ * if no attributes are available.
+ *
+ * @exception java.lang.IllegalStateException if this method is called on an
+ * invalidated session
+ */
+
+ public java.util.Enumeration<String> getAttributeNames();
+
+
+ /**
+ * Returns an <code>Enumeration</code> of String objects containing the names of
+ * all the objects bound to this session in the given scope, or an
+ * empty <code>Enumeration</code> if no attributes are available in the
+ * given scope.
+ *
+ * @param scope session scope of the attribute names
+ *
+ * @return an <code>Enumeration</code> of
+ * <code>String</code> objects specifying the
+ * names of all the objects bound to
+ * this session, or an empty <code>Enumeration</code>
+ * if no attributes are available in the given scope.
+ *
+ * @exception java.lang.IllegalStateException if this method is called on an
+ * invalidated session, or the scope is unknown to the container.
+ */
+
+ public java.util.Enumeration<String> getAttributeNames(int scope);
+
+ /**
+ * Returns the time when this session was created, measured in
+ * milliseconds since midnight January 1, 1970 GMT.
+ *
+ * @return a <code>long</code> specifying
+ * when this session was created,
+ * expressed in
+ * milliseconds since 1/1/1970 GMT
+ *
+ * @exception java.lang.IllegalStateException if this method is called on an
+ * invalidated session
+ */
+
+ public long getCreationTime();
+
+
+ /**
+ * Returns a string containing the unique identifier assigned to this session.
+ *
+ * @return a string specifying the identifier
+ * assigned to this session
+ */
+
+ public java.lang.String getId();
+
+
+ /**
+ * Returns the last time the client sent a request associated with this session,
+ * as the number of milliseconds since midnight January 1, 1970 GMT.
+ *
+ * <p>Actions that your portlet takes, such as getting or setting
+ * a value associated with the session, do not affect the access
+ * time.
+ *
+ * @return a <code>long</code>
+ * representing the last time
+ * the client sent a request associated
+ * with this session, expressed in
+ * milliseconds since 1/1/1970 GMT
+ */
+
+ public long getLastAccessedTime();
+
+
+ /**
+ * Returns the maximum time interval, in seconds, for which the portlet container
+ * keeps this session open between client accesses. After this interval,
+ * the portlet container invalidates the session. The maximum time
+ * interval can be set
+ * with the <code>setMaxInactiveInterval</code> method.
+ * A negative time indicates the session should never timeout.
+ *
+ * @return an integer specifying the number of
+ * seconds this session remains open
+ * between client requests
+ *
+ * @see #setMaxInactiveInterval
+ */
+
+ public int getMaxInactiveInterval();
+
+
+ /**
+ * Invalidates this session (all scopes) and unbinds any objects bound to it.
+ * <p>
+ * Invalidating the portlet session will result in invalidating the underlying
+ * <code>HttpSession</code>
+ *
+ * @exception java.lang.IllegalStateException if this method is called on a
+ * session which has already been invalidated
+ */
+
+ public void invalidate();
+
+
+
+ /**
+ * Returns true if the client does not yet know about the session or
+ * if the client chooses not to join the session.
+ *
+ * @return <code>true</code> if the
+ * server has created a session,
+ * but the client has not joined yet.
+ *
+ * @exception java.lang.IllegalStateException if this method is called on a
+ * session which has already been invalidated
+ *
+ */
+
+ public boolean isNew();
+
+
+ /**
+ * Removes the object bound with the specified name under
+ * the <code>PORTLET_SCOPE</code> from
+ * this session. If the session does not have an object
+ * bound with the specified name, this method does nothing.
+ *
+ * @param name the name of the object to be
+ * removed from this session in the
+ * <code> PORTLET_SCOPE</code>.
+ *
+ * @exception java.lang.IllegalStateException
+ * if this method is called on a
+ * session which has been invalidated
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public void removeAttribute(String name) ;
+
+
+ /**
+ * Removes the object bound with the specified name and the given scope from
+ * this session. If the session does not have an object
+ * bound with the specified name, this method does nothing.
+ *
+ * @param name the name of the object to be
+ * removed from this session
+ * @param scope session scope of this attribute
+ *
+ * @exception java.lang.IllegalStateException
+ * if this method is called on a
+ * session which has been invalidated
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public void removeAttribute(String name, int scope) ;
+
+
+ /**
+ * Binds an object to this session under the <code>PORTLET_SCOPE</code>, using the name specified.
+ * If an object of the same name in this scope is already bound to the session,
+ * that object is replaced.
+ *
+ * <p>After this method has been executed, and if the new object
+ * implements <code>HttpSessionBindingListener</code>,
+ * the container calls
+ * <code>HttpSessionBindingListener.valueBound</code>. The container then
+ * notifies any <code>HttpSessionAttributeListeners</code> in the web
+ * application.
+ * <p>If an object was already bound to this session
+ * that implements <code>HttpSessionBindingListener</code>, its
+ * <code>HttpSessionBindingListener.valueUnbound</code> method is called.
+ *
+ * <p>If the value is <code>null</code>, this has the same effect as calling
+ * <code>removeAttribute()</code>.
+ *
+ *
+ * @param name the name to which the object is bound under
+ * the <code>PORTLET_SCOPE</code>;
+ * this cannot be <code>null</code>.
+ * @param value the object to be bound
+ *
+ * @exception java.lang.IllegalStateException if this method is called on a
+ * session which has been invalidated
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ */
+
+ public void setAttribute(java.lang.String name, java.lang.Object value);
+
+
+ /**
+ * Binds an object to this session in the given scope, using the name specified.
+ * If an object of the same name in this scope is already bound to the session,
+ * that object is replaced.
+ *
+ * <p>After this method has been executed, and if the new object
+ * implements <code>HttpSessionBindingListener</code>,
+ * the container calls
+ * <code>HttpSessionBindingListener.valueBound</code>. The container then
+ * notifies any <code>HttpSessionAttributeListeners</code> in the web
+ * application.
+ * <p>If an object was already bound to this session
+ * that implements <code>HttpSessionBindingListener</code>, its
+ * <code>HttpSessionBindingListener.valueUnbound</code> method is called.
+ *
+ * <p>If the value is <code>null</code>, this has the same effect as calling
+ * <code>removeAttribute()</code>.
+ *
+ *
+ * @param name the name to which the object is bound;
+ * this cannot be <code>null</code>.
+ * @param value the object to be bound
+ * @param scope session scope of this attribute
+ *
+ * @exception java.lang.IllegalStateException if this method is called on a
+ * session which has been invalidated
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code> or scope is unknown to the container.
+ */
+
+ public void setAttribute(java.lang.String name, java.lang.Object value, int scope);
+
+
+ /**
+ * Specifies the time, in seconds, between client requests, before the
+ * portlet container invalidates this session. A negative time
+ * indicates the session should never timeout.
+ *
+ * @param interval An integer specifying the number
+ * of seconds
+ */
+
+ public void setMaxInactiveInterval(int interval);
+
+
+ /**
+ * Returns the portlet application context associated with this session.
+ *
+ * @return the portlet application context
+ */
+
+ public PortletContext getPortletContext ();
+
+ /**
+ * Returns a <code>Map</code> of the session attributes in
+ * the portlet session scope.
+ * <p>
+ * The keys are of type <code>String</code> and the values in the
+ * returned <code>Map</code> are from type <code>Object</code>.
+ * <p>
+ * If no session attributes exist this method returns an empty <code>Map</code>.
+ *
+ * @return an immutable <code>Map</code> containing the session attributes in the
+ * portlet session scope as keys and attribute values as map values, or an empty <code>Map</code>
+ * if no session attributes exist. The keys in the
+ * map are of type String, the values of type
+ * Object.
+ * @since 2.0
+ */
+ public Map<String, Object> getAttributeMap();
+
+ /**
+ * Returns a <code>Map</code> of the session attributes in
+ * the given session scope.
+ * <p>
+ * The keys are of type <code>String</code> and the values in the
+ * returned <code>Map</code> are from type <code>Object</code>.
+ * <p>
+ * If no session attributes exist this method returns an empty <code>Map</code>.
+ *
+ * @param scope session scope of this attribute
+ *
+ * @return an immutable <code>Map</code> containing the session attributes in the
+ * given scope as keys and attribute values as map values, or an empty <code>Map</code>
+ * if no session attributes exist. The keys in the
+ * map are of type String, the values of type
+ * Object.
+ * @since 2.0
+ */
+ public Map<String, Object> getAttributeMap(int scope);
+
+}
+
+
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSessionUtil.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSessionUtil.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSessionUtil.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletSessionUtil.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,90 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>PortletSessionUtil</CODE> class helps identify and decode
+ * attributes in the <CODE>PORTLET_SCOPE</CODE> scope of the PortletSession
+ * when accessed through the HttpSession an from within calls to methods
+ * of the HttpSessionBindingListener interface.
+ */
+public class PortletSessionUtil
+{
+
+ private static final String PORTLET_SCOPE_NAMESPACE = "javax.portlet.p.";
+
+ /**
+ * Returns the attribute name of an attribute in the
+ * <code>PORTLET_SCOPE</code>. If the attribute is in the
+ * <code>APPLICATION_SCOPE</code> it returns the attribute name unchanged.
+ *
+ * @param name a string specifying the name of the
+ * encoded portlet attribute
+ *
+ * @return the decoded attribute name
+ */
+
+ public static java.lang.String decodeAttributeName(java.lang.String name)
+ {
+ if (name.startsWith(PORTLET_SCOPE_NAMESPACE)) {
+ int index = name.indexOf('?');
+ if (index>-1) {
+ name = name.substring(index+1);
+ }
+ }
+ return name;
+ }
+
+
+ /**
+ * Returns the portlet attribute scope from an encoded portlet
+ * attribute.
+ * <br>Possible return values are:
+ * <ul>
+ * <li><code>PortletSession.APPLICATION_SCOPE</code></li>
+ * <li><code>PortletSession.PORTLET_SCOPE</code></li>
+ * </ul>
+ *
+ * @param name a string specifying the name of the
+ * encoded portlet attribute
+ *
+ * @return the decoded attribute scope
+ * @see PortletSession
+ */
+
+ public static int decodeScope(java.lang.String name)
+ {
+ int scope = PortletSession.APPLICATION_SCOPE; // APP
+ if (name.startsWith(PORTLET_SCOPE_NAMESPACE)) {
+ int index = name.indexOf('?');
+ if (index>-1) {
+ scope = PortletSession.PORTLET_SCOPE; // PORTLET
+ }
+ }
+ return scope;
+ }
+}
+
+
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURL.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURL.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURL.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURL.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,143 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+
+
+/**
+ * The <CODE>PortletURL</CODE> interface represents a URL
+ * that reference the portlet itself.
+ * <p>
+ * A PortletURL is created through the <CODE>RenderResponse</CODE>
+ * or <code>ResourceResponse</code>.
+ * Parameters, a portlet mode, a window state and a security level
+ * can be added to <CODE>PortletURL</CODE> objects.
+ * <P>
+ * There are two types of PortletURLs:
+ * <ul>
+ * <li>Action URLs, they are created with <CODE>createActionURL</CODE>, and
+ * trigger an action request followed by a render request.
+ * <li>Render URLs, they are created with <CODE>createRenderURL</CODE>, and
+ * trigger a render request.
+ * </ul>
+ * <p>
+ * The string representation of a PortletURL does not need to be a valid
+ * URL at the time the portlet is generating its content. It may contain
+ * special tokens that will be converted to a valid URL, by the portal,
+ * before the content is returned to the client.
+ */
+public interface PortletURL extends BaseURL
+{
+
+
+
+ /**
+ * Indicates the window state the portlet should be in, if this
+ * portlet URL triggers a request.
+ * <p>
+ * A URL can not have more than one window state attached to it.
+ * If more than one window state is set only the last one set
+ * is attached to the URL.
+ *
+ * @param windowState
+ * the portlet window state
+ *
+ * @exception WindowStateException
+ * if the portlet cannot switch to this state,
+ * because the portal does not support this state, the portlet has not
+ * declared in its deployment descriptor that it supports this state, or the current
+ * user is not allowed to switch to this state.
+ * The <code>PortletRequest.isWindowStateAllowed()</code> method can be used
+ * to check if the portlet can set a given window state.
+ * @see PortletRequest#isWindowStateAllowed
+ */
+ public void setWindowState (WindowState windowState)
+ throws WindowStateException;
+
+
+ /**
+ * Indicates the portlet mode the portlet must be in, if this
+ * portlet URL triggers a request.
+ * <p>
+ * A URL can not have more than one portlet mode attached to it.
+ * If more than one portlet mode is set only the last one set
+ * is attached to the URL.
+ *
+ * @param portletMode
+ * the portlet mode
+ *
+ * @exception PortletModeException
+ * if the portlet cannot switch to this mode,
+ * because the portal does not support this mode, the portlet has not
+ * declared in its deployment descriptor that it supports this mode for the current markup,
+ * or the current user is not allowed to switch to this mode.
+ * The <code>PortletRequest.isPortletModeAllowed()</code> method can be used
+ * to check if the portlet can set a given portlet mode.
+ * @see PortletRequest#isPortletModeAllowed
+ */
+ public void setPortletMode (PortletMode portletMode)
+ throws PortletModeException;
+
+
+ /**
+ * Returns the currently set portlet mode on this PortletURL.
+ *
+ * @since 2.0
+ *
+ * @return the portlet mode, or <code>null</code> if none is set
+ */
+
+ public PortletMode getPortletMode ();
+
+
+ /**
+ * Returns the currently set window state on this PortletURL.
+ *
+ * @since 2.0
+ *
+ * @return the window state, or <code>null</code> if none is set
+ */
+
+ public WindowState getWindowState ();
+
+ /**
+ * Removes the specified public render parameter.
+ * The name must reference a public render parameter defined
+ * in the portlet deployment descriptor under the
+ * <code>public-render-parameter</code> element with the
+ * <code>identifier</code> mapping to the parameter name.
+ * <p>
+ * Note that calling this method on a PortletURL of type
+ * Action URL does not have any effect.
+ *
+ * @param name a <code>String</code> specifying
+ * the name of the public render parameter to be removed
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ * @since 2.0
+ */
+ public void removePublicRenderParameter(String name);
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURLGenerationListener.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURLGenerationListener.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURLGenerationListener.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PortletURLGenerationListener.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,66 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * Portlet applications can register portlet URL listeners in order to filter URLs
+ * before they get generated.
+ * In order to receive a callback from the portlet container before a
+ * portlet URL is generated the portlet application needs to implement this
+ * interface and register it in the deployment descriptor with the
+ * <code>listener</code> element.
+ *
+ * @since 2.0
+ */
+public interface PortletURLGenerationListener {
+
+ /**
+ * Callback being called by the portlet container
+ * before <code>toString</code> or <code>write</code>
+ * are executed on action URLs.
+ *
+ * @param actionURL action URL to be generated
+ */
+ public void filterActionURL(PortletURL actionURL);
+
+ /**
+ * Callback being called by the portlet container
+ * before <code>toString</code> or <code>write</code>
+ * are executed on render URLs.
+ *
+ * @param renderURL render URL to be generated
+ */
+ public void filterRenderURL(PortletURL renderURL);
+
+ /**
+ * Callback being called by the portlet container
+ * before <code>toString</code> or <code>write</code>
+ * are executed on resource URLs.
+ *
+ * @param resourceURL resource URL to be generated
+ */
+ public void filterResourceURL(ResourceURL resourceURL);
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PreferencesValidator.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PreferencesValidator.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PreferencesValidator.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/PreferencesValidator.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,53 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+
+/**
+ * The <CODE>PreferencesValidator</CODE> allows to validate the set of
+ * preferences of the associated portlet just before they are
+ * stored in the persistent store.
+ * <p>
+ * The portlet container invokes the <code>validate</code> method as
+ * part of the invocation of the <code>store</code> method of the
+ * <code>PortletPreferences</code>.
+ */
+public interface PreferencesValidator
+{
+
+ /**
+ * If the preferences values are successfully validated the call to this method
+ * must finish gracefully. Otherwise it must throw a <code>ValidatorException</code>.
+ *
+ * @param preferences preferences to validate
+ *
+ * @throws ValidatorException if the given preferences contains invalid
+ * settings
+ *
+ */
+
+ public void validate(PortletPreferences preferences)
+ throws ValidatorException;
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessAction.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessAction.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessAction.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessAction.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,52 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation for marking a method for processing
+ * a specific action.
+ * The <code>GenericPortlet</code> tries to dispatch to methods annotated
+ * with the tag <code>@ProcessAction</code> for any received
+ * <code>processAction</code> call.
+ *
+ * @since 2.0
+ */
+@Target(ElementType.METHOD)
+@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
+public @interface ProcessAction {
+ /**
+ * Name of the action.
+ * Must be set on the
+ * <code>ActionURL</code> as value of the
+ * parameter <code>javax.portlet.action</code>.
+ *
+ * @return action name
+ */
+ String name();
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessEvent.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessEvent.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessEvent.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ProcessEvent.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,64 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation for marking a method for handling
+ * a specific event.
+ * The <code>GenericPortlet</code> tries to dispatch to methods annotated
+ * with the tag <code>@ProcessEvent</code> for any received event.
+ *
+ * @since 2.0
+ */
+@Target(ElementType.METHOD)
+@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
+public @interface ProcessEvent {
+ /**
+ * Event QName.
+ * Must be in the format:<br>
+ * "{" + Namespace URI + "}" + local part.<br>
+ * If the Namespace URI equals(XMLConstants.NULL_NS_URI),
+ * only the local part is used
+ * (like the <code>javax.xml.namespace.QName.toString()</code> method).
+ *
+ * @return event QName.
+ */
+ String qname() default "";
+
+ /**
+ * Local part of the event name.
+ * The namespace for the events is either taken from the <code>default-event-namespace</code> element
+ * in the portlet deployment descriptor, or if this element is not provided
+ * the XML default namespace XMLConstants.NULL_NS_URI is used.
+ *
+ * @return local part of the event name.
+ */
+ String name() default "";
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ReadOnlyException.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ReadOnlyException.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ReadOnlyException.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ReadOnlyException.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,89 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>ReadOnlyException</CODE> is thrown when a portlet tries
+ * to change the value for a read-only preference attribute.
+ */
+
+public class ReadOnlyException extends PortletException
+{
+ private static final long serialVersionUID = 1L;
+
+ private ReadOnlyException ()
+ {
+ }
+
+ /**
+ * Constructs a new read-only exception with the given text. The
+ * portlet container may use the text write it to a log.
+ *
+ * @param text
+ * the exception text
+ */
+
+ public ReadOnlyException (String text)
+ {
+ super (text);
+ }
+
+ /**
+ * Constructs a new read-only exception when the portlet needs to do
+ * the following:
+ * <ul>
+ * <il>throw an exception
+ * <li>include a message about the "root cause" that interfered
+ * with its normal operation
+ * <li>include a description message
+ * </ul>
+ *
+ * @param text
+ * the exception text
+ * @param cause
+ * the root cause
+ */
+
+ public ReadOnlyException (String text, Throwable cause)
+ {
+ super(text, cause);
+ }
+
+ /**
+ * Constructs a new read-only exception when the portlet needs to throw an
+ * exception. The exception message is based on the localized message
+ * of the underlying exception.
+ *
+ * @param cause
+ * the root cause
+ */
+
+ public ReadOnlyException (Throwable cause)
+ {
+ super(cause);
+ }
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderMode.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderMode.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderMode.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderMode.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,49 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation for marking a method for handling
+ * a specific portlet mode in the render phase.
+ * The <code>GenericPortlet</code> tries to dispatch to methods annotated
+ * with the tag <code>@RenderMode</code> for any received render call.
+ *
+ * @since 2.0
+ */
+@Target(ElementType.METHOD)
+@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
+public @interface RenderMode {
+ /**
+ * Name of the render mode.
+ *
+ * @return render mode name
+ */
+ String name();
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderRequest.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderRequest.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderRequest.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderRequest.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,72 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+
+/**
+ * The <CODE>RenderRequest</CODE> represents the request sent to the portlet
+ * to handle a render.
+ * It extends the PortletRequest interface to provide render request
+ * information to portlets.<br>
+ * The portlet container creates a <CODE>RenderRequest</CODE> object and
+ * passes it as argument to the portlet's <CODE>render</CODE> method.
+ *
+ * @see PortletRequest
+ * @see ActionRequest
+ */
+public interface RenderRequest extends PortletRequest
+{
+
+ /**
+ * This property is set by the container if the portlet container
+ * has a cached response for the given validation tag. The property can be
+ * retrieved using the <code>getProperty</code> method.
+ * <P>
+ * The value is <code>"portlet.ETag "</code>.
+ *
+ * @since 2.0
+ */
+ public static final String ETAG = "portlet.ETag";
+
+
+ /**
+ * Returns the validation tag if the portlet container
+ * has a cached response for this validation tag, or
+ * <code>null</code> if no cached response exists.
+ * <p>
+ * This call returns the same value as
+ * <code>RenderRequest.getProperty(RenderRequest.ETAG)</code>.
+ *
+ * @return the validation tag if the portlet container
+ * has a cached response for this validation tag, or
+ * <code>null</code> if no cached response exists.
+ *
+ * @since 2.0
+ */
+ public String getETag();
+
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderResponse.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderResponse.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderResponse.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/RenderResponse.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,96 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>RenderResponse</CODE> defines an object to assist a portlet in
+ * sending a response to the portal. It extends the <CODE>MimeResponse</CODE>
+ * interface to provide specific render response functionality to portlets.<br>
+ * The portlet container creates a <CODE>RenderResponse</CODE> object and
+ * passes it as argument to the portlet's <CODE>render</CODE> method.
+ *
+ * @see RenderRequest
+ * @see PortletResponse
+ * @see MimeResponse
+ */
+public interface RenderResponse extends MimeResponse {
+
+ /**
+ * This method sets the title of the portlet.
+ * <p>
+ * The value can be a text String
+ *
+ * @param title
+ * portlet title as text String or resource URI
+ */
+ public void setTitle(String title);
+
+
+ /**
+ * This method allows the portlet to tell the portal the next possible
+ * portlet modes that the make sense from the portlet point of view.
+ * <p>
+ * If set, the portal should honor these enumeration of portlet modes and
+ * only provide the end user with choices to the provided portlet modes or a
+ * subset of these modes based on access control considerations.
+ * <p>
+ * If the portlet does not set any next possible portlet modes the default
+ * is that all portlet modes that the portlet has defined supporting in the
+ * portlet deployment descriptor are meaningful new portlet modes.
+ *
+ * @param portletModes
+ * <code>Enumeration</code> of <code>PortletMode</code> objects with the
+ * next possible portlet modes that the make sense from the
+ * portlet point of view, must not be <code>null</code> or an
+ * empty enumeration.
+ * @since 2.0
+ */
+ public void setNextPossiblePortletModes(java.util.Collection<PortletMode> portletModes);
+
+ /**
+ * Sets the MIME type for the render response. The portlet should set the
+ * content type before calling {@link #getWriter} or
+ * {@link #getPortletOutputStream}.
+ * <p>
+ * Calling <code>setContentType</code> after <code>getWriter</code> or
+ * <code>getOutputStream</code> does not change the content type.
+ * <p>
+ * The portlet container will ignore any character encoding
+ * specified as part of the content type for <code>render</code>
+ * calls.
+ *
+ * @param type
+ * the content MIME type
+ *
+ * @throws java.lang.IllegalArgumentException
+ * if the given type is not in the list
+ * returned by <code>PortletRequest.getResponseContentTypes</code>
+ *
+ * @see PortletRequest#getResponseContentTypes
+ * @see #getContentType
+ */
+ public void setContentType(String type);
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceRequest.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceRequest.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceRequest.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceRequest.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,148 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <code>ResourceRequest</code> interface represents the request
+ * send to the portlet for rendering resources.
+ *
+ * It extends the ClientDataRequest interface and provides resource request
+ * information to portlets.
+ * <p>
+ * The portlet container creates an <CODE>ResourceRequest</CODE> object and
+ * passes it as argument to the portlet's <CODE>serveResource</CODE> method.
+ * <p>
+ * The <code>ResourceRequest</code> is provided with the current portlet mode, window state,
+ * and render parameters that the portlet can access via the
+ * <code>PortletResourceRequest</code> with <code>getPortletMode</code> and,
+ * <code>getWindowState</code>, or one of the <code>getParameter</code> methods.
+ * ResourceURLs cannot change the current portlet mode, window state or
+ * render parameters. Parameters set on a resource URL are not render parameters
+ * but parameters for serving this resource and will last only for only
+ * this the current serveResource request.<br>
+ * If a parameter is set that has the same name as a render parameter that this
+ * resource URL contains, the render parameter must be the last entry in the
+ * parameter value array.
+ *
+ * @see ClientDataRequest
+ * @see ResourceServingPortlet
+ * @since 2.0
+ */
+public interface ResourceRequest extends ClientDataRequest {
+
+ /**
+ * This property is set by the container if the container
+ * has a cached response for the given validation tag. The property can be
+ * retrieved using the <code>getProperty</code> method.
+ * <P>
+ * The value is <code>"portlet.ETag "</code>.
+ */
+ public static final String ETAG = "portlet.ETag";
+
+ /**
+ * Returns the validation tag if the portlet container
+ * has a cached response for this validation tag, or
+ * <code>null</code> if no cached response exists.
+ * <p>
+ * This call returns the same value as
+ * <code>ResourceRequest.getProperty(ResourceRequest.ETAG)</code>.
+ *
+ * @return the validation tag if the portlet container
+ * has a cached response for this validation tag, or
+ * <code>null</code> if no cached response exists.
+ */
+ public String getETag();
+
+ /**
+ * Returns the resource ID set on the ResourceURL or <code>null</code>
+ * if no resource ID was set on the URL.
+ * <p>
+ * Note that if the resource ID is to be used as the target for a
+ * <code>PortletRequestDispatcher</code> forward or include, it should be checked for
+ * validity before use.
+ *
+ * @return the resource ID set on the ResourceURL,or <code>null</code>
+ * if no resource ID was set on the URL.
+ */
+ public String getResourceID();
+
+ /**
+ * Returns a <code>Map</code> of the private render parameters of this request.
+ * Private parameters are not shared with other portlets or components.
+ * The returned parameters are "x-www-form-urlencoded" decoded.
+ * <p>
+ * The parameters returned do not include the resource parameters that
+ * the portlet may have set on the resource URL triggering this
+ * <code>serveResource</code> call.
+ * <p>
+ * The values in the returned <code>Map</code> are from type
+ * String array (<code>String[]</code>).
+ * <p>
+ * If no private parameters exist this method returns an empty <code>Map</code>.
+ *
+ * @return an immutable <code>Map</code> containing private parameter names as
+ * keys and private parameter values as map values, or an empty <code>Map</code>
+ * if no private parameters exist. The keys in the parameter
+ * map are of type String. The values in the parameter map are of type
+ * String array (<code>String[]</code>).
+ */
+ public java.util.Map<String, String[]> getPrivateRenderParameterMap();
+
+ /**
+ * Returns the portal preferred content type for the response.
+ * <p>
+ * The returned content type should be based on the HTTP Accept header
+ * provided by the client.
+ *
+ * @return preferred content type of the response
+ */
+
+ public String getResponseContentType();
+
+
+ /**
+ * Gets a list of content types which the portal accepts for the response.
+ * This list is ordered with the most preferable types listed first.
+ * <p>
+ * The returned content types should be based on the HTTP Accept header
+ * provided by the client.
+ *
+ * @return ordered list of content types for the response
+ */
+
+ public java.util.Enumeration<String> getResponseContentTypes();
+
+ /**
+ * Returns the cache level of this resource request.
+ * <p>
+ * Possible return values are:
+ * <code>ResourceURL.FULL, ResourceURL.PORTLET</code>
+ * or <code>ResourceURL.PAGE</code>.
+ *
+ * @return the cache level of this resource request.
+ */
+ public String getCacheability();
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceResponse.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceResponse.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceResponse.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceResponse.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,127 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>ResourceResponse</CODE> defines an object to assist a portlet
+ * for rendering a resource.
+ * <p>
+ * The difference between the <CODE>RenderResponse</CODE> is that for the
+ * <CODE>ResourceResponse</CODE> the output of this response is delivered
+ * directly to the client without any additional markup added by the portal.
+ * It is therefore allowed for the portlet to return binary content in this
+ * response.
+ * <p>
+ * A portlet can set HTTP headers for the response via the setProperty or
+ * addProperty call in the <CODE>ResourceResponse</CODE>.
+ * To be successfully transmitted back to the client, headers must be set
+ * before the response is committed. Headers set after the response is
+ * committed will be ignored by the portlet container.
+ * <p>
+ * The portlet container creates a <CODE>ResourceResponse</CODE> object and
+ * passes it as argument to the portlet's <CODE>serveResource</CODE> method.
+ *
+ * @see ResourceServingPortlet
+ * @see MimeResponse
+ * @since 2.0
+ */
+public interface ResourceResponse extends MimeResponse {
+
+ /**
+ * Constant for setting the HTTP status code via the
+ * <code>setProperty</code> method.
+ */
+ public static final String HTTP_STATUS_CODE = "portlet.http-status-code";
+
+ /**
+ * Sets the locale of the response, setting the headers
+ * (including the Content-Type's charset) as appropriate.
+ * This method should be called before a call to getWriter().
+ * By default, the response locale is the default locale provided
+ * by the portlet container.
+ *
+ * @param loc the new locale of the response
+ */
+ public void setLocale(java.util.Locale loc);
+
+
+ /**
+ * Sets the character encoding (MIME charset) of the response being
+ * sent to the client, for example, to UTF-8. If the character encoding
+ * has already been set by either the portlet container,
+ * <code>setContentType(java.lang.String)</code> or
+ * <code>setLocale(java.util.Locale)</code>, this method overrides it. Calling
+ * <code>setContentType(java.lang.String)</code> with the String of
+ * <code>text/html</code> and calling this method with the String of
+ * <code>UTF-8</code> is equivalent with calling <code>setContentType</code>
+ * with the String of <code>text/html; charset=UTF-8</code>.
+ * <p>
+ * This method can be called repeatedly to change the character encoding.
+ * This method has no effect if it is called after getWriter has been called
+ * or after the response has been committed.
+ *
+ * @param charset a String specifying only the character set defined by
+ * IANA Character Sets (http://www.iana.org/assignments/character-sets)
+ */
+ public void setCharacterEncoding(java.lang.String charset);
+
+
+ /**
+ * Sets the length of the content body in the response.
+ *
+ * @param len an integer specifying the length of the content being returned
+ */
+ public void setContentLength(int len);
+
+
+ /**
+ * @throws java.lang.IllegalStateException
+ * if the cacheability level of the resource URL
+ * triggering this <code>serveResource</code> call
+ * is not <code>PAGE</code> and thus does not allow
+ * for creating render URLs.
+ */
+ public PortletURL createRenderURL();
+
+ /**
+ * @throws java.lang.IllegalStateException
+ * if the cacheability level of the resource URL
+ * triggering this <code>serveResource</code> call
+ * is not <code>PAGE</code> and thus does not allow
+ * for creating action URLs.
+ */
+ public PortletURL createActionURL();
+
+ /**
+ * @throws java.lang.IllegalStateException
+ * if the cacheability level of the resource URL
+ * triggering this <code>serveResource</code> call,
+ * or one of the parent calls, have defined a stricter
+ * cachability level.
+ */
+ public ResourceURL createResourceURL();
+
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceServingPortlet.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceServingPortlet.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceServingPortlet.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceServingPortlet.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,67 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <code>ResourceServingPortlet</code> interface allows
+ * serving resources through the portlet.
+ * <p>
+ * The portlet container must call this method for links created by
+ * the <code>RenderResponse.createResourceURL()</code> call.
+ * If the portlet creates resource URLs with <code>RenderResponse.createResourceURL()</code>
+ * it must implement this lifecycle method.
+ *
+ * @since 2.0
+ */
+public interface ResourceServingPortlet {
+
+ /**
+ * Called by the portlet container to allow the portlet to generate
+ * the resource content based on its current state.
+ * The portal / portlet container must not render any output in addition
+ * to the content returned by the portlet. The portal / portlet container
+ * should expect that the portlet may return binary content for a
+ * <code>renderResource</code> call.
+ *
+ * @param request
+ * the resource request
+ * @param response
+ * the resource response
+ *
+ * @exception PortletException
+ * if the portlet has problems fulfilling the
+ * rendering request
+ * @exception UnavailableException
+ * if the portlet is unavailable to perform render at this time
+ * @exception PortletSecurityException
+ * if the portlet cannot fullfill this request because of security reasons
+ * @exception java.io.IOException
+ * if the streaming causes an I/O problem
+ */
+
+
+ public void serveResource(ResourceRequest request, ResourceResponse response)
+ throws PortletException, java.io.IOException;
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceURL.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceURL.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceURL.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/ResourceURL.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,148 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>ResourceURL</CODE> defines a resource URL that when clicked will
+ * result in a <code>serveResource</code> call of the
+ * <code>ResourceServingPortlet</code> interface.
+ * <p>
+ * Each resource URL has a specific cache level assigned with it. This level
+ * can be either <code>FULL, PORTLET</code> or <code>PAGE</code> and denotes
+ * the cacheability of the resource in the browser.
+ * <p>
+ * The default cache level of a resource URL is either the cache level of the
+ * parent resource URL, or <code>PAGE</code> if no parent resource URL is
+ * available.
+ *
+ * @since 2.0
+ */
+public interface ResourceURL extends BaseURL {
+
+ /**
+ * The URL of type <code>FULL</code> does not need to contain the current
+ * state of the page or the current render parameters, portlet mode, or
+ * window state of the portlet. Thus the portlet may not be able to
+ * access the portlet mode, window state, or render parameters in the
+ * <code>serveResource</code> call.
+ * <p>
+ * Only URLs of the type <code>FULL</code> are allowed in the response.
+ * The same restriction is true for all downstream URLs that result from
+ * this response call. Attempts to create URLs that are not of type
+ * <code>FULL</code> will result in an <code>IllegalStateException</code>.
+ * <p>
+ * URLs of the type <code>FULL</code> have the highest cacheability in the
+ * browser as they do not depend on any state of the portlet or page.
+ */
+ public static final String FULL = "cacheLevelFull";
+
+ /**
+ * The URL of type <code>PORTLRET</code> does not need to contain the
+ * current state of the page, but the current render parameters, portlet
+ * mode, or window state of the portlet must be accessible to the portlet.
+ * <p>
+ * Only URLs of the type <code>PORTLET</code> or <code>FULL</code> are
+ * allowed in the response. The same restriction
+ * is true for all downstream URLs that result from this response.
+ * Attempts to create URLs that are not of type
+ * <code>PORTLET</code> or <code>FULL</code> will result in an
+ * <code>IllegalStateException</code>.
+ * <p>
+ * URLs of the type <code>PORTLET</code> are cacheable on the portlet
+ * level in the browser and can be served from the browser cache for as long
+ * as the state of this portlet does not change.
+ */
+ public static final String PORTLET = "cacheLevelPortlet";
+
+ /**
+ * The URL of type <code>PAGE</code> may contain artifacts that require
+ * knowledge of the state of the complete page, like
+ * <code>PortletURLs</code>.
+ * <p>
+ * URLs of the type <code>PAGE</code> are only cacheable on the page level
+ * and can only be served from the browser cache as long as no state on the
+ * page changes.
+ */
+ public static final String PAGE = "cacheLevelPage";
+
+ /**
+ * Property that the portlet can set for resources with caching
+ * type <code>FULL</code> via the <code>setProperty</code> method
+ * on the <code>ResourceURL</code>.
+ * <p>
+ * When set, this property indicates to the portal application
+ * that it can share this resource across different portlet applications.
+ * <p>
+ * The value of this property should be a QName in the
+ * format of <code>javax.xml.namespace.QName.toString()</code>.
+ */
+ public static final String SHARED = "javax.portlet.shared";
+
+
+ /**
+ * Allows setting a resource ID that can be retrieved when serving the
+ * resource through the {@link ResourceRequest#getResourceID} method.
+ *
+ * @param resourceID
+ * ID for this resource URL
+ */
+ public void setResourceID(String resourceID);
+
+ /**
+ * Returns the cache level of this resource URL.
+ * <p>
+ * Possible return values are: <code>FULL, PORTLET</code>
+ * or <code>PAGE</code>.
+ *
+ * @return the cache level of this resource URL.
+ */
+ public String getCacheability();
+
+ /**
+ * Sets the cache level of this resource URL.
+ * <p>
+ * Possible values are: <code>FULL, PORTLET</code>
+ * or <code>PAGE</code>.
+ * <p>
+ * Note that if this URL is created inside a
+ * <code>serveResource</code> call it must have
+ * at minimum the same cacheablity, or a more
+ * restrictive one, as the parent resource URL,
+ * otherwise an IllegalStateException is thrown.
+ * <p>
+ * The default cache level of a resource URL is either the cache level of the
+ * parent resource URL, or <code>PAGE</code> if no parent resource URL is
+ * available.
+ *
+ * @param cacheLevel the cache level of this resource URL.
+ * @throws java.lang.IllegalStateException
+ * if this resource URL has a weaker cache level
+ * than the parent resource URL.
+ * @throws java.lang.IllegalArgumentException
+ * if the cacheLevel is unknown to the portlet container
+ */
+ public void setCacheability(String cacheLevel);
+
+}
Added: portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/StateAwareResponse.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/StateAwareResponse.java?rev=1690750&view=auto
==============================================================================
--- portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/StateAwareResponse.java (added)
+++ portals/portlet-spec/trunk/portlet-api_2.1.0_spec/src/main/java/javax/portlet/StateAwareResponse.java Mon Jul 13 16:39:59 2015
@@ -0,0 +1,292 @@
+/* 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.
+ */
+
+/*
+ * This source code implements specifications defined by the Java
+ * Community Process. In order to remain compliant with the specification
+ * DO NOT add / change / or delete method signatures!
+ */
+
+package javax.portlet;
+
+/**
+ * The <CODE>StateAwareResponse</CODE> represents a response that can modify
+ * state information or send events.<BR>
+ * It extends the PortletResponse interface.
+ *
+ * @since 2.0
+ * @see PortletResponse
+ */
+public interface StateAwareResponse extends PortletResponse {
+
+ /**
+ * Sets the window state of a portlet to the given window state.
+ * <p>
+ * Possible values are the standard window states and any custom window
+ * states supported by the portal and the portlet. Standard window states
+ * are:
+ * <ul>
+ * <li>MINIMIZED
+ * <li>NORMAL
+ * <li>MAXIMIZED
+ * </ul>
+ *
+ * @param windowState
+ * the new portlet window state
+ *
+ * @exception WindowStateException
+ * if the portlet cannot switch to the specified window
+ * state. To avoid this exception the portlet can check the
+ * allowed window states with
+ * <code>Request.isWindowStateAllowed()</code>.
+ * @exception java.lang.IllegalStateException
+ * if the method is invoked after <code>sendRedirect</code>
+ * has been called.
+ *
+ * @see WindowState
+ */
+
+ public void setWindowState(WindowState windowState)
+ throws WindowStateException;
+
+ /**
+ * Sets the portlet mode of a portlet to the given portlet mode.
+ * <p>
+ * Possible values are the standard portlet modes and any custom portlet
+ * modes supported by the portal and the portlet. Portlets must declare in
+ * the deployment descriptor the portlet modes they support for each markup
+ * type. Standard portlet modes are:
+ * <ul>
+ * <li>EDIT
+ * <li>HELP
+ * <li>VIEW
+ * </ul>
+ * <p>
+ * Note: The portlet may still be called in a different window state in the
+ * next render call, depending on the portlet container / portal.
+ *
+ * @param portletMode
+ * the new portlet mode
+ *
+ * @exception PortletModeException
+ * if the portlet cannot switch to this portlet mode, because
+ * the portlet or portal does not support it for this markup,
+ * or the current user is not allowed to switch to this
+ * portlet mode. To avoid this exception the portlet can
+ * check the allowed portlet modes with
+ * <code>Request.isPortletModeAllowed()</code>.
+ * @exception java.lang.IllegalStateException
+ * if the method is invoked after <code>sendRedirect</code>
+ * has been called.
+ */
+
+ public void setPortletMode(PortletMode portletMode)
+ throws PortletModeException;
+
+ /**
+ * Sets a parameter map for the render request.
+ * <p>
+ * All previously set render parameters are cleared.
+ * <p>
+ * These parameters will be accessible in all sub-sequent render calls via
+ * the <code>PortletRequest.getParameter</code> call until a new request
+ * is targeted to the portlet.
+ * <p>
+ * The given parameters do not need to be encoded prior to calling this
+ * method.
+ * <p>
+ * The portlet should not modify the map any further after calling
+ * this method.
+ *
+ * @param parameters
+ * Map containing parameter names for the render phase as keys
+ * and parameter values as map values. The keys in the parameter
+ * map must be of type String. The values in the parameter map
+ * must be of type String array (<code>String[]</code>).
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if parameters is <code>null</code>, if any of the
+ * keys in the Map are <code>null</code>, if any of
+ * the keys is not a String, or if any of the values is not a
+ * String array.
+ * @exception java.lang.IllegalStateException
+ * if the method is invoked after <code>sendRedirect</code>
+ * has been called.
+ */
+
+ public void setRenderParameters(java.util.Map<String, String[]> parameters);
+
+ /**
+ * Sets a String parameter for the render request.
+ * <p>
+ * These parameters will be accessible in all sub-sequent render calls via
+ * the <code>PortletRequest.getParameter</code> call until a request is
+ * targeted to the portlet.
+ * <p>
+ * This method replaces all parameters with the given key.
+ * <p>
+ * The given parameter do not need to be encoded prior to calling this
+ * method.
+ *
+ * @param key
+ * key of the render parameter
+ * @param value
+ * value of the render parameter
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if key is <code>null</code>.
+ * @exception java.lang.IllegalStateException
+ * if the method is invoked after <code>sendRedirect</code>
+ * has been called.
+ */
+
+ public void setRenderParameter(String key, String value);
+
+ /**
+ * Sets a String array parameter for the render request.
+ * <p>
+ * These parameters will be accessible in all sub-sequent render calls via
+ * the <code>PortletRequest.getParameter</code> call until a request is
+ * targeted to the portlet.
+ * <p>
+ * This method replaces all parameters with the given key.
+ * <p>
+ * The given parameter do not need to be encoded prior to calling this
+ * method.
+ *
+ * @param key
+ * key of the render parameter
+ * @param values
+ * values of the render parameter
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if key or value are <code>null</code>.
+ * @exception java.lang.IllegalStateException
+ * if the method is invoked after <code>sendRedirect</code>
+ * has been called.
+ */
+
+ public void setRenderParameter(String key, String[] values);
+
+ /**
+ * Publishes an Event with the given payload.
+ * <p>
+ * The object type of the value must be compliant with the specified event
+ * type in the portlet deployment descriptor.
+ * <p>
+ * The value must have a valid JAXB binding and be serializable.
+ *
+ * @param name
+ * the event name to publish, must not be <code>null</code>
+ * @param value
+ * the value of this event, must have a valid JAXB binding and
+ * be serializable, or <code>null</code>.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>, the value is not
+ * serializable, the value does not have a valid JAXB binding, the
+ * object type of the value is not the same as specified in
+ * the portlet deployment descriptor for this event name.
+ * @since 2.0
+ */
+ public void setEvent(javax.xml.namespace.QName name, java.io.Serializable value);
+
+ /**
+ * Publishes an Event with the given payload in the default namespace.
+ * <p>
+ * The name is treated as local part of the event QName and the namespace
+ * is either taken from the <code>default-event-namespace</code> element
+ * in the portlet deployment descriptor, or if this element is not provided
+ * the XML default namespace XMLConstants.NULL_NS_URI is used.
+ * <p>
+ * The object type of the value must be compliant with the specified event
+ * type in the portlet deployment descriptor.
+ * <p>
+ * The value must have a valid JAXB binding and be serializable.
+ *
+ * @param name
+ * the local part of the event name to publish, must not be <code>null</code>
+ * @param value
+ * the value of this event, must have a valid JAXB binding and
+ * be serializable, or <code>null</code>.
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>, the value is not
+ * serializable, the value does not have a valid JAXB binding, the
+ * object type of the value is not the same as specified in
+ * the portlet deployment descriptor for this event name.
+ * @since 2.0
+ */
+ public void setEvent(String name, java.io.Serializable value);
+
+
+ /**
+ * Returns a <code>Map</code> of the render parameters currently set on
+ * this response.
+ * <p>
+ * The values in the returned <code>Map</code> are from type String array (<code>String[]</code>).
+ * <p>
+ * If no parameters exist this method returns an empty <code>Map</code>.
+ *
+ * @since 2.0
+ *
+ * @return <code>Map</code> containing render parameter names as keys and
+ * parameter values as map values, or an empty <code>Map</code> if
+ * no parameters exist. The keys in the parameter map are of type
+ * String. The values in the parameter map are of type String array (<code>String[]</code>).
+ */
+
+ public java.util.Map<String, String[]> getRenderParameterMap();
+
+ /**
+ * Returns the currently set portlet mode on this reponse.
+ *
+ * @since 2.0
+ *
+ * @return the portlet mode, or <code>null</code> if none is set
+ */
+
+ public PortletMode getPortletMode();
+
+ /**
+ * Returns the currently set window state on this response.
+ *
+ * @since 2.0
+ *
+ * @return the window state, or <code>null</code> if none is set
+ */
+
+ public WindowState getWindowState();
+
+
+ /**
+ * Removes the specified public render parameter.
+ * The name must reference a public render parameter defined
+ * in the portlet deployment descriptor under the
+ * <code>public-render-parameter</code> element with the
+ * <code>identifier</code> mapping to the parameter name.
+ *
+ * @param name a <code>String</code> specifying
+ * the name of the public render parameter to be removed
+ *
+ * @exception java.lang.IllegalArgumentException
+ * if name is <code>null</code>.
+ * @since 2.0
+ */
+ public void removePublicRenderParameter(String name);
+}