Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/credentials.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/credentials.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/credentials.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/credentials.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,168 @@
+<?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>Jetspeed 2 Security - Credentials Management</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+            <person name="Ate Douma" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Credentials Management Overview">
+          <subsection name="DefaultCredentialHandler Features">
+            <p>
+                With the Jetspeed <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/DefaultCredentialHandler.html">
+                <code>DefaultCredentialHandler</code></a> special management 
of password credentials can
+                easily be configured. Through the provided 
+                <a 
href="../apidocs/org/apache/jetspeed/security/spi/PasswordCredentialProvider.html">
+                <code>PasswordCredentialProvider</code></a> and 
+                <a 
href="../apidocs/org/apache/jetspeed/security/spi/InternalPasswordCredentialInterceptor.html">
+                <code>InternalPasswordCredentialInterceptor</code></a> 
components custom logic can be plugged in for:</p>
+            <ul>
+                <li>providing a custom 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/PasswordCredential.html">
+                    <code>PasswordCredential</code></a> implementation</li>
+                <li>password encoding<br/>
+                    If an 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/CredentialPasswordEncoder.html">
+                    <code>CredentialPasswordEncoder</code></a> is available 
from the 
+                    <code>PasswordCredentialProvider</code> passwords will be 
encoded with it before they are persisted.
+                    The provided 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/MessageDigestCredentialPasswordEncoder.html">
+                    <code>MessageDigestCredentialPasswordEncoder</code></a> 
uses 
+                    <a 
href="http://java.sun.com/j2se/1.4.2/docs/api/java/security/MessageDigest.html";>
+                    <code>MessageDigest</code></a> hash algorithms for the 
password encryption, and can for example be
+                    configured to use <code>SHA-1</code> and 
<code>Base64</code>.
+                </li>
+                <li>enforcing password value rules<br/>
+                    If an
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/CredentialPasswordValidator.html">
+                    <code>CredentialPasswordValidator</code></a> is available 
from the
+                    <code>PasswordCredentialProvider</code>, passwords will be 
validated with it before they are persisted.
+                    The 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/DefaultCredentialPasswordValidator.html">
+                    <code>DefaultCredentialPasswordValidator</code></a> for 
example enforces non-emtpy password. And
+                    with the 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/SimpleCredentialPasswordValidator.html">
+                    <code>SimpleCredentialPasswordValidator</code></a> a 
minimum length and a minum number of numeric
+                    characters can be enforced.
+                </li>
+                <li>intercepting 
+                    <a 
href="../apidocs/org/apache/jetspeed/security/om/InternalCredential.html">
+                    <code>InternalCredential</code></a> lifecycle events<br/>
+                    If the <code>DefaultCredentialHandler</code> is provided 
with an
+                    <code>InternalPasswordCredentialInterceptor</code>, it 
will invoke this interceptor (or an arbirary
+                    set if
+                    <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/InternalPasswordCredentialInterceptorsProxy.html">
+                    
<code>InternalPasswordCredentialInterceptorsProxy</code></a> is used) on:
+                    <ul>
+                      <li>after loading a credential from the persistent 
store</li>
+                      <li>after authenticating a user</li>
+                      <li>before a new credential is saved to the persistent 
store</li>
+                      <li>before a new password is save for the 
credential</li>                      
+                    </ul>
+                    Jetspeed already provides a basic set of interceptors, 
ready to be used:
+                    <ul>
+                      <li>
+                          <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/ValidatePasswordOnLoadInterceptor.html">
+                          
<code>ValidatePasswordOnLoadInterceptor</code></a><br/>
+                          This interceptor can be used to validate (pre)set 
passwords in the persistent store and force
+                          a required change by the user if invalid. It uses 
the configured <code>CredentialPasswordValidator</code>
+                          of the <code>PasswordCredentialProvider</code>, the 
same as used when a password is changed.
+                      </li>
+                      <li>
+                          <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/EncodePasswordOnFirstLoadInterceptor.html">
+                          
<code>EncodePasswordOnFirstLoadInterceptor</code></a><br/>
+                          This interceptor can be used if passwords needs to 
be preset in the persistent store or
+                          migrated unencoded from a different store. With this 
interceptor, these cleartext password
+                          will automatically be encoded the first time they 
are loaded from the database, using the 
+                          <code>CredentialPasswordEncoder</code> from the 
<code>PasswordCredentialProvider</code>
+                      </li>
+                      <li>
+                          <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/PasswordExpirationInterceptor.html">
+                          <code>PasswordExpirationInterceptor</code></a><br/>
+                          This interceptor can be used to enforce a maximum 
lifespan for passwords.
+                          It manages the <code>expiration_date</code> and 
<code>is_expired</code> members of the
+                          <code>InternalCredential</code> and sets the expired 
flag when on authentication of a user
+                          its (valid) password is expired. The authentication 
will then fail.<br/>
+                          Note: A Jetspeed pipeline Valve, the 
<code>PasswordCredentialValveImpl</code> can be
+                          used to request or even enforce users to change 
their password in time to prevent a password
+                          expiration (described further below). 
+                      </li>
+                      <li>
+                          <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/MaxPasswordAuthenticationFailuresInterceptor.html">
+                          
<code>MaxPasswordAuthenticationFailuresInterceptor</code></a><br/>
+                          This interceptor can be used to prevent password 
hacking by enforcing a maximum number of
+                          invalid password attempts in a row. Once this number 
of authentication failures is reached,
+                          the credential will be disabled. On a successful 
authentication though, this count
+                          will automatically be reset to zero again by the 
<code>DefaultCredentialHandler</code>.
+                      </li>                          
+                      <li>
+                          <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/PasswordHistoryInterceptor.html">
+                          <code>PasswordHistoryInterceptor</code></a><br/>
+                          This interceptor can be used to enforce usage of 
unique new passwords in respect to a certain
+                          number of previous used passwords. When a new 
password is set, the current password is saved
+                          in a FIFO stack of used passwords. When a user 
itself changes its password, it must be different
+                          from all the onces thus saved, otherwise a 
+                          <a 
href="../apidocs/org/apache/jetspeed/security/PasswordAlreadyUsedException.html">
+                          <code>PasswordAlreadyUsedException</code></a> will be
+                          thrown. But setting a new password through the 
administrative interface still allows any
+                          password (when otherwise valid) to be set.
+                      </li>
+                    </ul>
+                    <p>
+                    The <code>DefaultCredentialHandler</code> only supports 
one interceptor to be configured.
+                    But, with the 
+                        <a 
href="../apidocs/org/apache/jetspeed/security/spi/impl/InternalPasswordCredentialInterceptorsProxy.html">
+                    
<code>InternalPasswordCredentialInterceptorsProxy</code></a>, a list of 
interceptors can
+                    be configured which then will be invoked sequentially.</p>
+                    <p>
+                    Jetspeed comes out of the box with several of these 
interceptors configured, and its very easy to
+                    change and extend.See the <a 
href="../deployguide/security-config.html#security-spi-atn_xml">security-spi-atn.xml</a>
+                    section in the <a 
href="../deployguide/security-config.html">Security Services Configuration</a> 
document for a description
+                    of the default configuration. Also provided there is an 
example how to setup the interceptors to 
+                    restore the "old" (and much more restrict) configuration 
provided with the 2.0-M3 release and
+                    earlier.</p>
+                </li>
+            </ul>
+          </subsection>
+          <subsection name="Credentials Management Implementation">
+            <p>
+                The class diagram below describes the components used for the
+                <code>DefaultCredentialHandler</code>
+                implementation.
+            </p>
+            <p align="center">
+                <img src="images/credential-handler-c.gif" border="0" />
+            </p>
+            <p>
+                The OJB mappings for the default credentials implementation 
are described in 
+                <code>security_repository.xml</code>:
+                <ul>
+                    <li><code>InternalCredential</code>: Maps to the 
SECURITY_CREDENTIAL table.</li>
+                </ul>
+                The following database schema is used to stored credentials 
and their associations to principals.
+            </p>
+            <p align="center">
+                <img src="images/principals-credentials-schema.gif" border="0" 
/>
+            </p>
+          </subsection>
+        </section>
+    </body>
+</document>

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dao.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dao.xml?rev=1691449&view=auto
==============================================================================
--- portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dao.xml 
(added)
+++ portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dao.xml 
Thu Jul 16 21:01:09 2015
@@ -0,0 +1,74 @@
+<?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>Jetspeed-2 RDBMS</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Data Access Overview">
+            <p>
+            Jetspeed-2 RDBMS component provide some of level of abstraction 
from the underlying persistence mechanism.    
+            </p>
+            <subsection name="Data Access Using Object Relational Mapping">
+            <p>
+            Jetspeed-2 uses object relational mapping as the underlying 
technology for persistence.  By default, 
+            <a href="http://db.apache.org/ojb/";>Apache OJB</a> is used as an 
ORM engine.  In order to minimize Jetspeed-2
+            OJB dependencies, the 
<code>InitablePersistenceBrokerDaoSupport</code> provides a layer of 
abstraction that minimizes
+            the dependencies on a specific ORM engine.  The class diagram 
below illustration the Jetspeed-2 implementation classes
+            that leverage 
<code>InitablePersistenceBrokerDaoSupport</code>:<br/>
+            <img src="images/persistence-broker-dao-c.gif" border="0"/>
+            </p>
+            <p>
+            The <code>InitablePersistenceBrokerDaoSupport</code> extends 
<code>org.springframework.orm.ojb.support.PersistenceBrokerDaoSupport</code>.
+            </p>
+            </subsection>
+            <subsection name="Spring ORM Support">
+            <p>
+            Spring's adds significant support when using the O/R mapping layer 
of your choice to create data access applications.  The 
+            <code>InitablePersistenceBrokerDaoSupport</code> extends spring 
layer of abstraction for persistence support, specifically the
+            OJB <a 
href="http://static.springframework.org/spring/docs/1.2.x/reference/orm.html#orm-ojb";><code>PersistenceBroker</code>
 API support</a>.
+            </p>
+            <p>
+            Using such a layer of abstraction has many advantages.  Some of 
the advantages outlined in Spring's documentation are:
+            <ul>
+            <li>Ease of testing. Spring's inversion of control approach makes 
it easy to swap the implementations and config locations of persistence manager 
instances,
+            JDBC DataSources, transaction managers, and mapper object 
implementations (if needed). This makes it much easier to isolate and test each 
piece of
+            persistence-related code in isolation.</li>
+            <li>Common data access exceptions. Spring can wrap exceptions from 
you O/R mapping tool of choice, converting them from proprietary (potentially 
checked) exceptions
+            to a common runtime DataAccessException hierarchy. This allows you 
to handle most persistence exceptions, which are non-recoverable, only in the 
appropriate layers,
+            without annoying boilerplate catches/throws, and exception 
declarations. You can still trap and handle exceptions anywhere you need to. 
Remember that JDBC exceptions
+            (including DB specific dialects) are also converted to the same 
hierarchy, meaning that you can perform some operations with JDBC within a 
consistent programming model.</li>
+            <li>General resource management. Spring application contexts can 
handle the location and configuration of persistence managers instances, JDBC 
DataSources, 
+            and other related resources. This makes these values easy to 
manage and change. Spring offers efficient, easy and safe handling of 
persistence resources.</li>
+                       <li>Integrated transaction management. Spring allows 
you to wrap your O/R mapping code with either a declarative, AOP style method 
interceptor,
+                       or an explicit 'template' wrapper class at the Java 
code level. In either case, transaction semantics are handled for you, and 
proper transaction handling (rollback, etc)
+                       in case of exceptions is taken care of. As discussed 
below, you also get the benefit of being able to use and swap various 
transaction managers, without your ORM specific code being affected:
+                       for example, between local transactions and JTA, with 
the same full services (such as declarative transactions) available in both 
scenarios. As an additional benefit,
+                       JDBC-related code can fully integrate transactionally 
with the code you use to do O/R mapping. This is useful for data access that's 
not suitable for O/R mapping,
+                       such as batch processing or streaming of BLOBs, which 
still needs to share common transactions with O/R mapping operations.</li>
+                       <li>To avoid vendor lock-in, and allow mix-and-match 
implementation strategies.</li>
+                       </ul>
+                       </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-capabilities.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-capabilities.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-capabilities.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-capabilities.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,226 @@
+<?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>Jetspeed-2 Capabilities</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Capabilities Overview">
+            <p>
+            Jetspeed-2 capabilities provides a mechanism for mapping the 
client used to access Jetspeed-2 to media types
+            for page rendering.
+            </p>
+            <subsection name="Capabilities Definitions">
+            <p>
+            The Jetspeed-2 capability engine maps clients to media types to 
mime types.  Here are some more detailed
+            definitions:
+            <ul>
+            <li>Clients: The application that initiates a request to the 
Jetspeed-2 portal engine.  Jetspeed-2 uses
+            the <code>User-Agent</code> to determine the client that initiates 
a request.</li>
+            <li>Media Type:  The type of media requesting the content (HTML, 
WML, etc.).  Content in Jetspeed-2
+            can be requested by different type of devices through different 
media.</li>
+            <li>Mime Type:  The type of content being requested.</li>
+            </ul>
+            </p>
+            <p>
+            Jetspeed-2 works with the following media types:
+            <table>
+               <tr>
+                       <th>Name</th>
+                       <th>Character Set</th>
+                       <th>Description</th>
+               </tr>
+               <tr>
+                       <td>html</td>
+                       <td>UTF-8</td>
+                       <td>Rich HTML for HTML 4.0 compliants browsers</td>
+               </tr>
+               <tr>
+                       <td>wml</td>
+                       <td>UTF-8</td>
+                       <td>Format for mobile phones and PDAs compatible with 
WML 1.1</td>
+               </tr>
+               <tr>
+                       <td>vxml</td>
+                       <td>UTF-8</td>
+                       <td>Format suitable for use with an audio VoiceXML 
server</td>
+               </tr>
+               <tr>
+                       <td>xml</td>
+                       <td></td>
+                       <td>XML 1.0</td>
+               </tr>
+               <tr>
+                       <td>xhtml-basic</td>
+                       <td>UTF-8</td>
+                       <td>XHTML Basic used in WAP devices</td>
+               </tr>
+               </table>
+            </p>
+            <p>
+            Jetspeed-2 is configured to recognize the following clients:
+            <table>
+               <tr>
+                       <th>Client</th>
+                       <th>User Agent Pattern</th>
+                       <th>Manufacturer</th>
+                       <th>Preferred Mime Type</th>
+               </tr>
+               <tr>
+                       <td>ie5</td>
+                       <td>.*MSIE 5.*</td>
+                       <td>Microsoft</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>ie6</td>
+                       <td>.*MSIE 6.*</td>
+                       <td>Microsoft</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>ns4</td>
+                       <td>.*Mozilla/4.*</td>
+                       <td>Netscape</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>mozilla</td>
+                       <td>.*Mozilla/5.*</td>
+                       <td>Mozilla</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>lynx</td>
+                       <td>Lynx.*</td>
+                       <td>GNU</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>opera7</td>
+                       <td>.*Opera/7.*</td>
+                       <td>Opera</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>ie5mac</td>
+                       <td>.*MSIE 5.*Mac.*</td>
+                       <td>Microsoft</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>safari</td>
+                       <td>.*Mac.*Safari.*</td>
+                       <td>Apple</td>
+                       <td>html</td>
+               </tr>
+               <tr>
+                       <td>xhtml-basic</td>
+                       
<td>DoCoMo/2.0.*|KDDI-.*UP\.Browser.*|J-PHONE/5.0.*|Vodafone/1.0/.*</td>
+                       <td>N/A</td>
+                       <td>xhtml</td>
+               </tr>
+               <tr>
+                       <td>agentxml</td>
+                       <td>agentxml/1.0.*</td>
+                       <td>N/A</td>
+                       <td>xml</td>
+               </tr>
+               <tr>
+                       <td>nokia_generic</td>
+                       <td>Nokia.*</td>
+                       <td>Nokia</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>up</td>
+                       <td>UP.*|.*UP\.Browser.*</td>
+                       <td>United Planet</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>sonyericsson</td>
+                       <td>Ercis.*|SonyE.*</td>
+                       <td>SonyEricsson</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>wapalizer</td>
+                       <td>Wapalizer.*</td>
+                       <td>Wapalizer</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>klondike</td>
+                       <td>Klondike.*</td>
+                       <td>Klondike</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>wml_generic</td>
+                       <td>.*WML.*|.*WAP.*|.*Wap.*|.*wml.*</td>
+                       <td>N/A</td>
+                       <td>wml</td>
+               </tr>
+               <tr>
+                       <td>vxml_generic</td>
+                       <td>.*VoiceXML.*</td>
+                       <td>N/A</td>
+                       <td>vxml</td>
+               </tr>
+               <tr>
+                       <td>nuance</td>
+                       <td>Nuance.*</td>
+                       <td>Nuance</td>
+                       <td>vxml</td>
+               </tr>
+            </table>
+            </p>
+            </subsection>
+            <subsection name="Capabilities and Content Rendering">
+            <p>
+            The <code>media-type</code> is used to locate the appropriate 
decorations template for the given <code>media-type</code>.
+            </p>
+            </subsection>
+            <subsection name="Capabilities Implementation">
+            <p>
+            The <code>Capabilities</code> component derive a 
<code>CapabilityMap</code> from the information provided 
+            by the <code>User-Agent</code> request header:
+            <source>
+cm = capabilities.getCapabilityMap(agent);
+            </source>
+            </p>
+            <p>
+            This operation occurs at the very beginning of Jetspeed-2 request 
pipeline processing.  Once the 
+            <code>CapabilityMap</code> is retrieved, it is added to the 
Jetspeed-2 <code>org.apache.jetspeed.request.RequestContext</code>
+            and made available to the portal engine for processing the request.
+            </p>
+            <p>
+            The two pictures below describes the <code>Capabilities</code> 
interfaces and the relational database model
+            backing the implementation.<br/><br/>
+            <img src="images/capabilities-c.gif" border="0"/><br/><br/>
+            <img src="images/capabilities-db.gif" border="0"/>
+            </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-cm.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-cm.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-cm.xml 
(added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-cm.xml 
Thu Jul 16 21:01:09 2015
@@ -0,0 +1,47 @@
+<?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>Jetspeed-2 Component Manager</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Component Manager Overview">
+            <p>
+            The <code>ComponentManager</code> provides a layer of abstraction 
on top of the component framework that
+            will be used by Jetspeed-2.  This provides a flexible architecture 
where the component framework used can
+            easily be "swapped".  By default Jetspeed-2 uses the <a 
href="http://www.springframework.com";>spring
+            framework</a>.
+            </p>
+            <subsection name="Component Manager with Spring">
+            <p>
+            The <code>ComponentManager</code> delegates the initialization of 
the component framework engine
+            to an implementation specific to the component framework as 
illustrated below.  The <code>SpringComponentManager</code>
+            is responsible for initializing the spring engine and calls to 
spring components within the Jetspeed-2 engines are wrapped
+            behind generic methods such as <code>getComponent()</code>.
+            </p>
+            <p>
+            <img src="images/spring-component-manager-c.gif" 
border="0"/><br/><br/>
+            </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-deploy.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-deploy.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-deploy.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-deploy.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,87 @@
+<?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>Jetspeed-2 Deploy Tools</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Jetspeed-2 Deployment Overview">
+               <subsection name="Deploying Portlets in Jetspeed-2: An End User 
View">
+               <p>
+               Deploying custom portlets in Jetspeed-2 is simple.  Portlets 
are very similar to servlets.
+               They require a deployment descriptor, <code>portlet.xml</code> 
which goes in <code>WEB-INF</code>
+            and need to be packaged in a war-like format. You can find quite a 
few example <code>portlet.xml</code> files within the Jetspeed-2 source tree.
+            For starters take a look at the one under 
<code>/portal/src/webapp/WEB-INF</code>.  In order to deploy a portlet, 
Jetspeed-2 requires the user
+            to follow those steps:
+            <ol>
+            <li>Build you portlet as a portlet application just as you would a 
web application.</li>
+            <li>Package your portlet application into a .war file.</li>
+            <li>Copy the .war file to Jetspeed's deployment directory, by 
default this is <code>WEB-INF/deploy</code>.
+            Jetspeed will take care of automatically deplying the portlet into 
the portlet registry and will also deploy the portlet
+            as a web application into the app server Jetspeed is deployed 
to.</li>
+            <li>The easiest way to view your portlet is to add an entry to the 
<code>default-page.psml</code> under <code>jetspeed/WEB-INF/pages</code>.
+            The id for the portlet fragment uses a unique combination of 
<code>${portlet.application.id}::${portlet.name}</code>
+            where <code>${portlet.application.id}</code> is the actual name of 
the war file (minus the ".war") that contains your portlet app and
+            <code>${portlet.name}</code> needs to be the value in the portlet 
name tags, <code>&lt;portlet-name&gt;MyPortlet&lt;/portlet-name&gt;</code>.
+            Changes to the psml will be picked up automatically and you should 
now be able to view your portlet!
+            </li>
+            </ol>
+                       </p>            
+               </subsection>
+               <subsection name="Portlet Deployment: How Does it Work?">
+               <p>
+               The component hierarchy below describes the assembly 
dependencies supporting Jetspeed-2 deployment functionality.
+               </p>
+               <p>
+            <img src="images/deployment-mgr-assembly.gif" 
border="0"/><br/><br/>
+            </p>
+               <p>
+               The <code>DeploymentManager</code> is configured with the 
properties specified in
+               <code>WEB-INF/conf/jetspeed.properties</code>:
+               <ul>
+               <li><code>autodeployment.staging.dir</code>: The directory 
scanned for autodeployment.</li>
+               <li><code>autodeployment.delay</code>: The frequency of the 
deploy directory scanning.</li>
+               </ul>
+               The <code>DeploymentManager</code> is also configured with 2 
types of <code>DeploymentEventListener</code>:
+               </p>
+               <p>
+            <img src="images/deployment-event-listener-c.gif" 
border="0"/><br/><br/>
+            </p>
+            <p>
+            <ul>
+            <li>The <code>DeployPortletAppEventListener</code> handles the hot 
deployment of portlet applications.</li>
+            <li>The <code>DeployDecoratorEventListener</code>: handles the hot 
deployment of decorators. See 
+            <a href="guide-decorators.html">guide to decorators</a> for more 
information.</li>
+            </ul>
+            </p>
+               <p>
+               Jetspeed-2 provides a <code>StandardDeploymentManager</code>.  
The <code>StandardDeploymentManager</code> leverages
+               a <code>FileSystemScanner</code> to scan for new assets to 
deploy.  It leverages Jetspeed-2 
+               <a href="../deployguide/deploy-tools.html">deploy tools</a> to 
prepare portlet applications prior to deployment.
+            </p>
+            <p>
+            <img src="images/deployment-mgr-c.gif" border="0"/><br/><br/>
+            </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-prefs.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-prefs.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-prefs.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-prefs.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,144 @@
+<?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>Jetspeed-2 Preferences</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Preferences Overview">
+            <p>
+                The
+                <a 
href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/prefs/Preferences.html";>java.util.prefs.Preferences
 API</a>
+                provides a generic mechanism for storing user and system 
preferences, as well as configuration data. Jetspeed 2 relies on this API to 
provide a
+                wide ranging of functionality to higher level services. Some 
of the Jetspeed components leveraging the
+                <code>java.util.prefs.Preferences</code>
+                API are:
+                <ul>
+                    <li>
+                        Portlet Preferences: Portlet preferences are stored in 
the system preferences tree. The following path structure is used to establish
+                        the location of a given portlet preference in the 
preferences tree:
+                        <code>/portlet_application/${Portlet Application 
Name}/portlets/${Portlet Name}/preferences/${Preference Name}/values</code>
+                        . The preferences values are stored under the
+                        <code>values</code>
+                        node as a map of key/values.
+                    </li>
+                    <li>
+                        User Attributes: User attributes are stored in the 
user preferences tree as follow. The following path structure is used to stored 
a
+                        user's attributes:
+                        <code>/user/${User Name}/userinfo</code>
+                        . The user attributes are stored as a preferences 
key/values map under the userinfo node.
+                    </li>
+                    <li>
+                        Roles and groups hierarchy: Documentation on how roles 
and groups hierarchy use the
+                        <code>Preferences</code>
+                        model can be found in the
+                        <a 
href="hierarchy.html#Leveraging_Preferences_to_Manage_Hierarchies">security 
section</a>
+                        of the documentation.
+                    </li>
+                </ul>
+            </p>
+            <subsection name="Preferences Goals">
+            <p>
+               The <i>Preferences</i> API provides a generic implementation 
for organizing properties as illustrated below:
+               <source>
+&lt;preferences EXTERNAL_XML_VERSION="1.0"&gt;
+&lt;root type="user"&gt;
+  &lt;map /&gt;
+  &lt;node name="user"&gt;
+    &lt;map /&gt;
+       &lt;node name="principal1"&gt;
+      &lt;map /&gt;
+    &lt;node name="propertyset1"&gt;
+      &lt;map&gt;
+        &lt;entry key="set1prop1" value="256" /&gt;
+        &lt;entry key="set1prop2" value="314" /&gt;
+      &lt;/map&gt;
+    &lt;/node&gt;
+  &lt;/node&gt;
+&lt;/root&gt;</source>
+            </p>
+            <p>
+                       A good reference article can be found at <a 
href="http://www.onjava.com/pub/a/onjava/synd/2001/10/17/j2se.html";>
+                       ONJava.com</a>.
+            </p>
+            </subsection>
+            <subsection name="Preferences Implementation Overview">
+            <p>
+                Jetspeed 2
+                <code>Preferences</code>
+                implementation leverages the following classes:
+            </p>
+            <p>
+                <img src="images/preferences-c.gif" border="0" />
+            </p>
+            <table>
+                <tr>
+                    <th>Class</th>
+                    <th>Description</th>
+                </tr>
+                <tr>
+                    <td>
+                        <code>PreferencesFactoryImpl</code>
+                    </td>
+                    <td>
+                        Implements the 
<code>java.util.prefs.PreferencesFactory</code> that generates 
+                        <code>Preferences</code> objects.  The 
<code>PreferencesFactoryImpl</code> is 
+                        configured through spring assembly 
(<code>prefs.xml</code>) to use a 
+                        <code>PreferencesProvider</code> that encapsalutes the 
backing store implementation.
+
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <code>PreferencesImpl</code>
+                    </td>
+                    <td>
+                        Extends the 
<code>java.util.prefs.AbstractPreferences</code> and implements the SPI by
+                        leveraging the <code>PreferencesProvider</code> API.  
Jetspeed <code>Preferences</code>
+                        implementation can be configured to validate that 
preferences map key/values are created
+                        for predefined keys.  A <code>PropertyManager</code> 
enforces the checks if enabled.
+                    </td>
+                </tr>
+                <tr>
+                    <td>
+                        <code>PreferencesProvider</code>
+                    </td>
+                    <td>
+                        Encapsulates the preferences implementation again a 
specific backing store.  In Jetspeed 2, the
+                        default implementation is provided by 
+                        
<code>org.apache.jetspeed.prefs.impl.PersistenceBrokerPreferencesProvider</code>
+                    </td>
+                </tr>
+            </table>
+            </subsection>
+            <subsection name="Preferences Database Schema">
+                <p>
+                    The following database schema is being used in Jetspeed 2 
to store <code>Preferences</code> 
+                    in a relational database model.
+                </p>
+                <p>
+                    <img src="images/preferences-schema.gif" border="0"/>
+                </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-rdbms.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-rdbms.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-rdbms.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-rdbms.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,101 @@
+<?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>Jetspeed-2 RDBMS</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="RDBMS Overview">
+            <p>
+            Jetspeed-2 RDBMS component provide a layer of abstraction from the 
persistence mechanism used by Jetspeed-2.
+            It provides facilities for datasource configuration as well as 
data access. 
+            </p>
+            <subsection name="Datasource Configuration">
+            <p>
+            Jetspeed-2 uses <a href="http://db.apache.org/ojb/";>OJB</a> 
<code>PersistenceBroker</code> API as its default
+            persistence mechanism.  The <code>ConnectionRepositoryEntry</code> 
component configures OJB for Jetspeed-2 as well
+            as the properties available under <code>/etc/db-ojb</code> in the 
Jetspeed-2 source repository or <code>WEB-INF/classes</code>
+            in a deployed instance of Jetspeed-2.
+            </p>
+            <p>
+            The <code>datasource.xml</code> spring assembly configuration file 
configures <code>ConnectionRepositoryEntry</code> and is located
+            in <code>WEB-INF/assembly/boot</code>.
+            </p>
+            <p>
+            The <code>ConnectionRepositoryEntry</code> configures an entry in 
OJB's ConnectionRepository according to its properties.
+            The properties <code>driverClassName</code>, <code>url</code>, 
<code>username</code> and <code>password</code> are used
+                       only if no <code>jndiName</code> is set, i.e. if the 
connection factory uses the driver to create data sources.  The platform
+                       settings are derived from the configured  data source 
or database driver using OJB's <code>JdbcMetadataUtils</code> class.  The 
default
+                       Jetspeed-2 <code>ConnectionRepositoryEntry</code> 
configuration expose a datasource.
+            <source>
+    &lt;bean id="JetspeedDS" 
class="org.apache.jetspeed.components.rdbms.ojb.ConnectionRepositoryEntry"&gt;
+      &lt;property name="jndiName"&gt;
+        &lt;value&gt;java:comp/env/jdbc/jetspeed&lt;/value&gt;
+      &lt;/property&gt;
+    &lt;/bean&gt;</source>
+            </p>
+            <p>
+            In order for OJB to be configured properly with Jetspeed-2, the 
<code>OJB.properties</code> file (located under
+            <code>/etc/db-ojb/OJB.properties</code> in the source tree and 
<code>WEB-INF/classes</code> in the deployed application)
+            must set:
+            <source>
+    
ConnectionManagerClass=org.apache.jetspeed.components.rdbms.ojb.ConnectionManagerImpl</source>
+            instead of:
+            <source>
+    
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryManagedImpl</source>
+            </p>
+            <p>
+            A class diagram of <code>ConnectionRepositoryEntry</code> and 
<code>ConnectionManagerImpl</code> is
+            provided below:<br/>
+            <img src="images/connection-repository-c.gif" border="0"/>
+            </p>
+            </subsection>
+            <subsection name="OJB Datasource Configuration">
+            <p>
+            The bean name provided in <code>datasource.xml</code> must match 
the <code>jdbc-connection-descriptor</code>
+            <code>jcd-alias</code> property (by default 
<code>JetspeedDS</code>) located in OJB <code>repository_database.xml</code>
+            as illustrated below.
+            <source>
+    &lt;jdbc-connection-descriptor
+        jcd-alias="JetspeedDS"
+        default-connection="true"
+        batch-mode="false"&gt;</source>
+            </p>
+            </subsection>
+            <subsection name="Jetspeed-2 Datasource Configuration in Tomcat">
+            <p>
+            Jetspeed-2 configure the following datasource in Tomcat.  In the 
source tree, the Tomcat datasource configuration
+            is located under <code>/etc/conf/tomcat</code>.  When deployed 
Jetspeed-2 in a Tomcat instance, the Jetspeed-2
+            datasource configuration are deployed under 
<code>${tomcat_home}/conf/Catalina/localhost/jetspeed.xml</code>. If a different
+            portal name is being used for Jetspeed-2, the configuration file 
will be named accordingly.
+            <source>
+    &lt;Resource name="jdbc/jetspeed" auth="Container"
+                 factory="org.apache.commons.dbcp.BasicDataSourceFactory"
+                 type="javax.sql.DataSource" username="" password=""
+                 driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
+                 url="jdbc:derby:/tmp/productiondb;create=true"
+                 maxActive="100" maxIdle="30" maxWait="10000"/&gt;</source>
+            </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-search.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-search.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-search.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-search.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,84 @@
+<?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>Jetspeed-2 Search</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Search Overview">
+            <p>
+            Jetspeed-2 provides an integration with the popular <a 
href="http://lucene.apache.org/";>Apache Lucene</a>, 
+            a high-performance, full-featured text search engine library 
written entirely in Java; a technology suitable
+            for nearly any application that requires full-text search, 
especially cross-platform.. 
+            </p>
+            <subsection name="SearchEngine Overview">
+            <p>
+            Jetspeed-2 provides a <code>SearchEngine</code> component 
configured as a spring component.  The <code>SearchEngine</code>
+            component is configured in 
<code>WEB-INF/assembly/search.xml</code>.  The default implementation based on 
the embedded Lucene
+            search engine must specify the location of the search index file, 
the name of the analyzer class (if null the default analyzer
+            <code>StandardAnalyzer</code> is used), whether to optimize after 
update and the <code>HandlerFactory</code>:
+            <source>
+    &lt;bean id="org.apache.jetspeed.search.SearchEngine"
+         class="org.apache.jetspeed.search.lucene.SearchEngineImpl"&gt;
+         &lt;constructor-arg 
index="0"&gt;&lt;value&gt;${applicationRoot}/WEB-INF/search_index&lt;/value&gt;&lt;/constructor-arg&gt;
+         &lt;constructor-arg index="1"&gt;&lt;null 
/&gt;&lt;/constructor-arg&gt;
+         &lt;constructor-arg 
type="boolean"&gt;&lt;valu&gt;true&lt;/value&gt;&lt;/constructor-arg&gt;
+         &lt;constructor-arg&gt;&lt;ref 
bean="org.apache.jetspeed.search.HandlerFactory"/&gt;&lt;/constructor-arg&gt;
+    &lt;/bean&gt;</source>
+               </p>
+               <p>
+               The <code>HandlerFactory</code> provides the 
<code>SearchEngine</code> with a list of <code>ObjectHandler</code>
+               that will handle the various document types supported by 
Jetspeed-2 for search.  By default, Jetspeed-2 supports
+               portlet instances and portlet definitions as searchable 
entities.  When portlets are registered to the portal,
+               <code>searchEngine.add(pa)</code> and 
<code>searchEngine.add(pa.getPortletDefinitions())</code> are invoked.  This
+               action updates the Jetspeed-2 search index.  For more 
information on how portlets are registered to the search engine,
+               see 
<code>org.apache.jetspeed.tools.pamanager.PortletApplicationManager</code>.
+            <br/>
+            <img src="images/searchengine-c.gif" border="0"/>
+            </p>
+            </subsection>
+            <subsection name="Document Handlers Overview">
+            <p>
+            Document Handlers are responsible for the parsing of a specific 
document type in order to index the relevant document fields.
+            </p>
+            <p>
+            Jetspeed-2 provides 2 document handlers implementations 
responsible for parsing parsing the documents supported by Jetspeed-2
+            as <code>org.apache.jetspeed.search.ParsedObject</code>.  The 
<code>ParsedObject</code> specify the list of fields
+            and documents supported by Jetspeed-2 that can then be added to 
<code>org.apache.lucene.document.Document</code> and
+            written to the index through 
<code>indexWriter.addDocument(doc)</code> operation of the 
+            <a 
href="http://lucene.apache.org/java/docs/api/index.html";><code>IndexWriter</code></a>.
+            </p>
+            <p>
+            By default, Jetspeed-2 can index portlet applications and portlet 
definitions respectively through the
+            <code>PortletApplicationHandler</code> and 
<code>PortletDefinitionHandler</code>.
+            <br/>
+            <img src="images/searchhandlers-c.gif" border="0"/>
+            </p>
+            </subsection>
+            <subsection name="An Extensible Framework">
+            <p>
+            As most components in Jetspeed-2, the search engine can easily be 
extended to support addional document types.
+            </p>
+            </subsection>
+        </section>
+    </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-security.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-security.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-security.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-security.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,90 @@
+<?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>Jetspeed 2 Security Architecture</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Overview">
+            <p>
+                Jetspeed 2 security architecture provides a comprehensive 
suite of security services that can be used to protect a wide ranging type of 
portal
+                resources. The security service implementation is fairly 
independent of the other portal services and 
+                can be reused outside of the portal application.  At its core, 
Jetspeed 2 security services rely entirely 
+                on JAAS to provide authentication and authorization services 
to the portal:
+            </p>
+            <ul>
+                <li>Authentication services are implemented through the use of 
JAAS login modules.</li>
+                <li>Authorization services are implemented through the use of 
custom JAAS policies.</li>
+            </ul>
+            <p>
+                Both authentication and authorization services have been 
implemented with the goal of providing a direct plugin to the underlying 
application
+                server security framework. Jetspeed 2 can leverage the 
underlying application server login module as well as through the use of JACC, 
the
+                application server policy management capabilities available in 
J2EE 1.4 (see
+                <a href="http://java.sun.com/j2ee/javaacc/";>API 
Specifications</a>
+                ).
+            </p>
+        </section>
+        <section name="Jetspeed 2 Security Services">
+            <p>
+                JAAS defines the contract for authentication and authorization 
but does not specify any guidelines for the management of the security 
resources.
+                Jetspeed 2 provide a modular set of components aims at 
providing management functionality for the portal security components.
+            </p>
+            <p>
+                Leveraging Jetspeed 2 component, architecture, the security 
services provide a set of loosely coupled components providing specialized 
services:
+            </p>
+            <ul>
+                <li>UserManager: Service providing user management 
capabilities.</li>
+                <li>GroupManager: Service providing group management 
capabilities.</li>
+                <li>RoleManager: Service providing role management 
capabilities.</li>
+                <li>PermissionManager: Service providing permission management 
capabilities.</li>
+            </ul>
+        </section>
+        <section name="A Modular and Pluggable Architecture">
+            <p>
+                Jetspeed 2 security components are assembled using
+                <a 
href="http://martinfowler.com/articles/injection.html";>Dependency Injection</a>
+                . By default, Jetspeed uses the
+                <a href="http://www.springframework.org";>Spring Framework</a>
+                as its default IoC container.
+            </p>
+            <p>
+                <img src="images/components.jpg" align="right" border="0" 
hspace="1" vspace="2" />
+                Jetspeed 2 security services are founded on a set of modular 
and extensible security modules exposed through an SPI model. The SPI model
+                provides the ability to modify the behavior of the Jetspeed 
coarsed security services (UserManager, RoleManager, GroupManager)
+                through the modification and configuration of specialized 
handlers. For
+                instance, Jetspeed security services can be configured to 
retrieve user security principals through the default Jetspeed store or through 
an
+                LDAP store or both.
+                <br />
+                A
+                <code>SecurityProvider</code>
+                exposes the configured SPI handlers to the security services. 
Jetspeed component assembly (based on Spring) architecture provides an easy way 
to
+                reconfigure the security services to satisfy the needs of a 
specific implementation.
+            </p>
+        </section>
+        <section name="Role Based Access Control">
+            <p>
+                Role based access control (RBAC) in Jetspeed 2 support 
multiple hierarchy resolution strategies as defined in
+                <a 
href="http://www.doc.ic.ac.uk/~ecl1/wiki/lib/exe/fetch.php?id=emil%3Aresearchthemes%3Apubbytheme&amp;cache=cache&amp;media=research:papers:1999rbac.pdf";>The
 Uses of Hierarchy in Access Control</a>
+                . See <a href="hierarchy.html">Hierarchy Management 
Overview</a> for more information.
+            </p>
+        </section>
+    </body>
+</document>

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-statistics.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-statistics.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-statistics.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/dev-statistics.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,179 @@
+<?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>Jetspeed-2 Statistics</title>
+        <authors>
+            <person name="David Le Strat" email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Statistics Overview">
+               <p>
+               Jetspeed-2 provides components for collecting portal data for 
various application events.
+               </p>
+               <subsection name="Collecting Portal Data">
+               <p>
+               <code>PortalStatistics</code> provides APIs for collecting 
portal application events.  The following event types
+               are supported out of the box:
+               <ul>
+               <li>Portlet rendering statistics.</li>
+               <li>Page rendering statistics.</li>
+               <li>User access statistics.</li>
+               </ul>
+               The <code>PortalStatistics</code> implementation logs usage 
data based on the 
+               <a href="http://httpd.apache.org/docs/logs.html";>Apache Common 
Log Format (CLF)</a>
+               where each log entry is formatted in the form:
+               <source>
+    %h %l %u %t \"%r\" %>s %b</source>
+               where:
+                       <ul>
+                       <li><b>%h </b>- remote host</li>
+                       <li><b>%l </b>- remote log name</li>
+                       <li><b>%u </b>- remote user</li>
+                       <li><b>%t </b>- time in common log time format</li>
+                       <li><b>%r </b>- first line of HTTP request</li>
+                       <li><b>%s </b>- HTTP status code</li>
+                       <li><b>%b </b>- number of bytes sent (&quot;-&quot; if 
no bytes sent).</li>
+                       </ul>
+               <br/>
+               <img src="images/portalstatistics-c.gif" border="0" />
+               </p>
+               <p>
+               Statistics data is stored in 3 relational tables as illustrated 
below:
+               <br/><br/>
+               <img src="images/statistics-db.gif" border="0" />
+               </p>
+               <p>
+               Each event type is mapped to a data holder that gets persisted 
in the statistics tables illustrated above.
+               <img src="images/logrecord-c.gif" border="0" />
+               <br/>
+               Jetspeed-2 persists the collected data in batches through the 
<code>BatchedStatistics</code> component.
+               <br/><br/>
+               <img src="images/batchedstatistics-c.gif" border="0" />
+               </p>
+               </subsection>
+               <subsection name="PortalStatistics Configuration">
+               <p>
+               The <code>PortalStatistics</code> component is configured in 
<code>WEB-INF/assembly/statistics.xml</code> and
+               requires the following configuration parameters:
+               <ul>
+               <li><b>logToCLF</b>: Whether to log to a Common Log Format 
file.</li>
+               <li><b>logToDatabase</b>: Whether to record the statistics in 
the database.</li>
+               <li><b>maxRecordToFlush_Portlet</b>: The maximum number of 
portlet events that can be in the portlet statistics FIFO before a flush 
occurs.</li>
+               <li><b>maxRecordToFlush_User</b>: The maximum number of user 
events that can be in the user statistics FIFO before a flush occurs.</li>
+               <li><b>maxRecordToFlush_Page</b>: The maximum number of page 
events that can be in the page statistics FIFO before a flush occurs.</li>
+               <li><b>maxTimeMsToFlush_Portlet</b>: The maximum length of time 
between FIFO flushes for the portlet statistics FIFO. </li>
+               <li><b>maxTimeMsToFlush_User</b>: The maximum length of time 
between FIFO flushes for the user statistics FIFO. </li>
+               <li><b>maxTimeMsToFlush_Page</b>: The maximum length of time 
between FIFO flushes for the page statistics FIFO. </li>
+               <li><b>jetspeedDSEntry</b>: The reference to the Jetspeed data 
source.</li>
+               </ul>
+               </p>
+               <p>
+                The FIFO parameters may be adjusted depending on site specific 
needs.  For example, tuning the events and times down makes the system less 
likely to loose events in the
+                case of a failure, and also makes the user experience viewing 
the statistics more responsive to recent events. On the other hand, tuning them 
higher will reduce the overhead
+                to the database.  Generally newer sites with fewer users 
should use smaller tuning parameters and larger more mature sites should use 
larger ones.
+                </p>
+                <p>
+               A sample configuration is provided below:
+               <source>
+    &lt;bean id="PortalStatistics" 
+      class="org.apache.jetspeed.statistics.impl.PortalStatisticsImpl"
+      init-method="springInit"
+      destroy-method="springDestroy"&gt;
+      &lt;!-- logToCLF --&gt;
+      &lt;constructor-arg index='0' 
type="boolean"&gt;&lt;value&gt;false&lt;/value&gt;&lt;/constructor-arg&gt;
+      &lt;!-- logToDatabase --&gt;
+      &lt;constructor-arg index='1' 
type="boolean"&gt;&lt;value&gt;true&lt;/value&gt;&lt;/constructor-arg&gt;  
+      &lt;!-- maxRecordToFlush_Portal --&gt;
+      &lt;constructor-arg 
index='2'&gt;&lt;value&gt;300&lt;/value&gt;&lt;/constructor-arg&gt;
+      &lt;!-- maxRecordToFlush_User --&gt;
+      &lt;constructor-arg 
index='3'&gt;&lt;value&gt;50&lt;/value&gt;&lt;/constructor-arg&gt;   
+      &lt;!-- maxRecordToFlush_Page --&gt;
+      &lt;constructor-arg 
index='4'&gt;&lt;value&gt;100&lt;/value&gt;&lt;/constructor-arg&gt;  
+      &lt;!-- maxTimeMsToFlush_Portal --&gt;
+      &lt;constructor-arg  
index='5'&gt;&lt;value&gt;300000&lt;/value&gt;&lt;/constructor-arg&gt;          
    
+      &lt;!-- maxTimeMsToFlush_User --&gt;
+      &lt;constructor-arg  
index='6'&gt;&lt;value&gt;5000&lt;/value&gt;&lt;/constructor-arg&gt;
+      &lt;!-- maxTimeMsToFlush_Page --&gt;
+      &lt;constructor-arg  
index='7&gt;&lt;value&gt;60000&lt;/value&gt;&lt;/constructor-arg&gt;
+      &lt;!-- jetspeedDSEntry --&gt;
+      &lt;constructor-arg  index='8'&gt;&lt;ref 
bean="JetspeedDS"/&gt;&lt;/constructor-arg&gt;
+    &lt;/bean&gt;</source>
+               </p>
+               </subsection>           
+               </section>
+  <section name="Viewing Statistics">
+               <subsection name="Where are the Event Recorded?">
+               <p>
+               Portal statistics events collection is injected at multiple 
points in the portal engine. Some examples are
+               provided below.
+               </p>
+               <p>
+               For user events, the <code>SecurityValveImpl</code> logs a user 
login event in <code>getSubject(RequestContext request)</code>.
+               <source>
+    statistics.logUserLogin(request, 0);</source>
+               </p>
+               <p>
+               For portlet events, the <code>RenderingJobImpl</code> invoked 
in <code>RenderingJob</code> <code>buildRenderingJob</code> logs
+               a portlet access event.
+               <source>
+    statistics.logPortletAccess(requestContext, fragment.getName(), 
PortalStatistics.HTTP_OK, end - start);</source>           
+               </p>
+               </subsection>
+       
+               </section>
+ <section name="Data Aggregation Overview">
+            <p>
+            Jetspeed-2 provides a mechanism for aggregating portal statistics 
for reporting purpose.
+            </p>
+            <subsection name="Retrieving Aggregate Statistics">
+            <p>
+            The <code>PortalStatistics</code> component exposes a 
<code>queryStatistics</code> method that given
+            a <code>StatisticsQueryCriteria</code> will return 
<code>AggregateStatistics</code>.
+               <source>
+    AggregateStatistics queryStatistics(StatisticsQueryCriteria 
criteria)</source>
+               The <code>AggregateStatistics</code> can then be used for 
reporting purpose.
+            <br/>
+               <img src="images/aggregatestatistics-c.gif" border="0" />
+                       </p>
+                       </subsection>
+                       <subsection name="Using Aggregate Statistics">
+                       <p>
+                       As illustrated in <a 
href="../adminguide/statistics.html">viewing statistics</a>, Jetspeed-2 
provides a default reporting portlet
+                       for view statistics.  To query statistics, a 
<code>StatisticsQueryCriteria</code> must be set.  According to this
+                       criteria the <code>PortalStatistics</code> 
<code>queryStatistics()</code> method will return an 
<code>AggregateStatistics</code>.
+                       </p>
+                       <source>
+        StatisticsQueryCriteria criteria = 
statistics.createStatisticsQueryCriteria();
+        ...
+        criteria.setUser(user);
+        criteria.setListsize("5");
+        criteria.setSorttype("count");
+        criteria.setSortorder("desc");
+        criteria.setTimePeriod(timeperiod);
+        criteria.setQueryType(queryType);
+        AggregateStatistics stats = 
statistics.getDefaultEmptyAggregateStatistics();
+        ...
+        statistics.forceFlush();
+        stats = statistics.queryStatistics(criteria);</source>
+                       </subsection>
+               </section>                              
+    </body>
+</document>
+


Reply via email to