You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@portals.apache.org by dj...@apache.org on 2009/05/08 00:48:05 UTC

svn commit: r772799 [4/6] - in /portals/portlet-spec/portlet-api-1.0: ./ src/main/java/javax/portlet/

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletResponse.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletResponse.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletResponse.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletResponse.java Thu May  7 22:48:03 2009
@@ -1,150 +1,113 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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>PortletResponse</CODE> defines the base interface to assist a
- * portlet in creating and sending a response to the client.
- * The portlet container uses two specialized versions of this interface
- * when invoking a portlet, <CODE>ActionResponse</CODE> and
- * <CODE>RenderResponse</CODE>. The  portlet container creates these
- * objects and passes them as arguments to the portlet's <CODE>processAction</CODE>
- * and <CODE>render</CODE> methods.
- * 
- * @see ActionResponse
- * @see RenderResponse
- */
-public interface PortletResponse
-{
-
-
-
-  /**
-   * Adds a String property to an existing key to be returned to the portal.
-   * <p>
-   * This method allows response properties to have multiple values.
-   * <p>
-   * Properties can be used by portlets to provide vendor specific 
-   * information to the portal.
-   *
-   * @param  key    the key of the property to be returned to the portal
-   * @param  value  the value of the property to be returned to the portal
-   *
-   * @exception  java.lang.IllegalArgumentException 
-   *                            if key is <code>null</code>.
-   */
-
-  public void addProperty(String key, String value);
-
-
-  /**
-   * Sets a String property to be returned to the portal.
-   * <p>
-   * Properties can be used by portlets to provide vendor specific 
-   * information to the portal.
-   * <p>
-   * This method resets all properties previously added with the same key.
-   *
-   * @param  key    the key of the property to be returned to the portal
-   * @param  value  the value of the property to be returned to the portal
-   *
-   * @exception  java.lang.IllegalArgumentException 
-   *                            if key is <code>null</code>.
-   */
-
-  public void setProperty(String key, String value);
-
-
-  /**
-   * Returns the encoded URL of the resource, like servlets,
-   * JSPs, images and other static files, at the given path.
-   * <p>
-   * Some portal/portlet-container implementation may require 
-   * those URLs to contain implementation specific data encoded
-   * in it. Because of that, portlets should use this method to 
-   * create such URLs.
-   * <p>
-   * The <code>encodeURL</code> method may include the session ID 
-   * and other portal/portlet-container specific information into the URL. 
-   * If encoding is not needed, it returns the URL unchanged. 
-   *
-   * @param   path
-   *          the URI path to the resource. This must be either
-   *          an absolute URL (e.g. 
-   *          <code>http://my.co/myportal/mywebap/myfolder/myresource.gif</code>)
-   *          or a full path URI (e.g. <code>/myportal/mywebap/myfolder/myresource.gif</code>).
-   *
-   * @exception  java.lang.IllegalArgumentException 
-   *                            if path doesn't have a leading slash or is not an absolute URL
-   * 
-   * @return   the encoded resource URL as string
-   */
-
-  public String encodeURL (String path);
-
-
-
-
-
-}
-
-
+/**
+ *  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>PortletResponse</CODE> defines the base interface to assist a
+ * portlet in creating and sending a response to the client.
+ * The portlet container uses two specialized versions of this interface
+ * when invoking a portlet, <CODE>ActionResponse</CODE> and
+ * <CODE>RenderResponse</CODE>. The  portlet container creates these
+ * objects and passes them as arguments to the portlet's <CODE>processAction</CODE>
+ * and <CODE>render</CODE> methods.
+ * 
+ * @see ActionResponse
+ * @see RenderResponse
+ */
+public interface PortletResponse
+{
+
+
+
+  /**
+   * Adds a String property to an existing key to be returned to the portal.
+   * <p>
+   * This method allows response properties to have multiple values.
+   * <p>
+   * Properties can be used by portlets to provide vendor specific 
+   * information to the portal.
+   *
+   * @param  key    the key of the property to be returned to the portal
+   * @param  value  the value of the property to be returned to the portal
+   *
+   * @exception  java.lang.IllegalArgumentException 
+   *                            if key is <code>null</code>.
+   */
+
+  public void addProperty(String key, String value);
+
+
+  /**
+   * Sets a String property to be returned to the portal.
+   * <p>
+   * Properties can be used by portlets to provide vendor specific 
+   * information to the portal.
+   * <p>
+   * This method resets all properties previously added with the same key.
+   *
+   * @param  key    the key of the property to be returned to the portal
+   * @param  value  the value of the property to be returned to the portal
+   *
+   * @exception  java.lang.IllegalArgumentException 
+   *                            if key is <code>null</code>.
+   */
+
+  public void setProperty(String key, String value);
+
+
+  /**
+   * Returns the encoded URL of the resource, like servlets,
+   * JSPs, images and other static files, at the given path.
+   * <p>
+   * Some portal/portlet-container implementation may require 
+   * those URLs to contain implementation specific data encoded
+   * in it. Because of that, portlets should use this method to 
+   * create such URLs.
+   * <p>
+   * The <code>encodeURL</code> method may include the session ID 
+   * and other portal/portlet-container specific information into the URL. 
+   * If encoding is not needed, it returns the URL unchanged. 
+   *
+   * @param   path
+   *          the URI path to the resource. This must be either
+   *          an absolute URL (e.g. 
+   *          <code>http://my.co/myportal/mywebap/myfolder/myresource.gif</code>)
+   *          or a full path URI (e.g. <code>/myportal/mywebap/myfolder/myresource.gif</code>).
+   *
+   * @exception  java.lang.IllegalArgumentException 
+   *                            if path doesn't have a leading slash or is not an absolute URL
+   * 
+   * @return   the encoded resource URL as string
+   */
+
+  public String encodeURL (String path);
+
+
+
+
+
+}
+
+

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSecurityException.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSecurityException.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSecurityException.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSecurityException.java Thu May  7 22:48:03 2009
@@ -1,126 +1,89 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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;
-
-/**
- * A portlet should throw a <CODE>PortletSecurityException</CODE>
- * when a call fails because of security reasons.<br>
- * Additionally it can be thrown by the portal/portlet-container.
- */
-
-public class PortletSecurityException extends PortletException
-{
-
-
-  private PortletSecurityException ()
-  {
-  }
-
-  /**
-   * Constructs a new security exception with the given text. The
-   * portlet container may use the text write it to a log.
-   *
-   * @param   text
-   *          the exception text
-   */
-
-  public PortletSecurityException (String text)
-  {
-    super (text);
-  }
-
-  /**
-   * Constructs a new portlet security 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 PortletSecurityException (String text, Throwable cause)
-  {
-    super(text, cause);
-  }
-
-  /**
-   * Constructs a new portlet security 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 PortletSecurityException (Throwable cause)
-  {
-    super(cause);
-  }
-
-
-}
+/**
+ *  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;
+
+/**
+ * A portlet should throw a <CODE>PortletSecurityException</CODE>
+ * when a call fails because of security reasons.<br>
+ * Additionally it can be thrown by the portal/portlet-container.
+ */
+
+public class PortletSecurityException extends PortletException
+{
+
+
+  private PortletSecurityException ()
+  {
+  }
+
+  /**
+   * Constructs a new security exception with the given text. The
+   * portlet container may use the text write it to a log.
+   *
+   * @param   text
+   *          the exception text
+   */
+
+  public PortletSecurityException (String text)
+  {
+    super (text);
+  }
+
+  /**
+   * Constructs a new portlet security 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 PortletSecurityException (String text, Throwable cause)
+  {
+    super(text, cause);
+  }
+
+  /**
+   * Constructs a new portlet security 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 PortletSecurityException (Throwable cause)
+  {
+    super(cause);
+  }
+
+
+}

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSession.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSession.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSession.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSession.java Thu May  7 22:48:03 2009
@@ -1,414 +1,377 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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>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
-   * @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 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   
-   */
-  
-  public java.util.Enumeration 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>.
-   */
-  
-  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 ();
-
-}
-
-
+/**
+ *  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>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
+   * @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 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   
+   */
+  
+  public java.util.Enumeration 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>.
+   */
+  
+  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 ();
+
+}
+
+

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSessionUtil.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSessionUtil.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSessionUtil.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletSessionUtil.java Thu May  7 22:48:03 2009
@@ -1,127 +1,90 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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;
-  }
-}
-
-
+/**
+ *  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;
+  }
+}
+
+

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletURL.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletURL.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletURL.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PortletURL.java Thu May  7 22:48:03 2009
@@ -1,248 +1,211 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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>.
- * Parameters, a portlet mode, a window state and a security level
- * can be added to <CODE>PortletURL</CODE> objects. The PortletURL
- * must be converted to a String in order to embed it into
- * the markup generated by the portlet.
- * <P>
- * There are two types of PortletURLs:
- * <ul>
- * <li>Action URLs, they are created with <CODE>RenderResponse.createActionURL</CODE>, and 
- *     trigger an action request followed by a render request.
- * <li>Render URLs, they are created with <CODE>RenderResponse.createRenderURL</CODE>, and
- *     trigger a render request.
- * </ul>
- * <p>
- * The string reprensentation 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
-{
-
-
-
-
-  /**
-   * 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;
-
-
-  /**
-   * Sets the given String parameter to this URL. 
-   * <p>
-   * This method replaces all parameters with the given key.
-   * <p>
-   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
-   * all  parameter names and values. Developers should not encode them.
-   * <p>
-   * A portlet container may prefix the attribute names internally 
-   * in order to preserve a unique namespace for the portlet.
-   *
-   * @param   name
-   *          the parameter name
-   * @param   value
-   *          the parameter value
-   *
-   * @exception  java.lang.IllegalArgumentException 
-   *                            if name or value are <code>null</code>.
-   */
-
-  public void setParameter (String name, String value);
-
-
-  /**
-   * Sets the given String array parameter to this URL. 
-   * <p>
-   * This method replaces all parameters with the given key.
-   * <p>
-   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
-   * all  parameter names and values. Developers should not encode them.
-   * <p>
-   * A portlet container may prefix the attribute names internally 
-   * in order to preserve a unique namespace for the portlet.
-   *
-   * @param   name
-   *          the parameter name
-   * @param   values
-   *          the parameter values
-   *
-   * @exception  java.lang.IllegalArgumentException 
-   *                            if name or values are <code>null</code>.
-   */
-
-  public void setParameter (String name, String[] values);
-
-
-  /**
-   * Sets a parameter map for this URL.
-   * <p>
-   * All previously set parameters are cleared.
-   * <p>
-   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
-   * all  parameter names and values. Developers should not encode them.
-   * <p>
-   * A portlet container may prefix the attribute names internally, 
-   * in order to preserve a unique namespace for the portlet.
-   *
-   * @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 key/values 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.
-   */
-
-  public void setParameters(java.util.Map parameters);
-
-
-  /**
-   * Indicated the security setting for this URL. 
-   * <p>
-   * Secure set to <code>true</code> indicates that the portlet requests
-   * a secure connection between the client and the portlet window for
-   * this URL. Secure set to <code>false</code> indicates that the portlet 
-   * does not need a secure connection for this URL. If the security is not
-   * set for a URL, it will stay the same as the current request. 
-   *
-   * @param  secure  true, if portlet requests to have a secure connection
-   *                 between its portlet window and the client; false, if
-   *                 the portlet does not require a secure connection.
-   *
-   * @throws PortletSecurityException  if the run-time environment does
-   *                                   not support the indicated setting
-   */
-
-  public void setSecure (boolean secure) throws PortletSecurityException;
-
-
-  /**
-   * Returns the portlet URL string representation to be embedded in the
-   * markup.<br>
-   * Note that the returned String may not be a valid URL, as it may
-   * be rewritten by the portal/portlet-container before returning the 
-   * markup to the client.
-   *
-   * @return   the encoded URL as a string
-   */
-
-  public String toString ();
-}
+/**
+ *  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>.
+ * Parameters, a portlet mode, a window state and a security level
+ * can be added to <CODE>PortletURL</CODE> objects. The PortletURL
+ * must be converted to a String in order to embed it into
+ * the markup generated by the portlet.
+ * <P>
+ * There are two types of PortletURLs:
+ * <ul>
+ * <li>Action URLs, they are created with <CODE>RenderResponse.createActionURL</CODE>, and 
+ *     trigger an action request followed by a render request.
+ * <li>Render URLs, they are created with <CODE>RenderResponse.createRenderURL</CODE>, and
+ *     trigger a render request.
+ * </ul>
+ * <p>
+ * The string reprensentation 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
+{
+
+
+
+
+  /**
+   * 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;
+
+
+  /**
+   * Sets the given String parameter to this URL. 
+   * <p>
+   * This method replaces all parameters with the given key.
+   * <p>
+   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
+   * all  parameter names and values. Developers should not encode them.
+   * <p>
+   * A portlet container may prefix the attribute names internally 
+   * in order to preserve a unique namespace for the portlet.
+   *
+   * @param   name
+   *          the parameter name
+   * @param   value
+   *          the parameter value
+   *
+   * @exception  java.lang.IllegalArgumentException 
+   *                            if name or value are <code>null</code>.
+   */
+
+  public void setParameter (String name, String value);
+
+
+  /**
+   * Sets the given String array parameter to this URL. 
+   * <p>
+   * This method replaces all parameters with the given key.
+   * <p>
+   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
+   * all  parameter names and values. Developers should not encode them.
+   * <p>
+   * A portlet container may prefix the attribute names internally 
+   * in order to preserve a unique namespace for the portlet.
+   *
+   * @param   name
+   *          the parameter name
+   * @param   values
+   *          the parameter values
+   *
+   * @exception  java.lang.IllegalArgumentException 
+   *                            if name or values are <code>null</code>.
+   */
+
+  public void setParameter (String name, String[] values);
+
+
+  /**
+   * Sets a parameter map for this URL.
+   * <p>
+   * All previously set parameters are cleared.
+   * <p>
+   * The <code>PortletURL</code> implementation 'x-www-form-urlencoded' encodes
+   * all  parameter names and values. Developers should not encode them.
+   * <p>
+   * A portlet container may prefix the attribute names internally, 
+   * in order to preserve a unique namespace for the portlet.
+   *
+   * @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 key/values 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.
+   */
+
+  public void setParameters(java.util.Map parameters);
+
+
+  /**
+   * Indicated the security setting for this URL. 
+   * <p>
+   * Secure set to <code>true</code> indicates that the portlet requests
+   * a secure connection between the client and the portlet window for
+   * this URL. Secure set to <code>false</code> indicates that the portlet 
+   * does not need a secure connection for this URL. If the security is not
+   * set for a URL, it will stay the same as the current request. 
+   *
+   * @param  secure  true, if portlet requests to have a secure connection
+   *                 between its portlet window and the client; false, if
+   *                 the portlet does not require a secure connection.
+   *
+   * @throws PortletSecurityException  if the run-time environment does
+   *                                   not support the indicated setting
+   */
+
+  public void setSecure (boolean secure) throws PortletSecurityException;
+
+
+  /**
+   * Returns the portlet URL string representation to be embedded in the
+   * markup.<br>
+   * Note that the returned String may not be a valid URL, as it may
+   * be rewritten by the portal/portlet-container before returning the 
+   * markup to the client.
+   *
+   * @return   the encoded URL as a string
+   */
+
+  public String toString ();
+}

Modified: portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PreferencesValidator.java
URL: http://svn.apache.org/viewvc/portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PreferencesValidator.java?rev=772799&r1=772798&r2=772799&view=diff
==============================================================================
--- portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PreferencesValidator.java (original)
+++ portals/portlet-spec/portlet-api-1.0/src/main/java/javax/portlet/PreferencesValidator.java Thu May  7 22:48:03 2009
@@ -1,90 +1,53 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation.  All rights 
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- *    any, must include the following acknowlegement:  
- *       "This product includes software developed by the 
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowlegement may appear in the software itself,
- *    if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "The Jakarta Project", "Pluto", and "Apache Software
- *    Foundation" must not be used to endorse or promote products derived
- *    from this software without prior written permission. For written 
- *    permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- *    nor may "Apache" appear in their names without prior written
- *    permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * ====================================================================
- *
- * 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;  
-}
+/**
+ *  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;  
+}