Author: asfgriff
Date: Tue Jan  4 21:52:39 2022
New Revision: 1896683

URL: http://svn.apache.org/viewvc?rev=1896683&view=rev
Log:
PLUTO-795 Committing site changes associated with the Pluto 3.1.1 release

Added:
    portals/site/pluto/src/site/xdoc/v311/
    portals/site/pluto/src/site/xdoc/v311/deploying.xml
    portals/site/pluto/src/site/xdoc/v311/getting-started.xml
    portals/site/pluto/src/site/xdoc/v311/maven-archetypes.xml
    portals/site/pluto/src/site/xdoc/v311/mvcbean-portlets.xml
    portals/site/pluto/src/site/xdoc/v311/portlet-api.xml
    portals/site/pluto/src/site/xdoc/v311/release-notes.xml
    portals/site/pluto/src/site/xdoc/v311/tck.xml
    portals/site/pluto/src/site/xdoc/v311/v3Features.xml
Modified:
    portals/site/pluto/src/site/fml/faq.fml
    portals/site/pluto/src/site/site.xml
    portals/site/pluto/src/site/xdoc/download.xml
    portals/site/pluto/src/site/xdoc/index.xml
    portals/site/pluto/src/site/xdoc/news.xml
    portals/site/pluto/src/site/xdoc/security.xml
    portals/site/pluto/src/site/xdoc/status.xml

Modified: portals/site/pluto/src/site/fml/faq.fml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/fml/faq.fml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/fml/faq.fml (original)
+++ portals/site/pluto/src/site/fml/faq.fml Tue Jan  4 21:52:39 2022
@@ -24,9 +24,9 @@ limitations under the License.
       <question>Which version of Pluto 3.0 should I use?</question>
       <answer>
         <p>
-          Version 3.1.0 is the latest stable release available from the 
download site. 
+          Version 3.1.1 is the latest stable release available from the 
download site. 
           If you want to build the current development version, please see the 
Pluto 3.0
-          <a href="./v310/getting-started.html">Getting Started</a> section 
for information on cloning 
+          <a href="./v311/getting-started.html">Getting Started</a> section 
for information on cloning 
           the Pluto repository, building the portal, and learning from the 
version 3.0 sample portlets.
         </p>
         <p>

Modified: portals/site/pluto/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/site.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/site.xml (original)
+++ portals/site/pluto/src/site/site.xml Tue Jan  4 21:52:39 2022
@@ -33,7 +33,7 @@ limitations under the License.
   <skin>  
     <groupId>org.apache.portals.pluto</groupId>
     <artifactId>pluto-site-skin</artifactId>
-    <version>3.0-SNAPSHOT</version>
+    <version>3.1.0</version>
   </skin> 
   
   <body>
@@ -69,14 +69,14 @@ limitations under the License.
     </menu>
 
        <menu name="Pluto 3.1">
-      <item name="MVCBean Portlets" href="/v310/mvcbean-portlets.html"/>
-      <item name="Getting Started" href="/v310/getting-started.html"/>
-      <item name="Maven Archetypes" href="/v310/maven-archetypes.html"/>
-      <item name="Deploying Portlets" href="/v310/deploying.html"/>
-      <item name="Portlet Concepts" href="/v310/portlet-api.html"/>
-      <item name="Version 3 Features" href="/v310/v3Features.html"/>
-      <item name="Using the TCK" href="/v310/tck.html"/>
-      <item name="Release Notes" href="/v310/release-notes.html"/>
+      <item name="MVCBean Portlets" href="/v311/mvcbean-portlets.html"/>
+      <item name="Getting Started" href="/v311/getting-started.html"/>
+      <item name="Maven Archetypes" href="/v311/maven-archetypes.html"/>
+      <item name="Deploying Portlets" href="/v311/deploying.html"/>
+      <item name="Portlet Concepts" href="/v311/portlet-api.html"/>
+      <item name="Version 3 Features" href="/v311/v3Features.html"/>
+      <item name="Using the TCK" href="/v311/tck.html"/>
+      <item name="Release Notes" href="/v311/release-notes.html"/>
        </menu>    
 
        <menu name="Pluto 3.0">

Modified: portals/site/pluto/src/site/xdoc/download.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/download.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/download.xml (original)
+++ portals/site/pluto/src/site/xdoc/download.xml Tue Jan  4 21:52:39 2022
@@ -33,7 +33,7 @@ limitations under the License.
        <section name="Quick Navigation">
                <a 
href="https://www.apache.org/dist/portals/pluto/KEYS";>KEYS</a>
                <span> | </span>
-               <a href="#3.1.0">3.1.0</a>
+               <a href="#3.1.1">3.1.1</a>
                <span> | </span>
                <a 
href="http://archive.apache.org/dist/portals/pluto/";>Archives</a>
        </section>
@@ -42,16 +42,16 @@ limitations under the License.
                <p>You must verify the integrity of the downloaded files. We 
provide OpenPGP signatures for every release file. This signature should be 
matched against the KEYS file which contains the OpenPGP keys of Tomcat's 
Release Managers. We also provide SHA-1 checksums for every release file. After 
you download the file, you should calculate a checksum for your download, and 
make sure it is the same as ours.</p>
        </section>
        <section name="Mirrors">
-               <p>The latest 3.1.0 version of Apache Pluto binary and source 
distributions can be <a 
href="http://www.apache.org/dyn/closer.cgi/portals/pluto/";>downloaded from a 
Pluto distribution mirror</a>.</p>
+               <p>The latest 3.1.1 version of Apache Pluto binary and source 
distributions can be <a 
href="http://www.apache.org/dyn/closer.cgi/portals/pluto/";>downloaded from a 
Pluto distribution mirror</a>.</p>
        </section>
 
-       <section name="3.1.0">
+       <section name="3.1.1">
                <subsection name="Binary Distribution">
                        <ul>
                                <li>
                                        <span>Tomcat 8 Bundle:</span>
                                        <ul>
-                                               <li><a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.0.zip";>pluto-bundle-3.1.0.zip</a>
 (<a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.0.zip.asc";>PGP</a>,
 <a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.0.zip.sha1";>sha1</a>)</li>
+                                               <li><a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.1.zip";>pluto-bundle-3.1.1.zip</a>
 (<a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.1.zip.asc";>PGP</a>,
 <a 
href="https://www.apache.org/dist/portals/pluto/pluto-bundle-3.1.1.zip.sha1";>sha1</a>)</li>
                                        </ul>
                                </li>
                        </ul>
@@ -62,7 +62,7 @@ limitations under the License.
                                <li>
                                        <span>Source:</span>
                                        <ul>
-                                               <li><a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.0-source-release.zip";>pluto-source-release-3.1.0.zip</a>
 (<a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.0-source-release.zip.asc";>PGP</a>,
 <a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.0-source-release.zip.sha1";>sha1</a>)</li>
+                                               <li><a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.1-source-release.zip";>pluto-source-release-3.1.1.zip</a>
 (<a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.1-source-release.zip.asc";>PGP</a>,
 <a 
href="https://www.apache.org/dist/portals/pluto/pluto-3.1.1-source-release.zip.sha1";>sha1</a>)</li>
                                        </ul>
                                </li>
                        </ul>

Modified: portals/site/pluto/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/index.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/index.xml (original)
+++ portals/site/pluto/src/site/xdoc/index.xml Tue Jan  4 21:52:39 2022
@@ -29,16 +29,16 @@ limitations under the License.
     <section name="Welcome to Pluto">
             
       <div class="highlightBox">
-        <h5>Get Pluto 3.1.0</h5>
+        <h5>Get Pluto 3.1.1</h5>
         <p>
           <a href="http://www.apache.org/dyn/closer.cgi/portals/pluto/";>
             <img valign="top" src="images/download.gif" border="0" 
title="download"/>
             Download
           </a>
-          Pluto 3.1.0
+          Pluto 3.1.1
         </p>
         <ul>
-          <li><a href="v310/getting-started.html">Installation Guide</a></li>
+          <li><a href="v311/getting-started.html">Installation Guide</a></li>
         </ul>
       </div>
      
@@ -53,10 +53,10 @@ limitations under the License.
       </section>
     <section name="Introducing MVCBean Portlet Development">
                <p>
-               <strong>***NEW*** in Apache Pluto 3.1.0</strong>: A large 
subset of the <a href="https://jcp.org/en/jsr/detail?id=371";>JSR 371</a> (MVC 
1.0) Specification has been implemented which enables "MVCBean" portlet 
development. This feature is an open source proof-of-concept that could 
possibly serve as the basis for the next version of the Portlet Specification 
(3.1).
+               <strong>(Since Apache Pluto 3.1.0)</strong>: A large subset of 
the <a href="https://jcp.org/en/jsr/detail?id=371";>JSR 371</a> (MVC 1.0) 
Specification has been implemented which enables "MVCBean" portlet development. 
This feature is an open source proof-of-concept that could possibly serve as 
the basis for the next version of the Portlet Specification (3.1).
                </p>
                <p>
-        For detailed information, see the <a 
href='v310/mvcbean-portlets.html'>MVCBean Portlets</a> page.
+        For detailed information, see the <a 
href='v311/mvcbean-portlets.html'>MVCBean Portlets</a> page.
                </p>
        </section>
       <section name="Pluto implements a Portlet Container">
@@ -109,7 +109,7 @@ limitations under the License.
         </p>
         <p>If you want to get started with rapid portlet development with 
Pluto,
         see the documentation on 
-        <a href='v310/getting-started.html'>Developing with Pluto</a>
+        <a href='v311/getting-started.html'>Developing with Pluto</a>
         </p>
     </section>
        <section name='How Portlets Differ from Servlets'>

Modified: portals/site/pluto/src/site/xdoc/news.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/news.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/news.xml (original)
+++ portals/site/pluto/src/site/xdoc/news.xml Tue Jan  4 21:52:39 2022
@@ -27,6 +27,15 @@ limitations under the License.
   <body>
 
     <section name="News and Status">
+        <h4>17 December 2021 - Portals Pluto 3.1.1</h4>
+        <p>
+            The Apache Pluto project is proud to announce the General 
Availability release of Pluto 3.1.1.
+            This is the fourth GA release of Pluto conformant to the 
+            <a href="http://www.jcp.org/en/jsr/detail?id=362";>Java Portlet 3.0 
Standard</a>.
+        </p>
+        <p>
+                               The release mainly focuses on security related 
issues such as updating vulnerable third-party dependencies and fixing project 
CVEs.
+        </p>
         <h4>24 April 2019 - Portals Pluto 3.1.0</h4>
         <p>
             The Apache Pluto project is proud to announce the General 
Availability release of Pluto 3.1.0.

Modified: portals/site/pluto/src/site/xdoc/security.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/security.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/security.xml (original)
+++ portals/site/pluto/src/site/xdoc/security.xml Tue Jan  4 21:52:39 2022
@@ -31,6 +31,66 @@ limitations under the License.
     The following security issues have been identified and addressed:
   </p>
 
+  <subsection name="Version 3.1.1">
+      <ul>
+      <li> 
+      <p>CVEID: CVE-2021-36737
+      </p><p>DESCRIPTION: The input fields of the Apache Pluto UrlTestPortlet 
are vulnerable to Cross-Site Scripting (XSS) attacks.
+      </p><p>Versions Affected:
+      <br/>3.0.0, 3.0.1, 3.1.0
+      </p><p>Mitigation:
+      <br/>* Uninstall the v3-demo-portlet.war artifact
+      <br/>- or -
+      <br/>* Migrate to version 3.1.1 of the v3-demo-portlet.war artifact
+      </p>
+      </li>
+      <li> 
+      <p>CVEID: CVE-2021-36738
+      </p><p>DESCRIPTION: The input fields in the JSP version of the Apache 
Pluto Applicant MVCBean CDI portlet are vulnerable to Cross-Site Scripting 
(XSS) attacks.
+      </p><p>Versions Affected:
+      <br/>3.1.0
+      </p><p>Mitigation:
+      <br/>* Uninstall the applicant-mvcbean-cdi-jsp-portlet.war artifact
+      <br/>- or -
+      <br/>* Migrate to version 3.1.1 of the 
applicant-mvcbean-cdi-jsp-portlet.war artifact
+      </p>
+      </li>
+      <li> 
+      <p>CVEID: CVE-2021-36739
+      </p><p>DESCRIPTION: The "first name" and "last name" fields of the 
Apache Pluto MVCBean JSP portlet maven archetype are vulnerable to Cross-Site 
Scripting (XSS) attacks.
+      </p><p>Versions Affected:
+      <br/>3.1.0
+      </p><p>Mitigation:
+      <br/>* If a project was generated from the affected maven archetype 
using a command like the following:
+         <br/>
+<pre>
+mvn archetype:generate \
+       -DarchetypeGroupId=org.apache.portals.pluto.archetype \
+       -DarchetypeArtifactId=mvcbean-jsp-portlet-archetype \
+       -DarchetypeVersion=3.1.0 \
+       -DgroupId=com.mycompany \
+       -DartifactId=com.mycompany.my.mvcbean.jsp.portlet
+</pre>
+      <br/>
+      <br/>Then developers must fix the generated greeting.jspx file by 
escaping the rendered values submitted to the "First Name" and "Last Name" 
fields.
+      <br/>
+      <br/>For example, change:
+      <br/>
+<pre>
+&lt;span&gt;${user.firstName} ${user.lastName}! &lt;/span&gt;
+</pre>
+      <br/>
+      <br/>To:
+      <br/>
+<pre>
+&lt;span&gt;${mvc.encoders.html(user.firstName)} 
${mvc.encoders.html(user.lastName)}! &lt;/span&gt;
+</pre>
+      <br/>
+      <br/>* Moving forward, all such projects should be generated from 
version 3.1.1 of the Maven archetype.
+      </p>
+      </li>
+      </ul>
+  </subsection>
   <subsection name="Version 3.1.0">
       <ul>
       <li> 

Modified: portals/site/pluto/src/site/xdoc/status.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/status.xml?rev=1896683&r1=1896682&r2=1896683&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/status.xml (original)
+++ portals/site/pluto/src/site/xdoc/status.xml Tue Jan  4 21:52:39 2022
@@ -29,7 +29,7 @@ limitations under the License.
 <section name="Project Status">
   <p>
     Apache Pluto is a subproject of the Apache Portals Project. The current
-    stable release of Apache Pluto is version 3.1.0.
+    stable release of Apache Pluto is version 3.1.1.
     Pluto 3.1 provides the reference implementation and technology compliance 
kit for JSR 362 Portlet Spcification 3.0. 
     It complies to the JSR 362 and JSR 286 standards.
   </p>

Added: portals/site/pluto/src/site/xdoc/v311/deploying.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/deploying.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/deploying.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/deploying.xml Tue Jan  4 21:52:39 2022
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Deploying a Portlet</title>
+  </properties>
+  
+  <body>
+    
+    <section name="Deploying a Portlet to Pluto Portal Version 3.1.1">
+      
+      <p>
+        The portlet war file is built just like any other web application war
+        file. No special processing steps are necessary. Note in particular 
that
+        the assembly processing step required by Pluto version 2.0 is no 
longer needed.
+      </p>
+      
+        <subsection name="Portlet Deployment">
+           <p>
+               To deploy a portlet application, simply deploy the application 
war
+               using any standard mechanism for your application server.  
There are many
+               maven plugins and ant tasks that can assist with this, or you 
can use
+               an administrative web console. This console is the Tomcat 
manager webapp in the
+               Pluto bundled distribution and is accessed via the 'Upload and 
deploy portlet war' link
+               on the page administration portlet. See the Help link on that 
portlet for more details.
+           </p>
+           <p>
+                  In the bundled distribution that uses Tomcat, deployment of 
an assembled war can simply
+                  be done by dropping the war into the webapps directory. You 
can automatically achive this
+                  by adding the following code within the plugins section of 
your maven pom.xml:
+           </p>
+          <source><![CDATA[
+       <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>integration-test</phase>
+            <configuration>
+              <tasks>
+                  <property environment="env"/>
+                   <!-- This assumes that you have set a CATALINA_HOME 
environmental variable -->
+                  <property name="pluto.home" value="${env.CATALINA_HOME}"/>
+                  <copy file="target/${pom.name}.war" 
todir="${pluto.home}/webapps"/>
+              </tasks>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>          
+          ]]></source>
+           <p>
+              Once the pom.xml file has been updated with this plugin, you can 
run the full build
+              and deployment using the command: mvn integration-test. The code 
assumes that you have set
+              the environmental variable CATALINA_HOME to the Pluto home 
directory. If that has not been
+              done, just set pluto.home from the command line with the -D 
flag. The command line would
+              then be: mvn -Dpluto.home=C:/pluto integration-test.
+           </p>
+           
+        </subsection>
+            
+      <subsection name="Portlet Publishing">
+        <p>
+        As soon as the portlet application (war) is deployed to the servlet 
container
+        the portlet application will be available to the portal and can be 
added to
+        pages using the page administration portlet. See the help mode in this 
portlet
+        for details on its use.
+        </p>
+        
+        <p><b>Portal Page Configuration</b></p>
+        <p>
+          If you'd like for your page configuration to be consistent throughout
+          restarts of the application server (currently placements made through
+          the page administration portlet is not persistent), you should then 
configure the page
+          layout in the portal-driver configuration file 
(pluto-portal-driver-config.xml).
+        </p>
+        <p>
+          The page can then be configured by adding a <code>page</code> child 
element of the <code>render-config</code> 
+          element, like this:
+          <source><![CDATA[
+<render-config default="Test Page">
+  ... ...
+  <page name="Your Portal Page Name"  
uri="/WEB-INF/themes/pluto-default-theme.jsp">
+    <portlet context="/your_portlet_app_context_path" name="your_portlet_1"/>
+    <portlet context="/your_portlet_app_context_path" name="your_portlet_2"/>
+  </page>
+</render-config>
+          ]]></source>
+        </p>
+        <p>
+          The <code>uri</code> attribute defines the theme of your portal page.
+          If you use <code>/WEB-INF/themes/pluto-default-theme.jsp</code> 
(which is the
+          default theme of Pluto Testsuite portlet app), your portlets will be
+          displayed in two columns. You can clone this file to customize your 
layout.
+          If you do so, make sure the <code>uri</code> attribute points to the 
new file.
+        </p>
+      </subsection>
+      
+    </section>
+    
+  </body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/getting-started.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/getting-started.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/getting-started.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/getting-started.xml Tue Jan  4 
21:52:39 2022
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Getting Started</title>
+  </properties>
+  
+  <body>
+
+    <section name="Installing the Pluto 3.1.1 Binary Build">
+      
+      <div class="highlightBox">
+        <h4>About Pluto Distributions</h4>
+        <p>
+          You can download a pre-built Pluto bundle, or you can build Pluto 
from
+          the source code.
+          <ul>
+            <li>
+               <strong>pluto-bundle</strong> - Provides Pluto and Tomcat 
bundled together.
+            </li>
+            <li><strong>pluto-source-release</strong> - Provides the Pluto 
source code; requires
+                that you build and deploy Pluto on your own.</li>
+          </ul>
+        </p>
+      </div>
+      
+      <ol>
+        <li>
+          
+          Download the Pluto 3.1.1 binary distribution named 
<strong>pluto-bundle-3.1.1.zip</strong> from 
+          a <a 
href="http://www.apache.org/dyn/closer.cgi/portals/pluto/";>distribution 
site</a>.</li>
+        <li>Unzip the binary distribution into a directory.</li>
+           <ol>
+              <li>pluto-&lt;version&gt; (pluto-3.1.1) will be the top level 
directory.</li>
+           </ol>   
+        <li>
+          Execute startup.bat (Windows) or startup.sh (Unix)
+          in pluto-&lt;version&gt;/bin.</li>
+        <li>
+          Use shutdown.bat/shutdown.sh to stop the portal
+        </li>
+        <li>
+          Browse to <a 
href="http://localhost:8080/pluto/portal";>http://localhost:8080/pluto/portal</a>
+        </li>
+        <li>
+          Login as user pluto (password=pluto) or tomcat (password=pluto).
+        </li>
+      </ol>
+
+    </section>
+       
+    <section name="Building Pluto 3.1.1 from Source">
+      
+      <p>
+        Pluto uses Maven 3 as its project management and build system. 
+        Pluto currently provides Maven plugins and ant scripts which can be 
used to
+        install the Pluto Portal.
+      </p>
+
+      <p>
+        The Pluto project uses the
+        <a href="https://git-scm.com/";>Git</a> version control
+        system.  If you're new to Git, you can find many books and online
+        resources to help you.
+      </p>
+
+       <h4>Software Prerequisites</h4>
+       
+       <p>
+         In order to build Pluto, you will need to have the following software 
+         packages installed on your system. For help in obtaining and 
installing
+         the packages, please access the appropriate web resources.
+         <ul>
+           <li>
+             A Java runtime environment, version 1.8.0 or later. See
+             <a href="https://java.com/en/download/";>the Java download site</a>
+           </li>
+           <li>
+             Apache Ant, version 1.9.3 or later. See
+             <a href="https://ant.apache.org/bindownload.cgi";>the Apache Ant 
download site</a>
+           </li>
+           <li>
+             Apache Maven, version 3.3.1 or later. See
+             <a href="https://maven.apache.org/download.cgi";>the Apache Maven 
download site</a>
+           </li>
+           <li>
+             Git version control software, version 2.0.0 or later. See
+             <a href="https://git-scm.com/downloads";>the Git download site</a>
+           </li>
+         </ul>
+         Note that your computer will also require access to the Internet 
during
+         the build process in order to access maven repositories and other 
information.
+       </p>
+
+      <h4>Obtaining Pluto 3.1.1 Source Code</h4>
+       
+      <p>
+        To browse the Pluto source code online, access 
+        <a href="https://github.com/apache/portals-pluto";>the Apache Pluto 
Github mirror.</a>
+        This is current at all times.
+      </p>
+
+      <h4>Cloning the Pluto Repository</h4>
+      <p>
+        Anyone can clone the Pluto repository from the Github mirror.  
However, 
+        in order to update the repository, you will need to be an Apache pluto 
committer.
+        To clone the repository, switch to the directory in which you would 
like the 
+        code to reside, and execute the following command:
+      </p>
+      <p>
+        <code>git clone https://github.com/apache/portals-pluto.git 
pluto</code>
+      </p>
+      <p>
+        You now have the complete Pluto source code in the 
<code>./pluto</code> subdirectory. 
+      </p>
+      <p>
+        The source code versions are tagged in the respository. If you want to 
build 
+        version 3.1.1 rather than the current development version, checkout 
the 'pluto-3.1.1' tag:
+      </p>
+      <p>
+        <code>git checkout pluto-3.1.1</code>
+      </p>
+
+      <h4>Building Pluto using Apache Ant</h4>
+      <p>
+        This is the easiest way to build Pluto. The Ant build script will use 
first 
+        build the binaries from source, then download and unpack the 
appropriate 
+        Apache Tomcat web container for the code version being built. It will 
then 
+        install pluto on Tomcat, adjusting the Tomcat configuration as 
necessary.
+      </p>
+      <p>
+        The <code>dist-build.xml</code> build script allows a number
+        of options for building and packaging the code. View the file for 
details.
+        The options used in the following command causes the demo portlets to 
be deployed
+        and retains the tomcat directory created during the build process 
rather
+        than deleting it. Execute the following command:
+      </p>
+      <p>
+        <code>ant -f dist-build.xml -DincludeDemos=true -DnoClean=true</code>
+      </p>
+      <p>
+        You now have Pluto built and deployed in the 
<code>./pluto/target/dist</code> subdirectory.
+        You can now switch to the 
<code>./pluto/target/dist/&lt;tomcat&gt;/bin</code> 
+        subdirectory and start Tomcat and Pluto as described in the next 
section.
+      </p>
+
+     <subsection name="Starting the Portal">
+       <p>
+         Now you are ready to use the Pluto Portal built from source. Start up 
tomcat by running
+         <code>startup.bat</code> (for windows) or <code>startup.sh</code> (for
+         *nix) in <code>&lt;TOMCAT_HOME&gt;/bin</code>, and browse to
+         <code>http://localhost:8080/pluto/portal</code>. Login to Pluto using
+         the user ID 'pluto' and password 'pluto'.
+       </p>
+     </subsection>
+   </section>
+
+   <section name="Using the Demo Portlets">
+     <p>
+       The Pluto distribution contains four version 3.1.1 portlet applications 
that
+       illustrate the use of all aspects of JSR 362 portlet programming.
+     </p>
+    <ul>
+      <li>
+               <strong>applicant-mvcbean-cdi-jsp-portlet</strong> - "Job 
Applicant" MVCBean portlet featuring JSPX views.
+      </li>
+      <li>
+               <strong>applicant-mvcbean-cdi-thymeleaf-portlet</strong> - "Job 
Applicant" MVCBean portlet featuring Thymeleaf views.
+      </li>
+      <li>
+               <strong>hub-demo-portlet</strong> - Contains portlets that show 
how you can use the 
+        Portlet Hub JavaScript API to create portal-based single-page 
applications.
+      </li>
+      <li>
+               <strong>v3-annotated-demo-portlet</strong> - Contains portlets 
that illustrate the use of 
+        the version 3.1.1 Extended Method Annotations feature.
+      </li>
+      <li>
+               <strong>v3-demo-portlet</strong> - Contains portlets that 
illustrate miscellaneous aspects
+        of the API.
+      </li>
+      <li>
+               <strong>chat-room-demo-portlet</strong> - Contains portlets 
that implement a simple chat room demo
+        based on the Portlet Hub JavaScript API and the portlet asynchronous
+        processing feature.
+      </li>
+    </ul>
+     <p>
+       The best way to view the source code would be to import the modules
+       mentioned above into your favorite IDE. 
+     </p>
+   </section>
+    
+   <section name="Maven Archetypes">
+     <p>Refer to the <a href="maven-archetypes.html">Maven Archetypes</a> page 
in order to learn how to quickly generate a new portlet project from a starter 
template.</p>
+   </section>
+
+</body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/maven-archetypes.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/maven-archetypes.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/maven-archetypes.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/maven-archetypes.xml Tue Jan  4 
21:52:39 2022
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Maven Archetypes</title>
+  </properties>
+  
+  <body>
+
+<section name="Using the Pluto Maven Archetypes">
+    <p>
+      There are four Maven archetypes available to quickly get you started 
developing a portlet application.
+       <ul>
+            <li>mvcbean-jsp-portlet-archetype</li>
+            <li>mvcbean-thymeleaf-portlet-archetype</li>
+            <li>bean-portlet-archetype</li>
+            <li>generic-portlet-archetype</li>
+        </ul>
+    </p>
+       <p>The <strong>mvcbean-jsp-portlet-archetype</strong> can be used to 
create an MVCBean portlet project that utilizes features from MVC 1.0, Bean 
Validation 2.0, Portlet 3.0, and <code>@Inject</code> via CDI. HTML views are 
processed by Pluto's JavaServer™ Pages (JSP) view engine.
+        <source><![CDATA[
+mvn archetype:generate \
+    -DarchetypeGroupId=org.apache.portals.pluto.archetype \
+    -DarchetypeArtifactId=mvcbean-jsp-portlet-archetype \
+    -DarchetypeVersion=3.1.1 \
+    -DgroupId=com.mycompany \
+    -DartifactId=com.mycompany.my.mvcbean.jsp.portlet
+        ]]></source>
+       </p>
+       <p>The <strong>mvcbean-thymeleaf-portlet-archetype</strong> can be used 
to create an MVCBean portlet project that utilizes features from MVC 1.0, Bean 
Validation 2.0, Portlet 3.0, and <code>@Inject</code> CDI. HTML views are 
processed by Pluto's <a href="https://www.thymeleaf.org";>Thymeleaf</a> view 
engine.
+        <source><![CDATA[
+mvn archetype:generate \
+    -DarchetypeGroupId=org.apache.portals.pluto.archetype \
+    -DarchetypeArtifactId=mvcbean-thymeleaf-portlet-archetype \
+    -DarchetypeVersion=3.1.1 \
+    -DgroupId=com.mycompany \
+    -DartifactId=com.mycompany.my.mvcbean.thymeleaf.portlet
+        ]]></source>
+       </p>
+       <p>The <strong>bean-portlet-archetype</strong> can be used to create a 
"bean portlet" that utilizes Portlet 3.0 features such as dependency injection 
with @Inject via CDI.
+        <source><![CDATA[
+mvn archetype:generate \
+    -DarchetypeGroupId=org.apache.portals.pluto.archetype \
+    -DarchetypeArtifactId=bean-portlet-archetype \
+    -DarchetypeVersion=3.1.1 \
+    -DgroupId=com.mycompany \
+    -DartifactId=com.mycompany.my.bean.portlet
+        ]]></source>
+    </p>
+       <p>The <strong>generic-portlet-archetype</strong> can be used to create 
a traditional portlet project which has a class that extends GenericPortlet. 
+        <source><![CDATA[
+mvn archetype:generate \
+    -DarchetypeGroupId=org.apache.portals.pluto.archetype \
+    -DarchetypeArtifactId=generic-portlet-archetype \
+    -DarchetypeVersion=3.1.1 \
+    -DgroupId=com.mycompany \
+    -DartifactId=com.mycompany.my.generic.portlet
+        ]]></source>
+    </p>
+    <p>
+        Archetypes are available in Maven Central <a 
href="http://search.maven.org/#search%7Cga%7C1%7Cpluto%20archetype";>here.</a>
+    </p>     
+   </section>    
+</body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/mvcbean-portlets.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/mvcbean-portlets.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/mvcbean-portlets.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/mvcbean-portlets.xml Tue Jan  4 
21:52:39 2022
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<document>
+
+       <properties>
+               <title>Apache Pluto - MVCBean Portlets</title>
+       </properties>
+
+       <body>
+
+               <section name="MVCBean Portlets">
+                               <p><strong>***NEW*** in Apache Pluto 
3.1.0</strong>: A large subset of the <a 
href="https://jcp.org/en/jsr/detail?id=371";>JSR 371</a> (MVC 1.0) Specification 
has been implemented which enables "MVCBean" portlet development. This feature 
is an open source proof-of-concept that could possibly serve as the basis for 
the next version of the Portlet Specification (3.1).</p>
+               </section>
+
+               <section name="MVC 1.0">
+                               <p>Portlet 3.0 introduced the concept of a CDI 
"bean portlet" featuring annotation-driven method dispatching with annotations 
such as <code>@ActionMethod</code>, <code>@RenderMethod</code>, and 
<code>@ServeResourceMethod</code>. This is effectively the "C" (Controller) 
concern of the Model/View/Controller (MVC) design pattern.</p>
+                               <p>However, Portlet 3.0 did not provide the "M" 
(Model) or "V" (View) concerns, nor did it provide a CDI scope that allows for 
model data to survive from the <code>ACTION_PHASE</code> to the 
<code>RENDER_PHASE</code> of the portlet lifecycle.</p>
+                               <p>In order to remedy this, Pluto implements 
MVC 1.0 in a way that makes sense for portlet development. Most of the 
requirements of MVC 1.0 are implemented; the main exception being those 
requirements that depend on JAX-RS for controller method dispatching. In other 
words, rather than using <code>@GET</code> and <code>@POST</code> from JAX-RS, 
MVCBean portlets rely on the aforementioned Portlet 3.0 annotations for 
controller method dispatching. Finally, Pluto implements MVC 1.0 
<code>@RedirectScoped</code> so that model data can survive from the 
<code>ACTION_PHASE</code> to the <code>RENDER_PHASE</code> of the portlet 
lifecycle.
+                               </p>
+                               <p>Consider the following MVC servlet/webapp 
based example which uses the JAX-RS <code>@Path</code> and <code>@GET</code> 
annotations for method dispatching. <strong><em>These JAX-RS annotations simply 
don't map well to the opaque nature of PortletURLs or the portlet 
lifecycle</em></strong>:</p>
+          <source><![CDATA[
+@Path("hello")
+public class HelloController {
+
+    @Inject
+    private Models models;
+
+    @GET
+    @Controller
+    public String hello() {
+          models.put("user", new User());
+          return "hello.jspx";
+    }
+}]]></source>
+<p>Instead, with Pluto's implementation of MVC 1.0, Portlet 3.0 annotations 
are used for controller method dispatching:</p>
+          <source><![CDATA[
+@PortletRequestScoped
+public class HelloController {
+
+    @Inject
+    private Models models;
+
+    @RenderMethod(portletNames = {"portlet1"})
+    @Controller
+    public String hello(RenderRequest renderRequest, RenderResponse 
renderResponse) {
+          models.put("user", new User());
+          return "hello.jspx";
+    }
+}]]></source>
+               </section>
+
+               <section name="Java™ EE / Jakarta EE Programming Model">
+                               <p>Since the MVCBean feature is built on <a 
href="https://www.jcp.org";>JCP</a> standards like <a 
href="https://www.mvc-spec.org";>MVC</a>, <a 
href="http://www.cdi-spec.org";>CDI</a>, and <a 
href="https://beanvalidation.org";>Bean Validation</a>, MVCBean portlet 
development relies on the familiar Java™ EE / Jakarta EE programming 
model.</p>
+               </section>
+
+               <section name="Supported MVC View Engines">
+                               <p>Pluto supports the following file extensions 
for views:</p>
+                               <ul>
+                                       <li><strong>.jsp/.jspx</strong> via 
Pluto's JSP view engine</li>
+                                       <li><strong>.html</strong> via Pluto's 
<a href="https://www.thymeleaf.org";>Thymeleaf</a> view engine (requires the 
Thymeleaf templating engine as a dependency)</li>
+                               </ul>
+               </section>
+
+               <section name="Demo Portlets">
+                       <p>The Pluto project contains real-world MVCBean demo 
portlets that demonstrate features that are typically found in web 
applications:</p>
+                       <ul>
+                               <li>HTML form-based submission</li>
+                               <li>XSS protection via MVC's 
<code>Encoders</code> API</li>
+                               <li>CSRF protection via MVC's 
<code>@CsrfProtected</code> annotation</li>
+                               <li>Injection of <code>@RedirectScoped</code> 
model data via MVC's <code>Models</code> API</li>
+                               <li>Navigation between views via methods 
annotated with MVC's <code>@Controller</code> annotation</li>
+                               <li>Input validation via Bean Validation and <a 
href="https://hibernate.org/validator/";>Hibernate Validator</a></li>
+                               <li>Uploading attachments via Portlet 3.0 
multipart file upload</li>
+                       </ul>
+                       <p><strong>Demo #1</strong>: "Job Applicant" portlet 
featuring <strong>JSPX</strong> views</p>
+                       <ul>
+                               <li><a 
href="https://github.com/apache/portals-pluto/tree/master/demo/applicant-mvcbean-cdi-jsp-portlet";>Source
 Code</a></li>
+                               <li><a 
href="https://search.maven.org/search?q=a:applicant-mvcbean-cdi-jsp-portlet";>Binary
 WAR</a></li>
+                       </ul>
+                       <p><strong>Demo #2</strong>: "Job Applicant" portlet 
featuring <strong>Thymeleaf</strong> views</p>
+                       <ul>
+                               <li><a 
href="https://github.com/apache/portals-pluto/tree/master/demo/applicant-mvcbean-cdi-thymeleaf-portlet";>Source
 Code</a></li>
+                               <li><a 
href="https://search.maven.org/search?q=a:applicant-mvcbean-cdi-thymeleaf-portlet";>Binary
 WAR</a></li>
+                       </ul>
+               </section>
+
+       <section name="Maven Archetypes">
+               <p>Refer to the <a href="maven-archetypes.html">Maven 
Archetypes</a> page in order to learn how to quickly generate a new MVCBean 
portlet project from a starter template.</p>
+       </section>
+
+       </body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/portlet-api.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/portlet-api.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/portlet-api.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/portlet-api.xml Tue Jan  4 21:52:39 
2022
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Portlet Concepts</title>
+  </properties>
+  
+  <body>
+
+  <section name="Portlet Concepts">
+    <subsection name="The Portlet Phase Model">
+      <p>
+      When a request arrives at a portal targeted to a portlet, the portlet 
container
+      executes portlet code according to a phase model.
+      </p>
+      <img src="../images/phaseModel.png"/>
+      <p>
+      There are three processing stages containing five processing phases, 
defined as follows:
+      </p>
+      <p>
+      The portlet API allows creation of URLs that can be included into portlet
+      markup in order to activate the portlet processing stages.
+      </p>
+      <ul>
+        <li>
+          The Action URL, or Partial Action URL triggers preparation stage 
processing. 
+        </li>
+        <li>
+          The Render URL triggers aggregation stage processing.
+        </li>
+        <li>
+          The Resource URL triggers resourec stage processing.
+        </li>
+      </ul>
+      <p>
+      When a stage is triggered, the processing phases within that stage are 
executed.
+      </p>
+      <dl>
+        <dt>
+        Action Phase
+        </dt><dd>
+        The portlet can perform updates and set up render state for the 
Aggregation Stage.
+        The action phase is initiated thru form post targeting the portlet.
+        During action phase processing, the portlet can fire events, resulting 
in event phase processing.
+        </dd><dt>
+        Event Phase
+        </dt><dd>
+        During event phase processing, the portlet container routes any fired 
events to 
+        the portlets subscribed to the events.
+        Portlets define the events they can fire and receive through 
configuration.
+        </dd><dt>
+        Header Phase (new with V3): 
+        </dt><dd>
+        Called for all portlets before the overall portal response is 
committed.
+        Portlets can contribute header values, cookies, and markup for the 
HEAD section
+        and can declare page resource dependencies.
+        </dd><dt>
+        Render Phase:
+        </dt><dd>
+        Called after the header phase for all portlets has been executed.
+        The portlet generates its markup for aggregation into the portal page.
+        During the render phase, the portlet may only generate markup that the 
portal
+        is able to integrate into the portal page.
+        </dd><dt>
+        Resource Stage
+        </dt><dd>
+        Initiated by an Ajax request from portlet JavaScript code using a 
resource URL.
+        During the resource phase, the portlet has nearly complete control 
over 
+        the response returned to the client. 
+        It may produce markup, JSON data, or binary data, for example.
+        </dd>
+      </dl>
+      <p>
+      The portlet container drives portlet phase execution 
+      by setting up the execution environment for each portlet and phase and
+      calling the corresponding portlet lifecycle methods.
+      </p>
+      <p>
+      The portlet participates in the phase model 
+      by implementing the corresponding lifecycle methods
+      and by using the portlet API to carry out the appropriate tasks.
+      </p>
+    </subsection>
+
+    <subsection name="The Portlet Lifecyce Methods">
+      <img src="../images/lifecycleMethods.png"/>
+      <p>
+        Each portlet phase has a corresponding lifecycle method.
+        The portlet container executes the prrocessing phase by calling the 
portlet lifecycle method.
+        Each phase is provided with specific request and response objects.
+        Methods can implemented using the interfaces
+        <code>Portlet, ResourceServingPortlet, EventPortlet</code> and 
<code>HeaderPortlet</code>.
+        Portlets can be configured through annotation or using the portlet 
deployment descriptor.
+      </p><p>
+        Portlets can implement the lifecycle methods by extending the 
GenericPortlet class
+        or by using the extended method annotations.
+      </p><p>
+        When the extended method annotations are used, portlet lifecycle 
methods can be arbitrary methods in java classes.
+        The methods are identified by the portlet lifecycle method annotations 
and have
+        relaxed method signature requirements as compared to interface methods.
+        When the method annotations are used, portlets are implicitly 
configured if no 
+        data beyond that provided in the annotation is required.
+        Additional configuration is possible through annotation or portlet 
deployment descriptor.
+      </p>
+      <ul>
+        <li>
+        Set up / tear down: @InitMethod, @DestroyMethod
+        </li><li>
+        Preparation stage: @ActionMethod, @EventMethod, 
+        </li><li>
+        Aggregation stage: @HeaderMethod, @RenderMethod, 
+        </li><li>
+        Resource stage: @ServeResourceMethod
+        </li>
+      </ul>
+    </subsection>
+    
+  </section>
+    
+  </body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/release-notes.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/release-notes.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/release-notes.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/release-notes.xml Tue Jan  4 21:52:39 
2022
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!--
+    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.
+-->
+<document>
+    <properties>
+        <title>Apache Pluto - Release Notes</title>
+        <subtitle>Apache Pluto - Release Notes</subtitle>
+    </properties>
+    <body>
+        <section name="Release Notes - Pluto 3.1.1">  
+            <p>
+              Pluto version 3.1.1 is a release that mainly focuses on security 
related issues such as updating vulnerable third-party dependencies and fixing 
project CVEs.
+            </p>
+            <p>
+            </p>
+        <subsection name="CVE">
+<ul>
+<li>[<a 
href='http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-36737'>CVE-2021-36737</a>]
 -         XSS in V3 Demo Portlet
+</li>
+<li>[<a 
href='http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-36738'>CVE-2021-36738</a>]
 -         XSS vulnerability in the JSP version of the Apache Pluto Applicant 
MVCBean CDI portlet
+</li>
+<li>[<a 
href='http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-36739'>CVE-2021-36739</a>]
 -         XSS vulnerability in the MVCBean JSP portlet maven archetype
+</li>
+</ul>
+        </subsection>
+
+        <subsection name="Bug">
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-781'>PLUTO-781</a>] 
-         PortletRequestDispatcherImpl forwards to incorrect path
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-782'>PLUTO-782</a>] 
-         Default &quot;tomcat&quot; and &quot;pluto&quot; users are granted 
&quot;manager-gui&quot; role
+</li>
+</ul>
+        </subsection>
+
+        <subsection name="Task">
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-786'>PLUTO-786</a>] 
-         Upgrade to version Spring Framework 5.3.7 and Spring Security 5.5.1 
due to CVE-2021-22112 and CVE-2021-22119
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-787'>PLUTO-787</a>] 
-         Migrate to Log4j 2.16.0 due to CVE-2019-17571 and CVE-2021-44228
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-788'>PLUTO-788</a>] 
-         Upgrade to Tomcat 8.5.69 due to multiple CVE issues
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-789'>PLUTO-789</a>] 
-         Upgrade to commons-io-2.7 due to CVE-2021-29425
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-790'>PLUTO-790</a>] 
-         Upgrade to JUnit 4.13.1 due to CVE-2020-15250
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-792'>PLUTO-792</a>] 
-         Upgrade to taglibs-standard-impl-1.2.3 due to CVE-2015-0254
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-794'>PLUTO-794</a>] 
-         Downgrade to hibernate-validator-5.4.3.Final and 
validation-api-1.1.0.Final in order to conform to Java EE 7
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/PLUTO-795'>PLUTO-795</a>] 
-         Release Preparation 3.1.1
+</li>
+</ul>
+               </subsection>
+
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: portals/site/pluto/src/site/xdoc/v311/tck.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/tck.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/tck.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/tck.xml Tue Jan  4 21:52:39 2022
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Using the JSR 362 TCK</title>
+  </properties>
+  
+  <body>
+
+  <section name="Using the JSR 362 TCK">
+    <p>
+      The JSR 362 Technology Compliance Kit (TCK) is intended to be used by 
portal
+      vendors wishing to achieve JSR 362 compatibility for their product.
+      If you do not meet this description, you do not need to read this 
section.
+    </p>
+
+    <subsection name="Overview">
+      <p>
+      The TCK contains portlets and a test driver that are used to perform the
+      compatibility test. The portlets contain the code that actually 
exercises the
+      portlet API. The driver uses Selenium 2 driven by Junit to access the 
system
+      under test through a selenium webdriver browser.
+      </p><p>
+      You can click through the tests on the portal pages displayed by the 
system under
+      test, or you can use the test driver to automatically click through the 
tests
+      and collect the results. Since there are many test cases (>6000), you 
will 
+      generally use the test driver.
+      </p><p>
+      A test portlet may define multiple test cases. The test case names must 
be 
+      unique in the system, and must be of a form that can be used as portlet 
names 
+      and as Java Properties file keys.
+      </p><p>
+      Each portlet test module defines its own test case list and page file 
containing
+      the page definitions expected by the tests contained in the module.  
+      </p><p>
+      The build process generates a consolidated test case list and 
consolidated page 
+      file containing all test cases and page definitions for all test 
modules. The 
+      consolidated test case list maps the test case to the name of the page 
on which 
+      the test case is located.
+      </p><p>
+      The test driver works by reading the consolidated test case list. For 
each test
+      case, the driver accesses the specified page. It logs in if necessary, 
clicks
+      any available test case link, and collects the test case results from the
+      browser window.
+      </p><p>
+      The test driver accesses a TCK page by looking for and clicking a link 
whose
+      link text is equal to the page name. If the test driver cannot find the 
link on 
+      current page, it will access the test server login URL configured in the
+      portlet-tck_3.0/POM.xml file.
+      </p><p>
+      The test driver checks whether a login is necessary by checking for the
+      existence of an entry field that has the HTML element ID for the user 
name
+      field. If the user name field is available, the driver enters the user 
name and
+      password into the corresponding entry fields and submits the form. The 
username
+      HTML element ID, password element ID, username and password are 
configurable
+      in the portlet-tck_3.0/POM.xml file.
+      </p><p>
+      The driver checks for links to be clicked and results to be collected by
+      checking for specific HTML element IDs on the page. The HTML element IDs 
are
+      based on the test case name. From the point of view of the test driver 
there can
+      be several relevant element IDs on the page for each test case:
+      </p>
+      <ul>
+      <li>
+      "&lt;testcasename&gt;-setup"        - Test setup link      
+      </li><li>
+      "&lt;testcasename&gt;-clickme"      - Test execution link
+      </li><li>
+      "&lt;testcasename&gt;-results"      - Test results field; "Succeeded" or 
"Failed"
+      </li><li>
+      "&lt;testcasename&gt;-details"      - Test details field; provides 
failure reason
+      </li>
+      </ul>
+      <p>
+      After accessing the page on which the test case is to be found, the test 
driver
+      first looks for a setup link. If found, it clicks the link and waits for 
the
+      page to load.
+      </p><p>
+      The driver then looks for a test execution link. If found, 
+      it clicks the link, waits for the new page to load, and then checks for 
the
+      result elements.
+      </p><p>
+      The driver reads the contents of the HTML elements that have the results 
and
+      details element IDs and analyzes the results string to determine test 
case
+      success or failure.
+      </p>
+    </subsection>
+
+    <subsection name="Project Structure">
+      <p>
+      The TCK source code is located in the subdirectory 
<code>./pluto/portlet-tck_3.0</code>.
+      The project consists of the following modules:
+      </p>
+      <dl>
+      <dt>
+      common
+      </dt><dd>
+      Common code used by the test portlets and the test driver. This
+      module also contains the XSL stylesheets used during the test
+      portlet module build to generate the test case list and page
+      configuration for the module.   
+      </dd><dt>
+      deploy
+      </dt><dd>
+      The directory <code>deploy/target/deploy-files</code> contains the 
portlet war
+      files and the page file to be deployed on the system under test.
+      </dd><dt>
+      driver
+      </dt><dd>
+      The maven-based test driver. When this module is built, it
+      generates a consolidated test case list and page file for the test
+      cases and pages defined by all test case portlet modules.
+      </dd><dt>
+      TestModule1
+      </dt><dd>
+      Intended to be a sample for writing TCK portlets.
+      Defines several portlets, each of which is placed on its own page.
+      </dd><dt>
+      TestModule2
+      </dt><dd>
+      Intended to be a sample for writing TCK portlets.
+      Defines several portlets, all of which are placed on the same
+      portal page. Some tests produce links that are clicked by the test
+      driver when the test is run. Some tests set public render
+      parameters that are used by another test portlet.
+      </dd><dt>
+      TestModule3
+      </dt><dd>
+      Intended to be a sample for writing TCK portlets.
+      Defines two portlets in separate portlet applications for public 
+      render parameter testing. Both portlets are placed on the same
+      page. When the test driver clicks a test link in one portlet, the
+      test results are displayed in the second portlet.
+      </dd><dt>
+      V2*Tests
+      </dt><dd>
+      Modules with this naming scheme contain test cases to demostrate 
+      backward compatibilty with the Portlet Specification version 2.0.
+      Portlets whose class names contain the string "_SIG_" contain 
+      generated code for verifying the method signatures. These portlets
+      should not be changed by hand. The remaining portlets contain
+      additional V2 verification code.
+      </dd><dt>
+      V3*Tests
+      </dt><dd>
+      Modules with this naming scheme test v3.0 specific funtionality.
+      </dd>
+      </dl>
+    </subsection>
+
+    <subsection name="The Page File">
+      <p>
+      The page file defines the page names for the TCK and the portlets 
expected to
+      be on each page. This is an XML file in the form of a Pluto driver 
configuration
+      file. The schema for this file is located in the Pluto project at the 
following
+      location:
+      </p><p>
+      
<code>./pluto/pluto-portal-driver/src/main/resources/pluto-portal-driver-config.xsd</code>
+      </p><p>
+      After the TCK has been built, complete page file for the TCK pages is 
contained
+      in the following file:
+      </p><p>
+      
<code>./pluto/portlet-tck_3.0/deploy/target/deploy-files/pluto-portal-driver-config.xml</code>
+      </p><p>
+      It is expected that vendors will extract the portlet-to-page mapping 
information
+      from the page file in order to create the necessary configuration files 
for
+      the portal under test.
+      </p><p>
+      When creating pages for your system, note that the test driver expects 
links 
+      to all test case pages to be available.
+      The test driver searches for the page links by link text, so it is 
important that
+      the links have the names defined in the page file.
+      </p>
+    </subsection>
+
+    <subsection name="Accessing the version 3.0.3 TCK Source Code">
+      <p>
+      The source code is located in the 
+      <a href='https://github.com/apache/portals-pluto'>Apache Pluto 
repository</a>.
+      </p><p>      
+      First, use git to clone the repository:
+      <code>git clone https://github.com/apache/portals-pluto.git pluto</code>
+      </p><p>      
+      Then switch into the 'pluto' directory and checkout the source for 
version 3.0.3 of the TCK:
+      </p><p>      
+      <code>git checkout portlet-tck-3.0.3</code>
+      </p><p>      
+      The version 3.0.3 TCK source code is now located in the 
'portlet-tck_3.0' directory.
+      </p>
+    </subsection>
+
+    <subsection name="Building the TCK">
+      <p>
+      Building the TCK produces the test portlets, a list of test cases in XML 
format,
+      an XML-based page file containing the page configuration expected by the 
test
+      cases, and the test driver itself.
+      </p><p>      
+      To build portlet war files that do not contain any special 
configuration, use
+      the command:
+      </p><p>      
+      <code>mvn clean install</code>
+      </p><p>      
+      To build portlet war files that are configured for deployment on Pluto, 
use the 
+      command:
+      </p><p>      
+      <code>mvn clean install -Ppluto</code>
+      </p><p>      
+      These commands can be executed either from the Pluto project base 
directory or
+      from the <code>./pluto/portlet-tck_3.0</code> directory.
+      </p>
+    </subsection>
+
+    <subsection name="Deploying the TCK">
+      <p>
+      Use the page file which has the default
+      name of 
<code>deploy/target/deploy-files/pluto-portal-driver-config.xml</code> to create
+      pages for your system. 
+      The WAR files in the <code>deploy/target/deploy-files</code>
+      contain the test portlet code. Deploy these files on your system. 
+      </p><p>      
+      If you are testing with Apache Pluto, you can simply copy
+      the page file into the Pluto <code>webapps/pluto/WEB-INF</code> 
directory in order to set up the
+      pages. To deploy the WAR files on Pluto, copy them into the Pluto 
webapps directory.
+      </p>
+    </subsection>
+
+    <subsection name="Running the TCK">
+      <p>
+      Configure the parent POM file 
<code>./pluto/portlet-tck_3.0/pom.xml</code> to 
+      address your system under test. See the properties section in the 
pom.xml file. 
+      You can set the host name and port for the system under test, and can
+      also select the browser to be used by the Selenium WebDriver code. Note,
+      however, that if you use a browser other than "firefox" or "HTMLUnit" 
you will
+      have to download and install additional WebDriver software manually, and 
you may
+      need to add additional configuration properties (See the 
test.browser.webDriver
+      property in the parent POM).
+      </p><p>
+      At the time of this writing, the HTMLUnit driver does not support 
JavaScript 
+      adequately for JSR 362 TCK purposes. You may need to try different 
drivers to
+      find the appropriate WebDriver driver for your environment.
+      </p><p>
+      All TCK tests were successfully executed through the test driver against 
Pluto
+      using the ChromeDriver web driver. See the portlet-tck_3.0/POM.xml file 
for
+      a configuration example.
+      </p><p>
+      Run the TCK by switching to the driver subdirectory and execute the 
command:
+      </p><p>
+      <code>mvn test -Prun-tck</code>
+      </p><p>
+      If you want to run a subset of the tests, use the "-Dtest.module=" 
option. The
+      driver will then only execute those tests whose test case name contains 
the 
+      specified string. For example, if you want to run the signature 
verification
+      tests, use the command:
+      </p><p>
+      <code>mvn test -Prun-tck -Dtest.module=SIG</code>
+      </p><p>
+      You can also exclude specific tests by placing an exclamation point 
before the
+      text to be matched. For example, if you want to exclude the signature 
verification
+      tests, use the command:
+      </p><p>
+      <code>mvn test -Prun-tck -Dtest.module=!SIG</code>
+      </p><p>
+      The 'test.dryrun' flag will cause the test cases to be listed without 
executing them.
+      For example, the following command will list all of the test cases whose 
test
+      case name contains 'ResourceResponse', but will not execute them:
+      </p><p>
+      <code>mvn test -Prun-tck -Dtest.module=ResourceResponse 
-Dtest.dryrun=true</code>
+      </p><p>
+      The test driver will wait for a response for a default time of 3 
seconds. If this
+      value proves to be too short, you can change it in the 
portlet-tck_3.0/POM.xml
+      file, or you can specify a timeout value using the 'test-timeout' 
command line
+      option. The timeout value is specified in seconds, as follows:
+      </p><p>
+      <code>mvn test -Prun-tck -Dtest.module=ResourceResponse 
-Dtest.timeout=5</code>
+      </p><p>
+      The test driver has an ignore list containing test case names that are 
not
+      required to pass in order for a portal product to be JSR 362 compliant. 
The 
+      ignore list is an XML file in properties file format located at:
+      </p><p>
+      
<code>portlet-tck_3.0/driver/src/main/resources/xml-resources/ignoredTestCases.xml</code>
+      </p><p>
+      By default, the test driver will ignore and will not execute all test 
cases 
+      in the ignore list. If you wish to execute all test cases including 
those in
+      the ignore list, set the command line flag 'test.ignore' to false:
+      </p><p>
+      <code>mvn test -Prun-tck -Dtest.ignore=false</code>
+      </p>
+    </subsection>
+
+    <subsection name="Passing the TCK">
+      <p>
+      TCK execution is self-policing. If you are a portal vendor and wish to 
claim
+      JSR 362 compatibility for your product, you should be able to 
demonstrate that 
+      this TCK can be executed against your product with no errors.
+      </p>
+    </subsection>
+
+    <subsection name="Contesting a Test Case">
+      <p>
+      When defining and implementing the TCK test cases, care was taken to 
assure 
+      proper implementation and to test only required functionality.
+      </p><p>
+      However, mistakes may have occurred. If you feel that a test case is 
incorrectly
+      implemented or is invalid as defined, please proceed as follows.
+      </p><p>
+      In either case, please open an issue at the Pluto Jira:
+      </p><p>
+      <code>https://issues.apache.org/jira/browse/PLUTO/</code>
+      </p><p>
+      Prefix the summary with 'TCK:' in order to allow TCK issues to be readily
+      identified. Please be sure to specify the exact name(s) of the test 
case(s) in
+      question.
+      </p><p>
+      If you feel that the test case was implemented incorrectly, you may 
correct the
+      implementation and issue a pull request through github here:
+      </p><p>
+      <code>https://github.com/apache/portals-pluto/pulls</code>
+      </p><p>
+      If you feel that the test case is invalid as defined, you may update the 
ignore
+      list and issue a pull request.
+      </p><p>
+      If we agree that the test case is invalid or incorrectly implemented, we 
will 
+      fix it or integrate your fix into the Pluto master and version 3.0 
branches.
+      </p>
+    </subsection>
+  </section>
+    
+  </body>
+  
+</document>
+

Added: portals/site/pluto/src/site/xdoc/v311/v3Features.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v311/v3Features.xml?rev=1896683&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v311/v3Features.xml (added)
+++ portals/site/pluto/src/site/xdoc/v311/v3Features.xml Tue Jan  4 21:52:39 
2022
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+
+<document>
+  
+  <properties>
+    <title>Apache Pluto - Portlet 3.0 API Overview</title>
+  </properties>
+  
+  <body>
+
+  <section name="Portlet 3.0 API Overview">
+    <p>
+      This section presents some of the main new features introduced by JSR 
362.
+      JSR 362 Portlet Specification 3.0 introduces many improvements to the
+      portlet programming model. It adds configuration through annotation,
+      asynchronous support similar to the servlet asynchronous support,
+      multipart form support, support for CDI beans, method annotation support
+      allowing portlet methods to reside in different classes, and a JavaScript
+      API that allows portal pages to function as single-page applications. The
+      Pluto 3.0 portlet container implements all JSR 362 features and passes 
the
+      TCK. While doing so, Pluto 3.0 remains fully compliant to the 2.0 Portlet
+      Specification, meaning that version 2.0 portlets can run on the version
+      3.0 portlet container.
+    </p>
+    <p>
+      Additional Resources:
+    </p>
+    <ul>
+      <li>
+        The 
+        <a href="http://jcp.org/en/jsr/detail?id=362";>Java Community Process 
JSR 362 page</a>
+        will allow you to access the complete specification for full details.
+      </li>
+      <li>
+        The JavaOne 2016 presentation
+        <a 
href="https://static.rainfocus.com/oracle/oow16/sess/1462801563632001pOv8/ppt/JSR362-JavaOne-2016a.pdf";>"Portlet
 Specification 3.0 Is Here!"</a>
+        provides a version 3.0 overview.
+      </li>
+      <li>
+        The <a href="../portlet-3.0-apidocs/index.html">Portlet API Version 
3.0</a> 
+        page documents the portlet programming interface. 
+      </li>
+    </ul>
+
+    <subsection name="Configuration by Annotation">
+      <p>
+      The version 3.0 portlet API introduces the 
<code>@PortletApplication</code>
+      and <code>@PortletConfiguration</code> annotations to allow portlets to
+      be configured without using the deployment descriptor.
+      Note that the deployment descriptor can still be used. When both
+      configuration annotations and a portlet deployment descriptor are 
present,
+      values from the deployment descriptor override those provided
+      by annotation.
+      </p>
+      <pre>
+@PortletApplication(
+      defaultNamespaceURI="https://www.java.net/";,
+      events = {
+          
@EventDefinition(qname=@PortletQName(namespaceURI="http://www.apache.org/";,
+                           localPart="event1") ,   payloadType = String.class),
+          @EventDefinition(qname=@PortletQName(namespaceURI="", 
+                           localPart="event4"))
+      }
+)
+
+
+@PortletConfiguration(portletName="Portlet1", 
+   initParams = {
+      @InitParameter(name="color", value="#cafeba"),
+   },
+   title={
+      @LocaleString(locale = "EN", value="Annotated Portlet"),
+   }
+)
+      </pre>
+    </subsection>
+
+    <subsection name="Extended Method Annotations">
+      <p>
+      Version 3 extends the idea of method annotations introduced with version 
2.
+      Portlet methods may now be located in classes that do not implement 
portlet 
+      interfaces. 
+      Also, lifecycle methods belonging to a single portlet need not be in the 
same
+      class.
+      </p>
+      <p>
+      The extended method annotations <code>@HeaderMethod</code>, 
<code>@RenderMethod</code>, 
+      and <code>@ServeResourceMethod</code> have relaxed method signature 
requirements
+      as compared to the methods defined by the portlet interfaces.
+      See the portlet API documentation for details.
+      </p><p>
+      Use of the extended method annotation <code>@RenderMethod</code> 
implicitly 
+      configures a portlet. No additional configuration is required.
+      The following example defines a simple portlet render method.
+      If this method were located in a class with a default constructor within
+      a web application deployed on a version 3 portal, it would define and 
automatically
+      configure a portlet by the name of "BeanPortletDemo".
+      </p>
+      <pre>
+@RenderMethod(portletNames = "BeanPortletDemo")
+public String simpleRender() {
+   return "Hello, World!";
+}
+      </pre>
+    </subsection>
+
+    <subsection name="CDI Support">
+      <p>
+      Version 3 provides support for CDI in several ways.
+      Portlet classes are instantiated through the CDI container
+      to enable dependency injection while respecting
+      scope annotations on the portlet classes.
+      Dependency injection supported in portlet filters and listeners as well 
as
+      in asynchronous threads started through the 
<code>PortletAsyncContext</code>
+      object.
+      Many portlet artifacts have been made injectable - the
+      request and response objects, parameter objects, the portlet 
configuration 
+      object, etc.
+      </p><p>
+      Custom CDI scopes for portlets have also been introduced.
+      <ul>
+        <li>
+        The  portlet session scope - @PortletSessionScoped
+        </li>
+        <li>
+        The portlet request scope - @PortletRequestScoped
+        </li>
+        <li>
+        The  render state scope - @RenderStateScoped
+        </li>
+      </ul>
+      </p>
+    </subsection>
+
+    <subsection name="Asynchronous support">
+      <p>
+      The portlet programming model provides asynchronous support similar to
+      that provided by servlets.
+      Using asynchronous support, long-running requests can run in separate 
thread
+      in order to free up application server resources.
+      Asynchronous support is provided for resource requests only.
+      </p><p>
+      Asynchronous processing must be started within original resource request.
+      The asynchronous thread runs in context of original resource request,
+      providing that it is started through the 
<code>PortletAsyncContext#start(Runnable)</code>
+      method.
+      This means that CDI injection can be used within async thread
+      in the same manner as for the original request.
+      The asynchronous listener and any portlet filters also run in context of 
original request.
+      </p><p>
+      The asynchronous thread can dispatch directly to JSP or servlet for 
producing output
+      and can also dispatch back to the resource method, if desired.
+      </p><p>
+      The following diagram illustrates a sample asynchronous processing 
sequence.
+      Note that this shows only one of many possible scenarios.
+      When the portal receives a resource request targeted to the asnychronous 
+      portlet, the portlet container invokes the portlet resource method.
+      The portlet starts asynchronous processing, adds an asynchronous 
listener,
+      uses the portlet asynchronous context object to start a thread, and
+      returns to the container. 
+      The asynchronous thread does its long-running work and dispatches back 
to the 
+      original resource method. 
+      The resource method then includes a JSP to produce output and completes 
+      asynchronous processing.
+      </p>
+      <img src="../images/async.png"/>
+    </subsection>
+
+    <subsection name="The Portlet Hub JavaScript API">
+      <p>
+      The portlet specification defines a JavaScript API that can be used by 
portlet
+      code running on the browser to read and set render parameters, carry out 
portlet
+      actions, and generate resource URLs while remaining in an Ajax paradigm.
+      Updating parameters and executing actions through the portlet hub does 
not 
+      cause a page refresh.
+      Instead, the portlet hub communicates with the portal, causing the portal
+      to carry out any required portlet processing. 
+      The portlet hub then informs the portlet client code running on the 
browser about
+      any new parameters.
+      The portlet client can then create a resource URL to obtain any data or 
+      markup required to update the page.
+      The portal implementation is responsible for making the portlet hub 
+      module available on the portal page.
+      </p>
+      <p>
+      The following diagram illustrates portlet action processing initiated 
through 
+      the portlet hub.
+      In this scenario, the portal page contains three portlets that make use 
of
+      the portlet hub. 
+      Portlet B initiates an Ajax action through the portlet hub.
+      The portlet hub transmits the action request along with any form data 
and action 
+      parameters to the portal server.
+      On the server, action processing is executed for portlet B. 
+      During action processing, portlet B fires an event that portlet A can 
process.
+      The server executes the event phase for the event and transmits the new 
render
+      state information to the portlet hub running on the browser.
+      The portlet hub fires onStateChange events to portlets A and B to inform 
them
+      of the updated render state information.
+      The portlets can now use the portlet hub API to create resource URLs in 
order
+      to retrieve information corresponding to the new render state.
+      </p>
+      <img src="../images/hubaction.png"/>
+      <p>
+      The main JavaScript functions provided by the portlet hub are listed 
below.      
+      </p>
+      <dl>                
+      <dt><code>
+      Promise(PortletInit) register(&lt;Portlet ID&gt;)
+      </code></dt><dd>
+      Registers a portlet client designated by portlet ID with the Portlet Hub 
and returns object that provides access to remaining Portlet Hub functions.
+      </dd><dt><code>
+      ListenerID addEventListener(&lt;listener type&gt;, &lt;listener 
method&gt;)
+      </code></dt><dd>
+      The Portlet Hub informs Portlet Client of state changes by calling the 
event listener function and passing the updated portlet state.
+      </dd><dt><code>
+      Promise(url) createResourceUrl(&lt;resource parameters&gt;, 
&lt;cacheability&gt;, &lt;resource ID&gt;)
+      </code></dt><dd>
+      Creates a resource URL containing the current page / portlet state.
+      The URL can be used with the framework of choice to retrieve the 
resource.
+      </dd><dt><code>
+      setPortletState(&lt;new portlet state&gt;) 
+      </code></dt><dd>
+      Allows portlet client to set private and public parameters, portlet 
mode, window state
+      </dd><dt><code>
+      action(&lt;action parameters&gt;, &lt;form element&gt;)
+      </code></dt><dd>
+      Carries out a portlet action in Ajax mode (Ajax action) 
+      </dd></dl>
+      <pre>
+      </pre>
+    </subsection>
+
+<!--
+    <subsection name="The Portlet Phase Model">
+      <p>
+      </p>
+      <pre>
+      </pre>
+    </subsection>
+-->    
+
+  </section>
+  </body>
+  
+</document>
+


Reply via email to