Author: msnicklous
Date: Fri Dec  2 14:25:30 2016
New Revision: 1772352

URL: http://svn.apache.org/viewvc?rev=1772352&view=rev
Log:
Added additional menu items and version 3 description.

Added:
    portals/site/pluto/src/site/resources/images/async.png   (with props)
    portals/site/pluto/src/site/resources/images/hubaction.png   (with props)
    portals/site/pluto/src/site/resources/images/lifecycleMethods.png   (with 
props)
    portals/site/pluto/src/site/resources/images/phaseModel.png   (with props)
    portals/site/pluto/src/site/xdoc/v30/v3Features.xml
Modified:
    portals/site/pluto/src/site/site.xml
    portals/site/pluto/src/site/xdoc/subprojects/subprojects.xml
    portals/site/pluto/src/site/xdoc/v30/deploying.xml
    portals/site/pluto/src/site/xdoc/v30/getting-started.xml
    portals/site/pluto/src/site/xdoc/v30/portlet-api.xml
    portals/site/pluto/src/site/xdoc/v30/release-notes.xml
    portals/site/pluto/src/site/xdoc/v30/tck.xml

Added: portals/site/pluto/src/site/resources/images/async.png
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/resources/images/async.png?rev=1772352&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/site/pluto/src/site/resources/images/async.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/site/pluto/src/site/resources/images/hubaction.png
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/resources/images/hubaction.png?rev=1772352&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/site/pluto/src/site/resources/images/hubaction.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/site/pluto/src/site/resources/images/lifecycleMethods.png
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/resources/images/lifecycleMethods.png?rev=1772352&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/site/pluto/src/site/resources/images/lifecycleMethods.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/site/pluto/src/site/resources/images/phaseModel.png
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/resources/images/phaseModel.png?rev=1772352&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/site/pluto/src/site/resources/images/phaseModel.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: portals/site/pluto/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/site.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/site.xml (original)
+++ portals/site/pluto/src/site/site.xml Fri Dec  2 14:25:30 2016
@@ -70,7 +70,8 @@ limitations under the License.
        <menu name="Pluto 3.0">
       <item name="Getting Started" href="/v30/getting-started.html"/>
       <item name="Deploying Portlets" href="/v30/deploying.html"/>
-      <item name="Portlet API 3.0" href="/v30/portlet-api.html"/>
+      <item name="Portlet Concepts" href="/v30/portlet-api.html"/>
+      <item name="Version 3 Features" href="/v30/v3Features.html"/>
       <item name="Using the TCK" href="/v30/tck.html"/>
       <item name="Release Notes" href="/v30/release-notes.html"/>
        </menu>    

Modified: portals/site/pluto/src/site/xdoc/subprojects/subprojects.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/subprojects/subprojects.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/subprojects/subprojects.xml (original)
+++ portals/site/pluto/src/site/xdoc/subprojects/subprojects.xml Fri Dec  2 
14:25:30 2016
@@ -28,8 +28,8 @@ limitations under the License.
     <section name="Pluto Subprojects">
       
       <p>
-        Pluto 2.0 utilizes Maven 2 as it's project management and build
-        automation tool.  Pluto follows maven's best practices and is organized
+        Pluto 3.0 uses Maven 3 as project management and build
+        automation tool.  Pluto follows maven best practices and is organized
         into modules or subprojects.
       </p>
       
@@ -37,14 +37,22 @@ limitations under the License.
         <p>
           <ul>
             <li>
-              <b>Pluto Container:</b>
+              <b><code>portlet-api</code>:</b>
+              Contains the code defining the portlet API.
+            </li>
+            <li>
+              <b><code>pluto-container</code>:</b>
               The Pluto Container is the core compontent of the Apache Pluto
-              project. All other modules either support the development. The
+              project. The
               Pluto Container is the reference implementation of the Portlet
               Specification.
             </li>
             <li>
-              <b>Pluto Tags:</b>
+              <b><code>pluto-container-api</code>:</b>
+              The Pluto container programming interface.
+            </li>
+            <li>
+              <b><code>pluto-taglib</code>:</b>
               The Java Portlet Tag Library implementation which is provided
               with the container.
             </li>
@@ -56,13 +64,25 @@ limitations under the License.
         <p>
           <ul>
             <li>
-              <b>Pluto Portal Driver:</b>
+              <b><code>pluto-portal-driver</code>:</b>
+              The programming interface for the Pluto portal driver library.
+            </li>
+            <li>
+              <b><code>pluto-portal-driver-impl</code>:</b>
               A driver library for the Pluto Portlet Container. Provides 
service
               implementations and utilities for implementing a portal which
               utilizes the container.
             </li>
             <li>
-              <b>Pluto Portal:</b>
+              <b><code>pluto-container-driver-api</code>:</b>
+              Code that allows the Pluto portal driver to access the Pluto 
+              portlet container.
+              Also contains code for container and driver initialization along
+              with the portlet servlet code that is dynamically deployed
+              for each configured portlet.
+            </li>
+            <li>
+              <b><code>pluto-portal</code>:</b>
               The user interface components (web application) of the Pluto
               Portal. The pluto portal is a simple portal application which
               embeds the portal. The portal is not meant to be a full 
enterprise
@@ -71,28 +91,14 @@ limitations under the License.
               portlets.
             </li>
             <li>
-              <b>Pluto Testsuite:</b>
-              A test portlet which can be used to exercise and test any portlet
+              <b><code>pluto-testsuite</code>:</b>
+              JSR 286 Test portlets that can be used to exercise and test any 
portlet
               container.
             </li>
-          </ul>
-        </p>
-      </subsection>
-      
-      <subsection name="Libraries and Supporting Subprojects">
-        <p>
-          <ul>
-            <li>
-              <b>Pluto Descriptor API:</b>
-              A domain model which represents the deployment descriptors read
-              by the portlet container.  Contains service interfaces for 
reading
-              and writing portlet.xml and web.xml.
-            </li>
             <li>
-              <b>Pluto Descriptor Impl:</b>
-              The default implementation of the Pluto Descriptor API 
Subproject.
-              The default implementation utilzes castor for reading and writing
-              portlet and web application descriptors.
+              <b><code>portlet-tck_3.0</code>:</b>
+              Contains additional modules implementing the JSR 362 Technology 
Compliance Kit (TCK).
+              See <a href="../v30/tck.html">Using the JSR 362 TCK</a>.
             </li>
           </ul>
         </p>
@@ -102,24 +108,61 @@ limitations under the License.
         <p>
           <ul>
             <li>
-              <b>Pluto Util:</b>
+              <b><code>portlet-util</code>:</b>
               Utilities for working with the Pluto Portal. Includes libraries
               for installing pluto, assembling portlet applications for
               deployment in pluto, deploying to pluto, and publishing portlets
               to pluto.
             </li>
             <li>
-              <b>Maven Plugin:</b>
+              <b><code>maven-pluto-plugin</code>:</b>
               Provides Maven goals for utilizing the Pluto utilities. Install
               the portal within a servlet container, assemble portlets, deploy
               portlets, and publish portlets to th Pluto Portal.
             </li>
             <li>
-              <b>Ant Tasks:</b>
+              <b><code>pluto-ant-tasks</code>:</b>
               Ant tasks which allow developers to utilize the Pluto utilities
               within ant. Currently supports assembling wars for deployment
               within pluto.
             </li>
+            <li>
+              <b><code>pluto-common</code>:</b>
+              An aggregator for Pluto code that must be placed in an 
application server or servlet
+              container shared library.
+              While not required for deployment on Apache Tomcat, the jar file 
+              produced by this module may be useful for deployment on other 
platforms.
+            </li>
+          </ul>
+        </p>
+      </subsection>
+      
+      <subsection name="Demo Portlets">
+        <p>
+          The Pluto distribution contains four version 3.0 portlet 
applications that
+          illustrate the use of all aspects of JSR 362 portlet programming.
+          <ul>
+            <li>
+              <b><code>PortletV3Demo</code>:</b>
+              Contains portlets that illustrate miscellaneous aspects
+              of the API.
+            </li>
+            <li>
+              <b><code>PortletV3AnnotatedDemo</code>:</b>
+              Contains portlets that illustrate the use of 
+              the version 3.0 Extended Method Annotations feature.
+            </li>
+            <li>
+              <b><code>PortletHubDemo</code>:</b>
+              Contains portlets that show how you can use the 
+              Portlet Hub JavaScript API to create portal-based single-page 
applications.
+            </li>
+            <li>
+              <b><code>chatRoomDemo</code>:</b>
+              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>
       </subsection>

Modified: portals/site/pluto/src/site/xdoc/v30/deploying.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/deploying.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/deploying.xml (original)
+++ portals/site/pluto/src/site/xdoc/v30/deploying.xml Fri Dec  2 14:25:30 2016
@@ -101,10 +101,8 @@ limitations under the License.
 <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"/>
+    <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>

Modified: portals/site/pluto/src/site/xdoc/v30/getting-started.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/getting-started.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/getting-started.xml (original)
+++ portals/site/pluto/src/site/xdoc/v30/getting-started.xml Fri Dec  2 
14:25:30 2016
@@ -116,7 +116,7 @@ limitations under the License.
          the build process in order to access maven repositories and other 
information.
        </p>
 
-      <h4>Obtaining Pluto 3.0 Source Code"</h4>
+      <h4>Obtaining Pluto 3.0 Source Code</h4>
        
       <p>
         To browse the Pluto source code online, access 

Modified: portals/site/pluto/src/site/xdoc/v30/portlet-api.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/portlet-api.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/portlet-api.xml (original)
+++ portals/site/pluto/src/site/xdoc/v30/portlet-api.xml Fri Dec  2 14:25:30 
2016
@@ -21,27 +21,119 @@ limitations under the License.
 <document>
   
   <properties>
-    <title>Portlet API version 3.0 Overview</title>
+    <title>Portlet Concepts</title>
   </properties>
   
   <body>
 
-  <section name="Portlet API version 3.0 Overview">
-    <p>
-      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>
-      To be continued ...
-    </p>
+  <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>

Modified: portals/site/pluto/src/site/xdoc/v30/release-notes.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/release-notes.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/release-notes.xml (original)
+++ portals/site/pluto/src/site/xdoc/v30/release-notes.xml Fri Dec  2 14:25:30 
2016
@@ -28,6 +28,7 @@
             </p>
             <p>
             </p>
+<!--            
         <subsection name="Bug">
         <ul>
         <li>
@@ -37,7 +38,7 @@
 
         <subsection name="Improvement">
         </subsection>
-            
+-->            
         </section>
     </body>
 </document>
\ No newline at end of file

Modified: portals/site/pluto/src/site/xdoc/v30/tck.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/tck.xml?rev=1772352&r1=1772351&r2=1772352&view=diff
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/tck.xml (original)
+++ portals/site/pluto/src/site/xdoc/v30/tck.xml Fri Dec  2 14:25:30 2016
@@ -104,6 +104,228 @@ limitations under the License.
       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="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>

Added: portals/site/pluto/src/site/xdoc/v30/v3Features.xml
URL: 
http://svn.apache.org/viewvc/portals/site/pluto/src/site/xdoc/v30/v3Features.xml?rev=1772352&view=auto
==============================================================================
--- portals/site/pluto/src/site/xdoc/v30/v3Features.xml (added)
+++ portals/site/pluto/src/site/xdoc/v30/v3Features.xml Fri Dec  2 14:25:30 2016
@@ -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>Portlet API version 3.0 Overview</title>
+  </properties>
+  
+  <body>
+
+  <section name="Portlet API version 3.0 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