gatein SVN: r8209 - epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-07 22:29:08 -0500 (Wed, 07 Dec 2011)
New Revision: 8209
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
Log:
Correct broken xi:include after ldap find-replace capitalization
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-12-08 02:32:11 UTC (rev 8208)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-12-08 03:29:08 UTC (rev 8209)
@@ -816,7 +816,7 @@
<area coords="14 40" id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-2" />
</areaset>
</areaspec>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_LDAP/default-LDAP.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
+<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_LDAP/default-ldap.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
<calloutlist>
<!--#1-->
<callout arearefs="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
13 years
gatein SVN: r8208 - in epp/docs/branches/5.2/Admin_Guide: en-US and 1 other directory.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-07 21:32:11 -0500 (Wed, 07 Dec 2011)
New Revision: 8208
Modified:
epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Admin_Guide/publican.cfg
Log:
Updated to brew under new name.
Modified: epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml 2011-12-08 01:29:19 UTC (rev 8207)
+++ epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml 2011-12-08 02:32:11 UTC (rev 8208)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>6</pubsnumber>
+ <pubsnumber>7</pubsnumber>
<abstract>
<para>
This document is a guide to administering an implementation of JBoss Enterprise Portal Platform. It is intended for System Administrators and assumes a high level of technical knowledge.
Modified: epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml 2011-12-08 01:29:19 UTC (rev 8207)
+++ epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml 2011-12-08 02:32:11 UTC (rev 8208)
@@ -8,7 +8,7 @@
<simpara>
<revhistory>
<revision>
- <revnumber>5.2.0-6</revnumber>
+ <revnumber>5.2.0-7</revnumber>
<date>Wed Dec 7 2011</date>
<author>
<firstname>Scott</firstname>
Modified: epp/docs/branches/5.2/Admin_Guide/publican.cfg
===================================================================
--- epp/docs/branches/5.2/Admin_Guide/publican.cfg 2011-12-08 01:29:19 UTC (rev 8207)
+++ epp/docs/branches/5.2/Admin_Guide/publican.cfg 2011-12-08 02:32:11 UTC (rev 8208)
@@ -10,4 +10,4 @@
cvs_branch: DOCS-RHEL-6
cvs_root: :ext:cvs.devel.redhat.com:/cvs/dist
-cvs_pkg: JBoss_Enterprise_Portal_Platform-Admin_Guide-5.2-web-__LANG__
\ No newline at end of file
+cvs_pkg: JBoss_Enterprise_Portal_Platform-Administration_Guide-5.2-web-__LANG__
\ No newline at end of file
13 years
gatein SVN: r8207 - in epp/docs/branches/5.2/Reference_Guide/en-US: extras/Authentication_Identity_BackendConfiguration and 15 other directories.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-07 20:29:19 -0500 (Wed, 07 Dec 2011)
New Revision: 8207
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/Authentication_Identity_BackendConfiguration/default96.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default163.java
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default164.java
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default170.java
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/handle.java
epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/PortalLifecycle.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/db-configuration-hibernate.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/organization-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/spring-security-integration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/faq/jcr-faq.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jca.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/acl-ext.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/ftp.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/ws/framework-for-cross-domain-ajax.xml
Log:
Import GateIn WSRP content. Spellcheck corrections.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>14</pubsnumber>
+ <pubsnumber>15</pubsnumber>
<abstract>
<para>
This Reference Guide is a high-level usage document. It deals with more advanced topics than the Installation and User Guides, adding new content or taking concepts discussed in the earlier documents further. It aims to provide supporting documentation for advanced users of the JBoss Enterprise Portal Platform product. Its primary focus is on advanced use of the product and it assumes an intermediate or advanced knowledge of the technology and terms.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -8,6 +8,20 @@
<simpara>
<revhistory>
<revision>
+ <revnumber>5.2.0-15</revnumber>
+ <date>Thu Dec 8 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>Import GateIn WSRP content.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ <revision>
<revnumber>5.2.0-14</revnumber>
<date>Wed Dec 7 2011</date>
<author>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/Authentication_Identity_BackendConfiguration/default96.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/Authentication_Identity_BackendConfiguration/default96.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/Authentication_Identity_BackendConfiguration/default96.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -42,16 +42,16 @@
<value>war:/conf/organization/picketlink-idm/picketlink-idm-config.xml</value>
<!--Sample LDAP config-->
- <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml</value>-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-LDAP-config.xml</value>-->
<!--Read Only "ACME" LDAP Example-->
- <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-acme-config.xml</value>-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-LDAP-acme-config.xml</value>-->
<!--OpenLDAP LDAP config-->
- <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml</value>-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openLDAP-config.xml</value>-->
<!--OpenLDAP ReadOnly "ACME" LDAP Example-->
- <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml</value>-->
+ <!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openLDAP-acme-config.xml</value>-->
<!--MSAD LDAP Example-->
<!--<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-msad-config.xml</value>-->
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default163.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default163.java 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default163.java 2011-12-08 01:29:19 UTC (rev 8207)
@@ -1,7 +1,7 @@
/**
* This method first calls the super.onInit() of the WebuiApplication. That super method parse the XML
* file and stores its content in the ConfigurationManager object. It also set up he StateManager and
- * init the application lifecycle phases.
+ * init the application life-cycle phases.
*
* Then we get all the properties file that will be used to create ResourceBundles
*/
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default164.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default164.java 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default164.java 2011-12-08 01:29:19 UTC (rev 8207)
@@ -9,18 +9,18 @@
<ui-component-root>org.exoplatform.portal.webui.workspace.UIPortalApplication</ui-component-root>
<state-manager>org.exoplatform.portal.application.PortalStateManager</state-manager>
- <application-lifecycle-listeners>
+ <application-life-cycle-listeners>
<listener>org.exoplatform.portal.application.PortalStatisticLifecycle</listener>
<listener>org.exoplatform.portal.application.PortalApplicationLifecycle</listener>
<listener>org.exoplatform.webui.application.MonitorApplicationLifecycle</listener>
- </application-lifecycle-listeners>
+ </application-life-cycle-listeners>
<events>
<event>
- <event-name>portal.application.lifecycle.event</event-name>
+ <event-name>portal.application.life-cycle.event</event-name>
<listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
</event>
<event>
- <event-name>portal.execution.lifecycle.event</event-name>
+ <event-name>portal.execution.life-cycle.event</event-name>
<listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
</event>
</events>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default170.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default170.java 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/default170.java 2011-12-08 01:29:19 UTC (rev 8207)
@@ -1,12 +1,12 @@
@ComponentConfigs({
@ComponentConfig (
- lifecycle = UIPortalApplicationLifecycle.class,
+ life-cycle = UIPortalApplicationLifecycle.class,
template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
initParams = @ParamConfig(name = "public.showControlWorkspace", value = "true" )
),
@ComponentConfig (
id = "office" ,
- lifecycle = UIPortalApplicationLifecycle.class,
+ life-cycle = UIPortalApplicationLifecycle.class,
template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
initParams = @ParamConfig( name = "public.showControlWorkspace", value = "false" )
)
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/handle.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/handle.java 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_PortalLifecycle/handle.java 2011-12-08 01:29:19 UTC (rev 8207)
@@ -41,9 +41,9 @@
PortalApplication app = controller.getApplication(PortalApplication.PORTAL_APPLICATION_ID) ;
WebuiRequestContext context = new PortalRequestContext(app, req, res) ; ;
WebuiRequestContext.setCurrentInstance(context) ;
- List<ApplicationLifecycle> lifecycles = app.getApplicationLifecycle();
+ List<ApplicationLifecycle> life-cycles = app.getApplicationLifecycle();
try {
- for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onStartRequest(app, context) ;
+ for(ApplicationLifecycle life-cycle : life-cycles) life-cycle.onStartRequest(app, context) ;
UIApplication uiApp = app.getStateManager().restoreUIRootComponent(context) ;
if(context.getUIApplication()!images/= uiApp) context.setUIApplication(uiApp) ;
@@ -60,7 +60,7 @@
log.error("Error while handling request",ex);
} finally {
try {
- for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onEndRequest(app, context) ;
+ for(ApplicationLifecycle life-cycle : life-cycles) life-cycle.onEndRequest(app, context) ;
} catch (Exception exception){
log.error("Error while ending request on all ApplicationLifecycle",exception);
}
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/Advanced/Foundations/Configuring_Services.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -613,14 +613,14 @@
</para>
<programlisting language="XML" role="XML"><component>
- <key>org.exoplatform.services.ldap.LDAPService</key>
- <type>org.exoplatform.services.ldap.impl.LDAPServiceImpl</type>
+ <key>org.exoplatform.services.LDAP.LDAPService</key>
+ <type>org.exoplatform.services.LDAP.impl.LDAPServiceImpl</type>
<init-params>
<object-param>
- <name>ldap.config</name>
- <description>Default ldap config</description>
- <object type="org.exoplatform.services.ldap.impl.LDAPConnectionConfig">
- <field name="providerURL"><string>ldaps://10.0.0.3:636</string></field>
+ <name>LDAP.config</name>
+ <description>Default LDAP config</description>
+ <object type="org.exoplatform.services.LDAP.impl.LDAPConnectionConfig">
+ <field name="providerURL"><string>LDAPs://10.0.0.3:636</string></field>
<field name="rootdn"><string>CN=Administrator,CN=Users,DC=exoplatform,DC=org</string></field>
<field name="password"><string>exo</string></field>
<field name="version"><string>3</string></field>
@@ -639,22 +639,22 @@
Here you see how the service accesses the object:
</para>
-<programlisting language="Java" role="Java">package org.exoplatform.services.ldap.impl;
+<programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
public class LDAPServiceImpl implements LDAPService {
...
public LDAPServiceImpl(InitParams params) {
- LDAPConnectionConfig config = (LDAPConnectionConfig) params.getObjectParam("ldap.config")
+ LDAPConnectionConfig config = (LDAPConnectionConfig) params.getObjectParam("LDAP.config")
.getObject();
...</programlisting>
<para>
The passed object is LDAPConnectionConfig which is a classic <emphasis role="bold">java bean</emphasis>. It contains all fields and also the appropriate getters and setters (not listed here). You also can provide default values. The container creates a new instance of your bean and calls all setters whose values are configured in the configuration file.
</para>
-<programlisting language="Java" role="Java">package org.exoplatform.services.ldap.impl;
+<programlisting language="Java" role="Java">package org.exoplatform.services.LDAP.impl;
public class LDAPConnectionConfig {
- private String providerURL = "ldap://127.0.0.1:389";
+ private String providerURL = "LDAP://127.0.0.1:389";
private String rootdn;
private String password;
private String version;
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/LDAP.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -319,7 +319,7 @@
Uncomment the line under "<emphasis>Read Only "ACME" LDAP Example</emphasis>":
</para>
<programlisting language="XML" role="XML"><![CDATA[<!--Read Only "ACME" LDAP Example-->
-<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-acme-config.xml</value>
+<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-LDAP-acme-config.xml</value>
]]></programlisting>
</step>
@@ -391,7 +391,7 @@
Uncomment the line under "<emphasis>OpenLDAP ReadOnly "ACME" LDAP Example</emphasis>":
</para>
<programlisting language="XML" role="XML"><![CDATA[<!--OpenLDAP ReadOnly "ACME" LDAP Example-->
-<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-acme-config.xml</value>
+<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openLDAP-acme-config.xml</value>
]]></programlisting>
</step>
<step>
@@ -523,7 +523,7 @@
Expose the entry under "<emphasis>Sample LDAP config</emphasis>":
</para>
<programlisting language="XML" role="XML"><![CDATA[<!--Sample LDAP config-->
-<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-ldap-config.xml</value>
+<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-LDAP-config.xml</value>
]]></programlisting>
</step>
<step>
@@ -579,7 +579,7 @@
Expose the entry under "<emphasis>OpenLDAP LDAP config</emphasis>":
</para>
<programlisting language="XML" role="XML"><![CDATA[<!--OpenLDAP LDAP config-->
-<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openldap-config.xml</value>
+<value>war:/conf/organization/picketlink-idm/examples/picketlink-idm-openLDAP-config.xml</value>
]]></programlisting>
</step>
<step>
@@ -648,9 +648,9 @@
One of the three example configuration files discussed in <xref linkend="proc-Reference_Guide-LDAP_Integration-LDAP_in_Read-only_mode-Set_up_LDAP_read-only_Mode"/>:
</para>
<simplelist>
- <member><filename>picketlink-idm-ldap-acme-config.xml</filename></member>
+ <member><filename>picketlink-idm-LDAP-acme-config.xml</filename></member>
<member><filename>picketlink-idm-msad-readonly-config.xml</filename></member>
- <member><filename>picketlink-idm-openldap-acme-config.xml</filename></member>
+ <member><filename>picketlink-idm-openLDAP-acme-config.xml</filename></member>
</simplelist>
</listitem>
<listitem>
@@ -698,10 +698,10 @@
<term>providerURL</term>
<listitem>
<para>
- The LDAP server connection URL. Formatted as "ldap://localhost:<replaceable><PORT></replaceable>". The default setting is: <emphasis>ldap://localhost:1389</emphasis>.
+ The LDAP server connection URL. Formatted as "LDAP://localhost:<replaceable><PORT></replaceable>". The default setting is: <emphasis>LDAP://localhost:1389</emphasis>.
</para>
<para>
- <emphasis role="bold">MSAD</emphasis>: Should use SSL connection (ldaps://xxx:636) for password update or creation to work.
+ <emphasis role="bold">MSAD</emphasis>: Should use SSL connection (LDAPs://xxx:636) for password update or creation to work.
</para>
</listitem>
</varlistentry>
@@ -762,7 +762,7 @@
The <parameter>groupTypeMappings</parameter> exposed in the <filename>idm-configuration.xml</filename> file correspond to <parameter>identity-object-type</parameter> values defined in the DS-specific configuration file (referenced in <emphasis>Sub-step 3a</emphasis> of the DS-specific procedure above).
</para>
<para>
- For RHDS, OpenDS and OpenLDAP the <filename>picketlink-idm-ldap-acme-config.xml</filename> and <filename>picketlink-idm-openldap-acme-config.xml</filename> files contain the following values:
+ For RHDS, OpenDS and OpenLDAP the <filename>picketlink-idm-LDAP-acme-config.xml</filename> and <filename>picketlink-idm-openLDAP-acme-config.xml</filename> files contain the following values:
</para>
<programlistingco>
<areaspec>
@@ -816,7 +816,7 @@
<area coords="14 40" id="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config-2" />
</areaset>
</areaspec>
-<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_LDAP/default-ldap.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
+<programlisting language="XML" role="XML"><xi:include href="../../extras/Authentication_Identity_LDAP/default-LDAP.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
<calloutlist>
<!--#1-->
<callout arearefs="area-Reference_Guide-LDAP_Integration-Examples-Default_groupTypeMappings-config">
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -1016,7 +1016,7 @@
</step>
<step>
<para>
- Click on <guilabel>ldapService</guilabel> (at the bottom in the <guilabel>Authentication chaining</guilabel> section).
+ Click on <guilabel>LDAPService</guilabel> (at the bottom in the <guilabel>Authentication chaining</guilabel> section).
</para>
</step>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/LocalizationConfiguration.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -240,10 +240,10 @@
The <literal>LocalePolicy</literal> framework is enabled for portlets by configuring <literal>LocalizationLifecycle</literal> class in portal's webui configuration file: <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/webui-configuration.xml</filename>:
</para>
-<programlisting language="XML" role="XML"><application-lifecycle-listeners>
+<programlisting language="XML" role="XML"><application-life-cycle-listeners>
...
<listener>org.exoplatform.portal.application.localization.LocalizationLifecycle</listener>
-</application-lifecycle-listeners>
+</application-life-cycle-listeners>
</programlisting>
<para>
The default <literal>LocalePolicy</literal> implementation is installed as an eXo Kernel portal service via <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.portal.webui.portal-VERSION.jar/conf/portal/configuration.xml</filename>.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/NavigationController.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -374,7 +374,7 @@
</listitem>
<listitem>
<para>
- a <code>value-mapping</code> attribute with the possible values <code>canonical</code>, <code>never-empty</code>, <code>never-null</code> can be used to filter filter values after matching is done. For instance a parameter configured with <code>value-mapping="never-empty"</code> and matching the empty string value will not put the empty string in the map.
+ a <code>value-mapping</code> attribute with the possible values <code>canonical</code>, <code>never-empty</code>, <code>never-null</code> can be used to filter values after matching is done. For instance a parameter configured with <code>value-mapping="never-empty"</code> and matching the empty string value will not put the empty string in the map.
</para>
</listitem>
@@ -601,7 +601,7 @@
</listitem>
<listitem>
<para>
- ajax: the optional ajax option allowing an ajax invocation of the URL
+ ajax: the optional Ajax option allowing an Ajax invocation of the URL
</para>
</listitem>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/PortalLifecycle.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/PortalLifecycle.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortalDevelopment/PortalLifecycle.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -275,7 +275,7 @@
</para> --><!-- <programlisting language="Java" role="Java"><xi:include parse="text" href="../../extras/PortalDevelopment_PortalLifecycle/default163.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> --><!-- <programlisting>/**
* This method first calls the super.onInit() of the WebuiApplication. That super method parse the XML
* file and stores its content in the ConfigurationManager object. It also set up he StateManager and
-* init the application lifecycle phases.
+* init the application life-cycle phases.
*
* Then we get all the properties file that will be used to create ResourceBundles
*/
@@ -303,18 +303,18 @@
</init-params>
<ui-component-root>org.exoplatform.portal.webui.workspace.UIPortalApplication</ui-component-root>
<state-manager>org.exoplatform.portal.application.PortalStateManager</state-manager>
-<application-lifecycle-listeners>
+<application-life-cycle-listeners>
<listener>org.exoplatform.portal.application.PortalStatisticLifecycle</listener>
<listener>org.exoplatform.portal.application.PortalApplicationLifecycle</listener>
<listener>org.exoplatform.webui.application.MonitorApplicationLifecycle</listener>
-</application-lifecycle-listeners>
+</application-life-cycle-listeners>
<events>
<event>
-<event-name>portal.application.lifecycle.event</event-name>
+<event-name>portal.application.life-cycle.event</event-name>
<listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
</event>
<event>
-<event-name>portal.execution.lifecycle.event</event-name>
+<event-name>portal.execution.life-cycle.event</event-name>
<listener>org.exoplatform.webui.event.ConsoleEventMonitorListener</listener>
</event>
</events>
@@ -419,10 +419,10 @@
The goal of the <code><strong>StateManager</strong></code> is to abstract the way <code><strong>UIApplication</strong></code> are stored and restored for all the user session lifetime. The expire method is called from the listener we have introduced before in this chapter.
</para>
<para>
-1.1.1 The application-lifecycle-listeners
+1.1.1 The application-life-cycle-listeners
</para>
<para>
-There are 2 lifecycle listeners in the Portal, one for the real business logic (<code><strong>PortalApplicationLifecycle</strong></code>), the other one for some monitoring issues. They both implement the interface <code><strong>ApplicationLifecycle<E extends RequestContext></strong></code>.
+There are 2 life-cycle listeners in the Portal, one for the real business logic (<code><strong>PortalApplicationLifecycle</strong></code>), the other one for some monitoring issues. They both implement the interface <code><strong>ApplicationLifecycle<E extends RequestContext></strong></code>.
</para> --><!-- <programlisting language="Java" role="Java"><xi:include parse="text" href="../../extras/PortalDevelopment_PortalLifecycle/default165.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> --><!-- <programlisting>public interface ApplicationLifecycle<E extends RequestContext> {
public void onInit(Application app) throws Exception ;
public void onStartRequest(Application app, E context) throws Exception ;
@@ -430,7 +430,7 @@
public void onDestroy(Application app) throws Exception ;
}
</programlisting> --><!-- <para>
-Each registered lifecycle listener will then be able to get events when several states of the portal lifecycle are reached.
+Each registered life-cycle listener will then be able to get events when several states of the portal life-cycle are reached.
</para>
<para>
1.1 The Request Handler
@@ -587,9 +587,9 @@
PortalApplication app = controller.getApplication(PortalApplication.PORTAL_APPLICATION_ID) ;
WebuiRequestContext context = new PortalRequestContext(app, req, res) ; ;
WebuiRequestContext.setCurrentInstance(context) ;
-List<ApplicationLifecycle> lifecycles = app.getApplicationLifecycle();
+List<ApplicationLifecycle> life-cycles = app.getApplicationLifecycle();
try {
-for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onStartRequest(app, context) ;
+for(ApplicationLifecycle life-cycle : life-cycles) life-cycle.onStartRequest(app, context) ;
UIApplication uiApp = app.getStateManager().restoreUIRootComponent(context) ;
if(context.getUIApplication()!images/= uiApp) context.setUIApplication(uiApp) ;
if(uiApp!images/= null) app.processDecode(uiApp, context) ;
@@ -602,7 +602,7 @@
log.error("Error while handling request",ex);
} finally {
try {
-for(ApplicationLifecycle lifecycle : lifecycles) lifecycle.onEndRequest(app, context) ;
+for(ApplicationLifecycle life-cycle : life-cycles) life-cycle.onEndRequest(app, context) ;
} catch (Exception exception){
log.error("Error while ending request on all ApplicationLifecycle",exception);
}
@@ -782,13 +782,13 @@
The ConfigurationManager method getComponentConfig() returns the Component object filled, it is a wrapper that contains all the information on the parameters for the class. Annotations are used to configure the instance as shown here:
</para> --><!-- <programlisting language="Java" role="Java"><xi:include parse="text" href="../../extras/PortalDevelopment_PortalLifecycle/default170.java" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> --><!-- <programlisting>@ComponentConfigs({
@ComponentConfig (
-lifecycle = UIPortalApplicationLifecycle.class,
+life-cycle = UIPortalApplicationLifecycle.class,
template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
initParams = @ParamConfig(name = "public.showControlWorkspace", value = "true" )
),
@ComponentConfig (
id = "office" ,
-lifecycle = UIPortalApplicationLifecycle.class,
+life-cycle = UIPortalApplicationLifecycle.class,
template = "system:/groovy/portal/webui/workspace/UIPortalApplication.gtmpl",
initParams = @ParamConfig( name = "public.showControlWorkspace", value = "false" )
)
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -91,14 +91,14 @@
<programlisting language="XML" role="XML"><filter>
<filter-name>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-name>
<filter-class>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-class>
- <lifecycle>ACTION_PHASE</lifecycle>
- <lifecycle>RENDER_PHASE</lifecycle>
- <lifecycle>EVENT_PHASE</lifecycle>
- <lifecycle>RESOURCE_PHASE</lifecycle>
+ <life-cycle>ACTION_PHASE</life-cycle>
+ <life-cycle>RENDER_PHASE</life-cycle>
+ <life-cycle>EVENT_PHASE</life-cycle>
+ <life-cycle>RESOURCE_PHASE</life-cycle>
</filter>
</programlisting>
<para>
- <emphasis role="bold">Application Monitoring Filter</emphasis> supports four lifecycle phases in the order below:
+ <emphasis role="bold">Application Monitoring Filter</emphasis> supports four life-cycle phases in the order below:
</para>
<orderedlist>
<listitem>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="wsrp">
- <title>Web Services for Remote Portlets (WSRP)</title>
+ <title><remark>Web Services for Remote Portlets (WSRP)</remark></title>
<section>
<title>Introduction</title>
@@ -221,8 +221,8 @@
to end users, but also requires that the producer and consumer use the same credentials. This means
that the username and password must be the same and valid on both servers.
</para>
- <para>The recommended approach for this situation would be to use a common ldap configuration. Please
- see the user guide on how to configure ldap for use with JBoss Enterprise Portal Platform
+ <para>The recommended approach for this situation would be to use a common LDAP configuration. Please
+ see the user guide on how to configure LDAP for use with JBoss Enterprise Portal Platform
</para>
</important>
<para>The GateIn Wiki article, <ulink url="http://community.jboss.org/wiki/GateInWSRPAndWebServiceSecurity">
@@ -233,7 +233,7 @@
<title>WS-Security Configuration</title>
<para>JBoss Enterprise Portal Platform uses JBossWS Native to handle ws-security. Please see the WS-Security section of the
<ulink url="http://www.jboss.org/jbossas/docs/5-x">JBoss AS 5 Administration and Configuration Guide
- </ulink> for indepth configuration options. Please note that since the consumer passes its credentials
+ </ulink> for in-depth configuration options. Please note that since the consumer passes its credentials
to the producer, the consumer will act as the wss client and the producer will act as the wss server.
</para>
<para> The following are the JBossWS Native configuration files which need to be configure for WSRP:
@@ -685,7 +685,7 @@
establish a proper connection to the remote producer.
</para>
- <para>One such optional configuration concerns caching. To prevent useless roundtrips between the local
+ <para>One such optional configuration concerns caching. To prevent useless round-trips between the local
consumer and the remote producer, it is possible to cache some of the information sent by the producer
(such as the list of offered portlets) for a given duration. The rate at which the information is
refreshed is
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/db-configuration-hibernate.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/db-configuration-hibernate.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/db-configuration-hibernate.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -84,7 +84,7 @@
<section id="sect-Reference_Guide-Database_Configuration_for_Hibernate-Registering_custom_Hibernate_XML_files_into_the_service">
<title>Registering custom Hibernate XML files into the service</title>
<para>
- It is possible to use the eXo hibernate service and register your hibernate hbm.xml files to leverage some add-on features of the service such as the table automatic creation as well as the cache of the hibernate session in a ThreadLocal object during all the request lifecycle. To do so, you just have to add a plugin and indicate the location of your files.
+ It is possible to use the eXo hibernate service and register your hibernate hbm.xml files to leverage some add-on features of the service such as the table automatic creation as well as the cache of the hibernate session in a ThreadLocal object during all the request life-cycle. To do so, you just have to add a plugin and indicate the location of your files.
</para>
<programlisting language="XML" role="XML"><?xml version="1.0" encoding="ISO-8859-1"?>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/organization-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/organization-service.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/organization-service.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,193 +4,193 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Organization_Service">
- <title>Organization Service</title>
- <section id="sect-Reference_Guide-Organization_Service-Overview">
- <title>Overview</title>
- <para>
- OrganizationService is the service that allows to access the Organization model. This model is composed of :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Users
- </para>
+ <title>Organization Service</title>
+ <section id="sect-Reference_Guide-Organization_Service-Overview">
+ <title>Overview</title>
+ <para>
+ OrganizationService is the service that allows to access the Organization model. This model is composed of :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Users
+ </para>
- </listitem>
- <listitem>
- <para>
- Groups
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Groups
+ </para>
- </listitem>
- <listitem>
- <para>
- Memberships
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Memberships
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- It is the basis of eXo personalization and authorizations in eXo and is used to all over the platform. The model is abstract and does not rely on any specific storage. Multiple implementations exist in eXo :
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Hibernate : for storage into a RDBMS
- </para>
+ </itemizedlist>
+ <para>
+ It is the basis of eXo personalization and authorizations in eXo and is used to all over the platform. The model is abstract and does not rely on any specific storage. Multiple implementations exist in eXo :
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Hibernate : for storage into a RDBMS
+ </para>
- </listitem>
- <listitem>
- <para>
- Jndi : for storage into a directory such as an LDAP or MS Active Directory
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Jndi : for storage into a directory such as an LDAP or MS Active Directory
+ </para>
- </listitem>
- <listitem>
- <para>
- Jcr : for storage inside a Java Content Repository
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Jcr : for storage inside a Java Content Repository
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Organization_Service-Organizational_Model">
- <title>Organizational Model</title>
- <section id="sect-Reference_Guide-Organizational_Model-User">
- <title>User</title>
- <itemizedlist>
- <listitem>
- <para>
- Username used as the identified
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Organization_Service-Organizational_Model">
+ <title>Organizational Model</title>
+ <section id="sect-Reference_Guide-Organizational_Model-User">
+ <title>User</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Username used as the identified
+ </para>
- </listitem>
- <listitem>
- <para>
- Profile (identity and preferences)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Profile (identity and preferences)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Organizational_Model-Group">
- <title>Group</title>
- <para>
- Gather a set of users
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Applicative or business
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Organizational_Model-Group">
+ <title>Group</title>
+ <para>
+ Gather a set of users
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Applicative or business
+ </para>
- </listitem>
- <listitem>
- <para>
- Tree structure
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Tree structure
+ </para>
- </listitem>
- <listitem>
- <para>
- No inheritance
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ No inheritance
+ </para>
- </listitem>
- <listitem>
- <para>
- Expressed as /group/subgroup/subsubgroup
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Expressed as /group/subgroup/subsubgroup
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Organizational_Model-Membership">
- <title>Membership</title>
- <itemizedlist>
- <listitem>
- <para>
- Qualifies the group belonging
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Organizational_Model-Membership">
+ <title>Membership</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Qualifies the group belonging
+ </para>
- </listitem>
- <listitem>
- <para>
- "Member of group as XXX"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "Member of group as XXX"
+ </para>
- </listitem>
- <listitem>
- <para>
- Expressed as : manager:/organization/hr, *:/partners
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Expressed as : manager:/organization/hr, *:/partners
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Organization_Service-Related_articles_and_how_tos">
- <title>Related articles and how-tos</title>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Organization+Service">JCR Organization Service</ulink>
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Organization_Service-Related_articles_and_how_tos">
+ <title>Related articles and HOWTOs</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Organization+Service">JCR Organization Service</ulink>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/Core/Update+ConversationState+...'s+Membership+changed">Update ConversationState when user's Membership changed</ulink>
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/Core/Update+ConversationState+...'s+Membership+changed">Update ConversationState when user's Membership changed</ulink>
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="Organization Service Initializer">Organization Service Initializer</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="Organization Service Initializer">Organization Service Initializer</ulink>
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/Portal/Accessing+User+Profile">How to Access User Profile in your code</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://wiki.exoplatform.org/xwiki/bin/view/Portal/Accessing+User+Profile">How to Access User Profile in your code</ulink>
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="CoreOrganizationListener">How to create your own Organization Listener</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="CoreOrganizationListener">How to create your own Organization Listener</ulink>
+ </para>
- </listitem>
- <listitem>
- <para>
- <ulink url="How to manipulate Users and Memberships Programmatically">How to manipulate Users and Memberships Programmatically</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="How to manipulate Users and Memberships Programmatically">How to manipulate Users and Memberships Programmatically</ulink>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/spring-security-integration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/spring-security-integration.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core/spring-security-integration.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,73 +4,73 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Spring_Security_Integration">
- <title>Spring Security Integration</title>
- <section id="sect-Reference_Guide-Spring_Security_Integration-Introduction">
- <title>Introduction</title>
- <para>
- How to Integrate the spring security framework in the eXo portal?
- </para>
- <para>
- This tutorial will guide you through a few steps and show you how easy it is to integrate spring security (or the Spring framework in general) in eXo portal. We will create a login portlet example as a support all along the document reading. The login portlet example has been developed and deployed using the eXo WCM product running on the application server JBoss 4.2.3. But it can easily be adapted to another eXo product (such as ECM) and to other servers such as tomcat. Moreover, the example, claiming to be a real world example, is implemented using JSF 1.2, the JBoss portlet bridge and Spring and can serve as a example project from where you can start your own portlet development targeting the eXo platform.
- </para>
+ <title>Spring Security Integration</title>
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Introduction">
+ <title>Introduction</title>
+ <para>
+ How to Integrate the spring security framework in the eXo portal?
+ </para>
+ <para>
+ This tutorial will guide you through a few steps and show you how easy it is to integrate spring security (or the Spring framework in general) in eXo portal. We will create a login portlet example as a support all along the document reading. The login portlet example has been developed and deployed using the eXo WCM product running on the application server JBoss 4.2.3. But it can easily be adapted to another eXo product (such as ECM) and to other servers such as tomcat. Moreover, the example, claiming to be a real world example, is implemented using JSF 1.2, the JBoss portlet bridge and Spring and can serve as a example project from where you can start your own portlet development targeting the eXo platform.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Installation">
- <title>Installation</title>
- <para>
- This tutorial assumes that you have a working eXo WCM installation running under JBoss 4.2.x.
- </para>
- <para>
- Download the spring framework: <ulink url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...</ulink>
- </para>
- <para>
- Download spring-security: <ulink url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...</ulink>
- </para>
- <para>
- Unzip the 02portal.war file in the jboss server/default/deploy/exoplatform.sar directory and copy the following jars in WEB-INF/lib:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- spring.jar
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Installation">
+ <title>Installation</title>
+ <para>
+ This tutorial assumes that you have a working eXo WCM installation running under JBoss 4.2.x.
+ </para>
+ <para>
+ Download the spring framework: <ulink url="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...">http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-frame...</ulink>
+ </para>
+ <para>
+ Download spring-security: <ulink url="http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...">http://sourceforge.net/project/showfiles.php?group_id=73357&package_i...</ulink>
+ </para>
+ <para>
+ Unzip the 02portal.war file in the jboss server/default/deploy/exoplatform.sar directory and copy the following jars in WEB-INF/lib:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ spring.jar
+ </para>
- </listitem>
- <listitem>
- <para>
- spring-security-core.jar
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ spring-security-core.jar
+ </para>
- </listitem>
- <listitem>
- <para>
- aspectjrt-1.5.4.jar
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ aspectjrt-1.5.4.jar
+ </para>
- </listitem>
- <listitem>
- <para>
- exo-spring.jar (contains the filters and event handlers described in this tutorial - see the attachment section of this page)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ exo-spring.jar (contains the filters and event handlers described in this tutorial - see the attachment section of this page)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Configuration">
- <title>Configuration</title>
- <para>
- To enable spring security in exo we need to go through a few configuration steps:
- </para>
- <section id="sect-Reference_Guide-Configuration-JAAS_disabling">
- <title>JAAS disabling</title>
- <para>
- First, we need to disable the JAAS security which is the default authentication mechanism in exo. Edit 02portal.war web.xml file and comment out the JAAS configuration related lines:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Configuration">
+ <title>Configuration</title>
+ <para>
+ To enable spring security in exo we need to go through a few configuration steps:
+ </para>
+ <section id="sect-Reference_Guide-Configuration-JAAS_disabling">
+ <title>JAAS disabling</title>
+ <para>
+ First, we need to disable the JAAS security which is the default authentication mechanism in exo. Edit 02portal.war web.xml file and comment out the JAAS configuration related lines:
+ </para>
+
<programlisting language="XML" role="XML">...
<session-config>
<session-timeout>15</session-timeout>
@@ -108,14 +108,14 @@
</security-role>
...</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Configuration-Enabling_spring_security">
- <title>Enabling spring security</title>
- <para>
- To enable spring and set the spring security filter, add the following lines:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Configuration-Enabling_spring_security">
+ <title>Enabling spring security</title>
+ <para>
+ To enable spring and set the spring security filter, add the following lines:
+ </para>
+
<programlisting language="XML" role="XML">...
<context-param>
<param-name>contextConfigLocation</param-name>
@@ -131,10 +131,10 @@
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
...</programlisting>
- <para>
- Activate the spring security filter at the right position, i.e. just after the filter responsible of exo container initialization.
- </para>
-
+ <para>
+ Activate the spring security filter at the right position, i.e. just after the filter responsible of exo container initialization.
+ </para>
+
<programlisting language="XML" role="XML">...
<filter-mapping>
<filter-name>PortalContainerInitializedFilter</filter-name>
@@ -152,14 +152,14 @@
</filter-mapping>
...</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Configuration-security_context.xml">
- <title>security-context.xml</title>
- <para>
- We need to configure the spring security filter chain for our purposes. Create a file named security-context.xml in 02portal.war WEB-INF directory containing the following lines:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Configuration-security_context.xml">
+ <title>security-context.xml</title>
+ <para>
+ We need to configure the spring security filter chain for our purposes. Create a file named security-context.xml in 02portal.war WEB-INF directory containing the following lines:
+ </para>
+
<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
@@ -180,29 +180,29 @@
</authentication-provider>
</beans:beans></programlisting>
- <para>
- The file contains two elements. The http node which is responsible of configuring the filter chain. The auto-config mode set to true allows us to do just a minimal configuration, everything else being smartly initialized by default. We just set an intercept URL pointing to '/private/**' with the ROLE_USER authority which corresponds to secured resources in exo. In case of successful auhentication, the user will be redirected to the specified default target URL.
- </para>
- <para>
- The second element defines a simple authentication provider based on the spring security InMemoryDaoImpl implementation of the UserDetailsService. Note that we define the exo root user in the configuration which will allow us to log in with admin privileges in the exo portal.
- </para>
+ <para>
+ The file contains two elements. The http node which is responsible of configuring the filter chain. The auto-config mode set to true allows us to do just a minimal configuration, everything else being smartly initialized by default. We just set an intercept URL pointing to '/private/**' with the ROLE_USER authority which corresponds to secured resources in exo. In case of successful authentication, the user will be redirected to the specified default target URL.
+ </para>
+ <para>
+ The second element defines a simple authentication provider based on the spring security InMemoryDaoImpl implementation of the UserDetailsService. Note that we define the exo root user in the configuration which will allow us to log in with admin privileges in the exo portal.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Login_portlet_example">
- <title>Login portlet example</title>
- <para>
- Now that we have successfully installed and configured spring security in exo, we need a login portlet example to capture user credentials and serve as an entry point in the authentication process. The login portlet itself is based on JSF 1.2, Jboss portlet bridge and the spring framework, but you can obviously use whatever web framework you want to achieve the same.
- </para>
- <section id="sect-Reference_Guide-Login_portlet_example-Building_the_portlet">
- <title>Building the portlet</title>
- <para>
- So we need a login form to capture user credentials inputs. The portlet login form consists of the following lines of xml:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Login_portlet_example">
+ <title>Login portlet example</title>
+ <para>
+ Now that we have successfully installed and configured spring security in exo, we need a login portlet example to capture user credentials and serve as an entry point in the authentication process. The login portlet itself is based on JSF 1.2, Jboss portlet bridge and the spring framework, but you can obviously use whatever web framework you want to achieve the same.
+ </para>
+ <section id="sect-Reference_Guide-Login_portlet_example-Building_the_portlet">
+ <title>Building the portlet</title>
+ <para>
+ So we need a login form to capture user credentials inputs. The portlet login form consists of the following lines of xml:
+ </para>
+
<programlisting><f:view xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ice="http://www.icesoft.com/icefaces/component"
@@ -241,10 +241,10 @@
</div>
</h:form>
</f:view></programlisting>
- <para>
- The interesting part resides in the backing bean which implements the login action triggered when the user clicks the login form submit button.
- </para>
-
+ <para>
+ The interesting part resides in the backing bean which implements the login action triggered when the user clicks the login form submit button.
+ </para>
+
<programlisting language="Java" role="Java">package org.exoplatform.loginportlet;
import org.springframework.context.annotation.Scope;
@@ -266,53 +266,53 @@
...
}</programlisting>
- <para>
- The login action simply sends a HTTP redirect to the spring security login URL passing the user login and password as parameters. This URL informs the filter to try to authenticate the supplied user credentials. This is the Spring security authentication process entry point.
- </para>
+ <para>
+ The login action simply sends a HTTP redirect to the spring security login URL passing the user login and password as parameters. This URL informs the filter to try to authenticate the supplied user credentials. This is the Spring security authentication process entry point.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Login_portlet_example-Setting_up_the_login_portal_page">
- <title>Setting up the login portal page</title>
- <para>
- Now that we have a login portlet available we need to set it up into a portal page.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Log in as root in exo portal.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Login_portlet_example-Setting_up_the_login_portal_page">
+ <title>Setting up the login portal page</title>
+ <para>
+ Now that we have a login portlet available we need to set it up into a portal page.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Log in as root in exo portal.
+ </para>
- </listitem>
- <listitem>
- <para>
- Go to application registry and import the loginportlet
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Go to application registry and import the loginportlet
+ </para>
- </listitem>
- <listitem>
- <para>
- Add a new hidden page named 'Login' under the portal classic's navigation (read more on page creation <ulink url="here>WCM.Tutorial">here>WCM.Tutorial</ulink>). Make sure that the visible flag is unchecked to hide the page. Also declare the page as public so that everyone can access it without being authenticated for obvious reasons.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a new hidden page named 'Login' under the portal classic's navigation (read more on page creation <ulink url="here>WCM.Tutorial">here>WCM.Tutorial</ulink>). Make sure that the visible flag is unchecked to hide the page. Also declare the page as public so that everyone can access it without being authenticated for obvious reasons.
+ </para>
- </listitem>
- <listitem>
- <para>
- Finally, drag & drop the login portlet in the page with the desired layout.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Finally, drag & drop the login portlet in the page with the desired layout.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </section>
-
- <section id="sect-Reference_Guide-Login_portlet_example-Customization_of_portal_login_and_logout_urls">
- <title>Customization of portal login and logout urls</title>
- <para>
- In the portal header, there is a login or logout action displayed depending whether you are already logged in or not. We need to customize those actions so that when the user clicks on it she or he will be redirected either to our login page or to the spring security logout url. Edit the article, go to the default.js tab and apply the following changes to the code:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Login_portlet_example-Customization_of_portal_login_and_logout_urls">
+ <title>Customization of portal login and logout URLs</title>
+ <para>
+ In the portal header, there is a login or logout action displayed depending whether you are already logged in or not. We need to customize those actions so that when the user clicks on it she or he will be redirected either to our login page or to the spring security logout url. Edit the article, go to the default.js tab and apply the following changes to the code:
+ </para>
+
<programlisting language="Java" role="Java">function validateUser() {
var user = eXo.env.portal.userName;
@@ -345,63 +345,63 @@
}
eXo.core.Browser.addOnLoadCallback("validateUser", validateUser);</programlisting>
- <para>
- As you can see, the two onclick event handler function bodies have been changed to a simple redirect to the login page or the logout URL.
- </para>
+ <para>
+ As you can see, the two onclick event handler function bodies have been changed to a simple redirect to the login page or the logout URL.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Login_portlet_example-A_look_at_the_login_page">
- <title>A look at the login page</title>
- <para>
- Once you are done with all this, just click on the login action and you should be redirect to the login page looking something like that:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/login-page.jpg" width="444" />
- </imageobject>
+ </section>
+
+ <section id="sect-Reference_Guide-Login_portlet_example-A_look_at_the_login_page">
+ <title>A look at the login page</title>
+ <para>
+ Once you are done with all this, just click on the login action and you should be redirect to the login page looking something like that:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/login-page.jpg" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Integration_strategies">
- <title>Integration strategies</title>
- <para>
- Until now we haven't discussed about any integration strategies concerning a potential existing security realm outside of the eXo platform. To address this problem we have the choice between at least two different strategies:
- </para>
- <para>
- 1.1.1 <emphasis role="bold">Direct integration</emphasis> We can directly integrate eXo with the external realm. Everything related to organisation and user management in exo is cleanly separated in its own abstraction accessible through the OrganisationService. The authentication process itself is encapsulated in the Authenticator abstraction which sits on top of the organization service. eXo provides several implementations of both. So whether your realm is based on LDAP or JDBC and because the default implementations are generic enough, you will be able to use them and fits them to your needs with a matter of a little configuration. You can even develop a custom implementation to meet your more specific needs.
- </para>
- <section id="sect-Reference_Guide-Integration_strategies-Replication">
- <title>Replication</title>
- <para>
- Or we can go through a replication process between the external realm and the eXo platform realm. This is the strategy that we are going to use to build our login portlet example. Furthermore, the replication will occur dynamically on any user authentication attempt.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Integration_strategies">
+ <title>Integration strategies</title>
+ <para>
+ Until now we haven't discussed about any integration strategies concerning a potential existing security realm outside of the eXo platform. To address this problem we have the choice between at least two different strategies:
+ </para>
+ <para>
+ 1.1.1 <emphasis role="bold">Direct integration</emphasis> We can directly integrate eXo with the external realm. Everything related to organisation and user management in exo is cleanly separated in its own abstraction accessible through the OrganisationService. The authentication process itself is encapsulated in the Authenticator abstraction which sits on top of the organization service. eXo provides several implementations of both. So whether your realm is based on LDAP or JDBC and because the default implementations are generic enough, you will be able to use them and fits them to your needs with a matter of a little configuration. You can even develop a custom implementation to meet your more specific needs.
+ </para>
+ <section id="sect-Reference_Guide-Integration_strategies-Replication">
+ <title>Replication</title>
+ <para>
+ Or we can go through a replication process between the external realm and the eXo platform realm. This is the strategy that we are going to use to build our login portlet example. Furthermore, the replication will occur dynamically on any user authentication attempt.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Integration_with_eXo_portal">
- <title>Integration with eXo portal</title>
- <para>
- Being successfully authenticated against an external realm is not sufficient by itself. We also need to propagate the newly created security context to the portal own security mechanism. In eXo portal terminology, it means we have to create an Identity object for the user and register it into the Identity Registry.
- </para>
- <para>
- Spring framework provides a simple notification model where a bean can listen to application events published by other beans. Fortunately, spring security uses this mechanism and publishes an InteractiveAuthenticationSuccessEvent in case of successful authentication. That will allow us to hook up custom code to that event.
- </para>
- <para>
- Furthermore, we need to replicate the user details from the external realm to the eXo portal one according to the integration strategy defined above.
- </para>
- <para>
- We create a SpringSecurityEventHandler bean that implements the ApplicationListener interface and listens to the InteractiveAuthenticationSuccessEvent event.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Integration_with_eXo_portal">
+ <title>Integration with eXo portal</title>
+ <para>
+ Being successfully authenticated against an external realm is not sufficient by itself. We also need to propagate the newly created security context to the portal own security mechanism. In eXo portal terminology, it means we have to create an Identity object for the user and register it into the Identity Registry.
+ </para>
+ <para>
+ Spring framework provides a simple notification model where a bean can listen to application events published by other beans. Fortunately, spring security uses this mechanism and publishes an InteractiveAuthenticationSuccessEvent in case of successful authentication. That will allow us to hook up custom code to that event.
+ </para>
+ <para>
+ Furthermore, we need to replicate the user details from the external realm to the eXo portal one according to the integration strategy defined above.
+ </para>
+ <para>
+ We create a SpringSecurityEventHandler bean that implements the ApplicationListener interface and listens to the InteractiveAuthenticationSuccessEvent event.
+ </para>
+
<programlisting language="Java" role="Java">package org.exoplatform.spring.security.web;
...
@@ -460,30 +460,30 @@
...
}</programlisting>
- <para>
- Basically the bean retrieves user login and password from the InteractiveAuthenticationSuccessEvent object and tries to get the user from the organization service. In case he cannot find it in the repository, he simply creates it on the fly. In this example the user is created with just a few details, but you can put some custom integration code with the external realm here, and create the user with all the details (email, birth date, roles, etc.) it seems appropriate to you. After that, the bean creates an Identity object with the help of the authenticator service, populates it with a subject containing the user credentials and registers it. That's all we have to do to make the portal aware of the user logging in.
- </para>
- <para>
- Registering our bean is done the usual way in security-context.xml file:
- </para>
-
+ <para>
+ Basically the bean retrieves user login and password from the InteractiveAuthenticationSuccessEvent object and tries to get the user from the organization service. In case he cannot find it in the repository, he simply creates it on the fly. In this example the user is created with just a few details, but you can put some custom integration code with the external realm here, and create the user with all the details (email, birth date, roles, etc.) it seems appropriate to you. After that, the bean creates an Identity object with the help of the authenticator service, populates it with a subject containing the user credentials and registers it. That's all we have to do to make the portal aware of the user logging in.
+ </para>
+ <para>
+ Registering our bean is done the usual way in security-context.xml file:
+ </para>
+
<programlisting language="XML" role="XML">...
<beans:bean id="myEventHandler" class="org.exoplatform.spring.security.web.SpringSecurityEventHandler" />
...</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Security_context_propagation_to_portlets">
- <title>Security context propagation to portlets</title>
- <para>
- Part of the problem is the question of security context propagation between on one side the portal webapp and at the other side the portlets webapps. This means that the security context has to be available in the portlet side allowing the application logic to deal the with current user principal and granted authorities. By default, Spring security uses a thread local variable to partially achieve this. But a problem may arise due to the fact that the portal invokes the portlet through a webapp cross context call. This means that it can lead to a class cast exceptions (two different classloaders involved), or that the security context is simply not propagated at all. To accommodate this, we will need to set up two request filters, one at the portal webapp side and the other at the portlet webapp side and use the http request to propagate the context in between.
- </para>
- <section id="sect-Reference_Guide-Security_context_propagation_to_portlets-Portal_side_filter">
- <title>Portal side filter</title>
- <para>
- We will use the spring security extensible filter chain to plug in our filter.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Security_context_propagation_to_portlets">
+ <title>Security context propagation to portlets</title>
+ <para>
+ Part of the problem is the question of security context propagation between on one side the portal webapp and at the other side the portlets webapps. This means that the security context has to be available in the portlet side allowing the application logic to deal the with current user principal and granted authorities. By default, Spring security uses a thread local variable to partially achieve this. But a problem may arise due to the fact that the portal invokes the portlet through a webapp cross context call. This means that it can lead to a class cast exceptions (two different classloaders involved), or that the security context is simply not propagated at all. To accommodate this, we will need to set up two request filters, one at the portal webapp side and the other at the portlet webapp side and use the http request to propagate the context in between.
+ </para>
+ <section id="sect-Reference_Guide-Security_context_propagation_to_portlets-Portal_side_filter">
+ <title>Portal side filter</title>
+ <para>
+ We will use the spring security extensible filter chain to plug in our filter.
+ </para>
+
<programlisting language="Java" role="Java">package org.exoplatform.spring.security.web;
...
@@ -508,27 +508,27 @@
return 0;
}
}</programlisting>
- <para>
- The PortalSideSecurityContextFilter simply fills the request with the security context and security last exception using the HttpSessionContextIntegrationFilter.SPRING_SECURITY_CONTEXT_KEY and AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY attribute names. The portlet can have a look to the AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY attribute to check if a security exception has occurred.
- </para>
- <para>
- The following lines in the security-context file register our custom filter in the chain at the last position.
- </para>
-
+ <para>
+ The PortalSideSecurityContextFilter simply fills the request with the security context and security last exception using the HttpSessionContextIntegrationFilter.SPRING_SECURITY_CONTEXT_KEY and AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY attribute names. The portlet can have a look to the AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY attribute to check if a security exception has occurred.
+ </para>
+ <para>
+ The following lines in the security-context file register our custom filter in the chain at the last position.
+ </para>
+
<programlisting language="XML" role="XML">...
<beans:bean id="myCustomFilter" class="org.exoplatform.spring.security.web.PortalSideSecurityContextFilter">
<custom-filter after="LAST" />
</beans:bean>
...</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Security_context_propagation_to_portlets-Portlet_side_filter">
- <title>Portlet side filter</title>
- <para>
- In the portlet webapp we create a regular filter named PortletSideSecurityContextFilter.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Security_context_propagation_to_portlets-Portlet_side_filter">
+ <title>Portlet side filter</title>
+ <para>
+ In the portlet webapp we create a regular filter named PortletSideSecurityContextFilter.
+ </para>
+
<programlisting language="Java" role="Java">package org.exoplatform.spring.security.web;
...
@@ -574,13 +574,13 @@
}
}</programlisting>
- <para>
- The PortletSideSecurityContextFilter retrieves the security context from the request and proceeds to a serialization de-serialization of it to avoid a potential class cast exception that may occur when propagating an object across webapps. Then the context is simply set or cleared whether the context is null or not.
- </para>
- <para>
- To register your filter simply add the following lines to your portlet webapp web.xml file.
- </para>
-
+ <para>
+ The PortletSideSecurityContextFilter retrieves the security context from the request and proceeds to a serialization deserialization of it to avoid a potential class cast exception that may occur when propagating an object across webapps. Then the context is simply set or cleared whether the context is null or not.
+ </para>
+ <para>
+ To register your filter simply add the following lines to your portlet webapp web.xml file.
+ </para>
+
<programlisting language="XML" role="XML">...
<filter>
<filter-name>portletSideSecurityContextFilter</filter-name>
@@ -596,19 +596,19 @@
</filter-mapping>
...</programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Spring_Security_Integration-Conclusion">
- <title>Conclusion</title>
- <para>
- We are done! Now we know how to integrate the spring security framework in the eXo portal. Thanks to the the great integration capabilities of both eXo portal and Spring framework. You can have a look to the attachment section on this page and get the source code of this tutorial.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Spring_Security_Integration-Conclusion">
+ <title>Conclusion</title>
+ <para>
+ We are done! Now we know how to integrate the spring security framework in the eXo portal. Thanks to the great integration capabilities of both eXo portal and Spring framework. You can have a look to the attachment section on this page and get the source code of this tutorial.
+ </para>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/core.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -15,7 +15,7 @@
<xi:include href="core/conversationstate-when-membership-changed.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="core/db-schema-creator-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="core/db-configuration-hibernate.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="core/ldap-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="core/LDAP-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="core/tika-document-reader-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="core/digest-auth.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/faq/jcr-faq.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/faq/jcr-faq.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/faq/jcr-faq.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,213 +4,213 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JCR_FAQ">
- <title>JCR FAQ</title>
- <section id="sect-Reference_Guide-JCR_FAQ-Kernel">
- <title>Kernel</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>What is the best, standardized way to get the instance of a service ?</term>
- <listitem>
- <para>
-
+ <title>JCR FAQ</title>
+ <section id="sect-Reference_Guide-JCR_FAQ-Kernel">
+ <title>Kernel</title>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>What is the best, standardized way to get the instance of a service ?</term>
+ <listitem>
+ <para>
+
<programlisting language="Java" role="Java">container.getComponentInstanceOfType(ServiceName.class);</programlisting>
- </para>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
- <section id="sect-Reference_Guide-JCR_FAQ-JCR_core">
- <title>JCR core</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Is it better to use Session.getNodeByUUID or Session.getItem?</term>
- <listitem>
- <para>
- <literal>Session.getNodeByUUID()</literal> is about 2.5 times faster than <literal>Session.getItem(String)</literal> and 25% faster than <literal>Node.getNode(String)</literal>. See the daily tests results for such comparisons, e.g.
- </para>
- <para>
- <ulink url="http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-performance-tes...">http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-performance-tes...</ulink>
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JCR_FAQ-JCR_core">
+ <title>JCR core</title>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Is it better to use Session.getNodeByUUID or Session.getItem?</term>
+ <listitem>
+ <para>
+ <literal>Session.getNodeByUUID()</literal> is about 2.5 times faster than <literal>Session.getItem(String)</literal> and 25% faster than <literal>Node.getNode(String)</literal>. See the daily tests results for such comparisons, e.g.
+ </para>
+ <para>
+ <ulink url="http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-performance-tes...">http://tests.exoplatform.org/JCR/1.12.2-GA/rev.2442/daily-performance-tes...</ulink>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Does it make sense to have all the node referenceable to use <literal>getNodeByUUID</literal> all the time?</term>
- <listitem>
- <para>
- Until it's applicable for a business logic it can be. But take in account the paths are human readable and lets you think in hierarchy. If it's important a location based approach is preferable.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Does it make sense to have all the node referenceable to use <literal>getNodeByUUID</literal> all the time?</term>
+ <listitem>
+ <para>
+ Until it's applicable for a business logic it can be. But take in account the paths are human readable and lets you think in hierarchy. If it's important a location based approach is preferable.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>What should I use to check if an Item exists before getting the Value?</term>
- <listitem>
- <para>
- Use <literal>Session.itemExists(String absPath)</literal>, <literal>Node.hasNode(StringrelPath)</literal> or <literal>Property.hasProperty(String name)</literal>. It is also is possible to check <literal>Node.hasNodes()</literal> and <literal>Node.hasProprties()</literal>.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>What should I use to check if an Item exists before getting the Value?</term>
+ <listitem>
+ <para>
+ Use <literal>Session.itemExists(String absPath)</literal>, <literal>Node.hasNode(StringrelPath)</literal> or <literal>Property.hasProperty(String name)</literal>. It is also is possible to check <literal>Node.hasNodes()</literal> and <literal>Node.hasProprties()</literal>.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to use Observation properly?</term>
- <listitem>
- <para>
- JCR Observation's a way to listen on persistence changes of a Repository. It provides several options to configure the listener for an interesting only changes. To use properly, it's important to understand concept of events filtering for a registered EventListener.
- </para>
- <para>
- An often confusing part is the <emphasis role="bold">absPath</emphasis>, it's an associated parent of a location you want to observe events on. I.e. it's a parent of child node(s) or this parent property(ies); if <emphasis role="bold">isDeep</emphasis> is true then you'll get events of all the subtree of child nodes also. The same actual for <emphasis role="bold">uuid</emphasis> and <emphasis role="bold">nodeTypeName</emphasis> parameters of ObservationManager.addEventListener() method.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>How to use Observation properly?</term>
+ <listitem>
+ <para>
+ JCR Observation's a way to listen on persistence changes of a Repository. It provides several options to configure the listener for an interesting only changes. To use properly, it's important to understand concept of events filtering for a registered EventListener.
+ </para>
+ <para>
+ An often confusing part is the <emphasis role="bold">absPath</emphasis>, it is an associated parent of a location you want to observe events on. That is to say it is a parent of child node(s) or this parent property(ies); if <emphasis role="bold">isDeep</emphasis> is true then you'll get events of all the subtree of child nodes also. The same actual for <emphasis role="bold">uuid</emphasis> and <emphasis role="bold">nodeTypeName</emphasis> parameters of ObservationManager.addEventListener() method.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Is it better to use queries that to access the data by the JCR API?</term>
- <listitem>
- <para>
- No, direct access to items via JCR API is more efficient. Search will consume additional resources for index querying and only then return the items.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Is it better to use queries that to access the data by the JCR API?</term>
+ <listitem>
+ <para>
+ No, direct access to items via JCR API is more efficient. Search will consume additional resources for index querying and only then return the items.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>What is default query ordering?</term>
- <listitem>
- <para>
- By default (if queries do not contain any ordering statements) result nodes are sorted by document order.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>What is default query ordering?</term>
+ <listitem>
+ <para>
+ By default (if queries do not contain any ordering statements) result nodes are sorted by document order.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Is ordering by jcr:path or Item name supported?</term>
- <listitem>
- <para>
- No, it is not supported. There are two ways to order results, in which <emphasis>path</emphasis> may be used as criteria:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Order by property with value type NAME or PATH (supported).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Is ordering by jcr:path or Item name supported?</term>
+ <listitem>
+ <para>
+ No, it is not supported. There are two ways to order results, in which <emphasis>path</emphasis> may be used as criteria:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Order by property with value type NAME or PATH (supported).
+ </para>
- </listitem>
- <listitem>
- <para>
- Order by jcr:path - sort by exact path of node (not supported.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Order by jcr:path - sort by exact path of node (not supported.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Order by jcr:path
- </para>
- <para>
- If no order specification is supplied in the query statement, implementations may support document order on the result nodes. And it is sorted by order number.
- </para>
- <para>
- By default, (if a query does not contain any ordering statements) result nodes is sorted by document order.
- </para>
-
+ </itemizedlist>
+ <para>
+ Order by jcr:path
+ </para>
+ <para>
+ If no order specification is supplied in the query statement, implementations may support document order on the result nodes. And it is sorted by order number.
+ </para>
+ <para>
+ By default, (if a query does not contain any ordering statements) result nodes is sorted by document order.
+ </para>
+
<programlisting>SELECT * FROM nt:unstructured WHERE jcr:path LIKE 'testRoot/%'</programlisting>
- <para>
- For specified jcr:path ordering there is different proceeding in XPath and SQL:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- SQL no matter ascending or descending - query returns result nodes in random order: {code}SELECT * FROM nt:unstructured WHERE jcr:path LIKE 'testRoot/%' ORDER BY jcr:path{code}
- </para>
+ <para>
+ For specified jcr:path ordering there is different proceeding in XPath and SQL:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ SQL no matter ascending or descending - query returns result nodes in random order: {code}SELECT * FROM nt:unstructured WHERE jcr:path LIKE 'testRoot/%' ORDER BY jcr:path{code}
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- XPath - jcr:path order construction is ignored (so result is not sorted according path); {code}/testRoot/* <ulink url="@jcr:primaryType='nt:unstructured'">@jcr:primaryType='nt:unstructured'</ulink> order by jcr:path{code}
- </para>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ XPath - jcr:path order construction is ignored (so result is not sorted according path); {code}/testRoot/* <ulink url="@jcr:primaryType='nt:unstructured'">@jcr:primaryType='nt:unstructured'</ulink> order by jcr:path{code}
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How eXo JCR indexer uses content encoding?</term>
- <listitem>
- <para>
- Indexer uses jcr:encoding property of nt:resource node (used as jcr:content child node of nt:file) 2. if no jcr:encoding property set the Document Service will use the one configured in the service (defaultEncoding) 3. if nothing is configured a JVM, the default encoding will be used.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>How eXo JCR indexer uses content encoding?</term>
+ <listitem>
+ <para>
+ Indexer uses jcr:encoding property of nt:resource node (used as jcr:content child node of nt:file) 2. if no jcr:encoding property set the Document Service will use the one configured in the service (defaultEncoding) 3. if nothing is configured a JVM, the default encoding will be used.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Which database server is better for eXo JCR?</term>
- <listitem>
- <para>
- If the question is a performance, it's difficult question, as each database can be configured to be more (and more) faster for each special case. MySQL with MyISAM engine will be faster. But MySQL has limitations for indexes for multilingual columns (Item names actually). So, with long Item names (larger ofOracle or PostgreSQL also are good for performance. DB2 and MSSQL are slower in default configurations. Default configuration of Sybase leader of slowness. But in this question, take the database server maintenance in account. MySQL and PostgreSQL are simple in installation and can work even on limited hardware. Oracle, DB2, MSSQL or Sybase need more efforts. The same actual for maintenance during the work. Note for Sybase: "check-sns-new-connection" data container configuration parameter should be set to "true". For testing purpose, embedded database such as HSQLDB is the best choice. Apache Derby and H2 also supported. But H2 surprisingly needs "beta" feature enab!
led - MVCC=TRUE in JDBC url.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Which database server is better for eXo JCR?</term>
+ <listitem>
+ <para>
+ If the question is a performance, it's difficult question, as each database can be configured to be more (and more) faster for each special case. MySQL with MyISAM engine will be faster. But MySQL has limitations for indexes for multilingual columns (Item names actually). So, with long Item names (larger ofOracle or PostgreSQL also are good for performance. DB2 and MSSQL are slower in default configurations. Default configuration of Sybase leader of slowness. But in this question, take the database server maintenance in account. MySQL and PostgreSQL are simple in installation and can work even on limited hardware. Oracle, DB2, MSSQL or Sybase need more efforts. The same actual for maintenance during the work. Note for Sybase: "check-sns-new-connection" data container configuration parameter should be set to "true". For testing purpose, embedded database such as HSQLDB is the best choice. Apache Derby and H2 also supported. But H2 surprisingly needs "!
beta" feature enabled - MVCC=TRUE in JDBC url.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to setup eXo JCR for multilingual content on MySQL?</term>
- <listitem>
- <para>
- To allow multiple character sets to be sent from the client, the UTF-8 encoding should be used, either by configuring utf8 as the default server character set, or by configuring the JDBC driver to use UTF-8 through the characterEncoding property. MySQL database should be created in single-byte encoding, e.g. "latin1":
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>How to setup eXo JCR for multilingual content on MySQL?</term>
+ <listitem>
+ <para>
+ To allow multiple character sets to be sent from the client, the UTF-8 encoding should be used, either by configuring utf8 as the default server character set, or by configuring the JDBC driver to use UTF-8 through the characterEncoding property. MySQL database should be created in single-byte encoding, e.g. "latin1":
+ </para>
+
<programlisting>CREATE DATABASE db1 CHARACTER SET latin1 COLLATE latin1_general_cs;</programlisting>
- <para>
- eXo JCR application (e.g. GateIn) should use JCR dialect "MySQL-UTF8".
- </para>
- <para>
- In other words: MySQL database default encoding and JCR dialect cannot be UTF8 both. Use single-byte encoding (e.g. "latin1") for database and "mysql-utf8" dialect for eXo JCR.
- </para>
- <para>
- Notice: "MySQL-UTF8" dialect cannot be auto-detected, it should be set explicitly in configuration.
- </para>
+ <para>
+ eXo JCR application (e.g. GateIn) should use JCR dialect "MySQL-UTF8".
+ </para>
+ <para>
+ In other words: MySQL database default encoding and JCR dialect cannot be UTF8 both. Use single-byte encoding (e.g. "latin1") for database and "mysql-utf8" dialect for eXo JCR.
+ </para>
+ <para>
+ Notice: "MySQL-UTF8" dialect cannot be auto-detected, it should be set explicitly in configuration.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Does MySQL have limitation affecting on eXo JCR features?</term>
- <listitem>
- <para>
- Index's key length of JCR_SITEM (JCR_MITEM) table for mysql-utf8 dialect is reduced to 765 bytes (or 255 chars).
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Does MySQL have limitation affecting on eXo JCR features?</term>
+ <listitem>
+ <para>
+ Index's key length of JCR_SITEM (JCR_MITEM) table for mysql-utf8 dialect is reduced to 765 bytes (or 255 chars).
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Does use of Sybase database need special options in eXo JCR configuration?</term>
- <listitem>
- <para>
- To enable JCR working properly with Sybase, a property 'check-sns-new-connection' with 'false' value is required for each workspace data container:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Does use of Sybase database need special options in eXo JCR configuration?</term>
+ <listitem>
+ <para>
+ To enable JCR working properly with Sybase, a property 'check-sns-new-connection' with 'false' value is required for each workspace data container:
+ </para>
+
<programlisting language="XML" role="XML"><container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
<properties>
<property name="source-name" value="jdbcjcr" />
@@ -223,13 +223,13 @@
<property name="check-sns-new-connection" value="false" />
</properties></programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to open and close a session properly to avoid memory leaks?</term>
- <listitem>
-
+ </varlistentry>
+ <varlistentry>
+ <term>How to open and close a session properly to avoid memory leaks?</term>
+ <listitem>
+
<programlisting language="Java" role="Java">Session session = repository.login(credentials);
try
{
@@ -240,50 +240,50 @@
session.logout();
}</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Can I use Session after logging out?</term>
- <listitem>
- <para>
- No. Any instance of Session or Node (acquired through session) shouldn't be used after logging out anymore. At least, it is highly recommended not to use.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Can I use Session after logging out?</term>
+ <listitem>
+ <para>
+ No. Any instance of Session or Node (acquired through session) shouldn't be used after logging out anymore. At least, it is highly recommended not to use.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to configure jcr for cluster?</term>
- <listitem>
- <para>
- So we have configured JCR in standalone mode and want to reconfigure it for clustered environment. First of all, let's check whether all requirements are satisfied:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Dedicated RDBMS anyone like MySQL, Postges, Oracle and, etc but just not HSSQL;
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>How to configure jcr for cluster?</term>
+ <listitem>
+ <para>
+ So we have configured JCR in standalone mode and want to reconfigure it for clustered environment. First of all, let's check whether all requirements are satisfied:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Dedicated RDBMS anyone like MySQL, Postges, Oracle and, etc but just not HSSQL;
+ </para>
- </listitem>
- <listitem>
- <para>
- Shared storage. The simplest thing is to use shared FS like NFS or SMB mounted in operation system, but they are rather slow. The best thing is to use SAN (Storage Area Network);
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Shared storage. The simplest thing is to use shared FS like NFS or SMB mounted in operation system, but they are rather slow. The best thing is to use SAN (Storage Area Network);
+ </para>
- </listitem>
- <listitem>
- <para>
- Fast network between JCR nodes.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fast network between JCR nodes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- So now, need to configure Container a bit. Check exo-configuration.xml to be sure that you are using JBossTS Transaction Service and JBossCache Transaction Manager, as shown below.
- </para>
-
+ </itemizedlist>
+ <para>
+ So now, need to configure Container a bit. Check exo-configuration.xml to be sure that you are using JBossTS Transaction Service and JBossCache Transaction Manager, as shown below.
+ </para>
+
<programlisting language="XML" role="XML"><component>
<key>org.jboss.cache.transaction.TransactionManagerLookup</key>
<type>org.jboss.cache.GenericTransactionManagerLookup</type>
@@ -299,15 +299,15 @@
</value-param>
</init-params>
</component></programlisting>
- <para>
- Next stage is actually the JCR configuration. We need JBossCache configuration templates for : data-cache, indexer-cache and lock-manager-cache. Later they will be used to configure JCR's core components. There are pre-bundled templates in EAR or JAR in conf/standalone/cluster. They can be used as is or re-written if needed. And now, re-configure a bit each workspace. Actually, a few parameters need changing, e.g. <cache>, <query-handler> and <lock-manager>.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <cache> configuration should look like this:
- </para>
-
+ <para>
+ Next stage is actually the JCR configuration. We need JBossCache configuration templates for : data-cache, indexer-cache and lock-manager-cache. Later they will be used to configure JCR's core components. There are pre-bundled templates in EAR or JAR in conf/standalone/cluster. They can be used as is or re-written if needed. And now, re-configure a bit each workspace. Actually, a few parameters need changing, e.g. <cache>, <query-handler> and <lock-manager>.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <cache> configuration should look like this:
+ </para>
+
<programlisting language="XML" role="XML"><cache enabled="true"
class="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache">
<properties>
@@ -318,77 +318,77 @@
</properties>
</cache></programlisting>
- </listitem>
- <listitem>
- <para>
- "jbosscache-configuration" is the path to configuration template;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-configuration" is the path to configuration template;
+ </para>
- </listitem>
- <listitem>
- <para>
- "jgroups-configuration" is path to JGroups configuration that is multiplexer stack is used (default). This file is also pre-bundled with templates and is recommended for use;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jgroups-configuration" is path to JGroups configuration that is multiplexer stack is used (default). This file is also pre-bundled with templates and is recommended for use;
+ </para>
- </listitem>
- <listitem>
- <para>
- "jgroups-multiplexer-stack" just simply "true". Strongly recommended;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jgroups-multiplexer-stack" just simply "true". Strongly recommended;
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cluster-name" is the name of cluster group. It should be different for each workspace and each workspace component. I.e.: <repository_name>-<ws_name>-<component(cache\|lock\|index)>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cluster-name" is the name of cluster group. It should be different for each workspace and each workspace component. I.e.: <repository_name>-<ws_name>-<component(cache\|lock\|index)>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- <query-handler> configuration
- </para>
- <itemizedlist>
- <listitem>
- <para>
- You must replace or add in <query-handler> block the "changesfilter-class" parameter equals with:
- </para>
-
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <query-handler> configuration
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ You must replace or add in <query-handler> block the "changesfilter-class" parameter equals with:
+ </para>
+
<programlisting language="XML" role="XML"><property name="changesfilter-class" value="org.exoplatform.services.jcr.impl.core.query.jbosscache.JBossCacheIndexChangesFilter"/></programlisting>
- </listitem>
- <listitem>
- <para>
- add JBossCache-oriented configuration:
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ add JBossCache-oriented configuration:
+ </para>
+
<programlisting language="XML" role="XML"><property name="jbosscache-configuration" value="test-jbosscache-indexer.xml" />
<property name="jgroups-configuration" value="udp-mux.xml" />
<property name="jgroups-multiplexer-stack" value="true" />
<property name="jbosscache-cluster-name" value="JCR-cluster-indexer-db1-ws" />
<property name="max-volatile-time" value="60" /></programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Those properties have the same meaning and restrictions as in the previous block. The last property "max-volatile-time" is not mandatory but recommended. This notifies that the latest changes in index will be visible for each cluster node not later than in 60s.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <lock-manager> configuration
- </para>
- <para>
- Maybe this is the hardest element to configure, because we have to define access to DB where locks will be stored. Replace existing lock-manager configuration with shown below.
- </para>
-
+ </itemizedlist>
+ <para>
+ Those properties have the same meaning and restrictions as in the previous block. The last property "max-volatile-time" is not mandatory but recommended. This notifies that the latest changes in index will be visible for each cluster node not later than in 60s.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <lock-manager> configuration
+ </para>
+ <para>
+ Maybe this is the hardest element to configure, because we have to define access to DB where locks will be stored. Replace existing lock-manager configuration with shown below.
+ </para>
+
<programlisting language="XML" role="XML">
<lock-manager class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManagerImpl">
<properties>
@@ -409,87 +409,87 @@
</lock-manager>
</programlisting>
- <para>
- First few properties are the same as in the previous components, but here you can see some strange "jbosscache-cl-cache.jdbc.*" properties. They define access parameters for database where lock are persisted.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.table.create" - whether to create it or not. Usually "true";
- </para>
+ <para>
+ First few properties are the same as in the previous components, but here you can see some strange "jbosscache-cl-cache.jdbc.*" properties. They define access parameters for database where lock are persisted.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.table.create" - whether to create it or not. Usually "true";
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.table.drop" - whether to drop on a start or not. Use "false";
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.table.drop" - whether to drop on a start or not. Use "false";
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.table.primarykey" - the name of column with pk;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.table.primarykey" - the name of column with pk;
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.fqn.column" - the name of one more column. If you are not sure how to use, follow the example above (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.fqn.column" - the name of one more column. If you are not sure how to use, follow the example above (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.node.column" - the name of one more column. If you are not sure how to use, follow the example above (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.node.column" - the name of one more column. If you are not sure how to use, follow the example above (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.parent.column" - name of one more column. If you are not sure how to use, follow the example above if you are not sure (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.parent.column" - name of one more column. If you are not sure how to use, follow the example above if you are not sure (if much interested, please refer to JBossCache JDBCCacheLoader documentation)
+ </para>
- </listitem>
- <listitem>
- <para>
- "jbosscache-cl-cache.jdbc.datasource" - name of configured in Container datasource, where you want to store locks. The best idea is to use the same as for workspace.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ "jbosscache-cl-cache.jdbc.datasource" - name of configured in Container datasource, where you want to store locks. The best idea is to use the same as for workspace.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- That's all. JCR is ready for running in a cluster.
- </para>
+ </itemizedlist>
+ <para>
+ That's all. JCR is ready for running in a cluster.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Is JCR suitable for remote sites\* synchronization?</term>
- <listitem>
- <para>
- Remote sites can be visualized as different buildings separated by a WAN network.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>Is JCR suitable for remote sites\* synchronization?</term>
+ <listitem>
+ <para>
+ Remote sites can be visualized as different buildings separated by a WAN network.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to use lucene spellchecker?</term>
- <listitem>
- <para>
- There is few steps:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Enable lucene spellchecker in jcr QueryHandler configuration:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>How to use lucene spellchecker?</term>
+ <listitem>
+ <para>
+ There is few steps:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Enable lucene spellchecker in jcr QueryHandler configuration:
+ </para>
+
<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
...
@@ -498,58 +498,58 @@
</properties>
</query-handler></programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Execute query with rep:spellcheck function and word that is checked:
- </para>
-
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Execute query with rep:spellcheck function and word that is checked:
+ </para>
+
<programlisting language="Java" role="Java">Query query = qm.createQuery("select rep:spellcheck() from nt:base where " + "jcr:path = '/' and spellcheck('word that is checked')", Query.SQL);
RowIterator rows = query.execute().getRows();</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Fetch a result:
- </para>
-
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Fetch a result:
+ </para>
+
<programlisting language="Java" role="Java">Row r = rows.nextRow();
Value v = r.getValue("rep:spellcheck()");</programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- If there are no results, that means there is no suggestion, so word is correct or spellcheckers dictionary do not contain any words like the checked word.
- </para>
+ </itemizedlist>
+ <para>
+ If there are no results, that means there is no suggestion, so word is correct or spellcheckers dictionary do not contain any words like the checked word.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How can I affect to spellchecker results?</term>
- <listitem>
- <para>
- There is two parameters in jcr QueryHandler configuration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Minimal distance between checked word and proposed suggestion;
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>How can I affect to spellchecker results?</term>
+ <listitem>
+ <para>
+ There is two parameters in jcr QueryHandler configuration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Minimal distance between checked word and proposed suggestion;
+ </para>
- </listitem>
- <listitem>
- <para>
- Search for more popular suggestions;
- </para>
-
+ </listitem>
+ <listitem>
+ <para>
+ Search for more popular suggestions;
+ </para>
+
<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
<properties>
...
@@ -560,62 +560,62 @@
</properties>
</query-handler></programlisting>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- Minimal distance is counted as Levenshtein distance between checked word and spellchecker suggestion.
- </para>
- <para>
- MorePopular paramter affects in next way: If "morePopular" disabled:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- If the proposed word exists in the directory - no suggestion given;
- </para>
+ </itemizedlist>
+ <para>
+ Minimal distance is counted as Levenshtein distance between checked word and spellchecker suggestion.
+ </para>
+ <para>
+ MorePopular parameter affects in next way: If "morePopular" disabled:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ If the proposed word exists in the directory - no suggestion given;
+ </para>
- </listitem>
- <listitem>
- <para>
- If the proposed word doesn't exist in the directory - propose the closed word;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the proposed word doesn't exist in the directory - propose the closed word;
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- If "morePopular" enabled:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- No matter word exists or not, checker will propose the closed word that is more popular than the checked word.
- </para>
+ </itemizedlist>
+ <para>
+ If "morePopular" enabled:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ No matter word exists or not, checker will propose the closed word that is more popular than the checked word.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term></term>
- <listitem>
- <para>
+ </varlistentry>
+ <varlistentry>
+ <term></term>
+ <listitem>
+ <para>
- </para>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
- <!-- DOC NOTE: Commented as extensions seem out of scope
+ </section>
+
+ <!-- DOC NOTE: Commented as extensions seem out of scope
<section id="sect-Reference_Guide-JCR-JCR_extensions">
<title>JCR extensions</title>
@@ -684,35 +684,35 @@
</variablelist>
</section> --> <section id="sect-Reference_Guide-JCR_FAQ-WebDAV">
- <title>WebDAV</title>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>I uploaded a file to WebDAV server using Mac OS Finder, but the file size is '0', what is wrong?</term>
- <listitem>
- <para>
- This is known as a finder bug started from Mac OS v.10.5.3 and not yet fixed, .
- </para>
- <para>
- For more details follow:&nbsp; <ulink url="http://discussions.apple.com/thread.jspa?threadID=1538882&start=0&...">Apple Discussion thread.</ulink>
- </para>
+ <title>WebDAV</title>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>I uploaded a file to WebDAV server using Mac OS Finder, but the file size is '0', what is wrong?</term>
+ <listitem>
+ <para>
+ This is known as a finder bug started from Mac OS v.10.5.3 and not yet fixed, .
+ </para>
+ <para>
+ For more details follow:&nbsp; <ulink url="http://discussions.apple.com/thread.jspa?threadID=1538882&start=0&...">Apple Discussion thread.</ulink>
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>Can I manage 'cache-control' value for different media-types from server configuration?</term>
- <listitem>
- <para>
- Use "cache-control" configuration parameter.
- </para>
- <para>
- The value of this parameter must contain colon-separated pairs "MediaType:cache-control value"
- </para>
- <para>
- For example, if you need to cache all text/xml and text/plain files for 5 minutes (300 sec.) and other text/\* files for 10 minutes (600 sec.), use the next configuration:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>Can I manage 'cache-control' value for different media-types from server configuration?</term>
+ <listitem>
+ <para>
+ Use "cache-control" configuration parameter.
+ </para>
+ <para>
+ The value of this parameter must contain colon-separated pairs "MediaType:cache-control value"
+ </para>
+ <para>
+ For example, if you need to cache all text/xml and text/plain files for 5 minutes (300 sec.) and other text/\* files for 10 minutes (600 sec.), use the next configuration:
+ </para>
+
<programlisting language="XML" role="XML"><component>
<type>org.exoplatform.services.jcr.webdav.WebDavServiceImpl</type>
<init-params>
@@ -724,84 +724,84 @@
<component>
</programlisting>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How to perform WebDAV requests using curl?</term>
- <listitem>
- <para>
- Simple Requests
- </para>
- <para>
- For simple request such as: GET, HEAD, MKCOL, COPY, MOVE, DELETE, CHECKIN, CHECKOUT, UNCHECKOUT, LOCK, UNLOCK, VERSIONCONTROL, OPTIONS
- </para>
- <para>
- perform:
- </para>
-
+ </varlistentry>
+ <varlistentry>
+ <term>How to perform WebDAV requests using curl?</term>
+ <listitem>
+ <para>
+ Simple Requests
+ </para>
+ <para>
+ For simple request such as: GET, HEAD, MKCOL, COPY, MOVE, DELETE, CHECKIN, CHECKOUT, UNCHECKOUT, LOCK, UNLOCK, VERSIONCONTROL, OPTIONS
+ </para>
+ <para>
+ perform:
+ </para>
+
<programlisting>curl -i -u 'user:pass' -X 'METHOD_NAME' 'resource_url'</programlisting>
- <para>
- for example to create a folder named test perform:
- </para>
-
+ <para>
+ for example to create a folder named test perform:
+ </para>
+
<programlisting>curl -i -u 'root:exo' -X MKCOL 'http://localhost:8080/rest/jcr/repository/production/test</programlisting>
- <para>
- to PUT a test.txt file from your current folder to "test "folder on server perform:
- </para>
-
+ <para>
+ to PUT a test.txt file from your current folder to "test "folder on server perform:
+ </para>
+
<programlisting>curl -i -u 'root:exo' -X PUT 'http://localhost:8080/rest/jcr/repository/production/test/test.txt' -d @test.txt</programlisting>
- <para>
- Requests with XML body
- </para>
- <para>
- For requests which contains xml body such as: ORDER, PROPFIND, PROPPATCH, REPORT, SEARCH
- </para>
- <para>
- add <emphasis role="bold">-d 'xml_body text'</emphasis> or <emphasis role="bold">-d @body.xml</emphasis>
- </para>
- <para>
- (body.xml must contain a valid xml request body.) to you curl-command:
- </para>
-
+ <para>
+ Requests with XML body
+ </para>
+ <para>
+ For requests which contains xml body such as: ORDER, PROPFIND, PROPPATCH, REPORT, SEARCH
+ </para>
+ <para>
+ add <emphasis role="bold">-d 'xml_body text'</emphasis> or <emphasis role="bold">-d @body.xml</emphasis>
+ </para>
+ <para>
+ (body.xml must contain a valid xml request body.) to you curl-command:
+ </para>
+
<programlisting>curl -i -u 'user:pass' -X 'METHOD_NAME' -H 'Headers' 'resource_url' -d 'xml_body text'</programlisting>
- <para>
- For example about finding all files containing "test" perform:
- </para>
-
+ <para>
+ For example about finding all files containing "test" perform:
+ </para>
+
<programlisting>curl -i -u "root:exo" -X "SEARCH" "http://192.168.0.7:8080/rest/jcr/repository/production/" -d
"<?xml version='1.0' encoding='UTF-8' ?>
<D:searchrequest xmlns:D='DAV:'>
<D:sql>SELECT * FROM nt:base WHERE contains(*, 'text')</D:sql>
</D:searchrequest>"</programlisting>
- <para>
- If you need to add some headers to your request, use \-H key.
- </para>
- <para>
- To have more information about methods parameters, you can find in <ulink url="http://www.ietf.org/rfc/rfc2518.txt">HTTP Extensions for Distributed Authoring</ulink> specification.
- </para>
+ <para>
+ If you need to add some headers to your request, use \-H key.
+ </para>
+ <para>
+ To have more information about methods parameters, you can find in <ulink url="http://www.ietf.org/rfc/rfc2518.txt">HTTP Extensions for Distributed Authoring</ulink> specification.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>How eXo JCR WebDAV server treats content encoding?</term>
- <listitem>
- <para>
- OS client (Windows, Linux etc) doesn't set an encoding in a request. But eXo JCR WebDAV server looks for an encoding in a Content-Type header and set it to jcr:encoding. See <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,</ulink> 14.17 Content-Type. e.g. Content-Type: text/html; charset=ISO-8859-4 So, if a client will set Content-Type header, e.g. JS code from a page, it will works for a text file as expected.
- </para>
- <para>
- If WebDAV request doesn't contain a content encoding, it's possible to write a dedicated action in a customer application. The action will set jcr:encoding using its own logic, e.g. based on IP or user preferences.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>How eXo JCR WebDAV server treats content encoding?</term>
+ <listitem>
+ <para>
+ OS client (Windows, Linux etc) doesn't set an encoding in a request. But eXo JCR WebDAV server looks for an encoding in a Content-Type header and set it to jcr:encoding. See <ulink url="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,">http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,</ulink> 14.17 Content-Type. e.g. Content-Type: text/html; charset=ISO-8859-4 So, if a client will set Content-Type header, e.g. JS code from a page, it will works for a text file as expected.
+ </para>
+ <para>
+ If WebDAV request doesn't contain a content encoding, it's possible to write a dedicated action in a customer application. The action will set jcr:encoding using its own logic, e.g. based on IP or user preferences.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/backup-client.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -15,7 +15,7 @@
<note>
<title>URI Context</title>
<para>
- JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instread of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
+ JBoss Enterprise Portal Platform uses context <uri>/portal/rest</uri>, therefore you need to use <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/rest/</uri> instead of <uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/rest/</uri>
</para>
<para>
JBoss Enterprise Portal Platform uses form authentication, so first you need to login (<uri>http://<replaceable>host</replaceable>:<replaceable>port</replaceable>/portal/login</uri>) and then perform requests.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/backup/exojcr-backup-service.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -720,7 +720,7 @@
BackupScheduler scheduler = backup.getScheduler();
// schedule backup using a ready configuration (Full + Incrementals) to run from startTime
-// to stopTime. Full backuop will be performed every 24 hours (BackupChain lifecycle),
+// to stopTime. Full backuop will be performed every 24 hours (BackupChain life-cycle),
// incremental will rotate result files every 3 hours.
scheduler.schedule(config, startTime, stopTime, 3600 * 24, 3600 * 3);
@@ -755,7 +755,7 @@
<section id="sect-Reference_Guide-eXo_JCR_Backup_Service-Restore_existing_workspace_or_repository">
<title>Restore existing workspace or repository</title>
<para>
- The resore of existing workspace or repository is available.
+ The restore of existing workspace or repository is available.
</para>
<para>
For restore will be used special methods:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/jdbc-data-container-config.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,107 +4,107 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-JDBC_Data_Container_Config">
- <title>JDBC Data Container Config</title>
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
- <title>Introduction</title>
- <para>
- eXo JCR persistent data container can work in two configuration modes:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <phrase>Multi-database</phrase>: One database for each workspace (used in standalone eXo JCR service mode)
- </para>
+ <title>JDBC Data Container Config</title>
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Introduction">
+ <title>Introduction</title>
+ <para>
+ eXo JCR persistent data container can work in two configuration modes:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <phrase>Multi-database</phrase>: One database for each workspace (used in standalone eXo JCR service mode)
+ </para>
- </listitem>
- <listitem>
- <para>
- <phrase>Single-database</phrase>: All workspaces persisted in one database (used in embedded eXo JCR service mode, e.g. in eXo portal)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <phrase>Single-database</phrase>: All workspaces persisted in one database (used in embedded eXo JCR service mode, e.g. in eXo portal)
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- The data container uses the JDBC driver to communicate with the actual database software, i.e. any JDBC-enabled data storage can be used with eXo JCR implementation.
- </para>
- <para>
- Currently the data container is tested with the following RDBMS:
- </para>
- <!-- Source Metadata
+ </itemizedlist>
+ <para>
+ The data container uses the JDBC driver to communicate with the actual database software, i.e. any JDBC-enabled data storage can be used with eXo JCR implementation.
+ </para>
+ <para>
+ Currently the data container is tested with the following RDBMS:
+ </para>
+ <!-- Source Metadata
URL: NA (email from Nicholas Filetto to jbossexoD(a)googlegroups.com on 10/18/2011
Author [w/email]: Nicholas Filetto: nicolas.filotto(a)exoplatform.com
License: NA
--> <itemizedlist>
- <listitem>
- <para>
- MySQL 5.0.81 Driver: MySQL Connector/J 5.0.8
- </para>
+ <listitem>
+ <para>
+ MySQL 5.0.81 Driver: MySQL Connector/J 5.0.8
+ </para>
- </listitem>
- <listitem>
- <para>
- MySQL 5.1.36 Driver: MYSQL Connector/J 5.1.14
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ MySQL 5.1.36 Driver: MYSQL Connector/J 5.1.14
+ </para>
- </listitem>
- <listitem>
- <para>
- Oracle DB 10g R2 (10.2.0.4) Driver: Oracle 10g R2 (10.2.0.4)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 10g R2 (10.2.0.4) Driver: Oracle 10g R2 (10.2.0.4)
+ </para>
- </listitem>
- <listitem>
- <para>
- Oracle DB 11g R1 (11.1.0.6.0) Driver: Oracle 11g R1 (11.2.0.1.0)
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 11g R1 (11.1.0.6.0) Driver: Oracle 11g R1 (11.2.0.1.0)
+ </para>
- </listitem>
- <listitem>
- <para>
- Oracle DB 11g R2 (11.2.0.1.0) Driver: Oracle JDBC Driver v11.2.0.1.0
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Oracle DB 11g R2 (11.2.0.1.0) Driver: Oracle JDBC Driver v11.2.0.1.0
+ </para>
- </listitem>
- <listitem>
- <para>
- MS SQL Server 2005 SP1 Driver: JDBC Driver 3.0
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ MS SQL Server 2005 SP1 Driver: JDBC Driver 3.0
+ </para>
- </listitem>
- <listitem>
- <para>
- MS SQL Server 2008 Driver: JDBC Driver 3.0
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ MS SQL Server 2008 Driver: JDBC Driver 3.0
+ </para>
- </listitem>
- <listitem>
- <para>
- PostgresSQL 8.2.4 Driver: JDBC3 Driver, Version 8.2-507
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgresSQL 8.2.4 Driver: JDBC3 Driver, Version 8.2-507
+ </para>
- </listitem>
- <listitem>
- <para>
- PostgresSQL 8.3.7 Driver: JDBC3 Driver, Version 8.3-606
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ PostgresSQL 8.3.7 Driver: JDBC3 Driver, Version 8.3-606
+ </para>
- </listitem>
- <listitem>
- <para>
- IBM DB2 9.7.4 Driver: IBM Data Server Driver for JDBC and SQLJ V9.7
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ IBM DB2 9.7.4 Driver: IBM Data Server Driver for JDBC and SQLJ V9.7
+ </para>
- </listitem>
- <listitem>
- <para>
- Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v6.05
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v6.05
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <!-- <itemizedlist>
+ </itemizedlist>
+ <!-- <itemizedlist>
<listitem>
<para>
MySQL 5.1 MYSQL Connector/J 5.1.8
@@ -149,439 +149,439 @@
</listitem>
</itemizedlist> --> <note>
- <title>Isolation Levels</title>
- <para>
- The JCR requires at least the <parameter>READ_COMMITED</parameter> isolation level and other RDBMS configurations can cause some side-effects and issues. So, please, make sure proper isolation level is configured on database server side.
- </para>
+ <title>Isolation Levels</title>
+ <para>
+ The JCR requires at least the <parameter>READ_COMMITED</parameter> isolation level and other RDBMS configurations can cause some side-effects and issues. So, please, make sure proper isolation level is configured on database server side.
+ </para>
- </note>
- <note>
- <para>
- One more mandatory JCR requirement for underlying databases is a case sensitive collation. Microsoft SQL Server both 2005 and 2008 customers must configure their server with collation corresponding to personal needs and requirements, but obligatorily case sensitive. For more information please refer to Microsoft SQL Server documentation page "Selecting a SQL Server Collation" <ulink url="http://msdn.microsoft.com/en-us/library/ms144250.aspx">here.</ulink>
- </para>
+ </note>
+ <note>
+ <para>
+ One more mandatory JCR requirement for underlying databases is a case sensitive collation. Microsoft SQL Server both 2005 and 2008 customers must configure their server with collation corresponding to personal needs and requirements, but obligatorily case sensitive. For more information please refer to Microsoft SQL Server documentation page "Selecting a SQL Server Collation" <ulink url="http://msdn.microsoft.com/en-us/library/ms144250.aspx">here.</ulink>
+ </para>
- </note>
- <note>
- <para>
- Be aware that JCR does not support MyISAM storage engine for the MySQL relational database management system.
- </para>
+ </note>
+ <note>
+ <para>
+ Be aware that JCR does not support MyISAM storage engine for the MySQL relational database management system.
+ </para>
- </note>
- <para>
- Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
- </para>
- <para>
- You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable><JBOSS_HOME></replaceable>jboss-as/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
- </para>
- <para>
- The following tables show the correspondence between the scripts and databases:
- </para>
- <table id="tabl-Reference_Guide-Introduction-Single_database">
- <title>Single-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
+ </note>
+ <para>
+ Each database software supports ANSI SQL standards but also has its own specifics. Therefore each database has its own configuration setting in the eXo JCR as a database dialect parameter. More detailed configuration of the database can be set by editing the metadata SQL-script files.
+ </para>
+ <para>
+ You can find SQL-scripts in <filename>conf/storage/</filename> directory of the <filename><replaceable><JBOSS_HOME></replaceable>jboss-as/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/lib/exo.jcr.component.core-XXX.XXX.jar</filename> file .
+ </para>
+ <para>
+ The following tables show the correspondence between the scripts and databases:
+ </para>
+ <table id="tabl-Reference_Guide-Introduction-Single_database">
+ <title>Single-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Database
+ </entry>
+ <entry>
+ Script
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql.sql</filename>
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ MySQL DB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-sjdbc.mysql-utf8.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MySQL DB with utf-8
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mysql-utf8.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-sjdbc.pqsql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ PostgresSQL
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.pqsql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-sjdbc.ora.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Oracle DB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.ora.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-sjdbc.db2.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ DB2 9.7
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.db2.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-sjdbc.mssql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MS SQL Server
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.mssql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-sjdbc.sybase.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Sybase
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.sybase.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-sjdbc.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ HSQLDB
+ </entry>
+ <entry>
+ <filename>jcr-sjdbc.sql</filename>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <table id="tabl-Reference_Guide-Introduction-Multi_database">
- <title>Multi-database</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- Database
- </entry>
- <entry>
- Script
- </entry>
+ </table>
+ <table id="tabl-Reference_Guide-Introduction-Multi_database">
+ <title>Multi-database</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ Database
+ </entry>
+ <entry>
+ Script
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- MySQL DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql.sql</filename>
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ MySQL DB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MySQL DB with utf-8
- </entry>
- <entry>
- <filename>jcr-mjdbc.mysql-utf8.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MySQL DB with utf-8
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mysql-utf8.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- PostgresSQL
- </entry>
- <entry>
- <filename>jcr-mjdbc.pqsql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ PostgresSQL
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.pqsql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Oracle DB
- </entry>
- <entry>
- <filename>jcr-mjdbc.ora.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Oracle DB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.ora.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- DB2 9.7
- </entry>
- <entry>
- <filename>jcr-mjdbc.db2.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ DB2 9.7
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.db2.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- MS SQL Server
- </entry>
- <entry>
- <filename>jcr-mjdbc.mssql.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ MS SQL Server
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.mssql.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- Sybase
- </entry>
- <entry>
- <filename>jcr-mjdbc.sybase.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ Sybase
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.sybase.sql</filename>
+ </entry>
- </row>
- <row>
- <entry>
- HSQLDB
- </entry>
- <entry>
- <filename>jcr-mjdbc.sql</filename>
- </entry>
+ </row>
+ <row>
+ <entry>
+ HSQLDB
+ </entry>
+ <entry>
+ <filename>jcr-mjdbc.sql</filename>
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
- <para>
- If a non-ANSI node name is used, you must use a database with MultiLanguage support. Some JDBC drivers need additional parameters for establishing a Unicode friendly connection. For example under mysql it is necessary to add an additional parameter for the JDBC driver at the end of JDBC URL:
- </para>
- <para>
- There are preconfigured configuration files for HSQLDB. Look for these files in /conf/portal and /conf/standalone folders of the jar-file <package>exo.jcr.component.core-XXX.XXX.jar</package> or source-distribution of eXo JCR implementation.
- </para>
- <example id="exam-Reference_Guide-Introduction-Example_Parameter">
- <title>Example Parameter</title>
-
+ </table>
+ <para>
+ If a non-ANSI node name is used, you must use a database with MultiLanguage support. Some JDBC drivers need additional parameters for establishing a Unicode friendly connection. For example under mysql it is necessary to add an additional parameter for the JDBC driver at the end of JDBC URL:
+ </para>
+ <para>
+ There are preconfigured configuration files for HSQLDB. Look for these files in /conf/portal and /conf/standalone folders of the jar-file <package>exo.jcr.component.core-XXX.XXX.jar</package> or source-distribution of eXo JCR implementation.
+ </para>
+ <example id="exam-Reference_Guide-Introduction-Example_Parameter">
+ <title>Example Parameter</title>
+
<programlisting><code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></programlisting>
- </example>
- <para>
- The configuration files are located in service jars <filename>/conf/portal/configuration.xml</filename> (eXo services including JCR Repository Service) and <filename>exo-jcr-config.xml</filename> (repositories configuration) by default. In JBoss Enterprise Portal Platform, the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (repositories configuration).
- </para>
- <para>
- Read more about <xref linkend="chap-Reference_Guide-JCR_configuration" />.
- </para>
+ </example>
+ <para>
+ The configuration files are located in service jars <filename>/conf/portal/configuration.xml</filename> (eXo services including JCR Repository Service) and <filename>exo-jcr-config.xml</filename> (repositories configuration) by default. In JBoss Enterprise Portal Platform, the JCR is configured in portal web application <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR Repository Service and related services) and <filename>repository-configuration.xml</filename> (repositories configuration).
+ </para>
+ <para>
+ Read more about <xref linkend="chap-Reference_Guide-JCR_configuration" />.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Multi_database_Configuration">
- <title>Multi-database Configuration</title>
- <para>
- You need to configure each workspace in a repository as part of multi-database configuration. Databases may reside on remote servers as required.
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
- </para>
- <para>
- For example (two data containers <parameter>jdbcjcr</parameter> - local HSQLDB, <parameter>jdbcjcr1</parameter> - remote MySQL):
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Multi_database_Configuration">
+ <title>Multi-database Configuration</title>
+ <para>
+ You need to configure each workspace in a repository as part of multi-database configuration. Databases may reside on remote servers as required.
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Configure the data containers in the <literal>org.exoplatform.services.naming.InitialContextInitializer</literal> service. It's the JNDI context initializer which registers (binds) naming resources (DataSources) for data containers.
+ </para>
+ <para>
+ For example (two data containers <parameter>jdbcjcr</parameter> - local HSQLDB, <parameter>jdbcjcr1</parameter> - remote MySQL):
+ </para>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-1.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <substeps>
- <step>
- <para>
- Configure the database connection parameters:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>driverliteral</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
- </para>
+ <substeps>
+ <step>
+ <para>
+ Configure the database connection parameters:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>driverliteral</parameter>, e.g. "org.hsqldb.jdbcDriver", "com.mysql.jdbc.Driver", "org.postgresql.Driver"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>url</parameter>, e.g. "jdbc:hsqldb:file:target/temp/data/portal", "jdbc:mysql://exoua.dnsalias.net/jcr"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>username</parameter>, e.g. "sa", "exoadmin"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>username</parameter>, e.g. "sa", "exoadmin"
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>password</parameter>, e.g. "", "exo12321"
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>password</parameter>, e.g. "", "exo12321"
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </substeps>
- <para>
- There can be connection pool configuration parameters (org.apache.commons.dbcp.BasicDataSourceFactory):
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>maxActive</parameter>, e.g. 50
- </para>
+ </substeps>
+ <para>
+ There can be connection pool configuration parameters (org.apache.commons.dbcp.BasicDataSourceFactory):
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>maxActive</parameter>, e.g. 50
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>maxIdle</parameter>, e.g. 5
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>maxIdle</parameter>, e.g. 5
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>initialSize</parameter>, e.g. 5
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>initialSize</parameter>, e.g. 5
+ </para>
- </listitem>
- <listitem>
- <para>
- and other according to <ulink url="http://jakarta.apache.org/commons/dbcp/configuration.html">Apache DBCP configuration</ulink>
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ and other according to <ulink url="http://jakarta.apache.org/commons/dbcp/configuration.html">Apache DBCP configuration</ulink>
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
- <step>
- <para>
- Configure the repository service. Each workspace will be configured for its own data container.
- </para>
- <para>
- For example (two workspaces <parameter>ws</parameter> - jdbcjcr, <parameter>ws1</parameter> - jdbcjcr1):
- </para>
-
+ </step>
+ <step>
+ <para>
+ Configure the repository service. Each workspace will be configured for its own data container.
+ </para>
+ <para>
+ For example (two workspaces <parameter>ws</parameter> - jdbcjcr, <parameter>ws1</parameter> - jdbcjcr1):
+ </para>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-2.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <itemizedlist>
- <listitem>
- <para>
- <parameter>source-name</parameter>: A javax.sql.DataSource name configured in InitialContextInitializer component (was <parameter>sourceName</parameter> prior JCR 1.9);
- </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <parameter>source-name</parameter>: A javax.sql.DataSource name configured in InitialContextInitializer component (was <parameter>sourceName</parameter> prior JCR 1.9);
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>dialect</parameter>: A database dialect, one of <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal>, <literal>db2v8</literal> or <literal>auto</literal> for dialect autodetection;
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>dialect</parameter>: A database dialect, one of <literal>hsqldb</literal>, <literal>mysql</literal>, <literal>mysql-utf8</literal>, <literal>pgsql</literal>, <literal>oracle</literal>, <literal>oracle-oci</literal>, <literal>mssql</literal>, <literal>sybase</literal>, <literal>derby</literal>, <literal>db2</literal>, <literal>db2v8</literal> or <literal>auto</literal> for dialect autodetection;
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>multi-db</parameter>: Enable multi-database container with this parameter (set value "true");
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>max-buffer-size: A</parameter> a threshold (in bytes) after which a <literal>javax.jcr.Value</literal> content will be swapped to a file in a temporary storage. A swap for pending changes, for example.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>max-buffer-size: A</parameter> a threshold (in bytes) after which a <literal>javax.jcr.Value</literal> content will be swapped to a file in a temporary storage. A swap for pending changes, for example.
+ </para>
- </listitem>
- <listitem>
- <para>
- <parameter>swap-directory</parameter>: A path in the file system used to swap the pending changes.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <parameter>swap-directory</parameter>: A path in the file system used to swap the pending changes.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </step>
+ </step>
- </procedure>
-
- <para>
- This procedure configures two workspace which will be persistent in two different databases (<emphasis>ws</emphasis> in HSQLDB and <emphasis>ws1</emphasis> in MySQL).
- </para>
+ </procedure>
+
+ <para>
+ This procedure configures two workspace which will be persistent in two different databases (<emphasis>ws</emphasis> in HSQLDB and <emphasis>ws1</emphasis> in MySQL).
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Single_database_Configuration">
- <title>Single-database Configuration</title>
- <para>
- Configuring a single-database data container is easier than configuring a multi-database data container as only one naming resource must be configured.
- </para>
- <example id="exam-Reference_Guide-Single_database_Configuration-jdbcjcr_Data_Container">
- <title><parameter>jdbcjcr</parameter> Data Container</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Single_database_Configuration">
+ <title>Single-database Configuration</title>
+ <para>
+ Configuring a single-database data container is easier than configuring a multi-database data container as only one naming resource must be configured.
+ </para>
+ <example id="exam-Reference_Guide-Single_database_Configuration-jdbcjcr_Data_Container">
+ <title><parameter>jdbcjcr</parameter> Data Container</title>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-3.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </example>
- <para>
- Configure repository workspaces with this one database. The <parameter>multi-db</parameter> parameter must be set as <literal>false</literal>.
- </para>
- <para>
- For example (two workspaces <parameter>ws</parameter> - <literal>jdbcjcr</literal>, <parameter>ws1</parameter> - <literal>jdbcjcr</literal>):
- </para>
- <example id="exam-Reference_Guide-Single_database_Configuration-Example">
- <title>Example</title>
-
+ </example>
+ <para>
+ Configure repository workspaces with this one database. The <parameter>multi-db</parameter> parameter must be set as <literal>false</literal>.
+ </para>
+ <para>
+ For example (two workspaces <parameter>ws</parameter> - <literal>jdbcjcr</literal>, <parameter>ws1</parameter> - <literal>jdbcjcr</literal>):
+ </para>
+ <example id="exam-Reference_Guide-Single_database_Configuration-Example">
+ <title>Example</title>
+
<programlisting language="XML" role="XML">
<xi:include href="../../../../extras/Advanced_Development_JCR_Configuration/example-4.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </example>
- <para>
- This configures two persistent workspaces in one database (PostgreSQL).
- </para>
- <section id="sect-Reference_Guide-Single_database_Configuration-Configuration_without_DataSource">
- <title>Configuration without DataSource</title>
- <para>
- It is possible to configure the repository without binding <literal>javax.sql.DataSource</literal> in the JNDI service if you have a dedicated JDBC driver implementation with special features like XA transactions, statements/connections pooling etc:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Remove the configuration in <literal>InitialContextInitializer</literal> for your database and configure a new one directly in the workspace container.
- </para>
+ </example>
+ <para>
+ This configures two persistent workspaces in one database (PostgreSQL).
+ </para>
+ <section id="sect-Reference_Guide-Single_database_Configuration-Configuration_without_DataSource">
+ <title>Configuration without DataSource</title>
+ <para>
+ It is possible to configure the repository without binding <literal>javax.sql.DataSource</literal> in the JNDI service if you have a dedicated JDBC driver implementation with special features like XA transactions, statements/connections pooling etc:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Remove the configuration in <literal>InitialContextInitializer</literal> for your database and configure a new one directly in the workspace container.
+ </para>
- </step>
- <step>
- <para>
- Remove parameter <parameter>source-name</parameter> and add next lines instead. Describe your values for a JDBC driver, database UR: and username.
- </para>
+ </step>
+ <step>
+ <para>
+ Remove parameter <parameter>source-name</parameter> and add next lines instead. Describe your values for a JDBC driver, database UR: and username.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <warning>
- <title>Connection Pooling</title>
- <para>
- Ensure the JDBC driver provides connection pooling. Connection pooling is strongly recommended for use with the JCR to prevent a database overload.
- </para>
+ </procedure>
+
+ <warning>
+ <title>Connection Pooling</title>
+ <para>
+ Ensure the JDBC driver provides connection pooling. Connection pooling is strongly recommended for use with the JCR to prevent a database overload.
+ </para>
- </warning>
-
+ </warning>
+
<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
@@ -592,72 +592,72 @@
<property name="password" value=""/>
......</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Single_database_Configuration-Dynamic_Workspace_Creation">
- <title>Dynamic Workspace Creation</title>
- <para>
- Workspaces can be added dynamically during runtime.
- </para>
- <para>
- This can be performed in two steps:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- <literal>ManageableRepository.configWorkspace(WorkspaceEntry wsConfig)</literal>: Register a new configuration in RepositoryContainer and create a WorkspaceContainer.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Single_database_Configuration-Dynamic_Workspace_Creation">
+ <title>Dynamic Workspace Creation</title>
+ <para>
+ Workspaces can be added dynamically during runtime.
+ </para>
+ <para>
+ This can be performed in two steps:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ <literal>ManageableRepository.configWorkspace(WorkspaceEntry wsConfig)</literal>: Register a new configuration in RepositoryContainer and create a WorkspaceContainer.
+ </para>
- </step>
- <step>
- <para>
- <literal>ManageableRepository.createWorkspace(String workspaceName)</literal>: Rreation a new workspace.
- </para>
+ </step>
+ <step>
+ <para>
+ <literal>ManageableRepository.createWorkspace(String workspaceName)</literal>: Creation a new workspace.
+ </para>
- </step>
+ </step>
- </procedure>
-
+ </procedure>
+
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Simple_and_Complex_queries">
- <title>Simple and Complex queries</title>
- <para>
- eXo JCR provides two ways to interact with the database;
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term><literal>JDBCStorageConnection</literal></term>
- <listitem>
- <para>
- Which uses simple queries. Simple queries do not use sub queries, left or right joins. They are implemented in such a way as to support as many database dialects as possible.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Simple_and_Complex_queries">
+ <title>Simple and Complex queries</title>
+ <para>
+ eXo JCR provides two ways to interact with the database;
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term><literal>JDBCStorageConnection</literal></term>
+ <listitem>
+ <para>
+ Which uses simple queries. Simple queries do not use sub queries, left or right joins. They are implemented in such a way as to support as many database dialects as possible.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term><literal>CQJDBCStorageConection</literal></term>
- <listitem>
- <para>
- Which uses complex queries. Complex queries are optimized to reduce the number of database calls.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>CQJDBCStorageConection</literal></term>
+ <listitem>
+ <para>
+ Which uses complex queries. Complex queries are optimized to reduce the number of database calls.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
- <para>
- Simple queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</literal>:
- </para>
-
+ </variablelist>
+ <para>
+ Simple queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer</literal>:
+ </para>
+
<programlisting language="XML" role="XML"><workspaces>
<workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
@@ -665,10 +665,10 @@
</workspace>
</worksapces>
</programlisting>
- <para>
- Complex queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</literal>:
- </para>
-
+ <para>
+ Complex queries will be used if you chose <literal>org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer</literal>:
+ </para>
+
<programlisting language="XML" role="XML"><workspaces>
<workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
@@ -676,73 +676,73 @@
</workspace>
</worksapces></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Force_Query_Hints">
- <title>Force Query Hints</title>
- <para>
- Some databases, such as Oracle and MySQL, support hints to increase query performance. The eXo JCR has separate Complex Query implementations for the Orcale database dialect, which uses query hints to increase performance for few important queries.
- </para>
- <para>
- To enable this option, use the following configuration property:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Force_Query_Hints">
+ <title>Force Query Hints</title>
+ <para>
+ Some databases, such as Oracle and MySQL, support hints to increase query performance. The eXo JCR has separate Complex Query implementations for the Orcale database dialect, which uses query hints to increase performance for few important queries.
+ </para>
+ <para>
+ To enable this option, use the following configuration property:
+ </para>
+
<programlisting language="XML" role="XML"><workspace name="ws" auto-init-root-nodetype="nt:unstructured">
<container class="org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer">
<properties>
<property name="dialect" value="oracle"/>
<property name="force.query.hints" value="true" />
......</programlisting>
- <para>
- Query hints are only used for Complex Queries with the Oracle dialect. For all other dialects this parameter is ignored.
- </para>
+ <para>
+ Query hints are only used for Complex Queries with the Oracle dialect. For all other dialects this parameter is ignored.
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
- <title>Notes for Microsoft Windows users</title>
- <para>
- The current configuration of eXo JCR uses <ulink url="http://commons.apache.org/dbcp/">Apache DBCP</ulink> connection pool (<literal>org.apache.commons.dbcp.BasicDataSourceFactory</literal>).
- </para>
- <para>
- It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
- </para>
- <para>
- To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
- </para>
- <para>
- This is done by editing two registry keys within the <parameter>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</parameter> node. Both of these keys are unset by default. To set the keys as required:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Set the <parameter>MaxUserPort</parameter> registry key to <parameter>=dword:00001b58</parameter>. This sets the maximum of open ports to 7000 or higher (the default is 5000).
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-JDBC_Data_Container_Config-Notes_for_Microsoft_Windows_users">
+ <title>Notes for Microsoft Windows users</title>
+ <para>
+ The current configuration of eXo JCR uses <ulink url="http://commons.apache.org/dbcp/">Apache DBCP</ulink> connection pool (<literal>org.apache.commons.dbcp.BasicDataSourceFactory</literal>).
+ </para>
+ <para>
+ It is possible to set a high value for the <parameter>maxActive</parameter> parameter in the <filename>configuration.xml</filename> file. This creates a high use of TCP/IP ports from a client machine inside the pool (the JDBC driver, for example). As a result, the data container can throw exceptions like "<emphasis>Address already in use</emphasis>".
+ </para>
+ <para>
+ To solve this problem, you must configure the client's machine networking software to use shorter timeouts for open TCP/IP ports.
+ </para>
+ <para>
+ This is done by editing two registry keys within the <parameter>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters</parameter> node. Both of these keys are unset by default. To set the keys as required:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Set the <parameter>MaxUserPort</parameter> registry key to <parameter>=dword:00001b58</parameter>. This sets the maximum of open ports to 7000 or higher (the default is 5000).
+ </para>
- </step>
- <step>
- <para>
- Set <parameter>TcpTimedWaitDelay</parameter> to <parameter>=dword:0000001e</parameter>. This sets <parameter>TIME_WAIT</parameter> parameter to 30 seconds (the default is 240).
- </para>
+ </step>
+ <step>
+ <para>
+ Set <parameter>TcpTimedWaitDelay</parameter> to <parameter>=dword:0000001e</parameter>. This sets <parameter>TIME_WAIT</parameter> parameter to 30 seconds (the default is 240).
+ </para>
- </step>
+ </step>
- </procedure>
-
- <example id="exam-Reference_Guide-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
- <title>Sample Registry File</title>
-
+ </procedure>
+
+ <example id="exam-Reference_Guide-Notes_for_Microsoft_Windows_users-Sample_Registry_File">
+ <title>Sample Registry File</title>
+
<programlisting>Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"MaxUserPort"=dword:00001b58
"TcpTimedWaitDelay"=dword:0000001e</programlisting>
- </example>
+ </example>
- </section>
-
+ </section>
+
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/data-container.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -125,7 +125,7 @@
</varlistentry>
<varlistentry>
- <term>Value storage lifecycle</term>
+ <term>Value storage life-cycle</term>
<listitem>
<para>
Value storage is used from within the container. <emphasis>Read</emphasis> actions are related to container reads while <emphasis>write</emphasis> actions are commit-related. The container (connection) implementation should use transaction capabilities of the storages in the same way as for other operations.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jca.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jca.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/jca.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -8,7 +8,7 @@
<section id="sect-Reference_Guide-The_JCA_Resource_Adapter-Overview">
<title>Overview</title>
<para>
- eXo JCR supports <emphasis>J2EE Connector Architecture</emphasis> 1.5, thus If you would like to delegate the JCR Session lifecycle to your application server, you can use the JCA Resource Adapter for eXo JCR if your application server supports JCA 1.5. This adapter only supports XA Transaction, in other words you cannot use it for local transactions. Since the JCR Sessions have not been designed to be shareable, the session pooling is simply not covered by the adapter.
+ eXo JCR supports <emphasis>J2EE Connector Architecture</emphasis> 1.5, thus If you would like to delegate the JCR Session life-cycle to your application server, you can use the JCA Resource Adapter for eXo JCR if your application server supports JCA 1.5. This adapter only supports XA Transaction, in other words you cannot use it for local transactions. Since the JCR Sessions have not been designed to be shareable, the session pooling is simply not covered by the adapter.
</para>
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -58,7 +58,7 @@
</listitem>
<listitem>
<para>
-The <parameter>cache.jdbc.fqn.type</parameter> and <parameter>cache.jdbc.node.type</parameter> paramters must be configured according to the database being used.
+The <parameter>cache.jdbc.fqn.type</parameter> and <parameter>cache.jdbc.node.type</parameter> parameters must be configured according to the database being used.
</para>
</listitem>
</itemizedlist> --> <para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/acl-ext.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/acl-ext.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/acl-ext.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -99,7 +99,7 @@
...
</workspace></programlisting>
<para>
- When implementing <literal>AccessManager</literal>, the <literal>hasPermission()</literal> method has to be overriden so it uses the current invocation context at its discretion. For instance, it may get the current node's metadata and make a decision if the current User has appropriate permissions. Use Invocation Context's runtime properties to make a decision about current Session's privileges.
+ When implementing <literal>AccessManager</literal>, the <literal>hasPermission()</literal> method has to be overridden so it uses the current invocation context at its discretion. For instance, it may get the current node's metadata and make a decision if the current User has appropriate permissions. Use Invocation Context's runtime properties to make a decision about current Session's privileges.
</para>
<para>
Simplified Sequence diagram for the <literal>Session.getNode()</literal> method for example:
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/other/link-producer.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,93 +4,93 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Link_Producer_Service">
- <title>Link Producer Service</title>
- <para>
- The Link Producer Service is a simple service which generates an file that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDav service. On dispatching a <literal>GET</literal> request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDav.
- </para>
- <para>
- Link Producer has a simple configuration which is described below:
- </para>
-
+ <title>Link Producer Service</title>
+ <para>
+ The Link Producer Service is a simple service which generates an file that is compatible with the Microsoft link file format. It is an extension of the REST Framework library and is included into the WebDav service. On dispatching a <literal>GET</literal> request the service generates the content of an <filename>.lnk</filename> file, which points to a JCR resource via WebDav.
+ </para>
+ <para>
+ Link Producer has a simple configuration which is described below:
+ </para>
+
<programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.webdav.lnkproducer.LnkProducer</key>
<type>org.exoplatform.services.webdav.lnkproducer.LnkProducer</type>
</component></programlisting>
- <para>
- When using JCR the resource can be addressed by WebDav reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/somenode/somefile.extention</uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...</uri>
- </para>
- <para>
- Please note, that when using the portal mode the REST servlet is available using a reference (href) like <uri>http://localhost:8080/portal/rest/...</uri>
- </para>
- <para>
- The name of the <filename>.lnk</filename> file can be any. But for the best compatibility it must be the same as the name of the JCR resource.
- </para>
- <para>
- Here is a step by step sample of a use case of the link producer.
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Type valid reference to the resource, using the link producer in your browser's adress field:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer1.JPG" width="444" />
- </imageobject>
+ <para>
+ When using JCR the resource can be addressed by WebDav reference (href) like <uri>http://host:port/rest/jcr/repository/workspace/somenode/somefile.extension</uri> , the link servlet must be called for this resource by several hrefs, like <uri>http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...</uri>
+ </para>
+ <para>
+ Please note, that when using the portal mode the REST servlet is available using a reference (href) like <uri>http://localhost:8080/portal/rest/...</uri>
+ </para>
+ <para>
+ The name of the <filename>.lnk</filename> file can be any. But for the best compatibility it must be the same as the name of the JCR resource.
+ </para>
+ <para>
+ Here is a step by step sample of a use case of the link producer.
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Type valid reference to the resource, using the link producer in your browser's adress field:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer1.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- Internet Explorer will give a dialog window requesting to Open a file or to Save it. Click on the Open button
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer2.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Internet Explorer will give a dialog window requesting to Open a file or to Save it. Click on the Open button
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer2.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- In Windows system an <filename>.lnk</filename> file will be downloaded and opened with the application which is registered to open the files, which are pointed to by the <filename>.lnk</filename> file. In case of a .doc file, Windows opens Microsoft Office Word which will try to open a remote file (test0000.doc). Maybe it will be necessary to enter USERNAME and PASSWORD.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer3.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ In Windows system an <filename>.lnk</filename> file will be downloaded and opened with the application which is registered to open the files, which are pointed to by the <filename>.lnk</filename> file. In case of a .doc file, Windows opens Microsoft Office Word which will try to open a remote file (test0000.doc). Maybe it will be necessary to enter USERNAME and PASSWORD.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer3.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
- <step>
- <para>
- Edit the file in Microsoft Word.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/other/lnkproducer4.JPG" width="444" />
- </imageobject>
+ </step>
+ <step>
+ <para>
+ Edit the file in Microsoft Word.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/other/lnkproducer4.JPG" width="444" />
+ </imageobject>
- </mediaobject>
+ </mediaobject>
- </step>
+ </step>
- </procedure>
-
- <para>
- The Link Producer is necessary for opening/editing and then saving the remote files in Microsoft Office Word, without any further updates.
- </para>
- <para>
- Also the Link Producer can be referenced to from an HTML page. If page contains code susch as...
- </para>
-
-<programlisting language="HTML" role="HTML"><a href="http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...">somefile.extention</a></programlisting>
- <para>
- ...the file "somefile.extention" will open directly.
- </para>
+ </procedure>
+
+ <para>
+ The Link Producer is necessary for opening/editing and then saving the remote files in Microsoft Office Word, without any further updates.
+ </para>
+ <para>
+ Also the Link Producer can be referenced to from an HTML page. If page contains code such as...
+ </para>
+
+<programlisting language="HTML" role="HTML"><a href="http://localhost:8080/rest/lnkproducer/openit.lnk?path=/repository/worksp...">somefile.extension</a></programlisting>
+ <para>
+ ...the file "somefile.extension" will open directly.
+ </para>
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/ftp.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/ftp.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/ftp.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -131,7 +131,7 @@
<value>application/zip</value>
</value-param></programlisting>
<para>
- The mime type of a created file is chosen by using its file extention. In case, a server cannot find the corresponding mime type, this value is used.
+ The mime type of a created file is chosen by using its file extension. In case, a server cannot find the corresponding mime type, this value is used.
</para>
</listitem>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-WebDAV">
- <!-- This document was created with Syntext Serna Free. --> <title>WebDAV</title>
+ <title>WebDAV</title>
<section id="sect-Reference_Guide-WebDAV-Introduction">
<title>Introduction</title>
<para>
@@ -30,7 +30,7 @@
</para>
<note>
<title>Note:</title>
- <!-- <remark>DOCS NOTE: I have no idea what this means!</remark> --> <para>
+ <para>
If you try the "in ECM" option, add "@ecm" to the user's password. Alternatively, you may modify jaas.conf by adding the <emphasis role="bold">domain=ecm</emphasis> option as follows:
</para>
@@ -45,7 +45,7 @@
<section id="sect-Reference_Guide-WebDAV-WebDAV_Configuration">
<title>WebDAV Configuration</title>
<para>
- The WebDAV configuration file: <!-- is defined in the <remark><filename>DOC NOTE: where/is/this/file.xml</filename></remark> -->
+ The WebDAV configuration file:
</para>
<programlisting language="XML" role="XML"><component>
@@ -341,7 +341,7 @@
<formalpara id="form-Reference_Guide-WebDAV_Considerations-Windows_7">
<title>Windows 7</title>
<para>
- When attemping to set up a web folder through <guilabel>Add a Network Location</guilabel> or <guilabel>Map a Network Drive</guilabel> through <guilabel>My Computer</guilabel>, an error message stating <guilabel>The folder you entered does not appear to be valid. Please choose another</guilabel> or <guilabel>Windows cannot access … Check the spelling of the name. Otherwise, there might be …</guilabel> may be encountered. These errors may appear when you are using SSL or non-SSL.
+ When attempting to set up a web folder through <guilabel>Add a Network Location</guilabel> or <guilabel>Map a Network Drive</guilabel> through <guilabel>My Computer</guilabel>, an error message stating <guilabel>The folder you entered does not appear to be valid. Please choose another</guilabel> or <guilabel>Windows cannot access … Check the spelling of the name. Otherwise, there might be …</guilabel> may be encountered. These errors may appear when you are using SSL or non-SSL.
</para>
</formalpara>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/query-handler-config.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -20,7 +20,7 @@
</mediaobject>
<para>
- As this implementation designed for clustered environment it has additional mechanisms for data delivery within cluster. Actual text extraction jobs done on the same node that does content operations (i.e. write operation). Prepared "documents" (Lucene term that means block of data ready for indexing) are replicated withing cluster nodes and processed by local indexes. So each cluster instance has the same index content. When new node joins the cluster it has no initial index, so it must be created. There are some supported ways of doing this operation. The simplest is to simply copy the index manually but this is not intended for use. If no initial index found JCR uses automated sceneries. They are controlled via configuration (see "index-recovery-mode" parameter) offering full re-indexing from database or copying from another cluster node.
+ As this implementation designed for clustered environment it has additional mechanisms for data delivery within cluster. Actual text extraction jobs done on the same node that does content operations (i.e. write operation). Prepared "documents" (Lucene term that means block of data ready for indexing) are replicated withing cluster nodes and processed by local indexes. So each cluster instance has the same index content. When new node joins the cluster it has no initial index, so it must be created. There are some supported ways of doing this operation. The simplest is to simply copy the index manually but this is not intended for use. If no initial index found JCR uses automated scenarios. They are controlled via configuration (see "index-recovery-mode" parameter) offering full re-indexing from database or copying from another cluster node.
</para>
<para>
For some reasons having a multiple index copies on each instance can be costly. So shared index can be used instead (see diagram below).
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -26,7 +26,7 @@
</step>
<step>
<para>
- When repository has been created the user-node will broadcast a message to all <literal>clusterNodes</literal> with the <literal>RepositoryEntry</literal>. Wach cluster node will start a new Repository.
+ When repository has been created the user-node will broadcast a message to all <literal>clusterNodes</literal> with the <literal>RepositoryEntry</literal>. Each cluster node will start a new Repository.
</para>
</step>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/ws/framework-for-cross-domain-ajax.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/ws/framework-for-cross-domain-ajax.xml 2011-12-08 00:39:06 UTC (rev 8206)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/ws/framework-for-cross-domain-ajax.xml 2011-12-08 01:29:19 UTC (rev 8207)
@@ -60,13 +60,13 @@
3) Create in the start page IFRAME (name it - "client iframe") and insert it in the document from ServerA (client.
</para>
<para>
- 4) In "client iframe" create ne IFRAME element ("server iframe") and insert it in the document from ServerB (server.html). Documents (client.html and server.html) contain special script that can transfer data between ifarmes.
+ 4) In "client iframe" create ne IFRAME element ("server iframe") and insert it in the document from ServerB (server.html). Documents (client.html and server.html) contain special script that can transfer data between iframes.
</para>
<para>
5) "Client iframe" transfer information about HTTP method and URL that we want do cross-domain request to "server iframe".
</para>
<para>
- 6) "Server iframe" do simple XmlHttpRequest to the service that we need (it can do that because download from same domain) and get informaton from service.
+ 6) "Server iframe" do simple XmlHttpRequest to the service that we need (it can do that because download from same domain) and get information from service.
</para>
<para>
7) "Server iframe" transfer data to "client iframe" and now we get information that we want.
13 years
gatein SVN: r8206 - in epp/docs/branches/5.2/Reference_Guide/en-US: modules and 1 other directory.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-07 19:39:06 -0500 (Wed, 07 Dec 2011)
New Revision: 8206
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
Log:
Re-import WSRP content
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2011-12-07 04:37:41 UTC (rev 8205)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.ent 2011-12-08 00:39:06 UTC (rev 8206)
@@ -16,4 +16,5 @@
<!-- Version Specifcs: -->
<!ENTITY VX "5">
<!ENTITY VY "5.2">
-<!ENTITY VZ "5.2.0">
\ No newline at end of file
+<!ENTITY VZ "5.2.0">
+<!ENTITY WSRP_VERSION "2.1.0-GA">
\ No newline at end of file
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2011-12-07 04:37:41 UTC (rev 8205)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/WSRP.xml 2011-12-08 00:39:06 UTC (rev 8206)
@@ -3,237 +3,272 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "../Reference_Guide.ent">
%BOOK_ENTITIES;
]>
- <chapter id="wsrp">
- <title><remark>Web Services for Remote Portlets (WSRP)</remark></title>
-
- <section>
- <title>Introduction</title>
-
- <para>
- The Web Services for Remote Portlets specification defines a web service interface for accessing and interacting with interactive presentation-oriented web services. It has been produced through the efforts of the Web Services for Remote Portlets (WSRP) OASIS Technical Committee. It is based on the requirements gathered and on the concrete proposals made to the committee.
- </para>
-
- <para>
- Scenarios that motivate WSRP functionality include:
- <itemizedlist>
- <listitem>
- <para>
- Content hosts, such as portal servers, providing Portlets as presentation-oriented web services that can be used by aggregation engines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Aggregating frameworks, including portal servers, consuming presentation-oriented web services offered by content providers and integrating them into the framework.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- More information on WSRP can be found on the <ulink url="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp">official website for WSRP</ulink>. We suggest reading the <ulink url="http://www.oasis-open.org/committees/download.php/10539/wsrp-primer-1.0.html">primer</ulink> for a good, albeit technical, overview of WSRP.
- </para>
- </section>
-
- <section id="wsrp_support">
- <title>Level of support in JBoss Enterprise Portal Platform</title>
-
- <para>
- The WSRP Technical Committee defined <ulink url="http://www.oasis-open.org/committees/download.php/3073">WSRP Use Profiles</ulink> to help with WSRP interoperability. We will refer to terms defined in that document in this section.
- </para>
-
- <para>
- JBoss Enterprise Portal Platform provides a Simple level of support for our WSRP Producer except that out-of-band registration is not currently handled. We support in-band registration and persistent local state (which are defined at the Complex level).
- </para>
-
- <para>
- On the Consumer side, JBoss Enterprise Portal Platform provides a Medium level of support for WSRP, except that we only handle HTML markup (as JBoss Enterprise Portal Platform itself doesn't handle other markup types). We do support explicit portlet cloning and we fully support the PortletManagement interface.
- </para>
-
- <para>
- As far as caching goes, we have Level 1 Producer and Consumer. We support Cookie handling properly on the Consumer and our Producer requires initialization of cookies (as we have found that it improved interoperabilty with some consumers). We don't support custom window states or modes, as JBoss Enterprise Portal Platform doesn't either. We do, however, support CSS on both the Producer (though it's more a function of the portlets than inherent Producer capability) and Consumer.
- </para>
-
- <para>
- While we provide a complete implementation of WSRP 1.0, we do need to go through the <ulink url="http://www.oasis-open.org/committees/download.php/6018">Conformance statements</ulink> and perform more interoperability testing (an area that needs to be better supported by the WSRP Technical Committee and Community at large).
- </para>
-
- <para>
- JBoss Enterprise Portal Platform supports WSRP 2.0 with a complete implementation of the non-optional features. The only features that we have not implemented is support for lifetimes and leasing support.
- </para>
-
- <note>
- <para>
- As of version &VY; of JBoss Enterprise Portal Platform, WSRP is only activated and supported when JBoss Enterprise Portal Platform is deployed on JBoss Application Server.
- </para>
- </note>
- </section>
-
- <section>
- <title>Deploying JBoss Enterprise Portal Platform's WSRP services</title>
-
- <para>
- JBoss Enterprise Portal Platform provides a complete support of WSRP 1.0 and 2.0 standard interfaces and offers both consumer and producer services. Starting with version 2.1.0-GA of the component, WSRP is packaged as a JBoss Enterprise Portal Platform extension and is now self-contained in an easy to install package named <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear</filename> where <filename>$JBOSS_PROFILE_HOME</filename> refers to your JBoss AS profile directory (<filename>default</filename>, for instance).
- </para>
-
- <para>
- The extension itself is composed of the following components, assuming <code>$WSRP_VERSION</code> (at the time of the writing, it was 2.1.0-GA) is the version of the WSRP component and <code>$PORTAL_VERSION</code> (at the time of the writing, it was &VY;) is the current JBoss Enterprise Portal Platform version:
- <itemizedlist>
- <listitem>
- <para>
- <filename>META-INF</filename> contains files necessary for EAR packaging. The only file that is of interest from a user perspective is <filename>gatein-wsse-consumer.xml</filename> which allows you to configure WS-Security support for the consumer. Please see the <link linkend="wss_configuration">WSRP and WS-Security</link> section for more details.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>extension-component-$PORTAL_VERSION.jar</filename>, which contains the components needed to integrate the WSRP component into JBoss Enterprise Portal Platform. It also includes the default configuration files for the WSRP producer and the default WSRP consumers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>extension-config-$PORTAL_VERSION.jar</filename>, which contains the configuration file needed by the GateIn extension mechanism to properly register this EAR as an extension.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>extension-war-$PORTAL_VERSION.war</filename>, which contains the configuration files needed by the GateIn extension mechanism to properly setup the WSRP service. It includes <filename>wsrp-configuration.xml</filename> which, in particular, configures several options for the <code>WSRPServiceIntegration</code> component at the heart of the WSRP integration in JBoss Enterprise Portal Platform.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>lib</filename>, which contains the different libraries needed by the WSRP service.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>wsrp-admin-gui-$WSRP_VERSION.war</filename>, which contains the WSRP Configuration portlet with which you can configure consumers to access remote servers and how the WSRP producer is configured.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>wsrp-producer-jb5wsss-$WSRP_VERSION.war</filename>, which contains the producer-side support for WS-Security. The only file of interest from a user perspective is <filename>gatein-wsse-producer.xml</filename> which allows you to configure WS-Security support for the producer. Please see the <link linkend="wss_configuration">WSRP and WS-Security</link> section for more details.
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para>
- If you're not going to use WSRP in JBoss Enterprise Portal Platform, it won't adversely affect your installation to leave it as-is. Otherwise, you can just remove the <filename>gatein-wsrp-integration.ear</filename> file from your AS deploy directory.
- </para>
-
- <section id="wsrp-ports">
- <title>Considerations to use WSRP when running JBoss Enterprise Portal Platform on a non-default port or hostname</title>
-
- <para>
- JBoss WS (the web service stack that JBoss Enterprise Portal Platform uses) should take care of the details of updating the port and host name used in WSDL. See the <ulink url="http://community.jboss.org/wiki/JBossWS-UserGuide#Configuration">JBoss WS user guide on that subject </ulink> for more details.
- </para>
-
- <para>
- Of course, if you have modified the host name and port on which your server runs, you will need to update the configuration for the consumer used to consume JBoss Enterprise Portal Platform's 'self' producer. Please refer to the <xref linkend="consumer_configuration"/> to learn how to do so.
- </para>
- </section>
- </section>
-
- <section>
- <title>Securing WSRP</title>
-
- <section>
- <title>Considerations to use WSRP with SSL</title>
-
- <para>
- It is possible to use WSRP over SSL for secure exchange of data. Please refer to the <ulink url="http://community.jboss.org/wiki/ConfiguringWSRPforuseoverSSL">instructions</ulink> on how to do so from <ulink url="http://community.jboss.org/wiki/GateIn">GateIn's wiki</ulink>.
- </para>
- </section>
-
- <section>
- <title>WSRP and WS-Security</title>
-
- <para>
- Portlets may present different data or options depending on the currently authenticated user. For remote portlets, this means having to propagate the user credentials from the consumer back to the producer in a safe and secure manner. The WSRP specification does not directly specify how this should be accomplished, but delegates this work to the existing WS-Security standards.
- </para>
-
- <note>
- <title>Web Container Compatibility</title>
-
- <para>
- WSRP and WS-Security is currently only supported on JBoss Enterprise Portal Platform when running on top of JBoss AS 5.
+<chapter id="wsrp">
+ <title>Web Services for Remote Portlets (WSRP)</title>
+
+ <section>
+ <title>Introduction</title>
+ <para>The Web Services for Remote Portlets specification defines a web service interface for accessing and
+ interacting with interactive presentation-oriented web services. It has been produced through the efforts of
+ the Web Services for Remote Portlets (WSRP) OASIS Technical Committee. It is based on the requirements
+ gathered and on the concrete proposals made to the committee.
+ </para>
+
+ <para>Scenarios that motivate WSRP functionality include:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Content hosts, such as portal servers, providing Portlets as presentation-oriented web services
+ that can be used by aggregation engines.
</para>
- </note>
-
- <warning>
- <title>Encryption</title>
-
- <para>
- You will want to encrypt the credentials being sent between the consumer and producer, otherwise they will be sent in plain text and could be easily intercepted. You can either configure WS-Security to encrypt and sign the SOAP messages being sent, or secure the transport layer by using an https endpoint. Failure to encrypt the soap message or transport layer will result in the username and password being sent in plain text. <emphasis role="bold">Use of encryption is strongly recommended.</emphasis>
+ </listitem>
+ <listitem>
+ <para>Aggregating frameworks, including portal servers, consuming presentation-oriented web services
+ offered by content providers and integrating them into the framework.
</para>
- </warning>
-
- <important>
- <title>Credentials</title>
-
+ </listitem>
+ </itemizedlist>
+ <para>More information on WSRP can be found on the
+ <ulink url="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrp">official website for WSRP</ulink>.
+ Further suggested reading is the
+ <ulink url="http://www.oasis-open.org/committees/download.php/10539/wsrp-primer-1.0.html">primer</ulink>
+ for a good, albeit technical, overview of WSRP.
+ </para>
+ </section>
+
+ <section id="wsrp_support">
+ <title>Level of support in JBoss Enterprise Portal Platform</title>
+ <para>The WSRP Technical Committee defined
+ <ulink url="http://www.oasis-open.org/committees/download.php/3073">WSRP Use Profiles</ulink>
+ to help with WSRP interoperability. This section will refer to terms defined in that document.
+ </para>
+
+ <para>JBoss Enterprise Portal Platform provides a Simple level of support for the WSRP Producer except that out-of-band registration
+ is not currently handled. In-band registration and persistent local state (which are
+ defined at the Complex level) are supported.
+ </para>
+
+ <para>On the Consumer side, JBoss Enterprise Portal Platform provides a Medium level of support for WSRP, except that the consumer only handles
+ HTML markup (as JBoss Enterprise Portal Platform itself does not handle other markup types). It does support explicit portlet
+ cloning and it fully supports the PortletManagement interface.
+ </para>
+
+ <para>As far as caching goes, the component has Level 1 Producer and Consumer. Cookie handling is supported properly on the
+ Consumer and the Producer requires initialization of cookies (it has been found that it improves interoperability
+ with some consumers). The component does not support custom window states or modes, as JBoss Enterprise Portal Platform does not. The component does,
+ however, support CSS on both the Producer (though it is more a function of the portlets than inherent Producer
+ capability) and Consumer.
+ </para>
+
+ <para>While a complete implementation of WSRP 1.0 is provided, the community developers do need to go through the
+ <ulink url="http://www.oasis-open.org/committees/download.php/6018">Conformance statements</ulink>
+ and perform more interoperability testing (an area that needs to be better supported by the WSRP Technical
+ Committee and Community at large).
+ </para>
+
+ <para>JBoss Enterprise Portal Platform supports WSRP 2.0 with a complete implementation of the non-optional features. The only
+ features not implemented are support for lifetimes and leasing
+ support.
+ </para>
+
+ <note>
+ <title>Note</title>
+ <para>As of version &VZ; of JBoss Enterprise Portal Platform, WSRP is only activated and supported
+ when JBoss Enterprise Portal Platform is deployed on JBoss Application Server.
+ </para>
+ </note>
+ </section>
+
+ <section>
+ <title>Deploying JBoss Enterprise Portal Platform's WSRP services</title>
+ <para>
+ JBoss Enterprise Portal Platform provides a complete support of WSRP 1.0 and 2.0 standard interfaces and offers both consumer and
+ producer services. Starting with version 2.1.0-GA of the component, WSRP is packaged as a JBoss Enterprise Portal Platform
+ extension and is now self-contained in an easy to install package named
+ <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear</filename>
+ where
+ <filename>$JBOSS_PROFILE_HOME</filename>
+ refers to your JBoss AS profile directory (<filename>default</filename>, for instance).
+ </para>
+ <para>
+ The extension itself is composed of the following components, assuming
+ <replaceable>$WSRP_VERSION</replaceable>
+ (at the time of the writing, it was &WSRP_VERSION;) is the version of the WSRP component and
+ <replaceable>$PORTAL_VERSION</replaceable>
+ (at the time of the writing, it was &VZ;) is the current JBoss Enterprise Portal Platform version:
+ </para>
+ <itemizedlist>
+ <listitem>
<para>
- When the consumer sends the user credentials to the producer, it is sending the credentials for the currently authenticated user in the consumer. This makes signing in to remote portlets transparent to end users, but also requires that the producer and consumer use the same credentials. This means that the username and password must be the same and valid on both servers.
+ <filename>META-INF</filename>
+ contains files necessary for EAR packaging. The only file that is of interest from a user perspective
+ is
+ <filename>gatein-wsse-consumer.xml</filename>
+ which allows you to configure WS-Security support for the consumer. Please see the
+ <xref linkend="wss_configuration"/> section for more details.
</para>
-
+ </listitem>
+ <listitem>
<para>
- The recommended approach for this situation would be to use a common ldap configuration. Please see the user guide on how to configure ldap for use with JBoss Enterprise Portal Platform
+ The <filename>extension-component-$PORTAL_VERSION.jar</filename>, which contains the components needed to
+ integrate the WSRP component into JBoss Enterprise Portal Platform. It also includes the default configuration files for
+ the WSRP producer and the default WSRP consumers.
</para>
- </important>
-
- <para>
- The GateIn Wiki article, <ulink url="http://community.jboss.org/wiki/GateInWSRPAndWebServiceSecurity"> GateIn WSRP and Web Service Security</ulink>, also provides a step-by-step example on how to configure WSRP with WS-Security.
- </para>
-
- <section id="wss_configuration">
- <title>WS-Security Configuration</title>
-
+ </listitem>
+ <listitem>
<para>
- JBoss Enterprise Portal Platform uses JBossWS Native to handle ws-security. Please see the WS-Security section of the <ulink url="http://www.jboss.org/jbossas/docs/5-x">JBoss AS 5 Administration and Configuration Guide </ulink> for indepth configuration options. Please note that since the consumer passes its credentials to the producer, the consumer will act as the wss client and the producer will act as the wss server.
+ The <filename>extension-config-$PORTAL_VERSION.jar</filename>, which contains the configuration file
+ needed by the GateIn extension mechanism to properly register this EAR as an extension.
</para>
-
+ </listitem>
+ <listitem>
<para>
- The following are the JBossWS Native configuration files which need to be configure for WSRP:
+ The <filename>extension-war-$PORTAL_VERSION.war</filename>, which contains the configuration files
+ needed by the portal extension mechanism to properly setup the WSRP service. It includes
+ <filename>wsrp-configuration.xml</filename>
+ which, in particular, configures several options for the
+ <code>WSRPServiceIntegration</code>
+ component at the heart of the WSRP integration in JBoss Enterprise Portal Platform.
</para>
-
- <itemizedlist>
- <listitem>
- <para>
- <filename>gatein-wsrp-integration.ear/META-INF/gatein-wsse-consumer.xml</filename>: JBossWS configuration file for the consumer.
- </para>
- </listitem>
-
- <listitem>
- <para>
- <filename>gatein-wsrp-integration.ear/wsrp-producer-jb5wss.war/WEB-INF/conf/gatein-wsse-producer.xml </filename>: JBossWS configuration file for the producer.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section>
- <title>WS-Security Producer Configuration</title>
-
+ </listitem>
+ <listitem>
<para>
- Other than the JBossWS configuration file mention above, no other configuration changes should be necessary for the producer.
+ The <filename>lib</filename> directory, which contains the different libraries needed by the WSRP service.
</para>
- </section>
-
- <section>
- <title>WS-Security Consumer Configuration</title>
-
+ </listitem>
+ <listitem>
<para>
- The consumer requires a few changes before it will function properly with WS-Security. The consumer needs access to the current servlet request since this is used to retrieve the currently authenticated user. In order for the consumer to access this information, it needs a special servlet-filter added to the portal.
+ The <filename>wsrp-admin-gui-$WSRP_VERSION.war</filename>, which contains the WSRP Configuration portlet
+ with which you can configure consumers to access remote servers and how the WSRP producer is
+ configured.
</para>
-
+ </listitem>
+ <listitem>
<para>
- In <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> add the following information:
+ The <filename>wsrp-producer-jb5wsss-$WSRP_VERSION.war</filename>, which contains the producer-side
+ support for WS-Security. The only file of interest from a user perspective is
+ <filename>gatein-wsse-producer.xml</filename> which allows you to configure WS-Security support for
+ the producer. Please see the <xref linkend="wss_configuration"/> section.
+ for more details.
</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ If you are not going to use WSRP in JBoss Enterprise Portal Platform, it will not adversely affect your installation to leave it
+ as-is. Otherwise, you can just remove the
+ <filename>gatein-wsrp-integration.ear</filename>
+ file from your AS deploy directory.
+ </para>
+
+ <section id="wsrp-ports">
+ <title>Considerations to use WSRP when running JBoss Enterprise Portal Platform on a non-default port or hostname</title>
+ <para>
+ JBoss WS (the web service stack that JBoss Enterprise Portal Platform uses) should take care of the details of updating the
+ port and host name used in WSDL. See the
+ <ulink url="http://community.jboss.org/wiki/JBossWS-UserGuide#Configuration">JBoss WS user guide on that
+ subject
+ </ulink>
+ for more details.
+ </para>
+ <para>
+ Of course, if you have modified the host name and port on which your server runs, you will
+ need to
+ update the configuration for the consumer used to consume JBoss Enterprise Portal Platform's 'self' producer. Please refer to
+ the
+ <xref linkend="consumer_configuration"/>
+ to learn how to do so.
+ </para>
+ </section>
+ </section>
+
+ <section>
+ <title>Securing WSRP</title>
+ <section>
+ <title>Considerations to use WSRP with SSL</title>
+ <para>It is possible to use WSRP over SSL for secure exchange of data. Please refer to the
+ <ulink url="http://community.jboss.org/wiki/ConfiguringWSRPforuseoverSSL">instructions</ulink>
+ on how to do so from
+ <ulink url="http://community.jboss.org/wiki/GateIn">GateIn's wiki</ulink>.
+ </para>
+ </section>
+ <section>
+ <title>WSRP and WS-Security</title>
+ <para>Portlets may present different data or options depending on the currently authenticated user. For remote
+ portlets, this means having to propagate the user credentials from the consumer back to the producer in
+ a safe and secure manner. The WSRP specification does not directly specify how this should be
+ accomplished, but delegates this work to the existing WS-Security standards.
+ </para>
+ <note>
+ <title>Web Container Compatibility</title>
+ <para>WSRP and WS-Security is currently only supported on JBoss Enterprise Portal Platform when running on top of JBoss
+ AS 5.
+ </para>
+ </note>
+ <warning>
+ <title>Encryption</title>
+ <para>You will want to encrypt the credentials being sent between the consumer and producer, otherwise they
+ will be sent in plain text and could be easily intercepted. You can either configure WS-Security to
+ encrypt and sign the SOAP messages being sent, or secure the transport layer by using an https endpoint.
+ Failure to encrypt the soap message or transport layer will result in the username and password being
+ sent in plain text. <emphasis role="bold">Use of encryption is strongly recommended.</emphasis>
+ </para>
+ </warning>
+ <important>
+ <title>Credentials</title>
+ <para>When the consumer sends the user credentials to the producer, it is sending the credentials for the
+ currently authenticated user in the consumer. This makes signing in to remote portlets transparent
+ to end users, but also requires that the producer and consumer use the same credentials. This means
+ that the username and password must be the same and valid on both servers.
+ </para>
+ <para>The recommended approach for this situation would be to use a common ldap configuration. Please
+ see the user guide on how to configure ldap for use with JBoss Enterprise Portal Platform
+ </para>
+ </important>
+ <para>The GateIn Wiki article, <ulink url="http://community.jboss.org/wiki/GateInWSRPAndWebServiceSecurity">
+ GateIn WSRP and Web Service Security</ulink>, also provides a step-by-step example on how to configure
+ WSRP with WS-Security.
+ </para>
+ <section id="wss_configuration">
+ <title>WS-Security Configuration</title>
+ <para>JBoss Enterprise Portal Platform uses JBossWS Native to handle ws-security. Please see the WS-Security section of the
+ <ulink url="http://www.jboss.org/jbossas/docs/5-x">JBoss AS 5 Administration and Configuration Guide
+ </ulink> for indepth configuration options. Please note that since the consumer passes its credentials
+ to the producer, the consumer will act as the wss client and the producer will act as the wss server.
+ </para>
+ <para> The following are the JBossWS Native configuration files which need to be configure for WSRP:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <filename>gatein-wsrp-integration.ear/META-INF/gatein-wsse-consumer.xml</filename>: JBossWS
+ configuration file for the consumer.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <filename>gatein-wsrp-integration.ear/wsrp-producer-jb5wss.war/WEB-INF/conf/gatein-wsse-producer.xml
+ </filename>: JBossWS configuration file for the producer.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>WS-Security Producer Configuration</title>
+ <para>
+ Other than the JBossWS configuration file mention above, no other configuration changes should be necessary
+ for the producer.
+ </para>
+ </section>
+ <section>
+ <title>WS-Security Consumer Configuration</title>
+ <para>The consumer requires a few changes before it will function properly with WS-Security. The consumer
+ needs access to the current servlet request since this is used to retrieve the currently authenticated
+ user. In order for the consumer to access this information, it needs a special servlet-filter added to
+ the portal.
+ </para>
+ <para>In <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> add the following information:
+ </para>
<programlisting role="XML"><![CDATA[<!-- Filter to put request and response in ServletAccess -->
<filter>
<filter-name>ServletAccessFilter</filter-name>
@@ -244,73 +279,62 @@
<url-pattern>/*</url-pattern>
</filter-mapping>]]>
</programlisting>
- <para>
- Finally, in the WSRP Configuration portlet, in the consumer configuration options, you will need to check the 'Enable WS Security' checkbox:
- </para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_wss_selected.png" format="PNG" align="center" valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </section>
-
- <section>
- <title>WS-Security Consumer Checklist</title>
-
- <para>
- In order for the consumer to handle ws-security, the following steps must be completed properly
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- The JBossWS configuration files must be configured.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The filter must be added to the portal's web.xml.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The enable wss feature must be check in the wsrp admin.
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- The consumer will not properly handle ws-security unless all 3 are properly configured.
- </para>
- </section>
- </section>
+ <para>
+ Finally, in the WSRP Configuration portlet, in the consumer configuration options, you will need to check the 'Enable WS Security' checkbox:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_wss_selected.png" format="PNG" align="center" valign="middle" scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+ <section>
+ <title>WS-Security Consumer Checklist</title>
+ <para>
+ In order for the consumer to handle ws-security, the following steps must be completed properly
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>The JBossWS configuration files must be configured.</para>
+ </listitem>
+ <listitem>
+ <para>The filter must be added to the portal's web.xml.</para>
+ </listitem>
+ <listitem>
+ <para>The enable wss feature must be check in the wsrp admin.</para>
+ </listitem>
+ </itemizedlist>
+ <para>The consumer will not properly handle ws-security unless all 3 are properly configured.</para>
+ </section>
</section>
-
- <section>
- <title>Making a portlet remotable</title>
-
- <important>
- <para>
- Only JSR-286 (Portlet 2.0) portlets can be made remotable as the mechanism to expose a portlet to WSRP relies on a JSR-286-only functionality.
- </para>
- </important>
-
+ </section>
+
+ <section>
+ <title>Making a portlet remotable</title>
+ <important>
<para>
- JBoss Enterprise Portal Platform does <emphasis role="bold">NOT</emphasis>, by default, expose local portlets for consumption by remote WSRP consumers. In order to make a portlet remotely available, it must be made "remotable" by marking it as such in the associated <filename>portlet.xml</filename>. This is accomplished by using a specific <code>org.gatein.pc.remotable container-runtime-option</code>. Setting its value to <code>true</code> makes the portlet available for remote consumption, while setting its value to <code>false</code> will not publish it remotely. As specifying the remotable status for a portlet is optional, you do not need to do anything if you don't need your portlet to be available remotely.
+ Only JSR-286 (Portlet 2.0) portlets can be made remotable as the mechanism to expose a portlet to WSRP
+ relies on a JSR-286-only functionality.
</para>
-
+ </important>
+ <para>JBoss Enterprise Portal Platform does
+ <emphasis role="bold">NOT</emphasis>, by default, expose local portlets for consumption
+ by remote WSRP consumers. In order to make a portlet remotely available, it must be made "remotable" by marking
+ it as such in the associated
+ <filename>portlet.xml</filename>. This is accomplished by using a specific
+ <code>org.gatein.pc.remotable container-runtime-option</code>. Setting its value to
+ <code>true</code>
+ makes the portlet available for remote consumption, while setting its value to
+ <code>false</code>
+ will not publish it remotely. As specifying the remotable status for a portlet is optional, you do not need to
+ do anything if you do not need your portlet to be available remotely.
+ </para>
+ <para>In the following example, the "BasicPortlet" portlet is specified as being remotable.
+ </para>
+ <example>
+ <title>Example</title>
<para>
- In the following example, the "BasicPortlet" portlet is specified as being remotable.
- </para>
-
- <example>
- <title>Example</title>
-
- <para>
-<programlisting><![CDATA[
+ <programlisting><![CDATA[
<?xml version="1.0" standalone="yes"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -328,18 +352,22 @@
</container-runtime-option>
</portlet>
</portlet-app>]]></programlisting>
- </para>
- </example>
-
+ </para>
+
+ </example>
+ <para>
+ It is also possible to specify that all the portlets declared within a given portlet application to be
+ remotable by default. This is done by specifying the
+ <code>container-runtime-option</code>
+ at the
+ <code>portlet-app</code>
+ element level. Individual portlets can override that value to not be remotely exposed. This is an
+ example:
+ </para>
+ <example>
+ <title>Example</title>
<para>
- It is also possible to specify that all the portlets declared within a given portlet application to be remotable by default. This is done by specifying the <code>container-runtime-option</code> at the <code>portlet-app</code> element level. Individual portlets can override that value to not be remotely exposed. Let's look at an example:
- </para>
-
- <example>
- <title>Example</title>
-
- <para>
-<programlisting><![CDATA[
+ <programlisting><![CDATA[
<?xml version="1.0" standalone="yes"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -366,149 +394,242 @@
</container-runtime-option>
</portlet-app>]]>
</programlisting>
- </para>
- </example>
-
- <para>
- In the example above, we defined two portlets. The <code>org.gatein.pc.remotable container-runtime-option</code> being set to <code>true</code> at the <code>portlet-app</code> level, all portlets defined in this particular portlet application are exposed remotely by JBoss Enterprise Portal Platform's WSRP producer. Note, however, that it is possible to override the default behavior: specifying a value for the <code>org.gatein.pc.remotable container-runtime-option</code> at the <code>portlet</code> level will take precedence over the default. In the example above, the <varname>RemotelyExposedPortlet</varname> inherits the remotable status defined at the <code>portlet-app</code> level since it does not specify a value for the <code>org.gatein.pc.remotable container-runtime-option</code>. The <varname>NotRemotelyExposedPortlet</varname>, however, overrides the default behavior and is not remotely exposed. Note that in the absence of a top-level <code>org.gatein.pc.!
remotable container-runtime-option</code> value set to <code>true</code>, portlets are NOT remotely exposed.
</para>
- </section>
-
+
+ </example>
+
+ <para>
+ The example above defines two portlets. The
+ <code>org.gatein.pc.remotable container-runtime-option</code>
+ being set to
+ <code>true</code>
+ at the
+ <code>portlet-app</code>
+ level, all portlets defined in this particular portlet application are exposed remotely by JBoss Enterprise Portal Platform's
+ WSRP
+ producer.
+ Note, however, that it is possible to override the default behavior: specifying a value for the
+ <code>org.gatein.pc.remotable container-runtime-option</code>
+ at the
+ <code>portlet</code>
+ level will take precedence over the default. In the example above, the
+ <varname>RemotelyExposedPortlet</varname>
+ inherits the remotable status defined at the
+ <code>portlet-app</code>
+ level since it does not specify a value for the <code>org.gatein.pc.remotable container-runtime-option</code>.
+ The<varname>NotRemotelyExposedPortlet</varname>, however, overrides the default behavior and is not remotely
+ exposed. Note that in the absence of a top-level
+ <code>org.gatein.pc.remotable container-runtime-option</code>
+ value set to <code>true</code>, portlets are NOT remotely exposed.
+ </para>
+ </section>
+
+ <section>
+ <title>Consuming WSRP portlets from a remote Consumer</title>
+ <para>WSRP Producers vary a lot as far as how they are configured. Most of them require that you specify
+ the URL for the Producer's WSDL definition. Please refer to the remote producer's documentation for specific
+ instructions. For instructions on how to do so in JBoss Enterprise Portal Platform, please refer to
+ <xref linkend="consumer_configuration"/>.
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform's Producer is automatically set up when you deploy a portal instance with the WSRP service.
+ You can access the WSDL file at
+ <filename>http://{hostname}:{port}/wsrp-producer/v2/MarkupService?wsdl</filename>. If you wish to use only the
+ WSRP 1 compliant version of the producer, please use the WSDL file found at
+ <filename>http://{hostname}:{port}/wsrp-producer/v1/MarkupService?wsdl</filename>.
+ The default hostname is
+ <literal>localhost</literal>
+ and the default port is 8080.
+ </para>
+ </section>
+
+ <section id="consumer_configuration">
+ <title>Consuming remote WSRP portlets in JBoss Enterprise Portal Platform</title>
<section>
- <title>Consuming JBoss Enterprise Portal Platform's WSRP portlets from a remote Consumer</title>
-
+ <title>Overview</title>
<para>
- WSRP Producers vary a lot as far as how they are configured. Most of them require that you specify the URL for the Producer's WSDL definition. Please refer to the remote producer's documentation for specific instructions. For instructions on how to do so in JBoss Enterprise Portal Platform, please refer to <xref linkend="consumer_configuration"/>.
+ To be able to consume WSRP portlets exposed by a remote producer, JBoss Enterprise Portal Platform's WSRP consumer needs to
+ know how to access that remote producer. You can configure access to a remote producer using the provided
+ configuration portlet. Alternatively, it is also possible to configure access to remote producers using an
+ XML descriptor, though it is recommended (and easier) to do so via the configuration portlet.
</para>
-
<para>
- JBoss Enterprise Portal Platform's Producer is automatically set up when you deploy a portal instance with the WSRP service. You can access the WSDL file at <filename>http://{hostname}:{port}/wsrp-producer/v2/MarkupService?wsdl</filename>. If you wish to use only the WSRP 1 compliant version of the producer, please use the WSDL file found at <filename>http://{hostname}:{port}/wsrp-producer/v1/MarkupService?wsdl</filename>. The default hostname is <literal>localhost</literal> and the default port is 8080.
+ Once a remote producer has been configured, the portlets that it exposes are then available in the
+ Application Registry to be added to categories and then to pages.
</para>
</section>
-
- <section id="consumer_configuration">
- <title>Consuming remote WSRP portlets in JBoss Enterprise Portal Platform</title>
-
- <section>
- <title>Overview</title>
-
+
+ <section id="consumer_gui">
+ <title>Configuring a remote producer using the configuration portlet</title>
+ <para>
+ This section will cover the steps of defining access to a remote producer using the configuration portlet so that its portlets can be
+ consumed within JBoss Enterprise Portal Platform. We will configure access to NetUnity's public WSRP producer.
+ </para>
+
+ <note>
<para>
- To be able to consume WSRP portlets exposed by a remote producer, JBoss Enterprise Portal Platform's WSRP consumer needs to know how to access that remote producer. One can configure access to a remote producer using the provided configuration portlet. Alternatively, it is also possible to configure access to remote producers using an XML descriptor, though it is recommended (and easier) to do so via the configuration portlet.
+ Some WSRP producers do not support chunked encoding that is activated by default by JBoss WS. If your
+ producer does not support chunked encoding, your consumer will not be able to properly connect to the
+ producer. This will manifest itself with the following error:
+ <code>Caused by: org.jboss.ws.WSException: Invalid HTTP server response [503] - Service
+ Unavailable</code>.
+ Please see this <ulink url="http://community.jboss.org/wiki/Workaroundwhenchunkedencodingisnotsupported">wiki page
+ </ulink>
+ for more details.
</para>
-
+ </note>
+
+ <para>
+ JBoss Enterprise Portal Platform provides a portlet to configure access (among other functions) to remote WSRP Producers
+ graphically. Starting with &VZ;, the WSRP configuration portlet is installed by default. You
+ can find it at
+ <ulink
+ url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...">
+ http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...
+ </ulink>
+ </para>
+
+ <para>
+ You should see a screen similar to:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_init.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ <para>This screen presents all the configured Consumers associated with their status and possible actions on
+ them. A Consumer can be active or inactive. Activating a Consumer means that it is ready to act as a
+ portlet provider. Note also that a Consumer can be marked as requiring refresh meaning that the
+ information held about it might not be up to date and refreshing it from the remote Producer might be a
+ good idea. This can happen for several reasons: the service description for that remote Producer has not
+ been fetched yet, the cached version has expired or modifications have been made to the configuration
+ that could potentially invalidate it, thus requiring re-validation of the information.
+ </para>
+
+ <note>
+ <title>Note</title>
<para>
- Once a remote producer has been configured, the portlets that it exposes are then available in the Application Registry to be added to categories and then to pages.
+ The WSRP configuration was not installed by default in previous versions of JBoss Enterprise Portal Platform.
+ We include here the legacy instructions on how to install this portlet in case you ever need to
+ re-install it.
</para>
- </section>
-
- <section id="consumer_gui">
- <title>Configuring a remote producer using the configuration portlet</title>
-
<para>
- Let's work through the steps of defining access to a remote producer using the configuration portlet so that its portlets can be consumed within JBoss Enterprise Portal Platform. We will configure access to NetUnity's public WSRP producer.
+ Use the usual procedure to log in as a Portal administrator and go to the Application
+ Registry. With the default install, you can just go to
+ <ulink
+ url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...">
+ http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass...
+ </ulink>
+ Add the WSRP Configuration portlet to the Administration category. If you use the Import Applications
+ functionality, the WSRP Configuration portlet will be automatically added to the Administration
+ category.
</para>
-
+ <para>
+ Now that the portlet is added to a category, it can be added to a page and used. It is recommended that you add
+ it to the same page as the Application Registry as operations relating to WSRP and adding portlets to
+ categories are somewhat related. Go ahead and add the WSRP Configuration portlet to the
+ page using the standard procedure.
+ </para>
+ </note>
+
+ <para>
+ Next, create a new Consumer called <literal>netunity</literal>. Type
+ "<literal>netunity</literal>" in
+ the "Create a consumer named:" field then click on "Create consumer":
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_create.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ <para>You should now see a form allowing you to enter/modify the information about the Consumer.
+ Set the cache expiration value to 300 seconds, leave the default timeout value for web services (WS)
+ operations and enter the WSDL URL for the producer in the text field
+ and press the "Refresh & Save" button:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_wsdl.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ <para>This will retrieve the service description associated with the Producer which WSRP interface is described
+ by the WSDL file found at the URL you just entered. In this case, querying the service description will
+ reveal that the Producer requires registration, requested three registration properties and that
+ some of these properties are missing values:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_missing.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+ <para>This particular producer requests simple
+ <literal>Yes</literal>
+ or
+ <literal>No</literal>
+ values for the three registration properties. Entering <literal>No</literal>,
+ <literal>Yes</literal>
+ and
+ <literal>No</literal>
+ (in that order) for the values and then pressing the "Refresh & Save" button should result in:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_end.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
<note>
- <para>
- Some WSRP producers do not support chunked encoding that is activated by default by JBoss WS. If your producer does not support chunked encoding, your consumer will not be able to properly connect to the producer. This will manifest itself with the following error: <code>Caused by: org.jboss.ws.WSException: Invalid HTTP server response [503] - Service Unavailable</code>. Please see this GateIn's <ulink url="http://community.jboss.org/wiki/Workaroundwhenchunkedencodingisnotsupported">wiki page </ulink> for more details.
+ <title>Note</title>
+ <para>At this point, there is no automated way to learn about which possible values (if any) are
+ expected by the remote Producer. Sometimes, the possible values will be indicated in the
+ registration
+ property description but this is not always the case... Please refer to the specific Producer's
+ documentation.
</para>
</note>
-
- <para>
- JBoss Enterprise Portal Platform provides a portlet to configure access (among other functions) to remote WSRP Producers graphically. Starting with &VY;, the WSRP configuration portlet is installed by default. You can find it at <ulink
- url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass..."> http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass... </ulink>
- </para>
-
- <para>
- You should see a screen similar to:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_init.png" format="PNG" align="center" valign="middle"
+
+ <para>
+ If you had been dealing with a producer which required registration but did not require any registration
+ properties, as is the case for the
+ <literal>selfv2</literal>
+ consumer (the consumer that accesses the portlets made remotely available by JBoss Enterprise Portal Platform's producer via
+ WSRP 2), you would have seen something similar to the screenshot below, after pressing the "Refresh & Save" button:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_refresh.png" format="PNG" align="center" valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
- This screen presents all the configured Consumers associated with their status and possible actions on them. A Consumer can be active or inactive. Activating a Consumer means that it is ready to act as a portlet provider. Note also that a Consumer can be marked as requiring refresh meaning that the information held about it might not be up to date and refreshing it from the remote Producer might be a good idea. This can happen for several reasons: the service description for that remote Producer has not been fetched yet, the cached version has expired or modifications have been made to the configuration that could potentially invalidate it, thus requiring re-validation of the information.
- </para>
-
+ </imageobject>
+ </mediaobject>
+ </para>
+ </section>
+
+ <section id="consumer_xml">
+ <title>Configuring access to remote producers via XML</title>
+
+ <para>While it is recommended you use the WSRP Configuration portlet to configure Consumers, the component provides an
+ alternative way to configure consumers by adding an XML file called
+ <filename>wsrp-consumers-config.xml</filename> in the
+ <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename> directory.
+ </para>
<note>
- <para>
- The WSRP configuration didn't use to be installed by default in previous versions of JBoss Enterprise Portal Platform. We include here the legacy instructions on how to install this portlet in case you ever need to re-install it.
+ <title>Note</title>
+ <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
+ in
+ <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_consumer_1_0.xsd
+ </filename>
</para>
-
+ </note>
+ <important>
<para>
- Use the usual procedure to log in as a Portal administrator and go to the Application Registry. With the default install, you can just go to <ulink
- url="http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass..."> http://localhost:8080/portal/login?initialURI=%2Fportal%2Fprivate%2Fclass... </ulink> Add the WSRP Configuration portlet to the Administration category. If you use the Import Applications functionality, the WSRP Configuration portlet will be automatically added to the Administration category.
+ It is important to note that once the XML configuration file for consumers has been read upon
+ the WSRP service first start, the associated information is put under control of JCR (Java Content
+ Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore
+ the content of the XML configuration file.
</para>
-
- <para>
- Now that the portlet is added to a category, it can be added to a page and used. We recommend adding it to the same page as the Application Registry as operations relating to WSRP and adding portlets to categories are somewhat related as we will see. Go ahead and add the WSRP Configuration portlet to the page using the standard procedure.
- </para>
- </note>
-
- <para>
- Next, we create a new Consumer which we will call <literal>netunity</literal>. Type "<literal>netunity</literal>" in the "Create a consumer named:" field then click on "Create consumer":
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_create.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- You should now see a form allowing you to enter/modify the information about the Consumer. Set the cache expiration value to 300 seconds, leave the default timeout value for web services (WS) operations and enter the WSDL URL for the producer in the text field and press the "Refresh & Save" button:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_wsdl.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- This will retrieve the service description associated with the Producer which WSRP interface is described by the WSDL file found at the URL you just entered. In our case, querying the service description will allow us to learn that the Producer requires registration, requested three registration properties and that we are missing values for these properties:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_missing.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- This particular producer requests simple <literal>Yes</literal> or <literal>No</literal> values for the three registration properties. Entering <literal>No</literal>, <literal>Yes</literal> and <literal>No</literal> (in that order) for the values and then pressing the "Refresh & Save" button should result in:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_end.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <note>
- <para>
- At this point, there is no automated way to learn about which possible values (if any) are expected by the remote Producer. Sometimes, the possible values will be indicated in the registration property description but this is not always the case... Please refer to the specific Producer's documentation.
- </para>
- </note>
- </para>
-
- <para>
- If we had been dealing with a producer which required registration but didn't require any registration properties, as is the case for the <literal>selfv2</literal> consumer (the consumer that accesses the portlets made remotely available by JBoss Enterprise Portal Platform's producer via WSRP 2), we'd have seen something similar to the screenshot below, after pressing the "Refresh & Save" button:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_refresh.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- </para>
- </section>
-
- <section id="consumer_xml">
- <title>Configuring access to remote producers via XML</title>
-
- <para>
- While we recommend you use the WSRP Configuration portlet to configure Consumers, we provide an alternative way to configure consumers by adding an XML file called <filename>wsrp-consumers-config.xml</filename> in the <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename> directory.
- <note>
- <para>
- An XML Schema defining which elements are available to configure Consumers via XML can be found in <filename> $JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_consumer_1_0.xsd </filename>
- </para>
- </note>
-
- <important>
- <para>
- It is important to note that once the XML configuration file for consumers has been read upon the WSRP service first start, the associated information is put under control of JCR (Java Content Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore the content of the XML configuration file.
- </para>
-<!--<para>It is important to note how the XML consumers configuration file is processed. It is read the first
+
+ <!--<para>It is important to note how the XML consumers configuration file is processed. It is read the first
time the WSRP service starts and the associated information is then put under control of JCR (Java
Content Repository). Subsequent launches of the WSRP service will use the JCR-stored information for
all producers already known to JBoss Enterprise Portal Platform. More specifically, the
@@ -526,75 +647,122 @@
(if such information exists) as the producer will be re-created the next time the WSRP is launched if
that information is not removed.
</para>-->
- </important>
+ </important>
+
+
+ <section>
+ <title>Required configuration information</title>
+
+ <para>This section covers what information needs to be provided to configure access to a remote producer.
</para>
-
- <section>
- <title>Required configuration information</title>
-
+
+ <para>First, you need to provide an identifier for the producer you are configuring so that you can refer to it
+ afterwards. This is accomplished via the mandatory
+ <literal>id</literal>
+ attribute of the
+ <literal><wsrp-producer></literal>
+ element.
+ </para>
+
+ <para>JBoss Enterprise Portal Platform also needs to learn about the remote producer's endpoints to be able to connect to the
+ remote web services and perform WSRP invocations. This is accomplished by specifying the URL for the
+ WSDL description for the remote WSRP service, using the
+ <literal><endpoint-wsdl-url></literal>
+ element.
+ </para>
+
+ <para>Both the
+ <literal>id</literal>
+ attribute and
+ <literal><endpoint-wsdl-url></literal>
+ elements are required for a functional remote producer configuration.
+ </para>
+ </section>
+
+ <section>
+ <title>Optional configuration</title>
+ <para>It is also possible to provide addtional configuration, which, in some cases, might be important to
+ establish a proper connection to the remote producer.
+ </para>
+
+ <para>One such optional configuration concerns caching. To prevent useless roundtrips between the local
+ consumer and the remote producer, it is possible to cache some of the information sent by the producer
+ (such as the list of offered portlets) for a given duration. The rate at which the information is
+ refreshed is
+ defined by the
+ <literal>expiration-cache</literal>
+ attribute of the
+ <literal><wsrp-producer></literal>
+ element which specifies the refreshing period in seconds. For example, providing a value of 120 for
+ expiration-cache means that the producer information will not be refreshed for 2 minutes after it has
+ been somehow accessed. If no value is provided, JBoss Enterprise Portal Platform will always access the remote producer
+ regardless of whether the remote information has changed or not. Since, in most instances, the
+ information provided by the producer does not change often, it is recommended that you use this caching
+ facility to minimize bandwidth usage.
+ </para>
+
+ <para>It is also possible to define a timeout after which WS operations are considered as failed. This is
+ helpful to avoid blocking the WSRP service, waiting on the service that does not answer. Use the
+ <literal>ws-timeout</literal>
+ attribute of the
+ <literal><wsrp-producer></literal>
+ element to specify how many milliseconds the WSRP service will wait for a response from the remote
+ producer before timing out and giving up.
+ </para>
+
+ <para>Additionally, some producers require consumers to register with them before authorizing them to access
+ their offered portlets. If you know that information beforehand, you can provide the required
+ registration information in the producer configuration so that the consumer can register with the remote
+ producer when required.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>At this time, though, only simple String properties are supported and it is not possible to
+ configure complex registration data. This should, however, be sufficient for most cases.
+ </para>
+ </note>
+
+
+ <para>Registration configuration is done via the
+ <literal><registration-data></literal>
+ element. Since JBoss Enterprise Portal Platform can generate the mandatory information for you, if the remote producer does
+ not require any registration properties, you only need to provide an empty
+ <literal><registration-data></literal>
+ element. Values for the registration properties
+ required by the remote producer can be provided via
+ <literal><property></literal>
+ elements. See the example below for more details. Additionally, you can override the default consumer
+ name automatically provided by JBoss Enterprise Portal Platform via the
+ <literal><consumer-name></literal>
+ element. If you choose to provide a consumer name, please remember that this should uniquely identify
+ your consumer.
+ </para>
+ </section>
+
+ <section>
+ <title>Examples</title>
+
+ <para>
+ Here is the configuration of the
+ <literal>selfv1</literal>
+ and
+ <literal>selfv2</literal>
+ consumers as found in
+ <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-consumers-config.xml</filename>
+ with a cache expiring every 500 seconds and with a 50 second timeout for web service operations.
+ <note>
+ <para>
+ This file contains the default configuration and you should not need to edit it. If you want to make
+ modifications to it, it is recommended that you follow the procedure detailed in
+ <xref linkend="consumer_gui"/>.
+ </para>
+ </note>
+ </para>
+
+ <example>
+ <title>Example</title>
<para>
- Let's now look at which information needs to be provided to configure access to a remote producer.
- </para>
-
- <para>
- First, we need to provide an identifier for the producer we are configuring so that we can refer to it afterwards. This is accomplished via the mandatory <literal>id</literal> attribute of the <literal><wsrp-producer></literal> element.
- </para>
-
- <para>
- JBoss Enterprise Portal Platform also needs to learn about the remote producer's endpoints to be able to connect to the remote web services and perform WSRP invocations. This is accomplished by specifying the URL for the WSDL description for the remote WSRP service, using the <literal><endpoint-wsdl-url></literal> element.
- </para>
-
- <para>
- Both the <literal>id</literal> attribute and <literal><endpoint-wsdl-url></literal> elements are required for a functional remote producer configuration.
- </para>
- </section>
-
- <section>
- <title>Optional configuration</title>
-
- <para>
- It is also possible to provide addtional configuration, which, in some cases, might be important to establish a proper connection to the remote producer.
- </para>
-
- <para>
- One such optional configuration concerns caching. To prevent useless roundtrips between the local consumer and the remote producer, it is possible to cache some of the information sent by the producer (such as the list of offered portlets) for a given duration. The rate at which the information is refreshed is defined by the <literal>expiration-cache</literal> attribute of the <literal><wsrp-producer></literal> element which specifies the refreshing period in seconds. For example, providing a value of 120 for expiration-cache means that the producer information will not be refreshed for 2 minutes after it has been somehow accessed. If no value is provided, JBoss Enterprise Portal Platform will always access the remote producer regardless of whether the remote information has changed or not. Since, in most instances, the information provided by the producer does not change often, we recommend that you use this caching facility to minimize bandwidth us!
age.
- </para>
-
- <para>
- It is also possible to define a timeout after which WS operations are considered as failed. This is helpful to avoid blocking the WSRP service, waiting forever on the service that doesn't answer. Use the <literal>ws-timeout</literal> attribute of the <literal><wsrp-producer></literal> element to specify how many milliseconds the WSRP service will wait for a response from the remote producer before timing out and giving up.
- </para>
-
- <para>
- Additionally, some producers require consumers to register with them before authorizing them to access their offered portlets. If you know that information beforehand, you can provide the required registration information in the producer configuration so that the consumer can register with the remote producer when required.
- <note>
- <para>
- At this time, though, only simple String properties are supported and it is not possible to configure complex registration data. This should, however, be sufficient for most cases.
- </para>
- </note>
- </para>
-
- <para>
- Registration configuration is done via the <literal><registration-data></literal> element. Since JBoss Enterprise Portal Platform can generate the mandatory information for you, if the remote producer does not require any registration properties, you only need to provide an empty <literal><registration-data></literal> element. Values for the registration properties required by the remote producer can be provided via <literal><property></literal> elements. See the example below for more details. Additionally, you can override the default consumer name automatically provided by JBoss Enterprise Portal Platform via the <literal><consumer-name></literal> element. If you choose to provide a consumer name, please remember that this should uniquely identify your consumer.
- </para>
- </section>
-
- <section>
- <title>Examples</title>
-
- <para>
- Here is the configuration of the <literal>selfv1</literal> and <literal>selfv2</literal> consumers as found in <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-consumers-config.xml</filename> with a cache expiring every 500 seconds and with a 50 second timeout for web service operations.
- <note>
- <para>
- This file contains the default configuration and you shouldn't need to edit it. If you want to make modifications to it, we recommend that you follow the procedure detailed in <xref linkend="consumer_gui"/>.
- </para>
- </note>
- </para>
-
- <example>
- <title>Example</title>
-
- <para>
-<programlisting><![CDATA[
+ <programlisting><![CDATA[
<?xml version='1.0' encoding='UTF-8' ?>
<deployments xmlns="http://www.gatein.org/xml/ns/gatein_wsrp_consumer_1_0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -613,18 +781,16 @@
</deployment>
</deployments>]]>
</programlisting>
- </para>
- </example>
-
+ </para>
+
+ </example>
+
+ <para>Here is an example of a WSRP descriptor with registration data and cache expiring every minute:</para>
+
+ <example>
+ <title>Example</title>
<para>
- Here is an example of a WSRP descriptor with registration data and cache expiring every minute:
- </para>
-
- <example>
- <title>Example</title>
-
- <para>
-<programlisting><![CDATA[
+ <programlisting><![CDATA[
<?xml version='1.0' encoding='UTF-8' ?>
<deployments xmlns="http://www.gatein.org/xml/ns/gatein_wsrp_consumer_1_0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -643,78 +809,120 @@
</wsrp-producer>
</deployment>
</deployments>]]></programlisting>
- </para>
- </example>
- </section>
+ </para>
+ </example>
</section>
-
- <section>
- <title>Adding remote portlets to categories</title>
-
- <para>
- If we go to the Application Registry and examine the available portlets by clicking on the Portlet link, you will now be able to see remote portlets if you click on the REMOTE tab in the left column:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/remote_portlets.png" format="PNG" align="center" valign="middle"
+ </section>
+
+ <section>
+ <title>Adding remote portlets to categories</title>
+ <para>
+ If you go to the Application Registry and examine the available portlets by clicking on the
+ Portlet link, you will now be able to see remote portlets if you click on the REMOTE tab in the left
+ column:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/remote_portlets.png" format="PNG" align="center" valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
- </para>
-
- <para>
- These portlets are, of course, available to be used such as regular portlets: they can be used in categories and added to pages. If you use the Import Applications functionality, they will also be automatically imported in categories based on the keywords they define.
- </para>
-
- <para>
- More specifically, if you want to add a WSRP portlet to a category, you can access these portlets by selecting <literal>wsrp</literal> in the Application Type drop-down menu:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/remote_portlets_category.png" format="PNG" align="center"
+ </imageobject>
+ </mediaobject>
+ </para>
+
+ <para>
+ These portlets are, of course, available to be used such as regular portlets: they can be used in
+ categories and added to pages. If you use the Import Applications functionality, they will also be
+ automatically imported in categories based on the keywords they define.
+ </para>
+
+ <para>
+ More specifically, if you want to add a WSRP portlet to a category, you can access these portlets by
+ selecting
+ <literal>wsrp</literal>
+ in the Application Type drop-down menu:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/remote_portlets_category.png" format="PNG" align="center"
valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
- </para>
- </section>
+ </imageobject>
+ </mediaobject>
+ </para>
</section>
-
+
<section>
<title>Adding remote portlets to pages</title>
-
<para>
- Since remote portlets can be manipulated just like regular portlets, you can add them to pages just like you would do for a regular portlet. Please refer to the appropriate section of the documentation for how to do so.
+ Since remote portlets can be manipulated just like regular portlets, you can add them to pages just like you
+ would do for a regular portlet. Please refer to the appropriate section of the documentation for how to do
+ so.
</para>
-
<para>
- Of note, though, is that, starting with version 3.2 of GateIn (5.2 of EPP), it is now possible to also add a remote portlet to a <filename>pages.xml</filename> configuration file. This is accomplished using the <literal><wsrp></literal> element instead of the <literal><portlet></literal> element in your <filename>pages.xml</filename> document. While <literal><portlet></literal> references a local portlet using the name of the application in which the portlet is contained and the portlet name itself to identify which portlet to use, <literal><wsrp></literal> references a remote portlet using a combination of the consumer identifier for the producer publishing the portlet and the portlet handle identifying the portlet within the context of the producer.
+ Of note, though, is that, starting with version 5.2 of JBoss Enterprise Portal Platform, it is now possible to also add a
+ remote portlet to a
+ <filename>pages.xml</filename>
+ configuration file.
+ This is accomplished using the
+ <literal><wsrp></literal>
+ element instead of the
+ <literal><portlet></literal>
+ element in your
+ <filename>pages.xml</filename>
+ document. While
+ <literal><portlet></literal>
+ references a local portlet using the name of the application in which the portlet is contained and the
+ portlet name itself to identify which portlet to use,
+ <literal><wsrp></literal>
+ references a remote portlet using a combination of the consumer identifier for the producer publishing the
+ portlet and the portlet handle identifying the portlet within the context of the producer.
</para>
-
<para>
- The format for such a reference to a remote portlet is a follows: first, the identifier of the consumer that accesses the remote producer publishing the remote portlet, then a separator (currently a period (<literal>.</literal>)) and finally the portlet handle for that portlet, which is a string provided by the producer to identify the portlet.
+ The format for such a reference to a remote portlet is a follows: first, the identifier of the
+ consumer that accesses the remote producer publishing the remote portlet, then a separator (currently a
+ period (<literal>.</literal>)) and finally the portlet handle for that
+ portlet, which is a string provided by the producer to identify the portlet.
</para>
-
<para>
- Since there currently is no easy way to determine the correct portlet handle, we recommend that you use the graphical user interface to add remote portlets to pages instead of using <filename>pages.xml</filename>.
+ Since there currently is no easy way to determine the correct portlet handle, it is recommended that you use the
+ graphical user interface to add remote portlets to pages instead of using
+ <filename>pages.xml</filename>.
</para>
-
<note>
- <title>Note</title>
<para>
- For remote portlets published by JBoss Enterprise Portal Platform's WSRP producer, the portlet handles are, at the time of this writing, following the <literal>/<portlet application name>.<portlet name></literal> format.
+ For remote portlets published by JBoss Enterprise Portal Platform's WSRP producer, the portlet handles are, at
+ the time of this writing, following the
+ <literal>/<portlet application name>.<portlet name></literal>
+ format.
</para>
</note>
-
<section>
<title>Example</title>
-
<para>
- In the following example, we define 2 portlets for a page named <literal>Test</literal> in our <filename>pages.xml</filename> configuration. They are actually references to the same portlet, albeit one accessed locally and the other one accessing it via the <literal>selfv2</literal> consumer which consumes JBoss Enterprise Portal Platform's WSRP producer. You can see that the first one is local (the <code><portlet-application></code> with the '<literal>Added locally</literal>' title) and follows the usual declaration. The second portlet (the one with the '<literal>Added from selfv2 consumer</literal>' title) comes from the <literal>selfv2</literal> consumer and uses the <code><wsrp></code> element instead of <code><portlet></code> element and follows the format for portlets coming from the JBoss Enterprise Portal Platform's WSRP producer.
+ In the following example, two portlets are defined for a page named
+ <literal>Test</literal>
+ in the
+ <filename>pages.xml</filename>
+ configuration. They are actually references to the same portlet, albeit one accessed locally and the
+ other
+ one accessing it via the
+ <literal>selfv2</literal>
+ consumer which consumes JBoss Enterprise Portal Platform's WSRP producer. You can see that the first one is local (the
+ <code><portlet-application></code>
+ with the
+ '<literal>Added locally</literal>'
+ title) and follows the usual declaration. The second portlet (the one with the
+ '<literal>Added from selfv2 consumer</literal>'
+ title) comes from the
+ <literal>selfv2</literal>
+ consumer and uses the
+ <code><wsrp></code>
+ element instead of
+ <code><portlet></code>
+ element and follows the format for portlets coming from the JBoss Enterprise Portal Platform's WSRP producer.
</para>
-
<example>
<title>Example</title>
<para>
-<programlisting><![CDATA[
+ <programlisting><![CDATA[
<page>
<name>Test</name>
@@ -742,431 +950,549 @@
</para>
</example>
</section>
+
</section>
-
+ </section>
+
+ <section>
+ <title>Consumers maintenance</title>
+
<section>
- <title>Consumers maintenance</title>
-
+ <title>Modifying a currently held registration</title>
+
<section>
- <title>Modifying a currently held registration</title>
-
- <section>
- <title>Registration modification for service upgrade</title>
-
- <para>
- Producers often offer several levels of service depending on consumers' subscription levels (for example). This is implemented at the WSRP level with the registration concept: producers can assert which level of service to provide to consumers based on the values of given registration properties.
- </para>
-
- <para>
- There might also be cases where you just want to update the registration information because it has changed. For example, the producer required you to provide a valid email and the previously email address is not valid anymore and needs to be updated.
- </para>
-
- <para>
- It is therefore sometimes necessary to modify the registration that concretizes the service agreement between a consumer and a producer. Let's take the example of a producer requiring a valid email (via an <literal>email</literal> registration property) as part of its required information that consumers need to provide to be properly registered.
- </para>
-
- <para>
- Suppose now that we would like to update the email address that we provided to the remote producer when we first registered. We will need to tell the producer that our registration data has been modified. Let's see how to do this. Select the consumer for the remote producer in the available consumers list to display its configuration. Assuming you want to change the email you registered with to <literal>foo(a)example.com</literal>, change its value in the field for the <literal>email</literal> registration property:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_start.png" format="PNG" align="center" valign="middle"
+ <title>Registration modification for service upgrade</title>
+ <para>
+ Producers often offer several levels of service depending on consumers' subscription levels (for
+ example). This is implemented at the WSRP level with the registration concept: producers can assert which
+ level of service to provide to consumers based on the values of given registration properties.
+ </para>
+ <para>
+ There might also be cases where you just want to update the registration information because it has
+ changed. For example, the producer required you to provide a valid email and the previously email
+ address is not valid anymore and needs to be updated.
+ </para>
+ <para>
+ It is therefore sometimes necessary to modify the registration that concretizes the service agreement
+ between a consumer and a producer. The following is an example of a producer requiring a valid email (via an
+ <literal>email</literal>
+ registration property) as part of its required information that consumers need to provide to be properly
+ registered.
+ </para>
+ <para>
+ Suppose now that you would like to update the email address that you provided to the remote producer when
+ you first registered. You will need to tell the producer that the registration data has been modified.
+ </para>
+ <para>
+ Select the consumer for the remote producer in the available consumers list to
+ display its configuration. Assuming you want to change the email you registered with to
+ <literal>foo(a)example.com</literal>, change its value in the field for the
+ <literal>email</literal>
+ registration property:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/modify_reg_start.png" format="PNG" align="center" valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
- Now click on "Update properties" to save the change. A "Modify registration" button should now appear to let you send this new data to the remote producer:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_modify.png" format="PNG" align="center"
+ </imageobject>
+ </mediaobject>
+ Now click on "Update properties" to save the change. A "Modify registration" button should now appear to
+ let you send this new data to the remote producer:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/modify_reg_modify.png" format="PNG" align="center"
valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
- Click on this new button and, if everything went well and your updated registration has been accepted by the remote producer, you should see something similar to:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_end.png" format="PNG" align="center" valign="middle"
+ </imageobject>
+ </mediaobject>
+ Click on this new button and, if everything went well and your updated registration has been accepted by
+ the remote producer, you should see something similar to:
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/modify_reg_end.png" format="PNG" align="center" valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
+ </imageobject>
+ </mediaobject>
+ </para>
+
+ </section>
+
+ <section id="reg_mod_error">
+ <title>Registration modification on producer error</title>
+
+ <para>
+ It can also happen that a producer administrator decided to change its requirement for registered
+ consumers. JBoss Enterprise Portal Platform will attempt to help you in this situation. This section will walk through an example using
+ the <literal>selfv2</literal> consumer (assuming that registration is requiring a valid value for an
+ <literal>email</literal>
+ registration property). If you go to the configuration screen for this consumer, you should see:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/config_self.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>Now suppose that the administrator of the producer now additionally requires a value to be provided for a
+ <literal>name</literal>
+ registration property. Steps on how to do perform this operation
+ in JBoss Enterprise Portal Platform are outlined in the section on how to configure JBoss Enterprise Portal Platform's producer
+ (<xref linkend="producer_config"/>).
+ Operations with this producer will now fail. If you suspect that a registration modification is required,
+ you should go to the configuration screen for this remote producer and refresh the information held by
+ the consumer by pressing "Refresh & Save":
</para>
- </section>
-
- <section id="reg_mod_error">
- <title>Registration modification on producer error</title>
-
- <para>
- It can also happen that a producer administrator decided to change its requirement for registered consumers. JBoss Enterprise Portal Platform will attempt to help you in this situation. Let's walk through an example using the <literal>selfv2</literal> consumer. Let's assume that registration is requiring a valid value for an <literal>email</literal> registration property. If you go to the configuration screen for this consumer, you should see:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/config_self.png" format="PNG" align="center" valign="middle"
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/modify_reg_self.png" format="PNG" align="center" valign="middle"
scalefit="1"/>
- </imageobject>
- </mediaobject>
- Now suppose that the administrator of the producer now additionaly requires a value to be provided for a <literal>name</literal> registration property. We will actually see how to do perform this operation in JBoss Enterprise Portal Platform when we examine how to configure JBoss Enterprise Portal Platform's producer in <xref linkend="producer_config"/>. Operations with this producer will now fail. If you suspect that a registration modification is required, you should go to the configuration screen for this remote producer and refresh the information held by the consumer by pressing "Refresh & Save":
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_self.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- As you can see, the configuration screen now shows the currently held registration information and the expected information from the producer. Enter a value for the <literal>name</literal> property and then click on "Modify registration". If all went well and the producer accepted your new registration data, you should see something similar to:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/modify_reg_self_end.png" format="PNG" align="center"
- valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
-
- <note>
- <para>
- WSRP 1 makes it rather difficult to ascertain for sure what caused an
- <exceptionname>
- OperationFailedFault
- </exceptionname>
- as it is the generic exception returned by producers if something didn't quite happen as expected during a method invocation. This means that
- <exceptionname>
- OperationFailedFault
- </exceptionname>
- can be caused by several different reasons, one of them being a request to modify the registration data. Please take a look at the log files to see if you can gather more information as to what happened. WSRP 2 introduces an exception that is specific to a request to modify registrations thus reducing the ambiguity that exists when using WSRP 1.
- </para>
- </note>
+ </imageobject>
+ </mediaobject>
+
+ <para>As you can see, the configuration screen now shows the currently held registration information and
+ the expected information from the producer. Enter a value for the
+ <literal>name</literal>
+ property
+ and then click on "Modify registration". If all went well and the producer accepted your new registration
+ data, you should see something similar to:
</para>
- </section>
- </section>
-
- <section>
- <title>Consumer operations</title>
-
- <para>
- Several operations are available from the consumer list view of the WSRP configuration portlet:
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/consumer_operations.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
+ <imagedata fileref="images/WSRP/modify_reg_self_end.png" format="PNG" align="center"
+ valign="middle" scalefit="1"/>
</imageobject>
</mediaobject>
- </para>
-
- <para>
- The available operations are:
- <itemizedlist>
- <listitem>
- <para>
- Configure: displays the consumer details and allows user to edit them
- </para>
- </listitem>
-
- <listitem>
- <para>
- Refresh: forces the consumer to retrieve the service description from the remote producer to refresh the local information (offered portlets, registration information, etc.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Activate/Deactivate: activates/deactivates a consumer, governing whether it will be available to provide portlets and receive portlet invocations
- </para>
- </listitem>
-
- <listitem>
- <para>
- Register/Deregister: registers/deregisters a consumer based on whether registration is required and/or acquired
- </para>
- </listitem>
-
- <listitem>
- <para>
- Delete: destroys the consumer, after deregistering it if it was registered
- </para>
- </listitem>
-
- <listitem>
- <para>
- Export: exports some or all of the consumer's portlets to be able to later import them in a different context
- </para>
- </listitem>
-
- <listitem>
- <para>
- Import: imports some or all of previously exported portlets
- </para>
- </listitem>
- </itemizedlist>
- </para>
-
- <note>
- <para>
- Import/Export functionality is only available to WSRP 2 consumers of producers that support this optional functionality. Import functionality is only available if portlets had previously been exported.
- </para>
- </note>
+
+ <note>
+ <title>Note</title>
+ <para>WSRP 1 makes it rather difficult to ascertain for sure what caused an
+ <exceptionname>OperationFailedFault</exceptionname>
+ as it is the generic exception returned by
+ producers if something did not quite happen as expected during a method invocation. This means that
+ <exceptionname>OperationFailedFault</exceptionname>
+ can be caused by several different reasons, one
+ of them being a request to modify the registration data. Please take a look at the log files to see
+ if you can gather more information as to what happened. WSRP 2 introduces an exception that is
+ specific to a request to modify registrations thus reducing the ambiguity that exists when using WSRP 1.
+ </para>
+
+ </note>
</section>
-
- <section>
- <title>Importing and exporting portlets</title>
-
- <para>
- Import and export are new functionalities added in WSRP 2. Exporting a portlet allows a consumer to get an opaque representation of the portlet which can then be use by the corresponding import operation to reconstitute it. It is mostly used in migration scenarios during batch operations. Since JBoss Enterprise Portal Platform does not currently support automated migration of portal data, the functionality that we provide as part of WSRP 2 is necessarily less complete than it could be with full portal support.
- </para>
-
- <para>
- The import/export implementation in JBoss Enterprise Portal Platform (available since 3.1) allows users to export portlets from a given consumer. These portlets can then be used to replace existing content on pages. This is accomplished by assigning previously exported portlets to replace the content displayed by windows on the portal's pages. Let us walk through an example to make things clearer.
- </para>
-
- <para>
- Clicking on the "Export" action for a given consumer will display the list of portlets currently made available by this specific consumer. An example of such a list is shown below:
- </para>
-
+ </section>
+
+ <section>
+ <title>Consumer operations</title>
+ <para>
+ Several operations are available from the consumer list view of the WSRP configuration portlet:
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/export_portlet_list.png" format="PNG" align="center" valign="middle"/>
+ <imagedata fileref="images/WSRP/consumer_operations.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
</imageobject>
</mediaobject>
-
+ </para>
+ <para>
+ The available operations are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Configure: displays the consumer details and allows user to edit them</para>
+ </listitem>
+ <listitem>
+ <para>Refresh: forces the consumer to retrieve the service description from the remote producer to
+ refresh
+ the local information (offered portlets, registration information, etc.)
+ </para>
+ </listitem>
+ <listitem>
+ <para>Activate/Deactivate: activates/deactivates a consumer, governing whether it will be available to
+ provide portlets and receive portlet invocations
+ </para>
+ </listitem>
+ <listitem>
+ <para>Register/Deregister: registers/deregisters a consumer based on whether registration is required
+ and/or acquired
+ </para>
+ </listitem>
+ <listitem>
+ <para>Delete: destroys the consumer, after deregistering it if it was registered</para>
+ </listitem>
+ <listitem>
+ <para>Export: exports some or all of the consumer's portlets to be able to later import them in a
+ different context
+ </para>
+ </listitem>
+ <listitem>
+ <para>Import: imports some or all of previously exported portlets</para>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <title>Note</title>
<para>
- Once portlets have been selected, they can be exported by clicking on the "Export" button thus making them available for later import:
+ Import/Export functionality is only available to WSRP 2 consumers of producers that support this optional
+ functionality. Import functionality is only available if portlets had previously been exported.
</para>
-
+ </note>
+ </section>
+
+ <section>
+ <title>Importing and exporting portlets</title>
+ <para>Import and export are new functionalities added in WSRP 2. Exporting a portlet allows a consumer to get
+ an opaque representation of the portlet which can then be use by the corresponding import operation to
+ reconstitute it. It is mostly used in migration scenarios during batch operations. Since JBoss Enterprise Portal Platform
+ does not currently support automated migration of portal data, the functionality that is provided as part of
+ WSRP 2 is necessarily less complete than it could be with full portal support.
+ </para>
+ <para>The import/export implementation in JBoss Enterprise Portal Platform allows users to export portlets
+ from a given consumer.
+ These portlets can then be used to replace existing content on pages. This is accomplished by assigning
+ previously exported portlets to replace the content displayed by windows on the portal's pages. Below is an example to make things clearer.
+ </para>
+ <para>Clicking on the "Export" action for a given consumer will display the list of portlets currently made
+ available by this specific consumer. An example of such a list is shown below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/export_portlet_list.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>Once portlets have been selected, they can be exported by clicking on the "Export" button thus making
+ them available for later import:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/export_done.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>You can re-import the portlets directly by pressing the "Use for import" button or, on the Consumers list
+ page, using the "Import" action for a given consumer. This assumes that you used that second option and that
+ you currently have several available sets of previously exported portlets to import from. After clicking the
+ action link, you should see a screen similar to the one below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/export_list.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>As you can see this screen presents the list of available exports with available operations for each:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>View: displays the export details as previously seen when the export was first performed</para>
+ </listitem>
+ <listitem>
+ <para>Delete: deletes the selected export, asking you for confirmation first</para>
+ </listitem>
+ <listitem>
+ <para>Use for import: selects the export to import portlets from</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Once you have selected an export to import from, you will see a screen similar to the one below:</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/import_start.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>The screen displays the list of available exported portlets for the previously selected export. You can
+ select which portlet you want to import by checking the checkbox next to its name. Next, you need to select
+ the content of which window the imported portlet will replace. This process is done in three steps. This example
+ assumes that you have the following page called
+ <literal>page1</literal>
+ and containing two windows called
+ <literal>NetUnity WSRP 2 Interop - Cache Markup (remote)</literal>
+ and
+ <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
+ as shown below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/import_original_page.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>In this example, you want to replace the content of the
+ <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
+ by the content of the
+ <literal>/ajaxPortlet.JSFAJAXPortlet</literal>
+ portlet that you previously exported. To do so, you will check the checkbox next to the
+ <literal>/ajaxPortlet.JSFAJAXPortlet</literal>
+ portlet name to indicate that you want to import its data and then select the
+ <literal>page1</literal>
+ in the list of available pages. The screen will then refresh to display the list of available windows on
+ that page, similar to the one seen below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/import_selected_page.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>Note that, at this point, you still need to select the window which content you want to replace before
+ being able to complete the import operation. Select the
+ <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
+ window, at which point the "Import" button will become enabled, indicating that you now have all the
+ necessary data to perform the import. If all goes well, pressing that button should result in a screen
+ similar to the one below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/import_success.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <para>If you now take a look at the
+ <literal>page1</literal>
+ page, you should now see that the content
+ <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal>
+ window has been replaced by the content of the
+ <literal>/ajaxPortlet.JSFAJAXPortlet</literal>
+ imported portlet and the window renamed appropriately:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/import_modified_page.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ </section>
+
+ <section>
+ <title>Erasing local registration data</title>
+ <para>
+ There are rare cases where it might be required to erase the local information without being able to
+ deregister first. This is the case when a consumer is registered with a producer that has been modified by
+ its administrator to not require registration anymore. If that ever was to happen (most likely, it will not),
+ you can erase the local registration information from the consumer so that it can resume interacting with
+ the remote producer. To do so, click on "Erase local registration" button next to the registration context
+ information on the consumer configuration screen:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/erase_registration.png" format="PNG" align="center" valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ <warning>
+ <title>Warning:</title>
+ <para>
+ This operation is dangerous as it can result in inability to interact with the remote producer if invoked
+ when not required. A warning screen will be displayed to give you a chance to change your mind:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/WSRP/erase_registration_warning.png" format="PNG" align="center"
+ valign="middle"/>
+ </imageobject>
+ </mediaobject>
+ </warning>
+ </section>
+ </section>
+
+ <section id="producer_config">
+ <title>Configuring JBoss Enterprise Portal Platform's WSRP Producer</title>
+ <section>
+ <title>Overview</title>
+ <para>
+ The preferred way to configure the behavior of Portal's WSRP Producer is via the WSRP configuration portlet.
+ Alternatively, it is possible to add an XML file called
+ <filename>wsrp-producer-config.xml</filename>
+ in the
+ <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename>
+ directory.
+ Several aspects can be modified with respects to whether registration is required for consumers to access
+ the Producer's services.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>An XML Schema defining which elements are available to configure Consumers via XML can be found
+ in
+ <filename> $JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_producer_1_0.xsd
+ </filename>
+ </para>
+ </note>
+ <important>
+ <title>Important</title>
+ <para>
+ It is important to note that once the XML configuration file for the producer has been read upon
+ the WSRP service first start, the associated information is put under control of JCR (Java Content
+ Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore
+ the content of the XML configuration file.
+ </para>
+ </important>
+ <note>
+ <title>Note</title>
+ <para>
+ The default configuration file for the producer can be found at
+ <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-producer-config.xml</filename>
+ </para>
+ </note>
+
+ </section>
+ <section>
+ <title>Default configuration</title>
+ <para>
+ The default producer configuration is to require that consumers register with it before providing access its
+ services but does not require any specific registration properties (apart from what is mandated by the
+ WSRP standard). It does, however, require consumers to be registered before sending them a full service
+ description. This means that the WSRP producer will not provide the list of offered portlets and other
+ capabilities to unregistered consumers. The producer also uses the default
+ <classname>RegistrationPolicy</classname>
+ paired with the default
+ <classname>RegistrationPropertyValidator</classname>. Property
+ validators will be discussed in greater detail later in <xref linkend="registration-configuration"/>. Suffice to say for now
+ that this allows users to customize how Portal's WSRP Producer decides whether a given registration property
+ is valid or not.
+ </para>
+ <para>
+ JBoss Enterprise Portal Platform provides a web interface to configure the producer's behavior. You can access it
+ by clicking on the "Producer Configuration" tab of the "WSRP" page of the "admin" portal. The image below is what you
+ should see with the default configuration:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/export_done.png" format="PNG" align="center" valign="middle"/>
+ <imagedata fileref="images/WSRP/producer_default.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
</imageobject>
</mediaobject>
-
- <para>
- You can re-import the portlets directly by pressing the "Use for import" button or, on the Consumers list page, using the "Import" action for a given consumer. Let's assume that you used that second option and that you currently have several available sets of previously exported portlets to import from. After clicking the action link, you should see a screen similar to the one below:
- </para>
-
+ <para>As would be expected, you can specify whether or not the producer will send the full service description to
+ unregistered consumers, and, if it requires registration, which
+ <classname>RegistrationPolicy</classname>
+ to use (and, if needed, which
+ <classname>RegistrationPropertyValidator</classname>), along with required
+ registration property description for which consumers must provide acceptable values to successfully
+ register.</para>
+
+ <para>New in JBoss Enterprise Portal Platform, the WSDL URLs to access the Portal's WSRP producer are now displayed either in WSRP 1
+ or WSRP 2 mode.
+ </para>
+ </section>
+
+ <section id="registration-configuration">
+ <title>Registration configuration</title>
+ <para>
+ In order to require consumers to register with Portal's producer before interacting with it, you need to
+ configure Portal's behavior with respect to registration. Registration is optional, as are registration
+ properties. The producer can require registration without requiring consumers to pass any registration
+ properties as is the case in the default configuration. To configure the producer starting with a blank
+ state:
+ </para>
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/export_list.png" format="PNG" align="center" valign="middle"/>
+ <imagedata fileref="images/WSRP/producer_blank.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
</imageobject>
</mediaobject>
-
<para>
- As you can see this screen presents the list of available exports with available operations for each.
- <itemizedlist>
- <listitem>
- <para>
- View: displays the export details as previously seen when the export was first performed
- </para>
- </listitem>
-
- <listitem>
- <para>
- Delete: deletes the selected export, asking you for confirmation first
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use for import: selects the export to import portlets from
- </para>
- </listitem>
- </itemizedlist>
+ You will allow unregistered consumers to see the list of offered portlets so you leave the first checkbox
+ ("Access to full service description requires consumers to be registered.") unchecked. You will, however,
+ specify that consumers will need to be registered to be able to interact with the producer. Check the second
+ checkbox ("Requires registration. Modifying this information will trigger invalidation of consumer
+ registrations."). The screen should now refresh and display:
</para>
-
- <para>
- Once you've selected an export to import from, you will see a screen similar to the one below:
- </para>
-
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/import_start.png" format="PNG" align="center" valign="middle"/>
+ <imagedata fileref="images/WSRP/producer_registration.png" format="PNG" align="center"
+ valign="middle" scalefit="1"/>
</imageobject>
</mediaobject>
-
- <para>
- The screen displays the list of available exported portlets for the previously selected export. You can select which portlet you want to import by checking the checkbox next to its name. Next, you need to select the content of which window the imported portlet will replace. This process is done in three steps. Let's assume in this example that you have the following page called <literal>page1</literal> and containing two windows called <literal>NetUnity WSRP 2 Interop - Cache Markup (remote)</literal> and <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal> as shown below:
+ <para>You can specify the fully-qualified name for your
+ <classname>RegistrationPolicy</classname>
+ and
+ <classname>RegistrationPropertyValidator</classname>
+ there. Keep the default value. See
+ <xref linkend="custom_registration"/>
+ for more details. Add, however, a registration property called
+ <literal>email</literal>. Click "Add property" and enter the appropriate information in the fields,
+ providing a description for the registration property that can be used by consumers to figure out its
+ purpose:
</para>
-
<mediaobject>
<imageobject>
- <imagedata fileref="images/WSRP/import_original_page.png" format="PNG" align="center" valign="middle"/>
+ <imagedata fileref="images/WSRP/producer_email.png" format="PNG" align="center" valign="middle"
+ scalefit="1"/>
</imageobject>
</mediaobject>
-
- <para>
- In this example, we want to replace the content of the <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal> by the content of the <literal>/ajaxPortlet.JSFAJAXPortlet</literal> portlet that we previously exported. To do so, we will check the checkbox next to the <literal>/ajaxPortlet.JSFAJAXPortlet</literal> portlet name to indicate that we want to import its data and then select the <literal>page1</literal> in the list of available pages. The screen will then refresh to display the list of available windows on that page, similar to the one seen below:
+ <para>Press "Save" to record your modifications.
</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_selected_page.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
-
+
+ <note>
+ <title>Note</title>
+ <para>At this time, only String (xsd:string) properties are supported. If your application requires more
+ complex properties, please supply feedback.
+ </para>
+ </note>
+
+ <note>
+ <title>Note</title>
+ <para>If consumers are already registered with the producer, modifying the configuration of required
+ registration
+ information will trigger the invalidation of held registrations, requiring consumers to modify their
+ registration before being able to access the producer again. You saw the consumer side of that process
+ in
+ <xref linkend="reg_mod_error"/>.
+ </para>
+
+ </note>
+
+
+ <section id="custom_registration">
+ <title>Customization of Registration handling behavior</title>
<para>
- Note that, at this point, we still need to select the window which content we want to replace before being able to complete the import operation. Let's select the <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal> window, at which point the "Import" button will become enabled, indicating that we now have all the necessary data to perform the import. If all goes well, pressing that button should result in a screen similar to the one below:
+ Registration handling behavior can be customized by users to suit their Producer needs. This is
+ accomplished by providing an implementation of the
+ <classname>RegistrationPolicy</classname>
+ interface. This interface defines methods that are called by Portal's Registration service so that
+ decisions can be made appropriately. A default registration policy that provides basic
+ behavior is provided and should be enough for most user needs.
</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_success.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
-
<para>
- If you now take a look at the <literal>page1</literal> page, you should now see that the content <literal>/samples-remotecontroller-portlet.RemoteControl (remote)</literal> window has been replaced by the content of the <literal>/ajaxPortlet.JSFAJAXPortlet</literal> imported portlet and the window renamed appropriately:
+ While the default registration policy provides default behavior for most registration-related aspects,
+ there is still one aspect that requires configuration: whether a given value for a registration property
+ is acceptable by the WSRP Producer. This is accomplished by plugging a
+ <classname>RegistrationPropertyValidator</classname>
+ in the default registration policy. This allows users to define their own validation mechanism.
</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/import_modified_page.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
- </section>
-
- <section>
- <title>Erasing local registration data</title>
-
<para>
- There are rare cases where it might be required to erase the local information without being able to deregister first. This is the case when a consumer is registered with a producer that has been modified by its administrator to not require registration anymore. If that ever was to happen (most likely, it won't), you can erase the local registration information from the consumer so that it can resume interacting with the remote producer. To do so, click on "Erase local registration" button next to the registration context information on the consumer configuration screen:
+ Please refer to the
+ <trademark class="trade">Javadoc</trademark>
+ for
+ <classname>org.gatein.registration.RegistrationPolicy</classname>
+ and
+ <classname>org.gatein.registration.policies.RegistrationPropertyValidator</classname>
+ for more
+ details on what is expected of each method.
</para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/erase_registration.png" format="PNG" align="center" valign="middle"/>
- </imageobject>
- </mediaobject>
-
- <para>
- <emphasis>Warning:</emphasis> This operation is dangerous as it can result in inability to interact with the remote producer if invoked when not required. A warning screen will be displayed to give you a chance to change your mind:
- </para>
-
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/erase_registration_warning.png" format="PNG" align="center"
- valign="middle"/>
- </imageobject>
- </mediaobject>
- </section>
- </section>
-
- <section id="producer_config">
- <title>Configuring JBoss Enterprise Portal Platform's WSRP Producer</title>
-
- <section>
- <title>Overview</title>
-
- <para>
- The preferred way to configure the behavior of Portal's WSRP Producer is via the WSRP configuration portlet. Alternatively, it is possible to add an XML file called <filename>wsrp-producer-config.xml</filename> in the <filename>$JBOSS_PROFILE_HOME/conf/gatein/</filename> directory. Several aspects can be modified with respects to whether registration is required for consumers to access the Producer's services.
+ <para>Defining a registration policy is required for the producer to be correctly configured. This is
+ accomplished by specifying the qualified class name of the registration policy. Since it is anticipated that
+ most users will use the default registration policy, it is possible to provide the class
+ name of your custom property validator instead to customize the default registration policy behavior.
+ Note that property validators are only used by the default policy.
+
<note>
- <para>
- An XML Schema defining which elements are available to configure Consumers via XML can be found in <filename> $JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/wsrp-integration-api-$WSRP_VERSION.jar/xsd/gatein_wsrp_producer_1_0.xsd </filename>
+ <title>Note</title>
+ <para>Since the policy or the validator are defined via their class name and dynamically loaded, it is
+ important that you make sure that the identified class is available to the application server. One
+ way
+ to accomplish that is to deploy your policy implementation as JAR file in your AS instance deploy
+ directory. Note also that, since both policies and validators are dynamically instantiated, they
+ must
+ provide a default, no-argument constructor.
</para>
</note>
-
- <important>
- <para>
- It is important to note that once the XML configuration file for the producer has been read upon the WSRP service first start, the associated information is put under control of JCR (Java Content Repository). Subsequent launches of the WSRP service will use the JCR-stored information and ignore the content of the XML configuration file.
- </para>
- </important>
-
- <note>
- <para>
- The default configuration file for the producer can be found at <filename>$JBOSS_PROFILE_HOME/deploy/gatein-wsrp-integration.ear/lib/extension-component-$WSRP_VERSION.jar/conf/wsrp-producer-config.xml</filename>
- </para>
- </note>
</para>
</section>
-
- <section>
- <title>Default configuration</title>
-
- <para>
- The default producer configuration is to require that consumers register with it before providing access its services but does not require any specific registration properties (apart from what is mandated by the WSRP standard). It does, however, require consumers to be registered before sending them a full service description. This means that our WSRP producer will not provide the list of offered portlets and other capabilities to unregistered consumers. The producer also uses the default <classname>RegistrationPolicy</classname> paired with the default <classname>RegistrationPropertyValidator</classname>. We will look into property validators in greater detail later in<xref linkend="registration-configuration"/>. Suffice to say for now that this allows users to customize how Portal's WSRP Producer decides whether a given registration property is valid or not.
- </para>
-
- <para>
- JBoss Enterprise Portal Platform provides a web interface to configure the producer's behavior. You can access it by clicking on the "Producer Configuration" tab of the "WSRP" page of the "admin" portal. Here's what you should see with the default configuration:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_default.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- As would be expected, you can specify whether or not the producer will send the full service description to unregistered consumers, and, if it requires registration, which <classname>RegistrationPolicy</classname> to use (and, if needed, which <classname>RegistrationPropertyValidator</classname>), along with required registration property description for which consumers must provide acceptable values to successfully register.
- </para>
-
- <para>
- New in JBoss Enterprise Portal Platform, we now display the WSDL URLs to access JBoss Enterprise Portal Platform's WSRP producer either in WSRP 1 or WSRP 2 mode.
- </para>
- </section>
-
- <section id="registration-configuration">
- <title>Registration configuration</title>
-
- <para>
- In order to require consumers to register with Portal's producer before interacting with it, you need to configure Portal's behavior with respect to registration. Registration is optional, as are registration properties. The producer can require registration without requiring consumers to pass any registration properties as is the case in the default configuration. Let's configure our producer starting with a blank state:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_blank.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- We will allow unregistered consumers to see the list of offered portlets so we leave the first checkbox ("Access to full service description requires consumers to be registered.") unchecked. We will, however, specify that consumers will need to be registered to be able to interact with our producer. Check the second checkbox ("Requires registration. Modifying this information will trigger invalidation of consumer registrations."). The screen should now refresh and display:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_registration.png" format="PNG" align="center"
- valign="middle" scalefit="1"/>
- </imageobject>
- </mediaobject>
- You can specify the fully-qualified name for your <classname>RegistrationPolicy</classname> and <classname>RegistrationPropertyValidator</classname> there. We will keep the default value. See <xref linkend="custom_registration"/> for more details. Let's add, however, a registration property called <literal>email</literal>. Click "Add property" and enter the appropriate information in the fields, providing a description for the registration property that can be used by consumers to figure out its purpose:
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/WSRP/producer_email.png" format="PNG" align="center" valign="middle"
- scalefit="1"/>
- </imageobject>
- </mediaobject>
- Press "Save" to record your modifications.
- <note>
- <para>
- At this time, only String (xsd:string) properties are supported. If your application requires more complex properties, please let us know.
- </para>
- </note>
-
- <note>
- <para>
- If consumers are already registered with the producer, modifying the configuration of required registration information will trigger the invalidation of held registrations, requiring consumers to modify their registration before being able to access the producer again. We saw the consumer side of that process in <xref linkend="reg_mod_error"/>.
- </para>
- </note>
- </para>
-
- <section id="custom_registration">
- <title>Customization of Registration handling behavior</title>
-
- <para>
- Registration handling behavior can be customized by users to suit their Producer needs. This is accomplished by providing an implementation of the <classname>RegistrationPolicy</classname> interface. This interface defines methods that are called by Portal's Registration service so that decisions can be made appropriately. A default registration policy that provides basic behavior is provided and should be enough for most user needs.
- </para>
-
- <para>
- While the default registration policy provides default behavior for most registration-related aspects, there is still one aspect that requires configuration: whether a given value for a registration property is acceptable by the WSRP Producer. This is accomplished by plugging a <classname>RegistrationPropertyValidator</classname> in the default registration policy. This allows users to define their own validation mechanism.
- </para>
-
- <para>
- Please refer to the <trademark class="trade">Javadoc</trademark> for <classname>org.gatein.registration.RegistrationPolicy</classname> and <classname>org.gatein.registration.policies.RegistrationPropertyValidator</classname> for more details on what is expected of each method.
- </para>
-
- <para>
- Defining a registration policy is required for the producer to be correctly configured. This is accomplished by specifying the qualified class name of the registration policy. Since we anticipate that most users will use the default registration policy, it is possible to provide the class name of your custom property validator instead to customize the default registration policy behavior. Note that property validators are only used by the default policy.
- <note>
- <para>
- Since the policy or the validator are defined via their class name and dynamically loaded, it is important that you make sure that the identified class is available to the application server. One way to accomplish that is to deploy your policy implementation as JAR file in your AS instance deploy directory. Note also that, since both policies and validators are dynamically instantiated, they must provide a default, no-argument constructor.
- </para>
- </note>
- </para>
- </section>
- </section>
-
- <section id="strict-mode">
- <title>WSRP validation mode</title>
-
- <para>
- The lack of conformance kit and the wording of the WSRP specification leaves room for differing interpretations, resulting in interoperability issues. It is therefore possible to encounter issues when using consumers from different vendors. We have experienced such issues and have introduced a way to relax the validation that our WSRP producer performs on the data provided by consumers to help with interoperability by accepting data that would normally be invalid. Note that we only relax our validation algorithm on aspects of the specification that are deemed harmless such as invalid language codes.
- </para>
-
- <para>
- By default, the WSRP producer is configured in strict mode. If you experience issues with a given consumer, you might want to try to relax the validation mode. This is accomplished by unchecking the "Use strict WSRP compliance." checkbox on the Producer configuration screen.
- </para>
- </section>
</section>
- </chapter>
+ <section id="strict-mode">
+ <title>WSRP validation mode</title>
+ <para>The lack of conformance kit and the wording of the WSRP specification leaves room for differing
+ interpretations, resulting in interoperability issues. It is therefore possible to encounter issues when
+ using consumers from different vendors. A way to relax
+ the validation that the WSRP producer performs on the data provided by consumers has been introduced to help with
+ interoperability by accepting data that would normally be invalid. Note that this validation
+ algorithm is only relaxed on aspects of the specification that are deemed harmless such as invalid language codes.
+ </para>
+ <para>
+ By default, the WSRP producer is configured in strict mode. If you experience issues with a given consumer,
+ you might want to try to relax the validation mode. This is accomplished by unchecking the "Use strict WSRP
+ compliance." checkbox on the Producer configuration screen.
+ </para>
+ </section>
+
+ </section>
+</chapter>
13 years
gatein SVN: r8205 - in epp/docs/branches/5.2/Site_Publisher/User_Guide: en-US and 1 other directory.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:37:41 -0500 (Tue, 06 Dec 2011)
New Revision: 8205
Modified:
epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Site_Publisher/User_Guide/publican.cfg
Log:
Bumping for stage
Modified: epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Book_Info.xml 2011-12-07 04:33:19 UTC (rev 8204)
+++ epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Book_Info.xml 2011-12-07 04:37:41 UTC (rev 8205)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>4</pubsnumber>
+ <pubsnumber>5</pubsnumber>
<abstract>
<para>
This document provides an easy to follow guide to the functions and options available in the Enterprise Portal Platform Site Publisher extension (powered by eXo). It is intended to be accessible and useful to both experienced and novice portal users.
Modified: epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Revision_History.xml 2011-12-07 04:33:19 UTC (rev 8204)
+++ epp/docs/branches/5.2/Site_Publisher/User_Guide/en-US/Revision_History.xml 2011-12-07 04:37:41 UTC (rev 8205)
@@ -22,7 +22,7 @@
</revdescription>
</revision>
<revision>
- <revnumber>5.2.0-3</revnumber>
+ <revnumber>5.2.0-5</revnumber>
<date>Tue Nov 15 2011</date>
<author>
<firstname>Scott</firstname>
Modified: epp/docs/branches/5.2/Site_Publisher/User_Guide/publican.cfg
===================================================================
--- epp/docs/branches/5.2/Site_Publisher/User_Guide/publican.cfg 2011-12-07 04:33:19 UTC (rev 8204)
+++ epp/docs/branches/5.2/Site_Publisher/User_Guide/publican.cfg 2011-12-07 04:37:41 UTC (rev 8205)
@@ -5,7 +5,7 @@
type: Book
brand: JBoss
debug:1
-#show_remarks: 1
+show_remarks: 1
toc_section_depth:10
max_image_width:660
condition: redhat
13 years
gatein SVN: r8204 - epp/docs/branches/5.2/Reference_Guide/en-US/images/eXoJCR.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:33:19 -0500 (Tue, 06 Dec 2011)
New Revision: 8204
Added:
epp/docs/branches/5.2/Reference_Guide/en-US/images/eXoJCR/jmx-jconsole.png
Log:
Adding missing image
Added: epp/docs/branches/5.2/Reference_Guide/en-US/images/eXoJCR/jmx-jconsole.png
===================================================================
(Binary files differ)
Property changes on: epp/docs/branches/5.2/Reference_Guide/en-US/images/eXoJCR/jmx-jconsole.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
13 years
gatein SVN: r8203 - epp/docs/branches/5.2/Migration_Guide/en-US.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:32:08 -0500 (Tue, 06 Dec 2011)
New Revision: 8203
Modified:
epp/docs/branches/5.2/Migration_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Migration_Guide/en-US/Revision_History.xml
Log:
Bumping for stage
Modified: epp/docs/branches/5.2/Migration_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Migration_Guide/en-US/Book_Info.xml 2011-12-07 04:31:34 UTC (rev 8202)
+++ epp/docs/branches/5.2/Migration_Guide/en-US/Book_Info.xml 2011-12-07 04:32:08 UTC (rev 8203)
@@ -6,7 +6,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>3</pubsnumber>
+ <pubsnumber>4</pubsnumber>
<abstract>
<para>
This guide will assist Portal administrators to migrate from an installation of JBoss Enterprise Portal Platform 5.1 to the 5.2 version.
Modified: epp/docs/branches/5.2/Migration_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Migration_Guide/en-US/Revision_History.xml 2011-12-07 04:31:34 UTC (rev 8202)
+++ epp/docs/branches/5.2/Migration_Guide/en-US/Revision_History.xml 2011-12-07 04:32:08 UTC (rev 8203)
@@ -5,7 +5,7 @@
<simpara>
<revhistory>
<revision>
- <revnumber>5.2.0-3</revnumber>
+ <revnumber>5.2.0-4</revnumber>
<date>Wed Dec 7 2011</date>
<author>
<firstname>Scott</firstname>
13 years
gatein SVN: r8202 - in epp/docs/branches/5.2/Reference_Guide: en-US and 10 other directories.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:31:34 -0500 (Tue, 06 Dec 2011)
New Revision: 8202
Added:
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml.cut
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml.cut
Removed:
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml
Modified:
epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml
epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml
epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml
epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml
epp/docs/branches/5.2/Reference_Guide/publican.cfg
Log:
JBEPP-1431: QA feedback. Removing unnecessary sections
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Book_Info.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>13</pubsnumber>
+ <pubsnumber>14</pubsnumber>
<abstract>
<para>
This Reference Guide is a high-level usage document. It deals with more advanced topics than the Installation and User Guides, adding new content or taking concepts discussed in the earlier documents further. It aims to provide supporting documentation for advanced users of the JBoss Enterprise Portal Platform product. Its primary focus is on advanced use of the product and it assumes an intermediate or advanced knowledge of the technology and terms.
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Reference_Guide.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -3,16 +3,24 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
-<book>
- <xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/PortalDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/PortletDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- <xi:include href="modules/GadgetDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="modules/AuthenticationAndIdentity.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/WSRP.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/Advanced.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="modules/eXoJCR.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-</book>
-
+ <book>
+ <xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/PortalDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/PortletDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<!-- <xi:include href="modules/GadgetDevelopment.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ <xi:include href="modules/AuthenticationAndIdentity.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/WSRP.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/Advanced.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="modules/eXoJCR.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </book>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/Revision_History.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -7,6 +7,20 @@
<title>Revision History</title>
<simpara>
<revhistory>
+ <revision>
+ <revnumber>5.2.0-14</revnumber>
+ <date>Wed Dec 7 2011</date>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Mumford</surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member>JBEPP-1431: Incorporate QA feedback.</member>
+ </simplelist>
+ </revdescription>
+ </revision>
<revision>
<revnumber>5.2.0-13</revnumber>
<date>Thu Dec 1 2011</date>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortalDevelopment_DefaultPortalNavigationConfiguration/navigation.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -6,17 +6,30 @@
<priority>1</priority>
<page-nodes>
<node>
- <uri>home</uri>
- <name>home</name>
- <label>#{portal.classic.home}</label>
- <page-reference>portal::classic::homepage</page-reference>
+ <uri>home</uri>
+ <name>home</name>
+ <label>#{portal.classic.home}</label>
+ <page-reference>portal::classic::homepage</page-reference>
</node>
<node>
- <uri>sitemap</uri>
- <name>sitemap</name>
- <label>#{portal.classic.sitemap}</label>
- <visibility>DISPLAYED</visibility>
- <page-reference>portal::classic::sitemap</page-reference>
- </node>
+ <name>sitemap</name>
+ <label xml:lang="en">SiteMap</label>
+ <label xml:lang="fr">SiteMap</label>
+ <label xml:lang="es">Mapa del Sitio</label>
+ <label xml:lang="de">Seitenübersicht</label>
+ <label xml:lang="it">Mappa del Sito</label>
+ <label xml:lang="nl">Sitemap</label>
+ <label xml:lang="pt-BR">Mapa do Site</label>
+ <label xml:lang="ja">サイトマップ</label>
+ <label xml:lang="ne">साईटम्याप</label>
+ <label xml:lang="ru">SiteMap</label>
+ <label xml:lang="ar">خريطة الموقع</label>
+ <label xml:lang="ko">사이트맵</label>
+ <label xml:lang="vi">Sơ đồ</label>
+ <label xml:lang="zh">网站地图</label>
+ <label xml:lang="zh-TW">網站導覽</label>
+ <visibility>DISPLAYED</visibility>
+ <page-reference>portal::classic::sitemap</page-reference>
+ </node>
</page-nodes>
</node-navigation>
\ No newline at end of file
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/extras/PortletDevelopment_Standard/default249.java 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,6 +1,5 @@
...
- public void processAction(ActionRequest aRequest, ActionResponse aResponse) throws PortletException, IOException,
- UnavailableException
+ public void processAction(ActionRequest aRequest, ActionResponse aResponse) throws PortletException, IOException, UnavailableException
{
String sYourname = (String) aRequest.getParameter("yourname");
aResponse.setRenderParameter("yourname", sYourname);
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Global_Portlet.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,90 +4,90 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Shared_portlet.xml">
- <title>Shared <filename>portlet.xml</filename></title>
- <para>
- The Java Portlet Specification introduces <literal>PortletFilter</literal> as a standard approach to extend the behaviors of portlet objects. For example, a filter can transform the content of portlet requests and portlet responses.
- </para>
- <para>
- According to the Portlet Specification, there are normally three steps in setting up a portlet filter:
- </para>
- <procedure>
- <step>
- <para>
- Implement a <literal>PortletFilter</literal> object.
- </para>
+ <title>Shared <filename>portlet.xml</filename></title>
+ <para>
+ The Java Portlet Specification introduces <literal>PortletFilter</literal> as a standard approach to extend the behaviors of portlet objects. For example, a filter can transform the content of portlet requests and portlet responses.
+ </para>
+ <para>
+ According to the Portlet Specification, there are normally three steps in setting up a portlet filter:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Implement a <literal>PortletFilter</literal> object.
+ </para>
- </step>
- <step>
- <para>
- Define the filter in portlet application deployment descriptor.
- </para>
+ </step>
+ <step>
+ <para>
+ Define the filter in portlet application deployment descriptor.
+ </para>
- </step>
- <step>
- <para>
- Define the filter mapping in portlet definitions.
- </para>
+ </step>
+ <step>
+ <para>
+ Define the filter mapping in portlet definitions.
+ </para>
- </step>
+ </step>
- </procedure>
-
- <para>
- While the first two steps are quite straightforward, the third requires developers or administrators to replicate the filter mapping in many portlet definitions. This can be tedious and opens the potential for input errors. The global portlet feature is designed to mitigate these concerns.
- </para>
- <para>
- Global portlet metadata is declared in the <filename>portlet.xml</filename> file and conforms with the Portlet 2.0 XSD.
- </para>
-
+ </procedure>
+
+ <para>
+ While the first two steps are quite straightforward, the third requires developers or administrators to replicate the filter mapping in many portlet definitions. This can be tedious and opens the potential for input errors. The global portlet feature is designed to mitigate these concerns.
+ </para>
+ <para>
+ Global portlet metadata is declared in the <filename>portlet.xml</filename> file and conforms with the Portlet 2.0 XSD.
+ </para>
+
<programlisting language="XML" role="XML"><portlet-app version="1.0" xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
</portlet-app>
</programlisting>
- <para>
- The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/portlet.xml</filename>
- </para>
- <para>
- <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable><JBOSS_HOME></replaceable>/server/default/conf/gatein/portlet.xml</filename>.
- </para>
- <section id="sect-Reference_Guide-Shared_portlet.xml-Global_Metadata_Elements">
- <title>Global Metadata Elements</title>
- <para>
- The global <filename>portlet.xml</filename> file conforms, with some restrictions, to the portlet deployment descriptor schema defined in the Portlet Specification. In this file, the following elements are supported:
- </para>
- <orderedlist>
- <listitem>
- <para>
- <xref linkend="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter" />
- </para>
+ <para>
+ The path to the global <filename>portlet.xml</filename> is the value of <literal>gatein.portlet.config</literal> in the <filename>configuration.properties.xml</filename> file. By default The file path is <filename>/<replaceable><JBOSS_HOME></replaceable>/server/<replaceable><PROFILE></replaceable>/conf/gatein/portlet.xml</filename>
+ </para>
+ <para>
+ <emphasis role="bold">For JBoss</emphasis>: The file path is <filename><replaceable><JBOSS_HOME></replaceable>/server/default/conf/gatein/portlet.xml</filename>.
+ </para>
+ <section id="sect-Reference_Guide-Shared_portlet.xml-Global_Metadata_Elements">
+ <title>Global Metadata Elements</title>
+ <para>
+ The global <filename>portlet.xml</filename> file conforms, with some restrictions, to the portlet deployment descriptor schema defined in the Portlet Specification. In this file, the following elements are supported:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ <xref linkend="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter" />
+ </para>
- </listitem>
- <listitem>
- <para>
- Portlet Mode
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Portlet Mode
+ </para>
- </listitem>
- <listitem>
- <para>
- Window State
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Window State
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- <formalpara id="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter">
- <title>Portlet Filter</title>
- <para>
- Portlet filter mappings declared in the global <filename>portlet.xml</filename> file are applied across portlet applications.
- </para>
+ </orderedlist>
+ <formalpara id="form-Reference_Guide-Global_Metadata_Elements-Portlet_Filter">
+ <title>Portlet Filter</title>
+ <para>
+ Portlet filter mappings declared in the global <filename>portlet.xml</filename> file are applied across portlet applications.
+ </para>
- </formalpara>
- <para>
- With the XML configuration below, the filter <literal>ApplicationMonitoringFilter</literal> involves in request handling on any deployed portlet.
- </para>
-
+ </formalpara>
+ <para>
+ With the XML configuration below, the filter <literal>ApplicationMonitoringFilter</literal> is involved in request handling on any deployed portlet.
+ </para>
+
<programlisting language="XML" role="XML"><filter>
<filter-name>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-name>
<filter-class>org.exoplatform.portal.application.ApplicationMonitoringFilter</filter-class>
@@ -97,42 +97,42 @@
<lifecycle>RESOURCE_PHASE</lifecycle>
</filter>
</programlisting>
- <para>
- <emphasis role="bold">Application Monitoring Filter</emphasis> supports four lifecycle phases in the order below:
- </para>
- <orderedlist>
- <listitem>
- <para>
- ACTION_PHASE
- </para>
+ <para>
+ <emphasis role="bold">Application Monitoring Filter</emphasis> supports four lifecycle phases in the order below:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ ACTION_PHASE
+ </para>
- </listitem>
- <listitem>
- <para>
- EVENT_PHASE
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ EVENT_PHASE
+ </para>
- </listitem>
- <listitem>
- <para>
- RENDER_PHASE
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ RENDER_PHASE
+ </para>
- </listitem>
- <listitem>
- <para>
- RESOURCE_PHASE
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ RESOURCE_PHASE
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- <para>
- The Application Monitoring Filter records statistic information about deployed portlets. The filter alternates the actual monitoring mechanism in WebUI Framework.
- </para>
+ </orderedlist>
+ <para>
+ The Application Monitoring Filter records statistic information about deployed portlets. The filter alternates the actual monitoring mechanism in WebUI Framework.
+ </para>
- </section>
-
+ </section>
+
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/configuration.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,161 +4,161 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Bridge_Configuration">
- <title>Bridge Configuration</title>
- <para>
- The 329 specification is aimed at making the developer's life as easy as possible with JSF+Portlet development. You will see below that there are minimal settings to getting any JSF web application up and running in the Portal environment.
- </para>
- <!-- Commented as Maven Archetypes section removed from gettingstarted.xml
+ <title>Bridge Configuration</title>
+ <para>
+ The 329 specification is aimed at making the developer's life as easy as possible with JSF+Portlet development. You will see below that there are minimal settings to getting any JSF web application up and running in the Portal environment.
+ </para>
+ <!-- Commented as Maven Archetypes section removed from gettingstarted.xml
<para>
- If you are new to these concepts, we highly recommend you refer to <xref linkend="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes" />.
- </para> --> <section id="sect-Reference_Guide-Bridge_Configuration-Core_Setup_and_Configuration">
- <title>Core Setup and Configuration</title>
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-portlet.xml">
- <title>portlet.xml</title>
- <para>
- The basic JSR-329 portlet configuration.
- </para>
-
+ If you are new to these concepts, we highly recommend you refer to <xref linkend="sect-Reference_Guide-Getting_started_with_JBoss_Portlet_Bridge-Maven_Archetypes" />.
+ </para> --> <section id="sect-Reference_Guide-Bridge_Configuration-Core_Setup_and_Configuration">
+ <title>Core Setup and Configuration</title>
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-portlet.xml">
+ <title>portlet.xml</title>
+ <para>
+ The basic JSR-329 portlet configuration.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default197.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- When <parameter>preserveActionParams</parameter> is set to <parameter>TRUE</parameter>, the bridge must maintain any request parameters assigned during the portlet's action request.
- </para>
- <para>
- The request parameters are maintained in the <emphasis>"bridge request scope"</emphasis>. When this attribute is not present or is <parameter>FALSE</parameter> the action's request parameters are only maintained for the duration of the <emphasis>portlet request scope</emphasis>.
- </para>
-
+ <para>
+ When <parameter>preserveActionParams</parameter> is set to <parameter>TRUE</parameter>, the bridge must maintain any request parameters assigned during the portlet's action request.
+ </para>
+ <para>
+ The request parameters are maintained in the <emphasis>"bridge request scope"</emphasis>. When this attribute is not present or is <parameter>FALSE</parameter> the action's request parameters are only maintained for the duration of the <emphasis>portlet request scope</emphasis>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default198.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-faces_config.xml">
- <title>faces-config.xml</title>
- <para>
- The <parameter>PortletViewHandler</parameter> ensures that each JSF portlet instance is properly namespaced.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-faces_config.xml">
+ <title>faces-config.xml</title>
+ <para>
+ The <parameter>PortletViewHandler</parameter> ensures that each JSF portlet instance is properly namespaced.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default199.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-Facelets_Configuration">
- <title>Facelets Configuration</title>
- <para>
- The following <filename>web.xml</filename> setting is only for <literal>Facelets</literal> based applications
- </para>
- <section id="sect-Reference_Guide-Facelets_Configuration-web.xml">
- <title>web.xml</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-Facelets_Configuration">
+ <title>Facelets Configuration</title>
+ <para>
+ The following <filename>web.xml</filename> setting is only for <literal>Facelets</literal> based applications
+ </para>
+ <section id="sect-Reference_Guide-Facelets_Configuration-web.xml">
+ <title>web.xml</title>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default200.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
-
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default201.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <variablelist id="vari-Reference_Guide-web.xml-RenderPolicy_Options">
- <title>RenderPolicy Options</title>
- <varlistentry>
- <term>ALWAYS_DELEGATE</term>
- <listitem>
- <para>
- Indicates the bridge should not render the view itself but rather always delegate the rendering.
- </para>
+ <variablelist id="vari-Reference_Guide-web.xml-RenderPolicy_Options">
+ <title>RenderPolicy Options</title>
+ <varlistentry>
+ <term>ALWAYS_DELEGATE</term>
+ <listitem>
+ <para>
+ Indicates the bridge should not render the view itself but rather always delegate the rendering.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>NEVER_DELEGATE</term>
- <listitem>
- <para>
- Indicates the bridge should always render the view itself and never delegate.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>NEVER_DELEGATE</term>
+ <listitem>
+ <para>
+ Indicates the bridge should always render the view itself and never delegate.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
- <varlistentry>
- <term>DEFAULT</term>
- <listitem>
- <para>
- Directs the bridge to first delegate the render only if an Exception is thrown then render the view based on its own logic. If the configuration parameter is not present or has an invalid value the bridge renders using default behavior as it would if DEFAULT was set.
- </para>
+ </varlistentry>
+ <varlistentry>
+ <term>DEFAULT</term>
+ <listitem>
+ <para>
+ Directs the bridge to first delegate the render only if an Exception is thrown then render the view based on its own logic. If the configuration parameter is not present or has an invalid value the bridge renders using default behavior as it would if DEFAULT was set.
+ </para>
- </listitem>
+ </listitem>
- </varlistentry>
+ </varlistentry>
- </variablelist>
+ </variablelist>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSP_Only_Configuration">
- <title>JSP Only Configuration</title>
- <para>
- The following <filename>web.xml</filename> setting is only for JSP based applications. Download the demonstration application <ulink url="http://anonsvn.jboss.org/repos/portletbridge/trunk/examples/jsf-ri/1.2-ba...">here</ulink>.
- </para>
- <section id="sect-Reference_Guide-JSP_Only_Configuration-web.xml">
- <title>web.xml</title>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSP_Only_Configuration">
+ <title>JSP Only Configuration</title>
+ <para>
+ The following <filename>web.xml</filename> setting is only for JSP based applications. Download the demonstration application <ulink url="http://anonsvn.jboss.org/repos/portletbridge/trunk/examples/jsf-ri/1.2-ba...">here</ulink>.
+ </para>
+ <section id="sect-Reference_Guide-JSP_Only_Configuration-web.xml">
+ <title>web.xml</title>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default202.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <!-- Section removed as per feedback from Prabhat Jha
+ </section>
+
+ <!-- Section removed as per feedback from Prabhat Jha
<section id="sect-Reference_Guide-Core_Setup_and_Configuration-JSR_329">
- <title>JSR-329</title>
- <para>
- The JBoss Portlet Bridge can be used with any compatible implementation (for example, <literal>MyFaces</literal> implementation). Simply put the following into <filename>web.xml</filename>:
- </para>
-
+ <title>JSR-329</title>
+ <para>
+ The JBoss Portlet Bridge can be used with any compatible implementation (for example, <literal>MyFaces</literal> implementation). Simply put the following into <filename>web.xml</filename>:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default203.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section> -->
- </section>
-
- <!-- End 301 core setup --> <section id="sect-Reference_Guide-Bridge_Configuration-RichFaces_Setup_and_Configuration_Options">
- <title>RichFaces Setup and Configuration Options</title>
- <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-web.xml">
- <title>web.xml</title>
- <para>
- The following configuration is designated for portlets using the <application>RichFaces</application> library. These settings will vary based on your individual needs.
- </para>
- <para>
- See <ulink url="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/..."> this section</ulink> of the <application>RichFaces</application> documentation for more details.
- </para>
- <para>
- Sometimes it is better to use the "<parameter>ALL</parameter>" load strategy in portlets so you do not need to worry about loading the "framework.pack.js" and "ui.pack.js" files manually in your portlet header.
- </para>
-
+ </section> -->
+ </section>
+
+ <!-- End 301 core setup --> <section id="sect-Reference_Guide-Bridge_Configuration-RichFaces_Setup_and_Configuration_Options">
+ <title>RichFaces Setup and Configuration Options</title>
+ <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-web.xml">
+ <title>web.xml</title>
+ <para>
+ The following configuration is designated for portlets using the <application>RichFaces</application> library. These settings will vary based on your individual needs.
+ </para>
+ <para>
+ See <ulink url="http://www.jboss.org/file-access/default/members/jbossrichfaces/freezone/..."> this section</ulink> of the <application>RichFaces</application> documentation for more details.
+ </para>
+ <para>
+ Sometimes it is better to use the "<parameter>ALL</parameter>" load strategy in portlets so you do not need to worry about loading the "framework.pack.js" and "ui.pack.js" files manually in your portlet header.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default204.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <para>
- If you use the "<parameter>NONE</parameter>" strategy, you must include the following scripts in your portlet or portal page header. If you are using <application>JBoss Portal</application>, you can add this to the <filename>jboss-portlet.xml</filename> file.
- </para>
+ <note>
+ <para>
+ If you use the "<parameter>NONE</parameter>" strategy, you must include the following scripts in your portlet or portal page header. If you are using <application>JBoss Portal</application>, you can add this to the <filename>jboss-portlet.xml</filename> file.
+ </para>
- </note>
- <para>
- The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy.
- </para>
-
+ </note>
+ <para>
+ The <literal>org.ajax4jsf.RESOURCE_URI_PREFIX</literal> configuration cross-references the path to your scripts below. These settings are required for <application>RichFaces</application> using the "<parameter>NONE</parameter>" strategy.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default205.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- <application>Seam</application> automatically configures your Ajax4JSF Filter, so if you are running a <application>Seam</application> portlet, you do not need the following Filter configuration (however, you do need the <literal>RESOURCE_URI_PREFIX</literal> no matter what).
- </para>
-
+ <para>
+ <application>Seam</application> automatically configures your Ajax4JSF Filter, so if you are running a <application>Seam</application> portlet, you do not need the following Filter configuration (however, you do need the <literal>RESOURCE_URI_PREFIX</literal> no matter what).
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default206.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge">
- <!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configuration needed for Richfaces to work with WSRP and PortletBridge</title>
- <para>
- Use the following settings in <filename>web.xml</filename> when running WSRP portlets:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-RichFaces_Setup_and_Configuration_Options-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge">
+ <!-- Content added from JBEPP-708 and JBQA-3999 --> <title>Configuration needed for Richfaces to work with WSRP and PortletBridge</title>
+ <para>
+ Use the following settings in <filename>web.xml</filename> when running WSRP portlets:
+ </para>
+
<programlisting language="XML" role="XML"><context-param>
<param-name>org.jboss.portletbridge.WRAP_SCRIPTS</param-name>
<param-value>false</param-value>
@@ -173,10 +173,10 @@
<param-value>DEFAULT</param-value>
</context-param>
</programlisting>
- <para>
- The styles below must also be manually added to the facelets template header in the <filename><replaceable>JBOSS_HOME</replaceable>/portletbridge/examples/richFacesPortlet-<replaceable><VERSION></replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
- </para>
-
+ <para>
+ The styles below must also be manually added to the facelets template header in the <filename><replaceable>JBOSS_HOME</replaceable>/portletbridge/examples/richFacesPortlet-<replaceable><VERSION></replaceable>.war:richFacesPortlet.war/templates/main.xhtml</filename> file.
+ </para>
+
<programlisting language="XML" role="XML"><link rel="stylesheet" type="text/css"
href="/richFacesPortlet/faces/rfResorg/richfaces/renderkit/html/css/basic_both.xcss"/>
<link rel="stylesheet" type="text/css"
@@ -184,698 +184,698 @@
<link rel="stylesheet" type="text/css"
href="/richFacesPortlet/faces/rfRes/org/richfaces/skin.xcss"/>
</programlisting>
- <para>
- The table below outlines the current status of RichFaces features when used in both local and remote portlets.
- </para>
- <table id="tabl-Reference_Guide-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge-RichFaces_Feature_Status">
- <title>RichFaces Feature Status</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- Richfaces Component
- </entry>
- <entry>
- Supported as Local Portlet
- </entry>
- <entry>
- Supported as Remote Portlet using WSRP
- </entry>
+ <para>
+ The table below outlines the current status of RichFaces features when used in both local and remote portlets.
+ </para>
+ <table id="tabl-Reference_Guide-Configuration_needed_for_Richfaces_to_work_with_WSRP_and_PortletBridge-RichFaces_Feature_Status">
+ <title>RichFaces Feature Status</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ Richfaces Component
+ </entry>
+ <entry>
+ Supported as Local Portlet
+ </entry>
+ <entry>
+ Supported as Remote Portlet using WSRP
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <literal>a4j:commandButton</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>a4j:commandButton</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:commandLink</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:commandLink</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:jsFunction</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:jsFunction</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:push</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:push</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:poll</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:poll</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:queue</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:queue</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:status</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:status</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:keepAlive</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:keepAlive</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:include</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:include</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:loadStyle</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:loadStyle</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:loadScript</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:loadScript</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:ajaxValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:ajaxValidator</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:beanValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:beanValidator</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:graphValidator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:graphValidator</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:mediaOutput</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:mediaOutput</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:outputPanel</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.5)
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:outputPanel</literal>
+ </entry>
+ <entry>
+ Yes (except Firefox 3.5)
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:log</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:log</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:dataTable</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.6 and IE8)
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataTable</literal>
+ </entry>
+ <entry>
+ Yes (except Firefox 3.6 and IE8)
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>a4j:dataFilterSlider</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>a4j:dataFilterSlider</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:dataGrid</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataGrid</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:dataList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dataList</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:datascroller</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:datascroller</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:extendedDataTable</literal>
- </entry>
- <entry>
- Yes (except IE7)
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:extendedDataTable</literal>
+ </entry>
+ <entry>
+ Yes (except IE7)
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:repeat</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:repeat</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:scrollableDataTable</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.6)
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:scrollableDataTable</literal>
+ </entry>
+ <entry>
+ Yes (except Firefox 3.6)
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>drag-drop support</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>drag-drop support</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:contextMenu</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:contextMenu</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:dropDownMenu</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:dropDownMenu</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:tree</literal>
- </entry>
- <entry>
- Yes (except Firefox 3.5)
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:tree</literal>
+ </entry>
+ <entry>
+ Yes (except Firefox 3.5)
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:modalPanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:modalPanel</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:paint2d</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:paint2d</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:panel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panel</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:panelBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panelBar</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:panelMenu</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:panelMenu</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:progressBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:progressBar</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:separator</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:separator</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:simpleTogglePanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:simpleTogglePanel</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:spacer</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:spacer</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:tabPanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes (except tab deletion)
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:tabPanel</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes (except tab deletion)
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:togglePanel</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:togglePanel</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:toolBar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:toolBar</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:toolTip</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:toolTip</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:calendar</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:calendar</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:colorPicker</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:colorPicker</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:comboBox</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:comboBox</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:editor</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:editor</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:fileUpload</literal>
- </entry>
- <entry>
- No
- </entry>
- <entry>
- No
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:fileUpload</literal>
+ </entry>
+ <entry>
+ No
+ </entry>
+ <entry>
+ No
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:inplaceSelect</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inplaceSelect</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:inplaceInput</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inplaceInput</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:inputNumberSpinner</literal>
- </entry>
- <entry>
- Yes (except IE7)
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inputNumberSpinner</literal>
+ </entry>
+ <entry>
+ Yes (except IE7)
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:inputNumberSlider</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:inputNumberSlider</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:suggestionBox</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:suggestionBox</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:listShuttle</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:listShuttle</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:orderingList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:orderingList</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
- <row>
- <entry>
- <literal>rich:pickList</literal>
- </entry>
- <entry>
- Yes
- </entry>
- <entry>
- Yes
- </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>rich:pickList</literal>
+ </entry>
+ <entry>
+ Yes
+ </entry>
+ <entry>
+ Yes
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
+ </table>
- </section>
-
- <!-- DO NOT UNCOMMENT <section>
+ </section>
+
+ <!-- DO NOT UNCOMMENT <section>
<title>jboss-portlet.xml</title>
<para>
To avoid scripts loading more than once from different portlet windows you can define additional scripts in
@@ -891,138 +891,138 @@
</portlet>
]]></programlisting>
</section> -->
- </section>
-
- <section id="sect-Reference_Guide-Bridge_Configuration-Seam_Setup_and_Configuration_Options">
- <title>Seam Setup and Configuration Options</title>
- <section id="sect-Reference_Guide-Seam_Setup_and_Configuration_Options-Configuration">
- <title>Configuration</title>
- <para>
- The <literal>ExceptionHandler</literal> is used to clean <application>Seam</application> contexts and transactions after errors.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Bridge_Configuration-Seam_Setup_and_Configuration_Options">
+ <title>Seam Setup and Configuration Options</title>
+ <section id="sect-Reference_Guide-Seam_Setup_and_Configuration_Options-Configuration">
+ <title>Configuration</title>
+ <para>
+ The <literal>ExceptionHandler</literal> is used to clean <application>Seam</application> contexts and transactions after errors.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default207.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <!-- Section removed as per feedback from Prabhat Jha
+ <!-- Section removed as per feedback from Prabhat Jha
<para>
- If you are using this bridge version from <literal>2.0.0.BETA</literal> through <literal>2.0.0.CR1</literal>, you must define the following <filename>web.xml</filename> parameter to use the JBoss Portlet Bridge provided Seam Phase Listener. This is done by the bridge automatically (if needed) in <literal>2.0.0.FINAL</literal>.
- </para>
-
+ If you are using this bridge version from <literal>2.0.0.BETA</literal> through <literal>2.0.0.CR1</literal>, you must define the following <filename>web.xml</filename> parameter to use the JBoss Portlet Bridge provided Seam Phase Listener. This is done by the bridge automatically (if needed) in <literal>2.0.0.FINAL</literal>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default208.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting> -->
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Bridge_Configuration-Portlet_2.0_Coordination">
- <title>Portlet 2.0 Coordination</title>
- <note>
- <title>Schema and XSD Definitions</title>
- <para>
- It is important to ensure, before using either of the following mechanisms, that the proper 2.0 schema and xsd are defined at the top of your <filename>portlet.xml</filename>.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Bridge_Configuration-Portlet_2.0_Coordination">
+ <title>Portlet 2.0 Coordination</title>
+ <note>
+ <title>Schema and XSD Definitions</title>
+ <para>
+ It is important to ensure, before using either of the following mechanisms, that the proper 2.0 schema and xsd are defined at the top of your <filename>portlet.xml</filename>.
+ </para>
- </note>
-
+ </note>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default209.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events">
- <title>Sending and Receiving Events</title>
- <section id="sect-Reference_Guide-Sending_and_Receiving_Events-Configuration">
- <title>Configuration</title>
- <para>
- Just like with any portlet 2.0 event consumer and receiver, you must define them in the <filename>portlet.xml</filename>.
- </para>
- <!-- Unsure if community reference is appropriate enterprise doc. As per QE concern (anross
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events">
+ <title>Sending and Receiving Events</title>
+ <section id="sect-Reference_Guide-Sending_and_Receiving_Events-Configuration">
+ <title>Configuration</title>
+ <para>
+ Just like with any portlet 2.0 event consumer and receiver, you must define them in the <filename>portlet.xml</filename>.
+ </para>
+ <!-- Unsure if community reference is appropriate enterprise doc. As per QE concern (anross
<para>
To see a working example, checkout the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.FINAL/examples/se..." />
</para> --> <para>
- You must also define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
- </para>
-
+ You must also define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default210.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- While future versions of the 2.0 bridge will automate the dispatching and consuming of events, at the moment you must dispatch the event in the JSF or Seam backing bean.
- </para>
-
+ <para>
+ While future versions of the 2.0 bridge will automate the dispatching and consuming of events, at the moment you must dispatch the event in the JSF or Seam backing bean.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default211.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- You must also create the event handler class by implementing the <literal>BridgeEventHandler</literal> interface to process the event payload.
- </para>
-
+ <para>
+ You must also create the event handler class by implementing the <literal>BridgeEventHandler</literal> interface to process the event payload.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/BookingEventHandler.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters">
- <title>Public Render Parameters</title>
- <section id="sect-Reference_Guide-Public_Render_Parameters-Configuration">
- <title>Configuration</title>
- <para>
- Public Render Parameters (or PRPs) are one of the most powerful and simple Portlet 2.0 features. Several portlets (JSF or otherwise) can share the same render parameters. This feature can be used to present a cohesive UI to the user across all portlets on the page. An example would be using an employee ID to display relative data.
- </para>
- <para>
- The bridge maps a render parameter to a backing bean using settings in your <filename>faces-config.xml</filename> and <filename>portlet.xml</filename>.
- </para>
- <para>
- A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.FINAL/examples/se..." />
- </para>
- <para>
- You must define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters">
+ <title>Public Render Parameters</title>
+ <section id="sect-Reference_Guide-Public_Render_Parameters-Configuration">
+ <title>Configuration</title>
+ <para>
+ Public Render Parameters (or PRPs) are one of the most powerful and simple Portlet 2.0 features. Several portlets (JSF or otherwise) can share the same render parameters. This feature can be used to present a cohesive UI to the user across all portlets on the page. An example would be using an employee ID to display relative data.
+ </para>
+ <para>
+ The bridge maps a render parameter to a backing bean using settings in your <filename>faces-config.xml</filename> and <filename>portlet.xml</filename>.
+ </para>
+ <para>
+ A clear and working example can be found in the Seam Booking Demo portlet. <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.2.0.GA.EPP520/example..." />
+ </para>
+ <para>
+ You must define the following <emphasis>init params</emphasis> in your <filename>portlet.xml</filename>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default212.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Create a managed bean and <literal>public-parameter-mappings</literal> in your <filename>faces-config.xml</filename>. This should be a basic bean that you can bind the passed parameter to a string with <emphasis>getter</emphasis> and <emphasis>setter</emphasis>.
- </para>
-
+ <para>
+ Create a managed bean and <literal>public-parameter-mappings</literal> in your <filename>faces-config.xml</filename>. This should be a basic bean that you can bind the passed parameter to a string with <emphasis>getter</emphasis> and <emphasis>setter</emphasis>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default213.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- You must set the parameter in the JSF or Seam backing bean, if you are providing one from your portlet.
- </para>
-
+ <para>
+ You must set the parameter in the JSF or Seam backing bean, if you are providing one from your portlet.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default214.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Then you must also implement the <literal>BridgePublicRenderParameterHandler</literal> interface to process any updates from the received parameter.
- </para>
-
+ <para>
+ Then you must also implement the <literal>BridgePublicRenderParameterHandler</literal> interface to process any updates from the received parameter.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default215.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet">
- <title>Serving Your JSF Resources in a Portlet</title>
- <section id="sect-Reference_Guide-Serving_Your_JSF_Resources_in_a_Portlet-Configuration">
- <title>Configuration</title>
- <para>
- We have setup a few examples to show you how to use <literal>EL</literal> and a simple bean that will allow you to use the portlet resource serving mechanism within a JSF portlet.
- </para>
- <para>
- In <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.CR1/examples/rich...">ResourceBean.java</ulink>, you can see a very simple implementation of a Map object that uses the bridge to get and encode a resource url served from the portlets web application.
- </para>
- <para>
- So, when you have the normal "<filename>/images</filename>", "<filename>/styles</filename>" and other resource folders in your web application, you can use the following <literal>EL</literal> expression to serve them in your JSF application.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Portlet_2.0_Coordination-Serving_Your_JSF_Resources_in_a_Portlet">
+ <title>Serving Your JSF Resources in a Portlet</title>
+ <section id="sect-Reference_Guide-Serving_Your_JSF_Resources_in_a_Portlet-Configuration">
+ <title>Configuration</title>
+ <para>
+ We have setup a few examples to show you how to use <literal>EL</literal> and a simple bean that will allow you to use the portlet resource serving mechanism within a JSF portlet.
+ </para>
+ <para>
+ In <ulink url="http://anonsvn.jboss.org/repos/portletbridge/tags/2.0.0.CR1/examples/rich...">ResourceBean.java</ulink>, you can see a very simple implementation of a Map object that uses the bridge to get and encode a resource url served from the portlets web application.
+ </para>
+ <para>
+ So, when you have the normal "<filename>/images</filename>", "<filename>/styles</filename>" and other resource folders in your web application, you can use the following <literal>EL</literal> expression to serve them in your JSF application.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Configuration/default216.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Just copy the <literal>ResourceBean.java</literal> code above, and add an entry to your <filename>faces-config.xml</filename> for the bean:
- </para>
-
+ <para>
+ Just copy the <literal>ResourceBean.java</literal> code above, and add an entry to your <filename>faces-config.xml</filename> for the bean:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Configuration/default217.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/overview.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,56 +4,56 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-JBoss_Portlet_Bridge_Overview">
- <title>JBoss Portlet Bridge Overview</title>
- <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-What_is_the_JBoss_Portlet_Bridge">
- <title>What is the JBoss Portlet Bridge?</title>
- <para>
- The JBoss Portlet Bridge (or <literal>JBPB</literal> for short) is a non-final implementation of the <ulink url="http://jcp.org/en/jsr/detail?id=329">JSR-329</ulink> specification.
- </para>
+ <title>JBoss Portlet Bridge Overview</title>
+ <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-What_is_the_JBoss_Portlet_Bridge">
+ <title>What is the JBoss Portlet Bridge?</title>
+ <para>
+ The JBoss Portlet Bridge (or <literal>JBPB</literal> for short) is an implementation of the <ulink url="http://jcp.org/en/jsr/detail?id=329">JSR-329</ulink> specification.
+ </para>
- </formalpara>
- <para>
- It supports the JSF 1.2 runtime within a JSR 286 portlet and with added enhancements to support other web frameworks (such as <ulink url="http://www.seamframework.org/">Seam</ulink> and <ulink url="http://www.jboss.org/jbossrichfaces/">RichFaces</ulink>).
- </para>
- <para>
- It allows any Java developer to quickly get started with their JSF web application running in a portal environment. The developer no longer needs to worry about the underlying portlet development, portlet concepts, or the API.
- </para>
- <para>
- Find more information about the JBoss Portlet Bridge, the developers, the community at <ulink url="http://www.jboss.org/portletbridge/">the project page</ulink>.
- </para>
- <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-Understanding_how_JSF_works_with_Portal">
- <title>Understanding how JSF works with Portal</title>
- <para>
- The portlet bridge is not a portlet. It is the mediator between the two environments and allows JSF and Portal to be completely unaware of each other.
- </para>
+ </formalpara>
+ <para>
+ It supports the JSF 1.2 runtime within a JSR 286 portlet and with added enhancements to support other web frameworks (such as <ulink url="http://www.seamframework.org/">Seam</ulink> and <ulink url="http://www.jboss.org/jbossrichfaces/">RichFaces</ulink>).
+ </para>
+ <para>
+ It allows any Java developer to quickly get started with their JSF web application running in a portal environment. The developer no longer needs to worry about the underlying portlet development, portlet concepts, or the API.
+ </para>
+ <para>
+ Find more information about the JBoss Portlet Bridge, the developers, the community at <ulink url="http://www.jboss.org/portletbridge/">the project page</ulink>.
+ </para>
+ <formalpara id="form-Reference_Guide-JBoss_Portlet_Bridge_Overview-Understanding_how_JSF_works_with_Portal">
+ <title>Understanding how JSF works with Portal</title>
+ <para>
+ The portlet bridge is not a portlet. It is the mediator between the two environments and allows JSF and Portal to be completely unaware of each other.
+ </para>
- </formalpara>
- <para>
- The bridge is used to execute <literal>Faces</literal> requests on behalf of the portlet. During each request, the <literal>Faces</literal> environment is setup and handled by the bridge.
- </para>
- <para>
- Part of this implementation acts as a <literal>Faces</literal> controller much as the FacesServlet does in the direct client request environment.
- </para>
- <para>
- The other part of this implementation is provided by implementing a variety of (standard) <literal>Faces</literal> extensions.
- </para>
- <important>
- <title>Disclaimer</title>
- <para>
- This draft specification for the JSR 329 specification is not final. Any final specification that may be published will likely contain differences, some of which may be substantial.
- </para>
- <para>
- Publication of this draft specification is not intended to provide the basis for implementations of the specification. This draft specification is provided AS IS.
- </para>
- <para>
- THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF CONDITION OF TITLE OR NONINFRINGEMENT. You may copy and display this draft specification provided that you include this notice and any existing copyright notice.
- </para>
- <para>
- Except for the limited copyright license granted above, there are no other licenses granted to any intellectual property owned or controlled by any of the authors or developers of this material. No other rights are granted by implication, estoppel or otherwise.
- </para>
+ </formalpara>
+ <para>
+ The bridge is used to execute <literal>Faces</literal> requests on behalf of the portlet. During each request, the <literal>Faces</literal> environment is setup and handled by the bridge.
+ </para>
+ <para>
+ Part of this implementation acts as a <literal>Faces</literal> controller much as the FacesServlet does in the direct client request environment.
+ </para>
+ <para>
+ The other part of this implementation is provided by implementing a variety of (standard) <literal>Faces</literal> extensions.
+ </para>
+ <important>
+ <title>Disclaimer</title>
+ <para>
+ This draft specification for the JSR 329 specification is not final. Any final specification that may be published will likely contain differences, some of which may be substantial.
+ </para>
+ <para>
+ Publication of this draft specification is not intended to provide the basis for implementations of the specification. This draft specification is provided AS IS.
+ </para>
+ <para>
+ THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF CONDITION OF TITLE OR NONINFRINGEMENT. You may copy and display this draft specification provided that you include this notice and any existing copyright notice.
+ </para>
+ <para>
+ Except for the limited copyright license granted above, there are no other licenses granted to any intellectual property owned or controlled by any of the authors or developers of this material. No other rights are granted by implication, estoppel or otherwise.
+ </para>
- </important>
- <!-- <figure id="build.fig">
+ </important>
+ <!-- <figure id="build.fig">
<title>Faces in Portlet Environment</title>
<mediaobject>
<imageobject>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/PortletBridge/portlet_development.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,251 +4,251 @@
%BOOK_ENTITIES;
]>
<section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge">
- <title>Developing Portlets with the Bridge</title>
- <para>
- This chapter demonstrates common development tasks described by the 329 specification.
- </para>
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Excluding_Attributes_from_the_Bridge_Request_Scope">
- <title>Excluding Attributes from the Bridge Request Scope</title>
- <para>
- When your application uses request attributes on a per request basis and you do not want that particular attribute to be managed in the extended bridge request scope, you must use the following configuration in your <filename>faces-config.xml</filename>.
- </para>
- <para>
- In the code sample below you can see that any attribute namespaced as <literal>foo.bar</literal> or any attribute beginning with <literal>foo.baz(wild-card)</literal> will be excluded from the bridge request scope and only be used per that application's request.
- </para>
-
+ <title>Developing Portlets with the Bridge</title>
+ <para>
+ This chapter demonstrates common development tasks described by the 329 specification.
+ </para>
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Excluding_Attributes_from_the_Bridge_Request_Scope">
+ <title>Excluding Attributes from the Bridge Request Scope</title>
+ <para>
+ When your application uses request attributes on a per request basis and you do not want that particular attribute to be managed in the extended bridge request scope, you must use the following configuration in your <filename>faces-config.xml</filename>.
+ </para>
+ <para>
+ In the code sample below you can see that any attribute namespaced as <literal>foo.bar</literal> or any attribute beginning with <literal>foo.baz(wild-card)</literal> will be excluded from the bridge request scope and only be used per that application's request.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default223.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Supporting_PortletMode_Changes">
- <title>Supporting PortletMode Changes</title>
- <para>
- A <literal>PortletMode</literal> represents a distinct render path within an application. There are three standard modes: <emphasis>view</emphasis>, <emphasis>edit</emphasis>, and <emphasis>help</emphasis>.
- </para>
- <para>
- The bridge's <literal>ExternalContext.encodeActionURL</literal> recognizes the query string parameter <literal>javax.portlet.faces.PortletMode</literal> and uses this parameter's value to set the portlet mode on the underlying portlet <literal>actionURL</literal> or response.
- </para>
- <para>
- Once processed it then removes this parameter from the query string. This means the following navigation rule causes one to render the \edit.jspx viewId in the portlet edit mode:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Supporting_PortletMode_Changes">
+ <title>Supporting PortletMode Changes</title>
+ <para>
+ A <literal>PortletMode</literal> represents a distinct render path within an application. There are three standard modes: <emphasis>view</emphasis>, <emphasis>edit</emphasis>, and <emphasis>help</emphasis>.
+ </para>
+ <para>
+ The bridge's <literal>ExternalContext.encodeActionURL</literal> recognizes the query string parameter <literal>javax.portlet.faces.PortletMode</literal> and uses this parameter's value to set the portlet mode on the underlying portlet <literal>actionURL</literal> or response.
+ </para>
+ <para>
+ Once processed it then removes this parameter from the query string. This means the following navigation rule causes one to render the <filename>/edit.jspx</filename> viewId in the portlet edit mode:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default224.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Navigating_to_a_modes_last_viewId">
- <title>Navigating to a mode's last viewId</title>
- <para>
- By default a mode change will start in the mode's default view without any (prior) existing state. One common portlet pattern when returning to a mode left after entering another mode (e.g.. view -> edit -> view) is to return to the last view (and state) of this origin mode.
- </para>
- <para>
- The bridge will explicitly encode the necessary information so that when returning to a prior mode it can target the appropriate view and restore the appropriate state.
- </para>
- <para>
- The session attributes maintained by the bridge are intended to be used by developers to navigate back from a mode to the last location and state of a prior mode. As such, a developer needs to describe a dynamic navigation: "From view <parameter>X</parameter> return to the last view of mode <parameter>Y</parameter>".
- </para>
- <para>
- This is most easily expressed via an <literal>EL</literal> expression. For example:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Navigating_to_a_modes_last_viewId">
+ <title>Navigating to a mode's last viewId</title>
+ <para>
+ By default a mode change will start in the mode's default view without any (prior) existing state. One common portlet pattern when returning to a mode left after entering another mode (e.g.. view -> edit -> view) is to return to the last view (and state) of this origin mode.
+ </para>
+ <para>
+ The bridge will explicitly encode the necessary information so that when returning to a prior mode it can target the appropriate view and restore the appropriate state.
+ </para>
+ <para>
+ The session attributes maintained by the bridge are intended to be used by developers to navigate back from a mode to the last location and state of a prior mode. As such, a developer needs to describe a dynamic navigation: "From view <parameter>X</parameter> return to the last view of mode <parameter>Y</parameter>".
+ </para>
+ <para>
+ This is most easily expressed via an <literal>EL</literal> expression. For example:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default225.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <section id="sect-Reference_Guide-Navigating_to_a_modes_last_viewId-Note_to_Portlet_Developers">
- <title>Note to Portlet Developers</title>
- <para>
- Depending on the bridge implementation, when using values from these session scoped attributes or any viewIds which may contain query string parameters it may be necessary to use the wild-card syntax when identifying the rule target. In the above, for example, the
- </para>
-
+ <section id="sect-Reference_Guide-Navigating_to_a_modes_last_viewId-Note_to_Portlet_Developers">
+ <title>Note to Portlet Developers</title>
+ <para>
+ Depending on the bridge implementation, when using values from these session scoped attributes or any viewIds which may contain query string parameters it may be necessary to use the wild-card syntax when identifying the rule target. In the above, for example, the
+ </para>
+
<programlisting language="XML" role="XML"><to-view-id>
</programlisting>
- <para>
- expression returns a <parameter>viewId</parameter> of the form
- </para>
-
+ <para>
+ expression returns a <parameter>viewId</parameter> of the form
+ </para>
+
<programlisting language="XML" role="XML">/viewId?javax.portlet.faces.PortletMode=view&....
</programlisting>
- <para>
- Without wild-carding, when a subsequent navigation occurs from this new view, the navigation rules wouldn't resolve because there wouldn't be an exact match. Likewise, the above <literal>edit.jspx</literal>
- </para>
-
+ <para>
+ Without wild-carding, when a subsequent navigation occurs from this new view, the navigation rules wouldn't resolve because there wouldn't be an exact match. Likewise, the above <literal>edit.jspx</literal>
+ </para>
+
<programlisting language="XML" role="XML"><from-view-id>
</programlisting>
- <para>
- is wild-carded because there are navigation rules that target it that use a query string:
- </para>
-
+ <para>
+ is wild-carded because there are navigation rules that target it that use a query string:
+ </para>
+
<programlisting language="XML" role="XML">
<to-view-id> /edit.jspx?javax.portlet.faces.PortletMode=edit </to-view-id>
</programlisting>
- <para>
- Developers are encouraged to use such wild-carding to ensure they execute properly in the broadest set of bridge implementations.
- </para>
+ <para>
+ Developers are encouraged to use such wild-carding to ensure they execute properly in the broadest set of bridge implementations.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Clearing_The_View_History_When_Changing_Portlet_Modes">
- <title>Clearing The View History When Changing Portlet Modes</title>
- <para>
- By default the bridge remembers the view history when you switch to a different portlet mode (like "Help" or "Edit"). You can use the following parameter in your <filename>portlet.xml</filename> to use the default viewId each time you switch modes.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Clearing_The_View_History_When_Changing_Portlet_Modes">
+ <title>Clearing The View History When Changing Portlet Modes</title>
+ <para>
+ By default the bridge remembers the view history when you switch to a different portlet mode (like "Help" or "Edit"). You can use the following parameter in your <filename>portlet.xml</filename> to use the default viewId each time you switch modes.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default230.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-General_Error_Handling">
- <title>General Error Handling</title>
- <note>
- <para>
- If you are developing a <application>Seam</application> portlet you can now use <filename>pages.xml</filename> for all error handling.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-General_Error_Handling">
+ <title>General Error Handling</title>
+ <note>
+ <para>
+ If you are developing a <application>Seam</application> portlet you can now use <filename>pages.xml</filename> for all error handling.
+ </para>
- </note>
- <para>
- The following configuration may be used to handle exceptions. This is also useful for handling session timeout and <literal>ViewExpiredExceptions</literal>.
- </para>
- <note>
- <title>The Location Element</title>
- <para>
- The location element must contain the <filename>/faces/</filename> mapping to work properly.
- </para>
+ </note>
+ <para>
+ The following configuration may be used to handle exceptions. This is also useful for handling session timeout and <literal>ViewExpiredExceptions</literal>.
+ </para>
+ <note>
+ <title>The Location Element</title>
+ <para>
+ The location element must contain the <filename>/faces/</filename> mapping to work properly.
+ </para>
- </note>
-
+ </note>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default231.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Custom_Ajax_Error_Handling">
- <title>Custom Ajax Error Handling</title>
- <para>
- By default, error handling is sent to a standard servlet page for Ajax requests. To handle the error inside the portlet, use the following javascript:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Custom_Ajax_Error_Handling">
+ <title>Custom Ajax Error Handling</title>
+ <para>
+ By default, error handling is sent to a standard servlet page for Ajax requests. To handle the error inside the portlet, use the following javascript:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default232.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Also, add the following to <filename>web.xml</filename>.
- </para>
-
+ <para>
+ Also, add the following to <filename>web.xml</filename>.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default233.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Read more about these settings here <ulink url="http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/devguide/html/Archit...">Request Errors and Session Expiration Handling</ulink>
- </para>
+ <para>
+ Read more about these settings here <ulink url="http://docs.jboss.org/richfaces/3.3.X/3.3.3.Final/en/devguide/html/Archit...">Request Errors and Session Expiration Handling</ulink>
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Communication_Between_Your_Portlets">
- <title>Communication Between Your Portlets</title>
- <para>
- There are four different ways to send messages, events, and parameters between portlets which are contained in different <literal>ears/wars</literal> or contained in the same <literal>war</literal>.
- </para>
- <para>
- Having two portlets in the same <literal>war</literal> or having them separated does not affect the Portlet Container because each portlet has a different <parameter>HttpSession</parameter>.
- </para>
- <para>
- The recommended way to share a parameter or event payload between two or more portlets with the Portlet 2.0 specification are the <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters" /> and <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events" /> mechanisms.
- </para>
- <para>
- This allows you to decouple your application from surgically managing objects in the <parameter>PortletSession.APPLICATION_SCOPE.</parameter>
- </para>
- <para>
- However, if these do not meet your use case or you have a different strategy, you can use one of the following methods.
- </para>
- <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Storing_Components_in_PortletSession.APPLICATION_SCOPE">
- <title>Storing Components in <parameter>PortletSession.APPLICATION_SCOPE</parameter></title>
- <para>
- Sometimes it is beneficial to store your <application>Seam</application> components in the portlet <parameter>APPLICATION_SCOPE</parameter>.
- </para>
- <para>
- By default, these objects are stored in the <parameter>PORTLET_SCOPE</parameter> but with the annotation below, this class can be pulled out of the <literal>PortletSession</literal> and its values used in other portlets across different <application>Seam</application> applications.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Communication_Between_Your_Portlets">
+ <title>Communication Between Your Portlets</title>
+ <para>
+ There are four different ways to send messages, events, and parameters between portlets which are contained in different <literal>ears/wars</literal> or contained in the same <literal>war</literal>.
+ </para>
+ <para>
+ Having two portlets in the same <literal>war</literal> or having them separated does not affect the Portlet Container because each portlet has a different <parameter>HttpSession</parameter>.
+ </para>
+ <para>
+ The recommended way to share a parameter or event payload between two or more portlets with the Portlet 2.0 specification are the <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Public_Render_Parameters" /> and <xref linkend="sect-Reference_Guide-Portlet_2.0_Coordination-Sending_and_Receiving_Events" /> mechanisms.
+ </para>
+ <para>
+ This allows you to decouple your application from surgically managing objects in the <parameter>PortletSession.APPLICATION_SCOPE.</parameter>
+ </para>
+ <para>
+ However, if these do not meet your use case or you have a different strategy, you can use one of the following methods.
+ </para>
+ <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Storing_Components_in_PortletSession.APPLICATION_SCOPE">
+ <title>Storing Components in <parameter>PortletSession.APPLICATION_SCOPE</parameter></title>
+ <para>
+ Sometimes it is beneficial to store your <application>Seam</application> components in the portlet <parameter>APPLICATION_SCOPE</parameter>.
+ </para>
+ <para>
+ By default, these objects are stored in the <parameter>PORTLET_SCOPE</parameter> but with the annotation below, this class can be pulled out of the <literal>PortletSession</literal> and its values used in other portlets across different <application>Seam</application> applications.
+ </para>
+
<programlisting language="Java" role="JAVA">@PortletScope(PortletScope.ScopeType.APPLICATION_SCOPE)
</programlisting>
- <para>
- Then you would pull the stateful object from the session:
- </para>
-
+ <para>
+ Then you would pull the stateful object from the session:
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default235.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- This method is demonstrated in this video: <ulink url="http://www.vimeo.com/4521877">Lesson 2: Portlet 1.0 Advanced Seam and RichFaces</ulink>
- </para>
+ <para>
+ This method is demonstrated in this video: <ulink url="http://www.vimeo.com/4521877">Lesson 2: Portlet 1.0 Advanced Seam and RichFaces</ulink>
+ </para>
- </section>
-
- <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Using_the_PortletSession">
- <title>Using the PortletSession</title>
- <para>
- If you need to access the <literal>PortletSession</literal> to simply share a parameter or value across multiple portlets, you can use the following:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Communication_Between_Your_Portlets-Using_the_PortletSession">
+ <title>Using the PortletSession</title>
+ <para>
+ If you need to access the <literal>PortletSession</literal> to simply share a parameter or value across multiple portlets, you can use the following:
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default236.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Then, in your JSP or Facelets page, you can use:
- </para>
-
+ <para>
+ Then, in your JSP or Facelets page, you can use:
+ </para>
+
<programlisting language="XML" role="XML">#{httpSessionScope['your parameter name']}
</programlisting>
- <para>
- <note>
- <title>Note to Portlet Developers</title>
- <para>
- <literal>#{httpSessionScope}</literal> was implemented after <literal>2.0.0.BETA</literal>. If you are using the <literal>1.0</literal> bridge or pre <literal>2.0.0.BETA</literal>, you must use the <literal>EL</literal> variable <literal>#{sessionApplicationScope}</literal>.
- </para>
+ <para>
+ <note>
+ <title>Note to Portlet Developers</title>
+ <para>
+ <literal>#{httpSessionScope}</literal> was implemented after <literal>2.0.0.BETA</literal>. If you are using the <literal>1.0</literal> bridge or pre <literal>2.0.0.BETA</literal>, you must use the <literal>EL</literal> variable <literal>#{sessionApplicationScope}</literal>.
+ </para>
- </note>
- For more information about which <literal>EL</literal> variables are provided by the bridge, read <ulink url="http://jcp.org/aboutJava/communityprocess/edr/jsr329/index2.html">section 6.5.1 of the JSR-329 specification</ulink>.
- </para>
+ </note>
+ For more information about which <literal>EL</literal> variables are provided by the bridge, read <ulink url="http://jcp.org/aboutJava/communityprocess/edr/jsr329/index2.html">section 6.5.1 of the JSR-329 specification</ulink>.
+ </para>
- </section>
-
+ </section>
+
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Linking_to_PortletJSF_Pages_Using_houtputlink">
- <title>Linking to Portlet/JSF Pages Using h:outputlink</title>
- <para>
- For linking to any JSF/Facelets page within your portlet web application, you can use the following.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Linking_to_PortletJSF_Pages_Using_houtputlink">
+ <title>Linking to Portlet/JSF Pages Using h:outputlink</title>
+ <para>
+ For linking to any JSF/Facelets page within your portlet web application, you can use the following.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default238.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Redirecting_to_an_External_Page_or_Resource">
- <title>Redirecting to an External Page or Resource</title>
- <para>
- To link to a non JSF view, <emphasis>jboss.org</emphasis> for example, you can use the following parameter.
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Redirecting_to_an_External_Page_or_Resource">
+ <title>Redirecting to an External Page or Resource</title>
+ <para>
+ To link to a non JSF view, <emphasis>jboss.org</emphasis> for example, you can use the following parameter.
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default239.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Then in your backing bean, you must call a <parameter>redirect()</parameter>.
- </para>
-
+ <para>
+ Then in your backing bean, you must call a <parameter>redirect()</parameter>.
+ </para>
+
<programlisting language="Java" role="JAVA">FacesContext.getCurrentInstance().getExternalContext().redirect("http://www.jboss.org");
</programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Using_Provided_EL_Variables">
- <title>Using Provided EL Variables</title>
- <para>
- All <literal>EL</literal> variables found in the JSR-329 (Portlet 2.0) specification are available in the JBoss Portlet Bridge. For example, you can use the following to edit the portlet preferences on the UI:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Developing_Portlets_with_the_Bridge-Using_Provided_EL_Variables">
+ <title>Using Provided EL Variables</title>
+ <para>
+ All <literal>EL</literal> variables found in the JSR-329 (Portlet 2.0) specification are available in the JBoss Portlet Bridge. For example, you can use the following to edit the portlet preferences on the UI:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default241.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <para>
- Then in your backing bean, you must call the PortletPreferences.store() method.
- </para>
-
+ <para>
+ Then in your backing bean, you must call the PortletPreferences.store() method.
+ </para>
+
<programlisting language="Java" role="Java"><xi:include href="../../../extras/PortletBridge_Portlet_Development/default242.java" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/PortletDevelopment/Standard.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -130,7 +130,7 @@
<section id="sect-Reference_Guide-Portlet_Primer-Tutorials">
<title>Tutorials</title>
<para>
- The tutorials contained in this chapter are targeted toward portlet developers. It is also recommend that developers read and understand the <ulink url="http://www.jcp.org/en/jsr/detail?id=286"> JSR-286 Portlet Specification </ulink> .
+ The tutorials contained in this chapter are targeted toward portlet developers. It is also recommended that developers read and understand the <ulink url="http://www.jcp.org/en/jsr/detail?id=286"> JSR-286 Portlet Specification </ulink> .
</para>
<note>
<title>Maven</title>
@@ -140,7 +140,7 @@
</note>
<section id="sect-Reference_Guide-Tutorials-Deploying_your_first_Portlet">
- <title>Deploying your first Portlet</title>
+ <title>Deploying your first portlet</title>
<para>
This section describes how to deploy a portlet in JBoss Enterprise Portal Platform.
</para>
@@ -163,7 +163,7 @@
</step>
<step>
<para>
- If the example is successfully packaged, the result will be available in: <filename>simplesthelloworld/target/gatein-simplest-helloworld<replaceable>-1.0.0-GA-SNAPSHOT</replaceable>.war </filename>.
+ If the example is successfully packaged, the result will be available in: <filename>gatein-simplest-helloworld-&VZ;.GA.war </filename>.
</para>
</step>
@@ -257,11 +257,11 @@
</para>
<programlistingco>
<areaspec>
- <area coords="10" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends" />
- <area coords="13" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview" />
- <area coords="15" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer" />
- <area coords="16" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write" />
- <area coords="17" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close" />
+ <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-extends" />
+ <area coords="12 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-doview" />
+ <area coords="14 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-writer" />
+ <area coords="15 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-write" />
+ <area coords="16 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Portlet_Class-close" />
</areaspec>
@@ -331,10 +331,10 @@
</para>
<programlistingco>
<areaspec>
- <area coords="8 70" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname" />
- <area coords="9 70" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass" />
- <area coords="12 70" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports" />
- <area coords="15 70" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo" />
+ <area coords="6 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletname" />
+ <area coords="8 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletclass" />
+ <area coords="10 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-supports" />
+ <area coords="13 80" id="area-Reference_Guide-Deploying_your_first_Portlet-Application_Descriptors-portletinfo" />
</areaspec>
@@ -440,7 +440,7 @@
</step>
<step>
<para>
- Copy <filename>jsphellouser/target/gatein-jsp-hellouser-<replaceable>1.0.0-GA-SNAPSHOT</replaceable>.war</filename> to the <literal>deploy</literal> directory of JBoss Application Server.
+ Copy <filename>jsphellouser/target/gatein-jsp-hellouser-&VZ;.GA.war</filename> to the <literal>deploy</literal> directory of JBoss Application Server.
</para>
</step>
@@ -493,10 +493,10 @@
</para>
<programlistingco>
<areaspec>
- <area coords="18 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-doView" />
- <area coords="21 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-renderParameter" />
- <area coords="25 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-requestDispatcher" />
- <area coords="26 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-include" />
+ <area coords="17 60" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-doView" />
+ <area coords="20" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-renderParameter" />
+ <area coords="24" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-requestDispatcher" />
+ <area coords="25" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-include" />
</areaspec>
@@ -553,7 +553,7 @@
</para>
<programlistingco>
<areaspec>
- <area coords="2 100" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction" />
+ <area coords="2 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-processAction" />
<area coords="5 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-getActionParameter" />
<area coords="6 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-Portlet_Class-setRenderParameter" />
@@ -601,12 +601,12 @@
</para>
<programlistingco>
<areaspec>
- <area coords="1" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib" />
- <area coords="13" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1" />
- <area coords="20" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1" />
- <area coords="24" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2" />
- <area coords="30" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1" />
- <area coords="31" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2" />
+ <area coords="1 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-taglib" />
+ <area coords="14 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method1" />
+ <area coords="20 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.1" />
+ <area coords="24 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method2.2" />
+ <area coords="30 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.1" />
+ <area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSP_files_and_the_Portlet_Tag_Library-method3.2" />
</areaspec>
@@ -654,7 +654,7 @@
</programlistingco>
<para>
- In the third method the action phase is triggered first then the render phase is triggered, which outputs some content back to the web browser based on the available render parameters.
+ In the third method, the action phase is triggered first then the render phase is triggered, which outputs some content back to the web browser based on the available render parameters.
</para>
<mediaobject>
<imageobject role="html">
@@ -685,11 +685,11 @@
The portlet bridge libraries must be available and are usually bundled with the <literal>WEB-INF/lib</literal> directory of the web archive.
</para>
<para>
- The other differences when compared to a regular portlet application are in the portlet descriptor. All the relevant details about this can be found in the JSR-301 specification that the JBoss Portlet Bridge implements.
+ The other differences when compared to a regular portlet application are in the portlet descriptor. All the relevant details about this can be found in the JSR-329 specification that the JBoss Portlet Bridge implements.
</para>
<programlistingco>
<areaspec>
- <area coords="9 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet" />
+ <area coords="8 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet" />
<area coords="21 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-view" />
<area coords="26 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-edit" />
<area coords="31 80" id="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-help" />
@@ -700,7 +700,7 @@
<calloutlist>
<callout arearefs="area-Reference_Guide-JavaServer_Pages_Portlet_Example-JSF_example_using_the_JBoss_Portlet_Bridge-portlet">
<para>
- All JSF portlets define <literal>javax.portlet.faces.GenericFacesPortlet </literal> as portlet class. This class is part of the JBoss Portlet Bridge
+ All JSF portlets define <literal>javax.portlet.faces.GenericFacesPortlet </literal> as portlet class. This class is part of the JBoss Portlet Bridge.
</para>
</callout>
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,83 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Advantages_of_eXo_JCR">
- <title>Advantages of eXo JCR</title>
- <section id="sect-Reference_Guide-Advantages_of_eXo_JCR-Application_Developers">
- <title>Application Developers</title>
- <itemizedlist>
- <listitem>
- <para>
- The data repository and the application are isolated from each other, allowing application developers to concentrate on the business logic of a particular application built on the top of JCR without the need to learn the details of particular data storage's interfaces.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Repositories can be exchanged between different applications without changing the applications themselves.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Data storage types and versions can be changed and also, different types of data storages can be combined in one repository data model. The complexity of building interfaces between the repository and its data storage still exists, however these changes are isolated in the repository and thus manageable from the point of view of the customer.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/jcr-490x333.gif" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
- <section id="sect-Reference_Guide-Advantages_of_eXo_JCR-Managers">
- <title>Managers</title>
- <itemizedlist>
- <listitem>
- <para>
- Using a standardized repository for content management reduces the risk of dependence on a particular software vendor and proprietary API.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Costs for maintaining and developing a content repository based custom application is significantly lower than developing and supporting your own interfaces and maintaining your own data repository applications (staff can be trained once, it is possible to take help from the community and the third party consultants).
- </para>
-
- </listitem>
-
- </itemizedlist>
- <itemizedlist>
- <listitem>
- <para>
- Using a flexible layered JCR API, it is possible to fit the legacy storage subsystem into new interfaces and decrease the costs and the risk of losing data.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- An extension to the API exists as we can see in the following layer schema.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/JCR-Application2.jpg" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-advantages.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Advantages_of_eXo_JCR">
+ <title>Advantages of eXo JCR</title>
+ <section id="sect-Reference_Guide-Advantages_of_eXo_JCR-Application_Developers">
+ <title>Application Developers</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The data repository and the application are isolated from each other, allowing application developers to concentrate on the business logic of a particular application built on the top of JCR without the need to learn the details of particular data storage's interfaces.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Repositories can be exchanged between different applications without changing the applications themselves.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Data storage types and versions can be changed and also, different types of data storages can be combined in one repository data model. The complexity of building interfaces between the repository and its data storage still exists, however these changes are isolated in the repository and thus manageable from the point of view of the customer.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/jcr-490x333.gif" width="444" />
+ </imageobject>
+
+ </mediaobject>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Advantages_of_eXo_JCR-Managers">
+ <title>Managers</title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Using a standardized repository for content management reduces the risk of dependence on a particular software vendor and proprietary API.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Costs for maintaining and developing a content repository based custom application is significantly lower than developing and supporting your own interfaces and maintaining your own data repository applications (staff can be trained once, it is possible to take help from the community and the third party consultants).
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Using a flexible layered JCR API, it is possible to fit the legacy storage subsystem into new interfaces and decrease the costs and the risk of losing data.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <para>
+ An extension to the API exists as we can see in the following layer schema.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/JCR-Application2.jpg" width="444" />
+ </imageobject>
+
+ </mediaobject>
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,64 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-eXo_JCR_Application_Model">
- <title>eXo JCR Application Model</title>
- <para>
- The following image illustrates the interaction between Applications and JCR:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/jcr-applications.gif" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- Every Content (JCR) dependent application interacts with the eXo JCR via JSR-170 and the eXo JCR API extension either directly or through an intermediary Framework.
- </para>
- <note>
- <title>Note:</title>
- <para>
- Neither the application nor the framework should ever rely on the implementation directly.
- </para>
-
- </note>
- <para>
- <emphasis role="bold">Content Application:</emphasis> all applications may use the JCR as a data storage. Some of them are generic and completely decoupled from the JCR API as an interaction protocol (such as a WebDav client) hides Content storage nature. Other applications are partially decoupled (such as Command framework based applications), meaning that they do not use the JCR API directly. Most applications use JSR-170 directly.
- </para>
- <para>
- <emphasis role="bold">Frameworks</emphasis> are a special kind of JCR client that act as an intermediate level between the <literal>Content Repository</literal> and an <literal>End Client Application</literal>.
- </para>
- <para>
- Framworks are categorized as follows:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Protocol Specific Frameworks</term>
- <listitem>
- <para>
- Frameworks that are specific to a networking protocol include WebDav, RMI and FTP servers.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Pattern Specific Frameworks</term>
- <listitem>
- <para>
- Frameworks that are pattern specific include Command, Web(servlet), J2EE connector
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <para>
- It is possible to build a multi-layered (in framework sense) JCR application, for example Web application uses Web framework that uses Command framework underneath.
- </para>
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-applications.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,64 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-eXo_JCR_Application_Model">
+ <title>eXo JCR Application Model</title>
+ <para>
+ The following image illustrates the interaction between Applications and JCR:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/jcr-applications.gif" width="444" />
+ </imageobject>
+
+ </mediaobject>
+ <para>
+ Every Content (JCR) dependent application interacts with the eXo JCR via JSR-170 and the eXo JCR API extension either directly or through an intermediary Framework.
+ </para>
+ <note>
+ <title>Note:</title>
+ <para>
+ Neither the application nor the framework should ever rely on the implementation directly.
+ </para>
+
+ </note>
+ <para>
+ <emphasis role="bold">Content Application:</emphasis> all applications may use the JCR as a data storage. Some of them are generic and completely decoupled from the JCR API as an interaction protocol (such as a WebDav client) hides Content storage nature. Other applications are partially decoupled (such as Command framework based applications), meaning that they do not use the JCR API directly. Most applications use JSR-170 directly.
+ </para>
+ <para>
+ <emphasis role="bold">Frameworks</emphasis> are a special kind of JCR client that act as an intermediate level between the <literal>Content Repository</literal> and an <literal>End Client Application</literal>.
+ </para>
+ <para>
+ Framworks are categorized as follows:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Protocol Specific Frameworks</term>
+ <listitem>
+ <para>
+ Frameworks that are specific to a networking protocol include WebDav, RMI and FTP servers.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>Pattern Specific Frameworks</term>
+ <listitem>
+ <para>
+ Frameworks that are pattern specific include Command, Web(servlet), J2EE connector
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+ <para>
+ It is possible to build a multi-layered (in framework sense) JCR application, for example Web application uses Web framework that uses Command framework underneath.
+ </para>
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,147 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Compatibility_Levels">
- <title>Compatibility Levels</title>
- <section id="sect-Reference_Guide-Compatibility_Levels-Introduction">
- <title>Introduction</title>
- <para>
- The Java Content Repository specification JSR-170 has been split into two compliance levels as well as a set of optional features. <literal>Level 1</literal> defines a read-only repository while <literal>Level 2</literal> defines methods for writing content and bi-directional interaction with the repository.
- </para>
- <para>
- The eXo JCR supports JSR-170 Level 1 and Level 2 and all optional features. The recent JSR-283 is not yet supported.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Compatibility_Levels-Level_1">
- <title>Level 1</title>
- <para>
- Level 1 includes read-only functionality for very simple repositories. It is useful to migrate an existing data repository and step through converting it to a more advanced implementation. The JCR uses a well-known Session abstraction to access the repository data.
- </para>
- <para>
- The features of Level 1:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Initiating a session calling login method with the name of desired workspace and client credentials. It involves some security mechanisms (JAAS) to authenticate the client and in case the client is authorized to use the data from a particular workspace, it can retrieve the session with a workspace tied to it.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Using the obtained session, the client can retrieve data (items) by traversing the tree, directly accessing a particular item (requesting path or UUID) or traversing the query result. So an application developer can choose the "best" form depending on the content structure and desired operation.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Reading property values. All content of a repository is ultimately accessed through properties and stored in property values of predefined types (Boolean, Binary Data, Double, Long, String) and special types Name, Reference, and Path. It is possible to read property value without knowing its real name as a primary item.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Export to XML. The repository supports two XML/JCR data model mappings: <literal>system</literal> and <literal>doc</literal> view. The system view provides complete XML serialization without loss of information and is somewhat difficult for a human to read. In contrast, the document view is human readable but does not completely reflect the state of repository; it is used for Xpath queries.
- </para>
-
- </listitem>
- <listitem>
- <para>
- A query facility with Xpath syntax. Xpath, originally developed for XML, suits the JCR data model as the two models are similar. Xpath is applied to the JCR as it would be applied to the document view of the serialized repository content; returning a table of property names and content matching the query.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Discovery of available node types. Every node should have only one primary node type that defines names, types and other characteristics of child nodes and properties. It also can have one or more mixin data types that defines additional characteristics. Level 1 provides methods for discovering available in repository node types and node types of a concrete node.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Transient namespace remapping. Item name can have prefix, delimited by a single ':' (colon) character that indicates the namespace of this name. It is patterned after XML namespaces, prefix is mapped to URI to minimize names collisions. In Level 1, a prefix can be temporary overridden by another prefix in the scope of a session.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/level_1.gif" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
- <section id="sect-Reference_Guide-Compatibility_Levels-Level_2">
- <title>Level 2</title>
- <para>
- JCR Level 2 includes reading and writing of content functionality, importing other sources and managing content definition and structuring using extensible node types.
- </para>
- <para>
- In addition to the features of Level 1, it also supports the following major features:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Adding, moving, copying and removing items inside workspace and moving, copying and cloning items between workspaces. The client can also compare the persisted state of an item with its unsaved states and either save the new state or discard it.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Modifying and writing value of properties. Property types are checked and can be converted to the defined format.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Importing XML document into the repository as a tree of nodes and properties. If the XML document is an export of JCR system view, the content of repository can be completely restored. If this is not the case, the document is interpreted as a document view and the import procedure builds a tree of JCR nodes and properties that matches the tree structure of the XML document.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Assigning node types to nodes. The primary node type is assigned when adding a node. This can be done automatically based on the parent node type definition and mixin node types.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Persistent namespaces changes. Adding, changing and removing namespaces stored in the namespace registry, excluding built-in namespaces required by JCR.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/level_2.gif" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
- <section id="sect-Reference_Guide-Compatibility_Levels-Optional_features">
- <title>Optional features</title>
- <para>
- On the top of Level 1 or Level 2, a number of optional features are defined for a more advanced repository functionality. This includes functions such as Versioning, (JTA) Transactions, Query using SQL, Explicit Locking and Content Observation. eXo JCR supports all optional features.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/optional.gif" />
- </imageobject>
-
- </mediaobject>
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-compatibility-levels.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,147 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Compatibility_Levels">
+ <title>Compatibility Levels</title>
+ <section id="sect-Reference_Guide-Compatibility_Levels-Introduction">
+ <title>Introduction</title>
+ <para>
+ The Java Content Repository specification JSR-170 has been split into two compliance levels as well as a set of optional features. <literal>Level 1</literal> defines a read-only repository while <literal>Level 2</literal> defines methods for writing content and bi-directional interaction with the repository.
+ </para>
+ <para>
+ The eXo JCR supports JSR-170 Level 1 and Level 2 and all optional features. The recent JSR-283 is not yet supported.
+ </para>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Compatibility_Levels-Level_1">
+ <title>Level 1</title>
+ <para>
+ Level 1 includes read-only functionality for very simple repositories. It is useful to migrate an existing data repository and step through converting it to a more advanced implementation. The JCR uses a well-known Session abstraction to access the repository data.
+ </para>
+ <para>
+ The features of Level 1:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Initiating a session calling login method with the name of desired workspace and client credentials. It involves some security mechanisms (JAAS) to authenticate the client and in case the client is authorized to use the data from a particular workspace, it can retrieve the session with a workspace tied to it.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Using the obtained session, the client can retrieve data (items) by traversing the tree, directly accessing a particular item (requesting path or UUID) or traversing the query result. So an application developer can choose the "best" form depending on the content structure and desired operation.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Reading property values. All content of a repository is ultimately accessed through properties and stored in property values of predefined types (Boolean, Binary Data, Double, Long, String) and special types Name, Reference, and Path. It is possible to read property value without knowing its real name as a primary item.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Export to XML. The repository supports two XML/JCR data model mappings: <literal>system</literal> and <literal>doc</literal> view. The system view provides complete XML serialization without loss of information and is somewhat difficult for a human to read. In contrast, the document view is human readable but does not completely reflect the state of repository; it is used for Xpath queries.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ A query facility with Xpath syntax. Xpath, originally developed for XML, suits the JCR data model as the two models are similar. Xpath is applied to the JCR as it would be applied to the document view of the serialized repository content; returning a table of property names and content matching the query.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Discovery of available node types. Every node should have only one primary node type that defines names, types and other characteristics of child nodes and properties. It also can have one or more mixin data types that defines additional characteristics. Level 1 provides methods for discovering available in repository node types and node types of a concrete node.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Transient namespace remapping. Item name can have prefix, delimited by a single ':' (colon) character that indicates the namespace of this name. It is patterned after XML namespaces, prefix is mapped to URI to minimize names collisions. In Level 1, a prefix can be temporary overridden by another prefix in the scope of a session.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/level_1.gif" />
+ </imageobject>
+
+ </mediaobject>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Compatibility_Levels-Level_2">
+ <title>Level 2</title>
+ <para>
+ JCR Level 2 includes reading and writing of content functionality, importing other sources and managing content definition and structuring using extensible node types.
+ </para>
+ <para>
+ In addition to the features of Level 1, it also supports the following major features:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Adding, moving, copying and removing items inside workspace and moving, copying and cloning items between workspaces. The client can also compare the persisted state of an item with its unsaved states and either save the new state or discard it.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Modifying and writing value of properties. Property types are checked and can be converted to the defined format.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Importing XML document into the repository as a tree of nodes and properties. If the XML document is an export of JCR system view, the content of repository can be completely restored. If this is not the case, the document is interpreted as a document view and the import procedure builds a tree of JCR nodes and properties that matches the tree structure of the XML document.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Assigning node types to nodes. The primary node type is assigned when adding a node. This can be done automatically based on the parent node type definition and mixin node types.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Persistent namespaces changes. Adding, changing and removing namespaces stored in the namespace registry, excluding built-in namespaces required by JCR.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/level_2.gif" />
+ </imageobject>
+
+ </mediaobject>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Compatibility_Levels-Optional_features">
+ <title>Optional features</title>
+ <para>
+ On the top of Level 1 or Level 2, a number of optional features are defined for a more advanced repository functionality. This includes functions such as Versioning, (JTA) Transactions, Query using SQL, Explicit Locking and Content Observation. eXo JCR supports all optional features.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/optional.gif" />
+ </imageobject>
+
+ </mediaobject>
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,188 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Implementation">
- <!-- This document was created with Syntext Serna Free. --> <title>Implementation</title>
- <para>
- The relationships between the eXo Repository Service components are illustrated below:
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/exojcr.gif" />
- </imageobject>
-
- </mediaobject>
- <variablelist id="vari-Reference_Guide-Implementation-Definitions">
- <title>Definitions</title>
- <varlistentry>
- <term>eXo Container:</term>
- <listitem>
- <para>
- A subclass of <parameter>org.exoplatform.container.ExoContainer</parameter> (<parameter>org.exoplatform.container.PortalContainer</parameter>) holds a reference to the Repository Service.
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Repository Service</term>
- <listitem>
- <para>
- This contains information about repositories. eXo JCR is able to manage many Repositories.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Repository</term>
- <listitem>
- <para>
- An implementation of <literal>javax.jcr.Repository</literal>. It holds references to one or more Workspace(s).
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>Workspace</term>
- <listitem>
- <para>
- Container of a single rooted tree of Items.
- </para>
- <note>
- <title>Note:</title>
- <para>
- That here it is not exactly the same as <literal>javax.jcr.Workspace</literal> as it is not a per Session object.
- </para>
-
- </note>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <para>
- The usual JCR application usecase includes two initial steps:
- </para>
- <procedure>
- <step>
- <para>
- Obtaining Repository object by getting <emphasis role="bold">Repository Service</emphasis> via JNDI lookup if eXo repository is bound to the naming context using (see <xref linkend="chap-Reference_Guide-JCR_configuration" /> for details).
- </para>
-
- </step>
- <step>
- <para>
- Creating a <parameter>javax.jcr.Session object</parameter> that calls <parameter>Repository.login(..)</parameter>.
- </para>
-
- </step>
-
- </procedure>
-
- <section id="sect-Reference_Guide-Implementation-Workspace_Data_Model">
- <title>Workspace Data Model</title>
- <para>
- The following diagram explains which components of a eXo JCR implementation are used in a data flow to perform operations specified in the JCR API.
- </para>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/wsdatamodel.gif" width="444" />
- </imageobject>
-
- </mediaobject>
- <para>
- The Workspace Data Model can be split into four levels by data isolation and value from the JCR model point of view.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The eXo JCR core implements <emphasis role="bold">JCR API</emphasis> interfaces, such as Item, Node, Property. It contains JCR "<emphasis>logical</emphasis>" view on stored data.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Session Level</emphasis>: isolates transient data viewable inside one JCR Session and interacts with API level using eXo JCR internal API.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Session Data Manager</emphasis>: maintains transient session data. With data access/ modification/ validation logic, it contains Modified Items Storage to hold the data changed between subsequent save() calling and Session Items Cache.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Transaction Data Manager</emphasis>: maintains session data between save() and transaction commit/ rollback if the current session is part of a transaction.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Level</emphasis>: operates for particular workspace shared data. It contains per-Workspace objects
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Storage Data Manager:</emphasis> maintains workspace data, including final validation, events firing, caching.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Workspace Data Container</emphasis>: implements physical data storage. It allows different types of backend (like RDB, FS files, etc) to be used as a storage for JCR data. With the main Data Container, other storages for persisted Property Values can be configured and used.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Indexer:</emphasis> maintains workspace data indexing for further queries.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">Storage Level</emphasis>: Persistent storages for:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- JCR Data
- </para>
-
- </listitem>
- <listitem>
- <para>
- Indexes (Apache Lucene)
- </para>
-
- </listitem>
- <listitem>
- <para>
- Values (e.g., for BLOBs) if different from the main Data Container
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
-</chapter>
-
Added: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-exo-implementation.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,188 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Implementation">
+ <!-- This document was created with Syntext Serna Free. --> <title>Implementation</title>
+ <para>
+ The relationships between the eXo Repository Service components are illustrated below:
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/exojcr.gif" />
+ </imageobject>
+
+ </mediaobject>
+ <variablelist id="vari-Reference_Guide-Implementation-Definitions">
+ <title>Definitions</title>
+ <varlistentry>
+ <term>eXo Container:</term>
+ <listitem>
+ <para>
+ A subclass of <parameter>org.exoplatform.container.ExoContainer</parameter> (<parameter>org.exoplatform.container.PortalContainer</parameter>) holds a reference to the Repository Service.
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Repository Service</term>
+ <listitem>
+ <para>
+ This contains information about repositories. eXo JCR is able to manage many Repositories.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>Repository</term>
+ <listitem>
+ <para>
+ An implementation of <literal>javax.jcr.Repository</literal>. It holds references to one or more Workspace(s).
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+ Container of a single rooted tree of Items.
+ </para>
+ <note>
+ <title>Note:</title>
+ <para>
+ That here it is not exactly the same as <literal>javax.jcr.Workspace</literal> as it is not a per Session object.
+ </para>
+
+ </note>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+ <para>
+ The usual JCR application usecase includes two initial steps:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Obtaining Repository object by getting <emphasis role="bold">Repository Service</emphasis> via JNDI lookup if eXo repository is bound to the naming context using (see <xref linkend="chap-Reference_Guide-JCR_configuration" /> for details).
+ </para>
+
+ </step>
+ <step>
+ <para>
+ Creating a <parameter>javax.jcr.Session object</parameter> that calls <parameter>Repository.login(..)</parameter>.
+ </para>
+
+ </step>
+
+ </procedure>
+
+ <section id="sect-Reference_Guide-Implementation-Workspace_Data_Model">
+ <title>Workspace Data Model</title>
+ <para>
+ The following diagram explains which components of a eXo JCR implementation are used in a data flow to perform operations specified in the JCR API.
+ </para>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/wsdatamodel.gif" width="444" />
+ </imageobject>
+
+ </mediaobject>
+ <para>
+ The Workspace Data Model can be split into four levels by data isolation and value from the JCR model point of view.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The eXo JCR core implements <emphasis role="bold">JCR API</emphasis> interfaces, such as Item, Node, Property. It contains JCR "<emphasis>logical</emphasis>" view on stored data.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Session Level</emphasis>: isolates transient data viewable inside one JCR Session and interacts with API level using eXo JCR internal API.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Session Data Manager</emphasis>: maintains transient session data. With data access/ modification/ validation logic, it contains Modified Items Storage to hold the data changed between subsequent save() calling and Session Items Cache.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Transaction Data Manager</emphasis>: maintains session data between save() and transaction commit/ rollback if the current session is part of a transaction.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Level</emphasis>: operates for particular workspace shared data. It contains per-Workspace objects
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Storage Data Manager:</emphasis> maintains workspace data, including final validation, events firing, caching.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Workspace Data Container</emphasis>: implements physical data storage. It allows different types of backend (like RDB, FS files, etc) to be used as a storage for JCR data. With the main Data Container, other storages for persisted Property Values can be configured and used.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Indexer:</emphasis> maintains workspace data indexing for further queries.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">Storage Level</emphasis>: Persistent storages for:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ JCR Data
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Indexes (Apache Lucene)
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Values (e.g., for BLOBs) if different from the main Data Container
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,285 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-JCR_Extensions">
- <title>JCR Extensions</title>
- <section id="sect-Reference_Guide-JCR_Extensions-JCR_Service_Extensions">
- <title>JCR Service Extensions</title>
- <section id="sect-Reference_Guide-JCR_Service_Extensions-Concept">
- <title>Concept</title>
- <para>
- eXo JCR supports <emphasis role="bold">observation</emphasis> (JSR-170 8.3), which enables applications to register interest in events that describe changes to a workspace, and then monitor and respond to those events. The standard observation feature allows dispatching events when <emphasis role="bold">persistent change</emphasis> to the workspace is made.
- </para>
- <para>
- eXo JCR also offers a proprietary <emphasis role="bold">Extension Action</emphasis> which dispatches and activates an event upon each <emphasis role="bold">transient session level change</emphasis>, performed by a client. In other words, the event is triggered when a client's program invokes some updating methods (such as: <literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) in a session or a workspace.
- </para>
- <note>
- <title>Note:</title>
- <para>
- Each action will add its own execution time to the standard JCR methods (<literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) execution time. As a consequence, it's necessary to minimize Action.execute(Context) body execution time.
- </para>
-
- </note>
- <para>
- To make the rule, you can use the dedicated Thread in <literal>Action.execute(Context)</literal> body for a custom logic.
- </para>
- <para>
- However, if your application logic requires the action to add items to a created or updated item and you save these changes immediately after the JCR API method call is returned, the suggestion with Thread is not applicable for you in this case.
- </para>
- <figure id="figu-Reference_Guide-Concept-Implementation">
- <title>Implementation</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/eXoJCR/concepts/interceptor.jpg" width="444" />
- </imageobject>
-
- </mediaobject>
-
- </figure>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Service_Extensions-Configuration">
- <title>Configuration</title>
- <para>
- Add a <literal>SessionActionCatalog</literal> service and an appropriate <literal>AddActionsPlugin</literal> (see the example below) configuration to your eXo Container configuration.
- </para>
- <para>
- Each Action entry is exposed as <literal>org.exoplatform.services.jcr.impl.ext.action</literal>. <literal>ActionConfiguration</literal> of actions collection of <literal>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig</literal> (see an example below).
- </para>
- <para>
- The mandatory field named <literal>actionClassName</literal> is the fully qualified name of <literal>org.exoplatform.services.command.action.Action implementation</literal>. The command will be launched in case the current event matches the <emphasis role="bold">criteria</emphasis>. All other fields are criteria. The criteria are appended together with *<emphasis role="bold">AND</emphasis>* operations.
- </para>
- <para>
- In other words, for a particular item to be listened to, it must meet ALL the criteria:
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>Workspace</term>
- <listitem>
- <para>
- The comma delimited (ORed) list of workspaces.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>eventTypes</term>
- <listitem>
- <para>
- A comma delimited (ORed) <emphasis role="bold">list of event names</emphasis> (see below) to be listened to. This is the only mandatory field, others are optional and if they are missing they are interpreted as ANY.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>path</term>
- <listitem>
- <para>
- A comma delimited (ORed) list of <emphasis role="bold">item absolute paths</emphasis> (or within its subtree if <emphasis role="bold">isDeep</emphasis> is <emphasis role="bold">true</emphasis>, which is the default value).
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>nodeTypes</term>
- <listitem>
- <para>
- A comma delimited (ORed) list of the <emphasis role="bold">current NodeType</emphasis>.
- </para>
- <para>
- Since version 1.6.1 JCR supports the functionalities of <literal>nodeType</literal> and <literal>parentNodeType</literal>. This parameter has different semantics depending on the type of the current item and the operation performed:
- </para>
- <para>
- If the current item is a <emphasis role="bold">property</emphasis> it means the <emphasis role="bold">parent node type</emphasis>.
- </para>
- <para>
- If the current item is a <emphasis role="bold">node,</emphasis> the semantic depends on the event type:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">add node event</emphasis>: the node type of the newly added node.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">add mixin event</emphasis>: the newly added mixing node type of the current node.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">remove mixin event</emphasis> the removed mixin type of the current node.
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">other events</emphasis>: the already assigned NodeType(s) of the current node (can be both primary and mixin).
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
- <note>
- <title>Note</title>
- <para>
- Remember the following points:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The list of fields can be extended.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Do not use spaces between list elements.
- </para>
-
- </listitem>
- <listitem>
- <para>
- The <literal>sDeep=false</literal> property means node, node properties and child nodes.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </note>
- <para>
- The list of supported Event names is:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis role="bold">addNode</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">addProperty</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">changeProperty</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">removeProperty</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">removeNode</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">addMixin</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">removeMixin</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">lock</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">unlock</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">checkin</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">checkout</emphasis>
- </para>
-
- </listitem>
- <listitem>
- <para>
- <emphasis role="bold">read</emphasis>
- </para>
-
- </listitem>
-
- </itemizedlist>
-
-<programlisting language="XML" role="XML"><component>
- <type>org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog</type>
- <component-plugins>
- <component-plugin>
- <name>addActions</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin</type>
- <description>add actions plugin</description>
- <init-params>
- <object-param>
- <name>actions</name>
- <object type="org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig">
- <field name="actions">
- <collection type="java.util.ArrayList">
- <value>
- <object type="org.exoplatform.services.jcr.impl.ext.action.ActionConfiguration">
- <field name="eventTypes"><string>addNode,removeNode</string></field>
- <field name="path"><string>/test,/exo:test</string></field>
- <field name="isDeep"><boolean>true</boolean></field>
- <field name="nodeTypes"><string>nt:file,nt:folder,mix:lockable</string></field>
- <!-- field name="workspace"><string>backup</string></field -->
- <field name="actionClassName"><string>org.exoplatform.services.jcr.ext.DummyAction</string></field>
- </object>
- </value>
- </collection>
- </field>
- </object>
- </object-param>
- </init-params>
- </component-plugin>
- </component-plugins>
-</component></programlisting>
-
- </section>
-
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-extensions.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,285 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-JCR_Extensions">
+ <title>JCR Extensions</title>
+ <section id="sect-Reference_Guide-JCR_Extensions-JCR_Service_Extensions">
+ <title>JCR Service Extensions</title>
+ <section id="sect-Reference_Guide-JCR_Service_Extensions-Concept">
+ <title>Concept</title>
+ <para>
+ eXo JCR supports <emphasis role="bold">observation</emphasis> (JSR-170 8.3), which enables applications to register interest in events that describe changes to a workspace, and then monitor and respond to those events. The standard observation feature allows dispatching events when <emphasis role="bold">persistent change</emphasis> to the workspace is made.
+ </para>
+ <para>
+ eXo JCR also offers a proprietary <emphasis role="bold">Extension Action</emphasis> which dispatches and activates an event upon each <emphasis role="bold">transient session level change</emphasis>, performed by a client. In other words, the event is triggered when a client's program invokes some updating methods (such as: <literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) in a session or a workspace.
+ </para>
+ <note>
+ <title>Note:</title>
+ <para>
+ Each action will add its own execution time to the standard JCR methods (<literal>Session.addNode()</literal>, <literal>Session.setProperty()</literal>, <literal>Workspace.move()</literal>) execution time. As a consequence, it's necessary to minimize Action.execute(Context) body execution time.
+ </para>
+
+ </note>
+ <para>
+ To make the rule, you can use the dedicated Thread in <literal>Action.execute(Context)</literal> body for a custom logic.
+ </para>
+ <para>
+ However, if your application logic requires the action to add items to a created or updated item and you save these changes immediately after the JCR API method call is returned, the suggestion with Thread is not applicable for you in this case.
+ </para>
+ <figure id="figu-Reference_Guide-Concept-Implementation">
+ <title>Implementation</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/eXoJCR/concepts/interceptor.jpg" width="444" />
+ </imageobject>
+
+ </mediaobject>
+
+ </figure>
+
+ </section>
+
+ <section id="sect-Reference_Guide-JCR_Service_Extensions-Configuration">
+ <title>Configuration</title>
+ <para>
+ Add a <literal>SessionActionCatalog</literal> service and an appropriate <literal>AddActionsPlugin</literal> (see the example below) configuration to your eXo Container configuration.
+ </para>
+ <para>
+ Each Action entry is exposed as <literal>org.exoplatform.services.jcr.impl.ext.action</literal>. <literal>ActionConfiguration</literal> of actions collection of <literal>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig</literal> (see an example below).
+ </para>
+ <para>
+ The mandatory field named <literal>actionClassName</literal> is the fully qualified name of <literal>org.exoplatform.services.command.action.Action implementation</literal>. The command will be launched in case the current event matches the <emphasis role="bold">criteria</emphasis>. All other fields are criteria. The criteria are appended together with *<emphasis role="bold">AND</emphasis>* operations.
+ </para>
+ <para>
+ In other words, for a particular item to be listened to, it must meet ALL the criteria:
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>Workspace</term>
+ <listitem>
+ <para>
+ The comma delimited (ORed) list of workspaces.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>eventTypes</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) <emphasis role="bold">list of event names</emphasis> (see below) to be listened to. This is the only mandatory field, others are optional and if they are missing they are interpreted as ANY.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>path</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) list of <emphasis role="bold">item absolute paths</emphasis> (or within its subtree if <emphasis role="bold">isDeep</emphasis> is <emphasis role="bold">true</emphasis>, which is the default value).
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>nodeTypes</term>
+ <listitem>
+ <para>
+ A comma delimited (ORed) list of the <emphasis role="bold">current NodeType</emphasis>.
+ </para>
+ <para>
+ Since version 1.6.1 JCR supports the functionalities of <literal>nodeType</literal> and <literal>parentNodeType</literal>. This parameter has different semantics depending on the type of the current item and the operation performed:
+ </para>
+ <para>
+ If the current item is a <emphasis role="bold">property</emphasis> it means the <emphasis role="bold">parent node type</emphasis>.
+ </para>
+ <para>
+ If the current item is a <emphasis role="bold">node,</emphasis> the semantic depends on the event type:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">add node event</emphasis>: the node type of the newly added node.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">add mixin event</emphasis>: the newly added mixing node type of the current node.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">remove mixin event</emphasis> the removed mixin type of the current node.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">other events</emphasis>: the already assigned NodeType(s) of the current node (can be both primary and mixin).
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+ <note>
+ <title>Note</title>
+ <para>
+ Remember the following points:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The list of fields can be extended.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Do not use spaces between list elements.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ The <literal>sDeep=false</literal> property means node, node properties and child nodes.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </note>
+ <para>
+ The list of supported Event names is:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis role="bold">addNode</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">addProperty</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">changeProperty</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">removeProperty</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">removeNode</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">addMixin</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">removeMixin</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">lock</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">unlock</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">checkin</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">checkout</emphasis>
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis role="bold">read</emphasis>
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+<programlisting language="XML" role="XML"><component>
+ <type>org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog</type>
+ <component-plugins>
+ <component-plugin>
+ <name>addActions</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin</type>
+ <description>add actions plugin</description>
+ <init-params>
+ <object-param>
+ <name>actions</name>
+ <object type="org.exoplatform.services.jcr.impl.ext.action.AddActionsPlugin$ActionsConfig">
+ <field name="actions">
+ <collection type="java.util.ArrayList">
+ <value>
+ <object type="org.exoplatform.services.jcr.impl.ext.action.ActionConfiguration">
+ <field name="eventTypes"><string>addNode,removeNode</string></field>
+ <field name="path"><string>/test,/exo:test</string></field>
+ <field name="isDeep"><boolean>true</boolean></field>
+ <field name="nodeTypes"><string>nt:file,nt:folder,mix:lockable</string></field>
+ <!-- field name="workspace"><string>backup</string></field -->
+ <field name="actionClassName"><string>org.exoplatform.services.jcr.ext.DummyAction</string></field>
+ </object>
+ </value>
+ </collection>
+ </field>
+ </object>
+ </object-param>
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+</component></programlisting>
+
+ </section>
+
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Namespace_Altering">
- <!-- This document was created with Syntext Serna Free. --> <title>Namespace Altering</title>
- <para>
- Since version 1.11, the eXo JCR implementation supports namespaces altering.
- </para>
- <formalpara id="form-Reference_Guide-Namespace_Altering-Adding_New_Namespace">
- <title>Adding New Namespace</title>
- <para>
- Add a new namespace with:
- </para>
-
- </formalpara>
-
-<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
-namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");</programlisting>
- <formalpara id="form-Reference_Guide-Namespace_Altering-Changing_Existing_Namespace">
- <title>Changing Existing Namespace</title>
- <para>
- Change an existing namespace with:
- </para>
-
- </formalpara>
-
-<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
-namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
-namespaceRegistry.registerNamespace("newMapping2", "http://dumb.uri/jcr");</programlisting>
- <formalpara id="form-Reference_Guide-Namespace_Altering-Removing_Existing_Namespace">
- <title>Removing Existing Namespace</title>
- <para>
- Remove an existing namespace with:
- </para>
-
- </formalpara>
-
-<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
-namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
-namespaceRegistry.unregisterNamespace("newMapping");</programlisting>
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-namespace-altering.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,44 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Namespace_Altering">
+ <!-- This document was created with Syntext Serna Free. --> <title>Namespace Altering</title>
+ <para>
+ Since version 1.11, the eXo JCR implementation supports namespaces altering.
+ </para>
+ <formalpara id="form-Reference_Guide-Namespace_Altering-Adding_New_Namespace">
+ <title>Adding New Namespace</title>
+ <para>
+ Add a new namespace with:
+ </para>
+
+ </formalpara>
+
+<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
+namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");</programlisting>
+ <formalpara id="form-Reference_Guide-Namespace_Altering-Changing_Existing_Namespace">
+ <title>Changing Existing Namespace</title>
+ <para>
+ Change an existing namespace with:
+ </para>
+
+ </formalpara>
+
+<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
+namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
+namespaceRegistry.registerNamespace("newMapping2", "http://dumb.uri/jcr");</programlisting>
+ <formalpara id="form-Reference_Guide-Namespace_Altering-Removing_Existing_Namespace">
+ <title>Removing Existing Namespace</title>
+ <para>
+ Remove an existing namespace with:
+ </para>
+
+ </formalpara>
+
+<programlisting language="Java" role="Java">ExtendedNamespaceRegistry namespaceRegistry = (ExtendedNamespaceRegistry) workspace.getNamespaceRegistry();
+namespaceRegistry.registerNamespace("newMapping", "http://dumb.uri/jcr");
+namespaceRegistry.unregisterNamespace("newMapping");</programlisting>
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,130 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Registry_Service">
- <title>Registry Service</title>
- <section id="sect-Reference_Guide-Registry_Service-Concept">
- <title>Concept</title>
- <para>
- The Registry Service is one of the key parts of the infrastructure built around eXo JCR. Each JCR that is based on services and applications may have its own configuration, settings, and other data that have to be stored persistently and used by the appropriate service or application (referred to as a <emphasis>Consumer</emphasis>).
- </para>
- <para>
- The service acts as a centralized collector (Registry) for such data. A registry storage is JCR based, that is, it is stored in some JCR workspace (one per Repository) as an Item tree under a <literal>/exo:registry</literal> node.
- </para>
- <para>
- Despite the fact that the structure of the tree is well defined (see the scheme below), it is not recommended for other services to manipulate data using the JCR API directly. So the Registry Service acts as a mediator between a Consumer and its settings.
- </para>
- <para>
- The proposed structure of the Registry Service storage is divided into three logical groups: services, applications and users:
- </para>
-
-<programlisting> exo:registry/ <-- registry "root" (exo:registry)
- exo:services/ <-- service data storage (exo:registryGroup)
- service1/
- Consumer data (exo:registryEntry)
- ...
- exo:applications/ <-- application data storage (exo:registryGroup)
- app1/
- Consumer data (exo:registryEntry)
- ...
- exo:users/ <-- user personal data storage (exo:registryGroup)
- user1/
- Consumer data (exo:registryEntry)
- ...</programlisting>
- <para>
- Each upper level Service may store its configuration in the Registry. At first start the service can call its settings from an XML configuration file and, once the settings have been stored, from then on call settings from the Registry.
- </para>
- <para>
- In a configuration file, you can add the <parameter>force-xml-configuration</parameter> parameter to the component to force it to ignore reading parameter initialization from <literal>RegistryService</literal> and to use the configuration file instead:
- </para>
-
-<programlisting language="XML" role="XML"><value-param>
- <name>force-xml-configuration</name>
- <value>true</value>
-</value-param></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Registry_Service-The_API">
- <title>The API</title>
- <para>
- The main functionality of the Registry Service is described in the Registry abstract class as the following:
- </para>
-
-<programlisting language="Java" role="Java">public abstract class Registry {
-
- /**
- * Returns the Registry object which wraps the Node of the "exo:registry" type
- */
- public abstract RegistryNode getRegistry(SessionProvider sessionProvider)
- throws RepositoryConfigurationException, RepositoryException;
-
- /**
- * Returns the existing RegistryEntry which wraps the Node of the "exo:registryEntry" type
- */
- public abstract RegistryEntry getEntry(SessionProvider sessionProvider, String groupName,
- String entryName) throws RepositoryException;
-
- /**
- * Creates a new RegistryEntry
- */
- public abstract void createEntry(SessionProvider sessionProvider,
- String groupName, RegistryEntry entry) throws RepositoryException;
-
- /**
- * Replaces a RegistryEntry
- */
- public abstract void recreateEntry(SessionProvider sessionProvider,
- String groupName, RegistryEntry entry) throws RepositoryException;
-
- /**
- * Removes a RegistryEntry
- */
- public abstract void removeEntry(SessionProvider sessionProvider,
- String groupName, String entryName) throws RepositoryException;</programlisting>
- <para>
- This is a CRUD interface as the <literal>RegistryEntry</literal> object which wraps registry data for some Consumer as a Registry Entry. The Registry Service itself is unaware of the wrapping data as it is the Consumer's responsibility to manage and use its data in its own way.
- </para>
- <para>
- To create an Entity Consumer you should know how to serialize the data to some XML structure and then create a <literal>RegistryEntry</literal> from these data at once or populate them in a <literal>RegistryEntry</literal> object by using <literal>RegistryEntry(String entryName)</literal> constructor and then obtain and fill a DOM document.
- </para>
- <para>
- An example of <literal>RegistryService</literal> using:
- </para>
-
-<programlisting language="Java" role="Java"> RegistryService regService = (RegistryService) container
- .getComponentInstanceOfType(RegistryService.class);
-
- RegistryEntry registryEntry = regService.getEntry(sessionProvider,
- RegistryService.EXO_SERVICES, "my-service");
-
- Document doc = registryEntry.getDocument();
-
- String mySetting = getElementsByTagName("tagname").item(index).getTextContent();
- .....</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Registry_Service-Configuration">
- <title>Configuration</title>
- <para>
- <literal>RegistryService</literal> has only one optional properties parameter; <parameter>locations</parameter>. It is used to mention where <literal>exo:registry</literal> is placed for each repository. The name of each property is interpreted as a repository name and its value as a workspace name (a system workspace by default).
- </para>
-
-<programlisting language="XML" role="XML"><component>
- <type>org.exoplatform.services.jcr.ext.registry.RegistryService</type>
- <init-params>
- <properties-param>
- <name>locations</name>
- <property name="db1" value="ws2"/>
- </properties-param>
- </init-params>
-</component></programlisting>
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-registry-service.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Registry_Service">
+ <title>Registry Service</title>
+ <section id="sect-Reference_Guide-Registry_Service-Concept">
+ <title>Concept</title>
+ <para>
+ The Registry Service is one of the key parts of the infrastructure built around eXo JCR. Each JCR that is based on services and applications may have its own configuration, settings, and other data that have to be stored persistently and used by the appropriate service or application (referred to as a <emphasis>Consumer</emphasis>).
+ </para>
+ <para>
+ The service acts as a centralized collector (Registry) for such data. A registry storage is JCR based, that is, it is stored in some JCR workspace (one per Repository) as an Item tree under a <literal>/exo:registry</literal> node.
+ </para>
+ <para>
+ Despite the fact that the structure of the tree is well defined (see the scheme below), it is not recommended for other services to manipulate data using the JCR API directly. So the Registry Service acts as a mediator between a Consumer and its settings.
+ </para>
+ <para>
+ The proposed structure of the Registry Service storage is divided into three logical groups: services, applications and users:
+ </para>
+
+<programlisting> exo:registry/ <-- registry "root" (exo:registry)
+ exo:services/ <-- service data storage (exo:registryGroup)
+ service1/
+ Consumer data (exo:registryEntry)
+ ...
+ exo:applications/ <-- application data storage (exo:registryGroup)
+ app1/
+ Consumer data (exo:registryEntry)
+ ...
+ exo:users/ <-- user personal data storage (exo:registryGroup)
+ user1/
+ Consumer data (exo:registryEntry)
+ ...</programlisting>
+ <para>
+ Each upper level Service may store its configuration in the Registry. At first start the service can call its settings from an XML configuration file and, once the settings have been stored, from then on call settings from the Registry.
+ </para>
+ <para>
+ In a configuration file, you can add the <parameter>force-xml-configuration</parameter> parameter to the component to force it to ignore reading parameter initialization from <literal>RegistryService</literal> and to use the configuration file instead:
+ </para>
+
+<programlisting language="XML" role="XML"><value-param>
+ <name>force-xml-configuration</name>
+ <value>true</value>
+</value-param></programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Registry_Service-The_API">
+ <title>The API</title>
+ <para>
+ The main functionality of the Registry Service is described in the Registry abstract class as the following:
+ </para>
+
+<programlisting language="Java" role="Java">public abstract class Registry {
+
+ /**
+ * Returns the Registry object which wraps the Node of the "exo:registry" type
+ */
+ public abstract RegistryNode getRegistry(SessionProvider sessionProvider)
+ throws RepositoryConfigurationException, RepositoryException;
+
+ /**
+ * Returns the existing RegistryEntry which wraps the Node of the "exo:registryEntry" type
+ */
+ public abstract RegistryEntry getEntry(SessionProvider sessionProvider, String groupName,
+ String entryName) throws RepositoryException;
+
+ /**
+ * Creates a new RegistryEntry
+ */
+ public abstract void createEntry(SessionProvider sessionProvider,
+ String groupName, RegistryEntry entry) throws RepositoryException;
+
+ /**
+ * Replaces a RegistryEntry
+ */
+ public abstract void recreateEntry(SessionProvider sessionProvider,
+ String groupName, RegistryEntry entry) throws RepositoryException;
+
+ /**
+ * Removes a RegistryEntry
+ */
+ public abstract void removeEntry(SessionProvider sessionProvider,
+ String groupName, String entryName) throws RepositoryException;</programlisting>
+ <para>
+ This is a CRUD interface as the <literal>RegistryEntry</literal> object which wraps registry data for some Consumer as a Registry Entry. The Registry Service itself is unaware of the wrapping data as it is the Consumer's responsibility to manage and use its data in its own way.
+ </para>
+ <para>
+ To create an Entity Consumer you should know how to serialize the data to some XML structure and then create a <literal>RegistryEntry</literal> from these data at once or populate them in a <literal>RegistryEntry</literal> object by using <literal>RegistryEntry(String entryName)</literal> constructor and then obtain and fill a DOM document.
+ </para>
+ <para>
+ An example of <literal>RegistryService</literal> using:
+ </para>
+
+<programlisting language="Java" role="Java"> RegistryService regService = (RegistryService) container
+ .getComponentInstanceOfType(RegistryService.class);
+
+ RegistryEntry registryEntry = regService.getEntry(sessionProvider,
+ RegistryService.EXO_SERVICES, "my-service");
+
+ Document doc = registryEntry.getDocument();
+
+ String mySetting = getElementsByTagName("tagname").item(index).getTextContent();
+ .....</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Registry_Service-Configuration">
+ <title>Configuration</title>
+ <para>
+ <literal>RegistryService</literal> has only one optional properties parameter; <parameter>locations</parameter>. It is used to mention where <literal>exo:registry</literal> is placed for each repository. The name of each property is interpreted as a repository name and its value as a workspace name (a system workspace by default).
+ </para>
+
+<programlisting language="XML" role="XML"><component>
+ <type>org.exoplatform.services.jcr.ext.registry.RegistryService</type>
+ <init-params>
+ <properties-param>
+ <name>locations</name>
+ <property name="db1" value="ws2"/>
+ </properties-param>
+ </init-params>
+</component></programlisting>
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,252 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Using_The_JCR">
- <title>Using The JCR</title>
- <section id="sect-Reference_Guide-Using_The_JCR-Obtaining_a_Repository_Object">
- <title>Obtaining a Repository Object</title>
- <para>
- A <literal>javax.jcr.Repository</literal> object can be obtained by:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Using the eXo Container <emphasis>native</emphasis> mechanism. All Repositories are kept with a single <literal>RepositoryService</literal> component. This can be obtained from the eXo Container as follows:
- </para>
-
-<programlisting language="Java" role="Java">
- RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
- Repository repository = repositoryService.getRepository("repositoryName");
-</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Using the eXo Container <emphasis>native</emphasis>" mechanism with a thread local saved <literal>current</literal> repository (particularly if you plan to use a single repository, which covers more than 90% of use cases).
- </para>
-
-<programlisting language="Java" role="Java"> // set current repository at initial time
- RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
- repositoryService.setCurrentRepositoryName("repositoryName");
- ....
- // retrieve and use this repository
- Repository repository = repositoryService.getCurrentRepository();
-</programlisting>
-
- </listitem>
- <listitem>
- <para>
- Using JNDI as specified in JSR-170. This way you have to configure the reference:
- </para>
-
-<programlisting language="Java" role="Java"> Context ctx = new InitialContext();
- Repository repository =(Repository) ctx.lookup("repositoryName");</programlisting>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-Using_The_JCR-JCR_Session_common_considerations">
- <title>JCR Session common considerations</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- Remember that <literal>javax.jcr.Session</literal> is not a thread safe object. <emphasis role="bold">Never try to share it between threads</emphasis>.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Do not use <emphasis role="bold">System session</emphasis> from the <emphasis role="bold">user</emphasis> related code because a system session has <emphasis role="bold">unlimited rights</emphasis>. Call ManageableRepository.getSystemSession() from <emphasis role="bold">process</emphasis> related code only.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Call <literal>Session.logout()</literal> explicitly to <emphasis role="bold">release resources</emphasis> assigned to the session.
- </para>
-
- </listitem>
- <listitem>
- <para>
- When designing your application, take care of the Session policy inside your application. Two strategies are possible: <emphasis role="bold">Stateless</emphasis> (Session per business request) and <emphasis role="bold">Stateful</emphasis> (Session per User) or some mix.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Using_The_JCR-JCR_Application_Practices">
- <title>JCR Application Practices</title>
- <section id="sect-Reference_Guide-JCR_Application_Practices-Log_Out_of_All_Open_Sessions">
- <title>Log Out of All Open Sessions</title>
- <para>
- Use <literal>org.exoplatform.services.jcr.ext.common.SessionProvider</literal> which is responsible for caching or obtaining your JCR Sessions and closing all opened sessions at once.
- </para>
-
-<programlisting language="Java" role="Java">public class SessionProvider {
-
- /**
- * Creates a SessionProvider for a certain identity
- * @param cred
- */
- public SessionProvider(Credentials cred)
-
- /**
- * Gets the session from internal cache or creates and caches a new one
- */
- public Session getSession(String workspaceName, ManageableRepository repository)
- throws LoginException, NoSuchWorkspaceException, RepositoryException
-
- /**
- * Calls a logout() method for all cached sessions
- */
- public void close()
-
- /**
- * a Helper for creating a System session provider
- * @return System session
- */
- public static SessionProvider createSystemProvider()
-
- /**
- * a Helper for creating an Anonimous session provider
- * @return System session
- */
- public static SessionProvider createAnonimProvider()
-
-}</programlisting>
- <para>
- The <literal>SessionProvider</literal> is per-request or per-user object, depending on your policy. Create it with your application before performing JCR operations, use it to obtain the Sessions and close at the end of an application <literal>session(request)</literal>. See the following example:
- </para>
-
-<programlisting language="Java" role="Java">// (1) obtain current javax.jcr.Credentials, for example get it from AuthenticationService
-Credentials cred = ....
-
-// (2) create SessionProvider for current user
-SessionProvider sessionProvider = new SessionProvider(ConversationState.getCurrent());
-
-// NOTE: for creating an Anonymous or System Session use the corresponding static SessionProvider.create...() method
-// Get appropriate Repository as described in "Obtaining Repository object" section for example
-ManageableRepository repository = (ManageableRepository) ctx.lookup("repositoryName");
-
-// get an appropriate workspace's session
-Session session = sessionProvider.getSession("workspaceName", repository);
-
- .........
-// your JCR code
- .........
-
- // Close the session provider
- sessionProvider.close();</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Application_Practices-Reusing_SessionProvider">
- <title>Reusing SessionProvider</title>
- <para>
- Since creating the <literal>SessionProvider</literal> involves multiple steps which may need to be repeated for each JCR session, the <literal>SessionProviderService</literal> assists you to get a <literal>SessionProvider</literal> object.
- </para>
- <para>
- The <literal>org.exoplatform.services.jcr.ext.app.SessionProviderService</literal> interface is defined as follows:
- </para>
-
-<programlisting language="Java" role="Java">public interface SessionProviderService {
- void setSessionProvider(Object key, SessionProvider sessionProvider);
- SessionProvider getSessionProvider(Object key);
- void removeSessionProvider(Object key);
-}</programlisting>
- <para>
- The main contract of an implemented component is obtaining a <literal>SessionProvider</literal> by key. the eXo JCR provides two implementations:
- </para>
- <table id="tabl-Reference_Guide-Reusing_SessionProvider-SessionProvider_implementations">
- <title>SessionProvider implementations</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- Implementation
- </entry>
- <entry>
- Description
- </entry>
- <entry>
- Typical Use
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- <literal>org.exoplatform.services.jcr.ext.app.MapStoredSessionProviderService</literal>
- </entry>
- <entry>
- Per-user style which keeps objects in a Map.
- </entry>
- <entry>
- Per-user. The usual practice utilizes a user's name or Credentials as a key.
- </entry>
-
- </row>
- <row>
- <entry>
- <literal>org.exoplatform.services.jcr.ext.app.ThreadLocalSessionProviderService</literal>
- </entry>
- <entry>
- Per-request style which keeps a single <literal>SessionProvider</literal> in a static ThreadLocal variable.
- </entry>
- <entry>
- Always use null for the key.
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
- For any implementation, your code should adhere to the following sequence:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Call <literal>SessionProviderService.setSessionProvider(Object key, SessionProvider, sessionProvider)</literal> at the beginning of a business request for Stateless application or application's session for Statefull policy.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Call <literal>SessionProviderService.getSessionProvider(Object key)</literal> for obtaining a SessionProvider object
- </para>
-
- </listitem>
- <listitem>
- <para>
- Call <literal>SessionProviderService.removeSessionProvider(Object key)</literal> at the end of a business request for Stateless application or application's session for Statefull policy.
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/jcr-usage.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,252 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Using_The_JCR">
+ <title>Using The JCR</title>
+ <section id="sect-Reference_Guide-Using_The_JCR-Obtaining_a_Repository_Object">
+ <title>Obtaining a Repository Object</title>
+ <para>
+ A <literal>javax.jcr.Repository</literal> object can be obtained by:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Using the eXo Container <emphasis>native</emphasis> mechanism. All Repositories are kept with a single <literal>RepositoryService</literal> component. This can be obtained from the eXo Container as follows:
+ </para>
+
+<programlisting language="Java" role="Java">
+ RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
+ Repository repository = repositoryService.getRepository("repositoryName");
+</programlisting>
+
+ </listitem>
+ <listitem>
+ <para>
+ Using the eXo Container <emphasis>native</emphasis>" mechanism with a thread local saved <literal>current</literal> repository (particularly if you plan to use a single repository, which covers more than 90% of use cases).
+ </para>
+
+<programlisting language="Java" role="Java"> // set current repository at initial time
+ RepositoryService repositoryService = (RepositoryService) container.getComponentInstanceOfType(RepositoryService.class);
+ repositoryService.setCurrentRepositoryName("repositoryName");
+ ....
+ // retrieve and use this repository
+ Repository repository = repositoryService.getCurrentRepository();
+</programlisting>
+
+ </listitem>
+ <listitem>
+ <para>
+ Using JNDI as specified in JSR-170. This way you have to configure the reference:
+ </para>
+
+<programlisting language="Java" role="Java"> Context ctx = new InitialContext();
+ Repository repository =(Repository) ctx.lookup("repositoryName");</programlisting>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Using_The_JCR-JCR_Session_common_considerations">
+ <title>JCR Session common considerations</title>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Remember that <literal>javax.jcr.Session</literal> is not a thread safe object. <emphasis role="bold">Never try to share it between threads</emphasis>.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Do not use <emphasis role="bold">System session</emphasis> from the <emphasis role="bold">user</emphasis> related code because a system session has <emphasis role="bold">unlimited rights</emphasis>. Call ManageableRepository.getSystemSession() from <emphasis role="bold">process</emphasis> related code only.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>Session.logout()</literal> explicitly to <emphasis role="bold">release resources</emphasis> assigned to the session.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ When designing your application, take care of the Session policy inside your application. Two strategies are possible: <emphasis role="bold">Stateless</emphasis> (Session per business request) and <emphasis role="bold">Stateful</emphasis> (Session per User) or some mix.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Using_The_JCR-JCR_Application_Practices">
+ <title>JCR Application Practices</title>
+ <section id="sect-Reference_Guide-JCR_Application_Practices-Log_Out_of_All_Open_Sessions">
+ <title>Log Out of All Open Sessions</title>
+ <para>
+ Use <literal>org.exoplatform.services.jcr.ext.common.SessionProvider</literal> which is responsible for caching or obtaining your JCR Sessions and closing all opened sessions at once.
+ </para>
+
+<programlisting language="Java" role="Java">public class SessionProvider {
+
+ /**
+ * Creates a SessionProvider for a certain identity
+ * @param cred
+ */
+ public SessionProvider(Credentials cred)
+
+ /**
+ * Gets the session from internal cache or creates and caches a new one
+ */
+ public Session getSession(String workspaceName, ManageableRepository repository)
+ throws LoginException, NoSuchWorkspaceException, RepositoryException
+
+ /**
+ * Calls a logout() method for all cached sessions
+ */
+ public void close()
+
+ /**
+ * a Helper for creating a System session provider
+ * @return System session
+ */
+ public static SessionProvider createSystemProvider()
+
+ /**
+ * a Helper for creating an Anonimous session provider
+ * @return System session
+ */
+ public static SessionProvider createAnonimProvider()
+
+}</programlisting>
+ <para>
+ The <literal>SessionProvider</literal> is per-request or per-user object, depending on your policy. Create it with your application before performing JCR operations, use it to obtain the Sessions and close at the end of an application <literal>session(request)</literal>. See the following example:
+ </para>
+
+<programlisting language="Java" role="Java">// (1) obtain current javax.jcr.Credentials, for example get it from AuthenticationService
+Credentials cred = ....
+
+// (2) create SessionProvider for current user
+SessionProvider sessionProvider = new SessionProvider(ConversationState.getCurrent());
+
+// NOTE: for creating an Anonymous or System Session use the corresponding static SessionProvider.create...() method
+// Get appropriate Repository as described in "Obtaining Repository object" section for example
+ManageableRepository repository = (ManageableRepository) ctx.lookup("repositoryName");
+
+// get an appropriate workspace's session
+Session session = sessionProvider.getSession("workspaceName", repository);
+
+ .........
+// your JCR code
+ .........
+
+ // Close the session provider
+ sessionProvider.close();</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-JCR_Application_Practices-Reusing_SessionProvider">
+ <title>Reusing SessionProvider</title>
+ <para>
+ Since creating the <literal>SessionProvider</literal> involves multiple steps which may need to be repeated for each JCR session, the <literal>SessionProviderService</literal> assists you to get a <literal>SessionProvider</literal> object.
+ </para>
+ <para>
+ The <literal>org.exoplatform.services.jcr.ext.app.SessionProviderService</literal> interface is defined as follows:
+ </para>
+
+<programlisting language="Java" role="Java">public interface SessionProviderService {
+ void setSessionProvider(Object key, SessionProvider sessionProvider);
+ SessionProvider getSessionProvider(Object key);
+ void removeSessionProvider(Object key);
+}</programlisting>
+ <para>
+ The main contract of an implemented component is obtaining a <literal>SessionProvider</literal> by key. the eXo JCR provides two implementations:
+ </para>
+ <table id="tabl-Reference_Guide-Reusing_SessionProvider-SessionProvider_implementations">
+ <title>SessionProvider implementations</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ Implementation
+ </entry>
+ <entry>
+ Description
+ </entry>
+ <entry>
+ Typical Use
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>org.exoplatform.services.jcr.ext.app.MapStoredSessionProviderService</literal>
+ </entry>
+ <entry>
+ Per-user style which keeps objects in a Map.
+ </entry>
+ <entry>
+ Per-user. The usual practice utilizes a user's name or Credentials as a key.
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ <literal>org.exoplatform.services.jcr.ext.app.ThreadLocalSessionProviderService</literal>
+ </entry>
+ <entry>
+ Per-request style which keeps a single <literal>SessionProvider</literal> in a static ThreadLocal variable.
+ </entry>
+ <entry>
+ Always use null for the key.
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+ <para>
+ For any implementation, your code should adhere to the following sequence:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.setSessionProvider(Object key, SessionProvider, sessionProvider)</literal> at the beginning of a business request for Stateless application or application's session for Statefull policy.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.getSessionProvider(Object key)</literal> for obtaining a SessionProvider object
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Call <literal>SessionProviderService.removeSessionProvider(Object key)</literal> at the end of a business request for Stateless application or application's session for Statefull policy.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+
+ </section>
+
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,554 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-NodeType_Registration">
- <!-- This document was created with Syntext Serna Free. --> <title>NodeType Registration</title>
- <para>
- The eXo JCR implementation supports two methods of Nodetypes registration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- From a <literal>NodeTypeValue</literal> POJO. Refer to <xref linkend="exam-Reference_Guide-Node_type_registration-Run_time_registration_using_NodeTypeValue" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- From an XML document. Refer to <xref linkend="exam-Reference_Guide-Node_type_registration-Runtime_Registration_From_XML_File" />.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <section id="sect-Reference_Guide-NodeType_Registration-Interfaces_and_methods">
- <title>Interfaces and methods</title>
- <section id="sect-Reference_Guide-Interfaces_and_methods-ExtendedNodeTypeManager">
- <title><literal>ExtendedNodeTypeManager</literal></title>
- <para>
- The <literal>ExtendedNodeTypeManager</literal> (from JCR 1.11) interface provides the following methods related to registering node types:
- </para>
-
-<programlisting language="Java" role="Java">public static final int IGNORE_IF_EXISTS = 0;
-
-public static final int FAIL_IF_EXISTS = 2;
-
-public static final int REPLACE_IF_EXISTS = 4;
-
-
-/**
- * Registers node type using value object.
- */
-void registerNodeType(NodeTypeValue nodeTypeValue, int alreadyExistsBehaviour) throws RepositoryException;
-
-/**
- * Registers all node types using XML binding value objects from xml stream.
- */
-void registerNodeTypes(InputStream xml, int alreadyExistsBehaviour) throws RepositoryException;
-
-/**
- * Return <code>NodeTypeValue</code> for a given nodetype name. Used for
- * nodetype update. Value can be edited and registered via
- * <code>registerNodeType(NodeTypeValue nodeTypeValue, int alreadyExistsBehaviour)</code>
- */
-NodeTypeValue getNodeTypeValue(String ntName) throws NoSuchNodeTypeException, RepositoryException;
-
-/**
- * Registers or updates the specified <code>Collection</code> of
- * <code>NodeTypeValue</code> objects.
- */
-public NodeTypeIterator registerNodeTypes(Collection<NodeTypeValue> values,
- int alreadyExistsBehaviour) throws UnsupportedRepositoryOperationException,
- RepositoryException;
-
-/**
- * Unregisters the specified node type.
- */
-public void unregisterNodeType(String name) throws UnsupportedRepositoryOperationException,
- NoSuchNodeTypeException,
- RepositoryException;
-
-/**
- * Unregisters the specified set of node types.<p/> Used to unregister a set
- * of node types with mutual dependencies.
- */
-public void unregisterNodeTypes(String[] names) throws UnsupportedRepositoryOperationException,
- NoSuchNodeTypeException,
- RepositoryException;</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-NodeTypeValue">
- <title><literal>NodeTypeValue</literal></title>
- <para>
- The NodeTypeValue interface represents a simple container structure used to define node types which are then registered through the ExtendedNodeTypeManager.registerNodeType method. The implementation of this interface does not contain any validation logic.
- </para>
-
-<programlisting language="Java" role="Java">/**
- * @return Returns the declaredSupertypeNames.
- */
-public List<String> getDeclaredSupertypeNames();
-
-/**
- * @param declaredSupertypeNames
- *The declaredSupertypeNames to set.
- */
-public void setDeclaredSupertypeNames(List<String> declaredSupertypeNames);
-
-/**
- * @return Returns the mixin.
- */
-public boolean isMixin();
-
-/**
- * @param mixin
- *The mixin to set.
- */
-public void setMixin(boolean mixin);
-
-/**
- * @return Returns the name.
- */
-public String getName();
-
-/**
- * @param name
- *The name to set.
- */
-public void setName(String name);
-
-/**
- * @return Returns the orderableChild.
- */
-public boolean isOrderableChild();
-
-/**
- * @param orderableChild
- *The orderableChild to set.
- */
-public void setOrderableChild(boolean orderableChild);
-
-/**
- * @return Returns the primaryItemName.
- */
-public String getPrimaryItemName();
-
-/**
- * @param primaryItemName
- *The primaryItemName to set.
- */
-public void setPrimaryItemName(String primaryItemName);
-
-/**
- * @return Returns the declaredChildNodeDefinitionNames.
- */
-public List<NodeDefinitionValue> getDeclaredChildNodeDefinitionValues();
-
-/**
- * @param declaredChildNodeDefinitionNames
- *The declaredChildNodeDefinitionNames to set.
- */
-public void setDeclaredChildNodeDefinitionValues(List<NodeDefinitionValue> declaredChildNodeDefinitionValues);
-
-/**
- * @return Returns the declaredPropertyDefinitionNames.
- */
-public List<PropertyDefinitionValue> getDeclaredPropertyDefinitionValues();
-
-/**
- * @param declaredPropertyDefinitionNames
- *The declaredPropertyDefinitionNames to set.
- */
-public void setDeclaredPropertyDefinitionValues(List<PropertyDefinitionValue> declaredPropertyDefinitionValues);</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-NodeDefinitionValue">
- <title><literal>NodeDefinitionValue</literal></title>
- <para>
- The <literal>NodeDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child node definition to be set, after that the <literal>NodeDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
- </para>
-
-<programlisting language="Java" role="Java">/**
- * @return Returns the declaredSupertypeNames.
- */
-public List<String> getDeclaredSupertypeNames();
-
-/**
- * @param declaredSupertypeNames
- *The declaredSupertypeNames to set.
- */
-public void setDeclaredSupertypeNames(List<String> declaredSupertypeNames);
-
-/**
- * @return Returns the mixin.
- */
-public boolean isMixin();
-
-/**
- * @param mixin
- *The mixin to set.
- */
-public void setMixin(boolean mixin);
-
-/**
- * @return Returns the name.
- */
-public String getName();
-
-/**
- * @param name
- *The name to set.
- */
-public void setName(String name);
-
-/**
- * @return Returns the orderableChild.
- */
-public boolean isOrderableChild();
-
-/**
- * @param orderableChild
- *The orderableChild to set.
- */
-public void setOrderableChild(boolean orderableChild);
-
-/**
- * @return Returns the primaryItemName.
- */
-public String getPrimaryItemName();
-
-/**
- * @param primaryItemName
- *The primaryItemName to set.
- */
-public void setPrimaryItemName(String primaryItemName);
-
-/**
- * @return Returns the declaredChildNodeDefinitionNames.
- */
-public List<NodeDefinitionValue> getDeclaredChildNodeDefinitionValues();
-
-/**
- * @param declaredChildNodeDefinitionNames
- *The declaredChildNodeDefinitionNames to set.
- */
-public void setDeclaredChildNodeDefinitionValues(List<NodeDefinitionValue> declaredChildNodeDefinitionValues);
-
-/**
- * @return Returns the declaredPropertyDefinitionNames.
- */
-public List<PropertyDefinitionValue> getDeclaredPropertyDefinitionValues();
-
-/**
- * @param declaredPropertyDefinitionNames
- *The declaredPropertyDefinitionNames to set.
- */
-public void setDeclaredPropertyDefinitionValues(List<PropertyDefinitionValue> declaredPropertyDefinitionValues);
-
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-PropertyDefinitionValue">
- <title><literal>PropertyDefinitionValue</literal></title>
- <para>
- The <literal>PropertyDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child property definition to be set, after that the <literal>PropertyDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
- </para>
- <example id="exam-Reference_Guide-PropertyDefinitionValue-PropertyDefinitionValue">
- <title><literal>PropertyDefinitionValue</literal></title>
-
-<programlisting language="Java" role="Java">/**
- * @return Returns the defaultValues.
- */
-public List<String> getDefaultValueStrings();
-
-/**
- * @param defaultValues The defaultValues to set.
- */
-public void setDefaultValueStrings(List<String> defaultValues);
-
-/**
- * @return Returns the multiple.
- */
-public boolean isMultiple();
-
-/**
- * @param multiple The multiple to set.
- */
-public void setMultiple(boolean multiple);
-
-/**
- * @return Returns the requiredType.
- */
-public int getRequiredType();
-
-/**
- * @param requiredType The requiredType to set.
- */
-public void setRequiredType(int requiredType);
-
-/**
- * @return Returns the valueConstraints.
- */
-public List<String> getValueConstraints();
-
-/**
- * @param valueConstraints The valueConstraints to set.
- */
-public void setValueConstraints(List<String> valueConstraints);</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-PropertyDefinitionValue-ItemDefinitionValue">
- <title><literal>ItemDefinitionValue</literal></title>
-
-<programlisting language="Java" role="Java"> /**
- * @return Returns the autoCreate.
- */
-public boolean isAutoCreate();
-
-/**
- * @param autoCreate The autoCreate to set.
- */
-public void setAutoCreate(boolean autoCreate);
-
-/**
- * @return Returns the mandatory.
- */
-public boolean isMandatory();
-
-/**
- * @param mandatory The mandatory to set.
- */
-public void setMandatory(boolean mandatory);
-
-/**
- * @return Returns the name.
- */
-public String getName();
-
-/**
- * @param name The name to set.
- */
-public void setName(String name);
-
-/**
- * @return Returns the onVersion.
- */
-public int getOnVersion();
-
-/**
- * @param onVersion The onVersion to set.
- */
-public void setOnVersion(int onVersion);
-
-/**
- * @return Returns the readOnly.
- */
-public boolean isReadOnly();
-
-/**
- * @param readOnly The readOnly to set.
- */
-public void setReadOnly(boolean readOnly);</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Node_type_registration">
- <title>Node type registration</title>
- <para>
- The eXo JCR implementation supports various methods of the node-type registration.
- </para>
- <example id="exam-Reference_Guide-Node_type_registration-Runtime_Registration_From_XML_File">
- <title>Runtime Registration From XML File</title>
-
-<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
- .getNodeTypeManager();
-InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
-nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.IGNORE_IF_EXISTS );</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Node_type_registration-Run_time_registration_using_NodeTypeValue">
- <title>Run time registration using NodeTypeValue</title>
-
-<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
- .getNodeTypeManager();
-NodeTypeValue testNValue = new NodeTypeValue();
-
-List<String> superType = new ArrayList<String>();
-superType.add("nt:base");
-testNValue.setName("exo:myNodeType");
-testNValue.setPrimaryItemName("");
-testNValue.setDeclaredSupertypeNames(superType);
-List<PropertyDefinitionValue> props = new ArrayList<PropertyDefinitionValue>();
-props.add(new PropertyDefinitionValue("*",
- false,
- false,
- 1,
- false,
- new ArrayList<String>(),
- false,
- 0,
- new ArrayList<String>()));
-testNValue.setDeclaredPropertyDefinitionValues(props);
-
-nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.FAIL_IF_EXISTS);</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Changing_Existing_Node_Type">
- <title>Changing Existing Node Type</title>
- <para>
- To replace an existing node type definition pass <literal>ExtendedNodeTypeManager.REPLACE_IF_EXISTS</literal> as a second parameter for the method <literal>ExtendedNodeTypeManager.registerNodeType</literal>.
- </para>
-
-<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
- .getNodeTypeManager();
-InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
-.....
-nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.REPLACE_IF_EXISTS );</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Removing_node_type">
- <title>Removing node type</title>
- <para>
- A node type cannot be removed if the repository contains an instance of that node type.
- </para>
-
-<programlisting language="Java" role="Java">nodeTypeManager.unregisterNodeType(<literal>myNodeType</literal>);</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Adding_New_PropertyDefinition">
- <title>Adding New <literal>PropertyDefinition</literal></title>
- <para>
- Use the code below to add a new <literal>PropertyDefinition</literal>:
- </para>
-<programlisting language="Java" role="Java">
-NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
-List<PropertyDefinitionValue> props = new ArrayList<PropertyDefinitionValue>();
-props.add(new PropertyDefinitionValue("tt",
- true,
- true,
- 1,
- false,
- new ArrayList<String>(),
- false,
- PropertyType.STRING,
- new ArrayList<String>()));
-myNodeTypeValue.setDeclaredPropertyDefinitionValues(props);
-
-nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Adding_New_Child_NodeDefinition">
- <title>Adding New Child <literal>NodeDefinition</literal></title>
- <para>
- Use the code below to add a new child <literal>NodeDefinition</literal>.
- </para>
-
-<programlisting language="Java" role="Java">NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
-
-List<NodeDefinitionValue> nodes = new ArrayList<NodeDefinitionValue>();
-nodes.add(new NodeDefinitionValue("child",
- false,
- false,
- 1,
- false,
- "nt:base",
- new ArrayList<String>(),
- false));
-testNValue.setDeclaredChildNodeDefinitionValues(nodes);
-
-nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Edit_Existing_PropertyDefinition_or_Child_NodeDefinition">
- <title>Edit Existing <literal>PropertyDefinition</literal> or Child <literal>NodeDefinition</literal></title>
- <para>
- Note that the existing data must be consistent before changing or removing a existing definition.
- </para>
- <para>
- The JCR does not allow you to change the node type in any way in which the existing data would be incompatible with the new node type.
- </para>
- <para>
- But if these changes are necessary, an incremental process (which consistently changes the node type and the existing data) can achieve node type changes that would not be possible in a direct call.
- </para>
- <para>
- For example: If you wanted to add a new residual property definition called <literal>downloadCount</literal> to the existing node type <literal>myNodeType</literal>, you would encounter two limitations that would not allow you to execute the task with a single call of registerNodeType method.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Existing nodes of the type <literal>myNodeType</literal>, which does not contain properties <literal>downloadCount</literal> that conflicts with node type what we need.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Registered node type <literal>myNodeType</literal> will not allow us to add properties <literal>downloadCount</literal> because it has no such specific properties.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- The task could be executed, however, with the following steps:
- </para>
- <procedure>
- <title></title>
- <step>
- <para>
- Change the existing node type <literal>myNodeType</literal> by adding the mandatory property <literal>downloadCount</literal>.
- </para>
-
- </step>
- <step>
- <para>
- Add the node type <literal>myNodeType</literal> with the property <literal>downloadCount</literal> to all the existing node types.
- </para>
-
- </step>
- <step>
- <para>
- Change the definition of the property <literal>downloadCount</literal> of the node type <literal>myNodeType</literal> to mandatory.
- </para>
-
- </step>
-
- </procedure>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Interfaces_and_methods-Changing_The_List_of_Super_Types">
- <title>Changing The List of Super Types</title>
- <para>
- Use the following code to change the list of super types:
- </para>
-
-<programlisting language="Java" role="Java">NodeTypeValue testNValue = nodeTypeManager.getNodeTypeValue("exo:myNodeType");
-
-List<String> superType = testNValue.getDeclaredSupertypeNames();
-superType.add("mix:versionable");
-testNValue.setDeclaredSupertypeNames(superType);
-
-nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
-
- </section>
-
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml.cut (from rev 8191, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetype-registration.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,554 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-NodeType_Registration">
+ <!-- This document was created with Syntext Serna Free. --> <title>NodeType Registration</title>
+ <para>
+ The eXo JCR implementation supports two methods of Nodetypes registration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ From a <literal>NodeTypeValue</literal> POJO. Refer to <xref linkend="exam-Reference_Guide-Node_type_registration-Run_time_registration_using_NodeTypeValue" />
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ From an XML document. Refer to <xref linkend="exam-Reference_Guide-Node_type_registration-Runtime_Registration_From_XML_File" />.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <section id="sect-Reference_Guide-NodeType_Registration-Interfaces_and_methods">
+ <title>Interfaces and methods</title>
+ <section id="sect-Reference_Guide-Interfaces_and_methods-ExtendedNodeTypeManager">
+ <title><literal>ExtendedNodeTypeManager</literal></title>
+ <para>
+ The <literal>ExtendedNodeTypeManager</literal> (from JCR 1.11) interface provides the following methods related to registering node types:
+ </para>
+
+<programlisting language="Java" role="Java">public static final int IGNORE_IF_EXISTS = 0;
+
+public static final int FAIL_IF_EXISTS = 2;
+
+public static final int REPLACE_IF_EXISTS = 4;
+
+
+/**
+ * Registers node type using value object.
+ */
+void registerNodeType(NodeTypeValue nodeTypeValue, int alreadyExistsBehaviour) throws RepositoryException;
+
+/**
+ * Registers all node types using XML binding value objects from xml stream.
+ */
+void registerNodeTypes(InputStream xml, int alreadyExistsBehaviour) throws RepositoryException;
+
+/**
+ * Return <code>NodeTypeValue</code> for a given nodetype name. Used for
+ * nodetype update. Value can be edited and registered via
+ * <code>registerNodeType(NodeTypeValue nodeTypeValue, int alreadyExistsBehaviour)</code>
+ */
+NodeTypeValue getNodeTypeValue(String ntName) throws NoSuchNodeTypeException, RepositoryException;
+
+/**
+ * Registers or updates the specified <code>Collection</code> of
+ * <code>NodeTypeValue</code> objects.
+ */
+public NodeTypeIterator registerNodeTypes(Collection<NodeTypeValue> values,
+ int alreadyExistsBehaviour) throws UnsupportedRepositoryOperationException,
+ RepositoryException;
+
+/**
+ * Unregisters the specified node type.
+ */
+public void unregisterNodeType(String name) throws UnsupportedRepositoryOperationException,
+ NoSuchNodeTypeException,
+ RepositoryException;
+
+/**
+ * Unregisters the specified set of node types.<p/> Used to unregister a set
+ * of node types with mutual dependencies.
+ */
+public void unregisterNodeTypes(String[] names) throws UnsupportedRepositoryOperationException,
+ NoSuchNodeTypeException,
+ RepositoryException;</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-NodeTypeValue">
+ <title><literal>NodeTypeValue</literal></title>
+ <para>
+ The NodeTypeValue interface represents a simple container structure used to define node types which are then registered through the ExtendedNodeTypeManager.registerNodeType method. The implementation of this interface does not contain any validation logic.
+ </para>
+
+<programlisting language="Java" role="Java">/**
+ * @return Returns the declaredSupertypeNames.
+ */
+public List<String> getDeclaredSupertypeNames();
+
+/**
+ * @param declaredSupertypeNames
+ *The declaredSupertypeNames to set.
+ */
+public void setDeclaredSupertypeNames(List<String> declaredSupertypeNames);
+
+/**
+ * @return Returns the mixin.
+ */
+public boolean isMixin();
+
+/**
+ * @param mixin
+ *The mixin to set.
+ */
+public void setMixin(boolean mixin);
+
+/**
+ * @return Returns the name.
+ */
+public String getName();
+
+/**
+ * @param name
+ *The name to set.
+ */
+public void setName(String name);
+
+/**
+ * @return Returns the orderableChild.
+ */
+public boolean isOrderableChild();
+
+/**
+ * @param orderableChild
+ *The orderableChild to set.
+ */
+public void setOrderableChild(boolean orderableChild);
+
+/**
+ * @return Returns the primaryItemName.
+ */
+public String getPrimaryItemName();
+
+/**
+ * @param primaryItemName
+ *The primaryItemName to set.
+ */
+public void setPrimaryItemName(String primaryItemName);
+
+/**
+ * @return Returns the declaredChildNodeDefinitionNames.
+ */
+public List<NodeDefinitionValue> getDeclaredChildNodeDefinitionValues();
+
+/**
+ * @param declaredChildNodeDefinitionNames
+ *The declaredChildNodeDefinitionNames to set.
+ */
+public void setDeclaredChildNodeDefinitionValues(List<NodeDefinitionValue> declaredChildNodeDefinitionValues);
+
+/**
+ * @return Returns the declaredPropertyDefinitionNames.
+ */
+public List<PropertyDefinitionValue> getDeclaredPropertyDefinitionValues();
+
+/**
+ * @param declaredPropertyDefinitionNames
+ *The declaredPropertyDefinitionNames to set.
+ */
+public void setDeclaredPropertyDefinitionValues(List<PropertyDefinitionValue> declaredPropertyDefinitionValues);</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-NodeDefinitionValue">
+ <title><literal>NodeDefinitionValue</literal></title>
+ <para>
+ The <literal>NodeDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child node definition to be set, after that the <literal>NodeDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
+ </para>
+
+<programlisting language="Java" role="Java">/**
+ * @return Returns the declaredSupertypeNames.
+ */
+public List<String> getDeclaredSupertypeNames();
+
+/**
+ * @param declaredSupertypeNames
+ *The declaredSupertypeNames to set.
+ */
+public void setDeclaredSupertypeNames(List<String> declaredSupertypeNames);
+
+/**
+ * @return Returns the mixin.
+ */
+public boolean isMixin();
+
+/**
+ * @param mixin
+ *The mixin to set.
+ */
+public void setMixin(boolean mixin);
+
+/**
+ * @return Returns the name.
+ */
+public String getName();
+
+/**
+ * @param name
+ *The name to set.
+ */
+public void setName(String name);
+
+/**
+ * @return Returns the orderableChild.
+ */
+public boolean isOrderableChild();
+
+/**
+ * @param orderableChild
+ *The orderableChild to set.
+ */
+public void setOrderableChild(boolean orderableChild);
+
+/**
+ * @return Returns the primaryItemName.
+ */
+public String getPrimaryItemName();
+
+/**
+ * @param primaryItemName
+ *The primaryItemName to set.
+ */
+public void setPrimaryItemName(String primaryItemName);
+
+/**
+ * @return Returns the declaredChildNodeDefinitionNames.
+ */
+public List<NodeDefinitionValue> getDeclaredChildNodeDefinitionValues();
+
+/**
+ * @param declaredChildNodeDefinitionNames
+ *The declaredChildNodeDefinitionNames to set.
+ */
+public void setDeclaredChildNodeDefinitionValues(List<NodeDefinitionValue> declaredChildNodeDefinitionValues);
+
+/**
+ * @return Returns the declaredPropertyDefinitionNames.
+ */
+public List<PropertyDefinitionValue> getDeclaredPropertyDefinitionValues();
+
+/**
+ * @param declaredPropertyDefinitionNames
+ *The declaredPropertyDefinitionNames to set.
+ */
+public void setDeclaredPropertyDefinitionValues(List<PropertyDefinitionValue> declaredPropertyDefinitionValues);
+
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-PropertyDefinitionValue">
+ <title><literal>PropertyDefinitionValue</literal></title>
+ <para>
+ The <literal>PropertyDefinitionValue</literal> interface extends <literal>ItemDefinitionValue</literal> with the addition of writing methods, enabling the characteristics of a child property definition to be set, after that the <literal>PropertyDefinitionValue</literal> is added to a <literal>NodeTypeValue</literal>.
+ </para>
+ <example id="exam-Reference_Guide-PropertyDefinitionValue-PropertyDefinitionValue">
+ <title><literal>PropertyDefinitionValue</literal></title>
+
+<programlisting language="Java" role="Java">/**
+ * @return Returns the defaultValues.
+ */
+public List<String> getDefaultValueStrings();
+
+/**
+ * @param defaultValues The defaultValues to set.
+ */
+public void setDefaultValueStrings(List<String> defaultValues);
+
+/**
+ * @return Returns the multiple.
+ */
+public boolean isMultiple();
+
+/**
+ * @param multiple The multiple to set.
+ */
+public void setMultiple(boolean multiple);
+
+/**
+ * @return Returns the requiredType.
+ */
+public int getRequiredType();
+
+/**
+ * @param requiredType The requiredType to set.
+ */
+public void setRequiredType(int requiredType);
+
+/**
+ * @return Returns the valueConstraints.
+ */
+public List<String> getValueConstraints();
+
+/**
+ * @param valueConstraints The valueConstraints to set.
+ */
+public void setValueConstraints(List<String> valueConstraints);</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-PropertyDefinitionValue-ItemDefinitionValue">
+ <title><literal>ItemDefinitionValue</literal></title>
+
+<programlisting language="Java" role="Java"> /**
+ * @return Returns the autoCreate.
+ */
+public boolean isAutoCreate();
+
+/**
+ * @param autoCreate The autoCreate to set.
+ */
+public void setAutoCreate(boolean autoCreate);
+
+/**
+ * @return Returns the mandatory.
+ */
+public boolean isMandatory();
+
+/**
+ * @param mandatory The mandatory to set.
+ */
+public void setMandatory(boolean mandatory);
+
+/**
+ * @return Returns the name.
+ */
+public String getName();
+
+/**
+ * @param name The name to set.
+ */
+public void setName(String name);
+
+/**
+ * @return Returns the onVersion.
+ */
+public int getOnVersion();
+
+/**
+ * @param onVersion The onVersion to set.
+ */
+public void setOnVersion(int onVersion);
+
+/**
+ * @return Returns the readOnly.
+ */
+public boolean isReadOnly();
+
+/**
+ * @param readOnly The readOnly to set.
+ */
+public void setReadOnly(boolean readOnly);</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Node_type_registration">
+ <title>Node type registration</title>
+ <para>
+ The eXo JCR implementation supports various methods of the node-type registration.
+ </para>
+ <example id="exam-Reference_Guide-Node_type_registration-Runtime_Registration_From_XML_File">
+ <title>Runtime Registration From XML File</title>
+
+<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
+ .getNodeTypeManager();
+InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
+nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.IGNORE_IF_EXISTS );</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Node_type_registration-Run_time_registration_using_NodeTypeValue">
+ <title>Run time registration using NodeTypeValue</title>
+
+<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
+ .getNodeTypeManager();
+NodeTypeValue testNValue = new NodeTypeValue();
+
+List<String> superType = new ArrayList<String>();
+superType.add("nt:base");
+testNValue.setName("exo:myNodeType");
+testNValue.setPrimaryItemName("");
+testNValue.setDeclaredSupertypeNames(superType);
+List<PropertyDefinitionValue> props = new ArrayList<PropertyDefinitionValue>();
+props.add(new PropertyDefinitionValue("*",
+ false,
+ false,
+ 1,
+ false,
+ new ArrayList<String>(),
+ false,
+ 0,
+ new ArrayList<String>()));
+testNValue.setDeclaredPropertyDefinitionValues(props);
+
+nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.FAIL_IF_EXISTS);</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Changing_Existing_Node_Type">
+ <title>Changing Existing Node Type</title>
+ <para>
+ To replace an existing node type definition pass <literal>ExtendedNodeTypeManager.REPLACE_IF_EXISTS</literal> as a second parameter for the method <literal>ExtendedNodeTypeManager.registerNodeType</literal>.
+ </para>
+
+<programlisting language="Java" role="Java">ExtendedNodeTypeManager nodeTypeManager = (ExtendedNodeTypeManager) session.getWorkspace()
+ .getNodeTypeManager();
+InputStream is = MyClass.class.getResourceAsStream("mynodetypes.xml");
+.....
+nodeTypeManager.registerNodeTypes(is,ExtendedNodeTypeManager.REPLACE_IF_EXISTS );</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Removing_node_type">
+ <title>Removing node type</title>
+ <para>
+ A node type cannot be removed if the repository contains an instance of that node type.
+ </para>
+
+<programlisting language="Java" role="Java">nodeTypeManager.unregisterNodeType(<literal>myNodeType</literal>);</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Adding_New_PropertyDefinition">
+ <title>Adding New <literal>PropertyDefinition</literal></title>
+ <para>
+ Use the code below to add a new <literal>PropertyDefinition</literal>:
+ </para>
+<programlisting language="Java" role="Java">
+NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
+List<PropertyDefinitionValue> props = new ArrayList<PropertyDefinitionValue>();
+props.add(new PropertyDefinitionValue("tt",
+ true,
+ true,
+ 1,
+ false,
+ new ArrayList<String>(),
+ false,
+ PropertyType.STRING,
+ new ArrayList<String>()));
+myNodeTypeValue.setDeclaredPropertyDefinitionValues(props);
+
+nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Adding_New_Child_NodeDefinition">
+ <title>Adding New Child <literal>NodeDefinition</literal></title>
+ <para>
+ Use the code below to add a new child <literal>NodeDefinition</literal>.
+ </para>
+
+<programlisting language="Java" role="Java">NodeTypeValue myNodeTypeValue = nodeTypeManager.getNodeTypeValue(myNodeTypeName);
+
+List<NodeDefinitionValue> nodes = new ArrayList<NodeDefinitionValue>();
+nodes.add(new NodeDefinitionValue("child",
+ false,
+ false,
+ 1,
+ false,
+ "nt:base",
+ new ArrayList<String>(),
+ false));
+testNValue.setDeclaredChildNodeDefinitionValues(nodes);
+
+nodeTypeManager.registerNodeType(myNodeTypeValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Edit_Existing_PropertyDefinition_or_Child_NodeDefinition">
+ <title>Edit Existing <literal>PropertyDefinition</literal> or Child <literal>NodeDefinition</literal></title>
+ <para>
+ Note that the existing data must be consistent before changing or removing a existing definition.
+ </para>
+ <para>
+ The JCR does not allow you to change the node type in any way in which the existing data would be incompatible with the new node type.
+ </para>
+ <para>
+ But if these changes are necessary, an incremental process (which consistently changes the node type and the existing data) can achieve node type changes that would not be possible in a direct call.
+ </para>
+ <para>
+ For example: If you wanted to add a new residual property definition called <literal>downloadCount</literal> to the existing node type <literal>myNodeType</literal>, you would encounter two limitations that would not allow you to execute the task with a single call of registerNodeType method.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Existing nodes of the type <literal>myNodeType</literal>, which does not contain properties <literal>downloadCount</literal> that conflicts with node type what we need.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Registered node type <literal>myNodeType</literal> will not allow us to add properties <literal>downloadCount</literal> because it has no such specific properties.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <para>
+ The task could be executed, however, with the following steps:
+ </para>
+ <procedure>
+ <title></title>
+ <step>
+ <para>
+ Change the existing node type <literal>myNodeType</literal> by adding the mandatory property <literal>downloadCount</literal>.
+ </para>
+
+ </step>
+ <step>
+ <para>
+ Add the node type <literal>myNodeType</literal> with the property <literal>downloadCount</literal> to all the existing node types.
+ </para>
+
+ </step>
+ <step>
+ <para>
+ Change the definition of the property <literal>downloadCount</literal> of the node type <literal>myNodeType</literal> to mandatory.
+ </para>
+
+ </step>
+
+ </procedure>
+
+
+ </section>
+
+ <section id="sect-Reference_Guide-Interfaces_and_methods-Changing_The_List_of_Super_Types">
+ <title>Changing The List of Super Types</title>
+ <para>
+ Use the following code to change the list of super types:
+ </para>
+
+<programlisting language="Java" role="Java">NodeTypeValue testNValue = nodeTypeManager.getNodeTypeValue("exo:myNodeType");
+
+List<String> superType = testNValue.getDeclaredSupertypeNames();
+superType.add("mix:versionable");
+testNValue.setDeclaredSupertypeNames(superType);
+
+nodeTypeManager.registerNodeType(testNValue, ExtendedNodeTypeManager.REPLACE_IF_EXISTS);</programlisting>
+
+ </section>
+
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,150 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Node_Types_and_Namespaces">
- <title>Node Types and Namespaces</title>
- <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Introduction">
- <title>Introduction</title>
- <para>
- The JSR-170 specification requires support of node types and namespaces. Beyond the methods required by the specification, the eXo JCR has its own API extension for NodeType registration as well as the ability to declaratively define node types in the Repository at the start-up time.
- </para>
-
- </section>
-
- <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Node_Types_Definition">
- <title>Node Types Definition</title>
- <para>
- Node type registration extension is declared in <literal>org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager</literal> interface
- </para>
- <para>
- Your custom service can register some necessary predefined node types at start up. The node definition should be placed in a special XML file (refer to the DTD below for more information) and declared in the service's configuration file via the eXo component plugin mechanism, described as follows:
- </para>
-
-<programlisting language="XML" role="XML"><external-component-plugins>
- <target-component>org.exoplatform.services.jcr.RepositoryService</target-component>
- <component-plugin>
- <name>add.nodeType</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
- <init-params>
- <values-param>
- <name>autoCreatedInNewRepository</name>
- <description>Node types configuration file</description>
- <value>jar:/conf/test/nodetypes-tck.xml</value>
- <value>jar:/conf/test/nodetypes-impl.xml</value>
- </values-param>
- <values-param>
- <name>repo1</name>
- <description>Node types configuration file for repository with name repo1</description>
- <value>jar:/conf/test/nodetypes-test.xml</value>
- </values-param>
- <values-param>
- <name>repo2</name>
- <description>Node types configuration file for repository with name repo2</description>
- <value>jar:/conf/test/nodetypes-test2.xml</value>
- </values-param>
- </init-params>
- </component-plugin></programlisting>
- <para>
- There are two types of registration:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Registration of node types in all created repositories, it is configured in values-param with the name <emphasis role="bold">autoCreatedInNewRepository</emphasis>.
- </para>
-
- </listitem>
- <listitem>
- <para>
- Registration of node types in specified repository and it is configured in values-param with the name of repository.
- </para>
-
- </listitem>
-
- </itemizedlist>
- <para>
- Node type definition file format:
- </para>
-
-<programlisting language="XML" role="XML"> <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE nodeTypes [
- <!ELEMENT nodeTypes (nodeType)*>
- <!ELEMENT nodeType (supertypes?|propertyDefinitions?|childNodeDefinitions?)>
-
- <!ATTLIST nodeType
- name CDATA #REQUIRED
- isMixin (true|false) #REQUIRED
- hasOrderableChildNodes (true|false)
- primaryItemName CDATA
- >
- <!ELEMENT supertypes (supertype*)>
- <!ELEMENT supertype (CDATA)>
-
- <!ELEMENT propertyDefinitions (propertyDefinition*)>
-
- <!ELEMENT propertyDefinition (valueConstraints?|defaultValues?)>
- <!ATTLIST propertyDefinition
- name CDATA #REQUIRED
- requiredType (String|Date|Path|Name|Reference|Binary|Double|Long|Boolean|undefined) #REQUIRED
- autoCreated (true|false) #REQUIRED
- mandatory (true|false) #REQUIRED
- onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
- protected (true|false) #REQUIRED
- multiple (true|false) #REQUIRED
- >
- <!-- For example if you need to set ValueConstraints [],
- you have to add an empty element <valueConstraints/>.
- The same order is for other properties like defaultValues, requiredPrimaryTypes etc.
- -->
- <!ELEMENT valueConstraints (valueConstraint*)>
- <!ELEMENT valueConstraint (CDATA)>
- <!ELEMENT defaultValues (defaultValue*)>
- <!ELEMENT defaultValue (CDATA)>
-
- <!ELEMENT childNodeDefinitions (childNodeDefinition*)>
-
- <!ELEMENT childNodeDefinition (requiredPrimaryTypes)>
- <!ATTLIST childNodeDefinition
- name CDATA #REQUIRED
- defaultPrimaryType CDATA #REQUIRED
- autoCreated (true|false) #REQUIRED
- mandatory (true|false) #REQUIRED
- onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
- protected (true|false) #REQUIRED
- sameNameSiblings (true|false) #REQUIRED
- >
- <!ELEMENT requiredPrimaryTypes (requiredPrimaryType+)>
- <!ELEMENT requiredPrimaryType (CDATA)>
-]></programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Namespaces_Definition">
- <title>Namespaces Definition</title>
- <para>
- Default namespaces are registered by repository at start up.
- </para>
- <para>
- Your custom service can extend a set of namespaces with some application specific ones, declaring it in service's configuration file thanks to eXo component plugin mechanism, described as follows:
- </para>
-
-<programlisting language="XML" role="XML"> <component-plugin>
- <name>add.namespaces</name>
- <set-method>addPlugin</set-method>
- <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
- <init-params>
- <properties-param>
- <name>namespaces</name>
- <property name="test" value="http://www.test.org/test"/>
- </properties-param>
- </init-params>
- </component-plugin></programlisting>
-
- </section>
-
-
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,150 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Node_Types_and_Namespaces">
+ <title>Node Types and Namespaces</title>
+ <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Introduction">
+ <title>Introduction</title>
+ <para>
+ The JSR-170 specification requires support of node types and namespaces. Beyond the methods required by the specification, the eXo JCR has its own API extension for NodeType registration as well as the ability to declaratively define node types in the Repository at the start-up time.
+ </para>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Node_Types_Definition">
+ <title>Node Types Definition</title>
+ <para>
+ Node type registration extension is declared in <literal>org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager</literal> interface
+ </para>
+ <para>
+ Your custom service can register some necessary predefined node types at start up. The node definition should be placed in a special XML file (refer to the DTD below for more information) and declared in the service's configuration file via the eXo component plugin mechanism, described as follows:
+ </para>
+
+<programlisting language="XML" role="XML"><external-component-plugins>
+ <target-component>org.exoplatform.services.jcr.RepositoryService</target-component>
+ <component-plugin>
+ <name>add.nodeType</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNodeTypePlugin</type>
+ <init-params>
+ <values-param>
+ <name>autoCreatedInNewRepository</name>
+ <description>Node types configuration file</description>
+ <value>jar:/conf/test/nodetypes-tck.xml</value>
+ <value>jar:/conf/test/nodetypes-impl.xml</value>
+ </values-param>
+ <values-param>
+ <name>repo1</name>
+ <description>Node types configuration file for repository with name repo1</description>
+ <value>jar:/conf/test/nodetypes-test.xml</value>
+ </values-param>
+ <values-param>
+ <name>repo2</name>
+ <description>Node types configuration file for repository with name repo2</description>
+ <value>jar:/conf/test/nodetypes-test2.xml</value>
+ </values-param>
+ </init-params>
+ </component-plugin></programlisting>
+ <para>
+ There are two types of registration:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Registration of node types in all created repositories, it is configured in values-param with the name <emphasis role="bold">autoCreatedInNewRepository</emphasis>.
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Registration of node types in specified repository and it is configured in values-param with the name of repository.
+ </para>
+
+ </listitem>
+
+ </itemizedlist>
+ <para>
+ Node type definition file format:
+ </para>
+
+<programlisting language="XML" role="XML"> <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE nodeTypes [
+ <!ELEMENT nodeTypes (nodeType)*>
+ <!ELEMENT nodeType (supertypes?|propertyDefinitions?|childNodeDefinitions?)>
+
+ <!ATTLIST nodeType
+ name CDATA #REQUIRED
+ isMixin (true|false) #REQUIRED
+ hasOrderableChildNodes (true|false)
+ primaryItemName CDATA
+ >
+ <!ELEMENT supertypes (supertype*)>
+ <!ELEMENT supertype (CDATA)>
+
+ <!ELEMENT propertyDefinitions (propertyDefinition*)>
+
+ <!ELEMENT propertyDefinition (valueConstraints?|defaultValues?)>
+ <!ATTLIST propertyDefinition
+ name CDATA #REQUIRED
+ requiredType (String|Date|Path|Name|Reference|Binary|Double|Long|Boolean|undefined) #REQUIRED
+ autoCreated (true|false) #REQUIRED
+ mandatory (true|false) #REQUIRED
+ onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
+ protected (true|false) #REQUIRED
+ multiple (true|false) #REQUIRED
+ >
+ <!-- For example if you need to set ValueConstraints [],
+ you have to add an empty element <valueConstraints/>.
+ The same order is for other properties like defaultValues, requiredPrimaryTypes etc.
+ -->
+ <!ELEMENT valueConstraints (valueConstraint*)>
+ <!ELEMENT valueConstraint (CDATA)>
+ <!ELEMENT defaultValues (defaultValue*)>
+ <!ELEMENT defaultValue (CDATA)>
+
+ <!ELEMENT childNodeDefinitions (childNodeDefinition*)>
+
+ <!ELEMENT childNodeDefinition (requiredPrimaryTypes)>
+ <!ATTLIST childNodeDefinition
+ name CDATA #REQUIRED
+ defaultPrimaryType CDATA #REQUIRED
+ autoCreated (true|false) #REQUIRED
+ mandatory (true|false) #REQUIRED
+ onParentVersion (COPY|VERSION|INITIALIZE|COMPUTE|IGNORE|ABORT) #REQUIRED
+ protected (true|false) #REQUIRED
+ sameNameSiblings (true|false) #REQUIRED
+ >
+ <!ELEMENT requiredPrimaryTypes (requiredPrimaryType+)>
+ <!ELEMENT requiredPrimaryType (CDATA)>
+]></programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Node_Types_and_Namespaces-Namespaces_Definition">
+ <title>Namespaces Definition</title>
+ <para>
+ Default namespaces are registered by repository at start up.
+ </para>
+ <para>
+ Your custom service can extend a set of namespaces with some application specific ones, declaring it in service's configuration file thanks to eXo component plugin mechanism, described as follows:
+ </para>
+
+<programlisting language="XML" role="XML"> <component-plugin>
+ <name>add.namespaces</name>
+ <set-method>addPlugin</set-method>
+ <type>org.exoplatform.services.jcr.impl.AddNamespacesPlugin</type>
+ <init-params>
+ <properties-param>
+ <name>namespaces</name>
+ <property name="test" value="http://www.test.org/test"/>
+ </properties-param>
+ </init-params>
+ </component-plugin></programlisting>
+
+ </section>
+
+
+</chapter>
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,27 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="chap-Reference_Guide-Java_Content_Repository">
- <title>Java Content Repository</title>
- <para>
- A Java Content Repository (<abbrev>JCR</abbrev>) is a java interface used to access contents that are not only web contents, but also other hierarchically stored data. The content is stored in a repository. The repository can be a file system, a relational database or an XML document. The internal structure of JCR data looks similar to an XML document; a document tree with nodes and data, however, in a JCR, the data is stored in <literal>property items</literal>.
- </para>
- <para>
- The JCR specification states: "<emphasis>A content repository is a high-level information management system that is a superset of traditional data repositories</emphasis>."
- </para>
- <para>
- A JCR provides a unique java interface for interacting with both text and binary data and for managing any kind and amount of metadata. A JCR supplies methods for storing, updating, deleting and retrieving your data, independent of where the data is physically stored (such as an RDBMS, a file system or as an XML document). The JCR interface is also defined as classes and methods for searching, versioning, access control, locking, and observation.
- </para>
- <para>
- Furthermore, an export and import functionality is specified.
- </para>
- <para>
- In order to further understand the theory of JCR and the API, please refer to some external documents about this standard:
- </para>
- <para>
- Roy T. Fielding, <ulink url="http://www.day.com/content/dam/day/whitepapers/JSR_170_White_Paper.pdf">JSR 170 Overview: Standardizing the Content Repository Interface</ulink> (March 13, 2005)
- </para>
-</chapter>
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/concepts/why-jcr.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="chap-Reference_Guide-Java_Content_Repository">
+ <title>Java Content Repository</title>
+ <para>
+ A Java Content Repository (<abbrev>JCR</abbrev>) is a java interface used to access contents that are not only web contents, but also other hierarchically stored data. The content is stored in a repository. The repository can be a file system, a relational database or an XML document. The internal structure of JCR data looks similar to an XML document; a document tree with nodes and data, however, in a JCR, the data is stored in <literal>property items</literal>.
+ </para>
+ <para>
+ The JCR specification states: "<emphasis>A content repository is a high-level information management system that is a superset of traditional data repositories</emphasis>."
+ </para>
+ <para>
+ A JCR provides a unique java interface for interacting with both text and binary data and for managing any kind and amount of metadata. A JCR supplies methods for storing, updating, deleting and retrieving your data, independent of where the data is physically stored (such as an RDBMS, a file system or as an XML document). The JCR interface is also defined as classes and methods for searching, versioning, access control, locking, and observation.
+ </para>
+ <para>
+ Furthermore, an export and import functionality is specified.
+ </para>
+ <para>
+ In order to further understand the theory of JCR and the API, please refer to some external documents about this standard:
+ </para>
+ <para>
+ Roy T. Fielding, <ulink url="http://www.day.com/content/dam/day/whitepapers/JSR_170_White_Paper.pdf">JSR 170 Overview: Standardizing the Content Repository Interface</ulink> (March 13, 2005)
+ </para>
+</chapter>
+
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/exo-jcr-configuration.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -321,38 +321,93 @@
<section id="sect-Reference_Guide-Portal_configuration-Workspace_configuration">
<title>Workspace configuration:</title>
- <para>
- <emphasis>name</emphasis>: The name of a workspace
- </para>
- <para>
- <emphasis>auto-init-root-nodetype</emphasis>: DEPRECATED in JCR 1.9 (use initializer). The node type for root node initialization.
- </para>
- <para>
- <emphasis>container</emphasis>: Workspace data container (physical storage) configuration.
- </para>
- <para>
- <emphasis>initializer</emphasis>: Workspace initializer configuration.
- </para>
- <para>
- <emphasis>cache</emphasis>: Workspace storage cache configuration.
- </para>
- <para>
- <emphasis>query-handler</emphasis>: Query handler configuration.
- </para>
- <para>
- <emphasis>auto-init-permissions</emphasis>: DEPRECATED in JCR 1.9 (use initializer). Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities (user, group, etc, see Organization service documentation for details) and the type of permission. For example, any read; <emphasis>:/admin read;</emphasis>:/admin add_node; <emphasis>:/admin set_property;</emphasis>:/admin remove means that users from group <emphasis>admin</emphasis> have all permissions and other users have only a 'read' permission.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>name</term>
+ <listitem>
+ <para>
+ The name of a workspace.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>auto-init-root-nodetype</term>
+ <listitem>
+ <para>
+ DEPRECATED in JCR 1.9 (use initializer). The node type for root node initialization.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>container</term>
+ <listitem>
+ <para>
+ Workspace data container (physical storage) configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>initializer</term>
+ <listitem>
+ <para>
+ Workspace initializer configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>cache</term>
+ <listitem>
+ <para>
+ Workspace storage cache configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>query-handler</term>
+ <listitem>
+ <para>
+ Query handler configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>auto-init-permissions</term>
+ <listitem>
+ <para>
+ DEPRECATED in JCR 1.9 (use initializer). Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities and the type of permission.
+ </para>
+ <para>
+ For example, any read; <literal>:/admin read;</literal>:/admin add_node; <literal>:/admin set_property;</literal>:/admin remove means that users from group <literal>admin</literal> have all permissions and other users have only a 'read' permission.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
<section id="sect-Reference_Guide-Portal_configuration-Workspace_data_container_configuration">
<title>Workspace data container configuration:</title>
- <para>
- <emphasis>class:</emphasis> A workspace data container class name.
- </para>
- <para>
- <emphasis>properties</emphasis>: The list of properties (name-value pairs) for the concrete Workspace data container.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ A workspace data container class name.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs) for the concrete Workspace data container.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
<table id="tabl-Reference_Guide-Workspace_data_container_configuration-Parameter_Descriptions">
<title>Parameter Descriptions</title>
<tgroup cols="2">
@@ -417,9 +472,17 @@
</para>
</note>
- <para>
- <emphasis>value-storages</emphasis>: The list of value storage plugins.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>value-storage</term>
+ <listitem>
+ <para>
+ The list of value storage plugins.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
@@ -429,125 +492,252 @@
<para>
The value-storage element is optional. If you don't include it, the values will be stored as BLOBs inside the database.
</para>
-
</note>
- <para>
- <emphasis>value-storage</emphasis>: Optional value Storage plugin definition.
- </para>
- <para>
- <emphasis>class</emphasis>: A value storage plugin class name (attribute).
- </para>
- <para>
- <emphasis>properties</emphasis>: The list of properties (name-value pairs) for a concrete Value Storage plugin.
- </para>
- <para>
- <emphasis>filters</emphasis>: The list of filters defining conditions when this plugin is applicable.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>value-storage</term>
+ <listitem>
+ <para>
+ Optional value Storage plugin definition.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ A value storage plugin class name (attribute).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs) for a concrete Value Storage plugin.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>filters</term>
+ <listitem>
+ <para>
+ The list of filters defining conditions when this plugin is applicable.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
<section id="sect-Reference_Guide-Portal_configuration-Initializer_configuration_optional">
<title>Initializer configuration (optional):</title>
- <para>
- <emphasis>class</emphasis>: Initializer implementation class.
- </para>
- <para>
- <emphasis>properties</emphasis>: The list of properties (name-value pairs). Properties are supported.
- </para>
- <para>
- <emphasis>root-nodetype</emphasis>: The node type for root node initialization.
- </para>
- <para>
- <emphasis>root-permissions</emphasis>: Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities (user, group etc, see Organization service documentation for details) and the type of permission. For example any read; <emphasis role="bold">:/admin read;</emphasis>:/admin add_node; <emphasis role="bold">:/admin set_property;</emphasis>:/admin remove means that users from group <emphasis>admin</emphasis> have all permissions and other users have only a 'read' permission.
- </para>
- <para>
- Configurable initializer adds a capability to override workspace initial startup procedure (used for Clustering). Also it replaces workspace element parameters auto-init-root-nodetype and auto-init-permissions with root-nodetype and root-permissions.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ Initializer implementation class.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs). Properties are supported.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>root-nodetype</term>
+ <listitem>
+ <para>
+ The node type for root node initialization.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>root-permissions</term>
+ <listitem>
+ <para>
+ Default permissions of the root node. It is defined as a set of semicolon-delimited permissions containing a group of space-delimited identities (user, group etc, see Organization service documentation for details) and the type of permission. For example any read; <emphasis role="bold">:/admin read;</emphasis>:/admin add_node; <emphasis role="bold">:/admin set_property;</emphasis>:/admin remove means that users from group <emphasis>admin</emphasis> have all permissions and other users have only a 'read' permission.
+ </para>
+ <para>
+ Configurable initializer adds a capability to override workspace initial startup procedure (used for Clustering). Also it replaces workspace element parameters auto-init-root-nodetype and auto-init-permissions with root-nodetype and root-permissions.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
<section id="sect-Reference_Guide-Portal_configuration-Cache_configuration">
<title>Cache configuration:</title>
- <para>
- <emphasis>enabled</emphasis>: If workspace cache is enabled or not.
- </para>
- <para>
- <emphasis>class</emphasis>: Cache implementation class, optional from 1.9. Default value is. org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl.
- </para>
- <para>
- Cache can be configured to use concrete implementation of WorkspaceStorageCache interface. JCR core has two implementation to use:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- LinkedWorkspaceStorageCacheImpl - default, with configurable read behavior and statistic.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>enabled</term>
+ <listitem>
+ <para>
+ If workspace cache is enabled or not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ Cache implementation class, optional from 1.9. Default value is. <literal>org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl</literal>.
+ </para>
+ <para>
+ Cache can be configured to use concrete implementation of WorkspaceStorageCache interface. JCR core has two implementation to use:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ LinkedWorkspaceStorageCacheImpl - default, with configurable read behavior and statistic.
+ </para>
- </listitem>
- <listitem>
- <para>
- WorkspaceStorageCacheImpl - pre 1.9, still can be used.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ WorkspaceStorageCacheImpl - pre 1.9, still can be used.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs) for Workspace cache.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>max-size</term>
+ <listitem>
+ <para>
+ Cache maximum size (maxSize prior to v.1.9).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>live-time</term>
+ <listitem>
+ <para>
+ Cached item live time (liveTime prior to v.1.9).
+ </para>
+ <para>
+ From 1.9 <literal>LinkedWorkspaceStorageCacheImpl</literal> supports additional optional parameters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-period</term>
+ <listitem>
+ <para>
+ Period (time format) of cache statistic thread execution, 5 minutes by default.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-log</term>
+ <listitem>
+ <para>
+ If true cache statistic will be printed to default logger (log.info), false by default or not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>statistic-clean</term>
+ <listitem>
+ <para>
+ If true cache statistic will be cleaned after was gathered, false by default or not.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>cleaner-period</term>
+ <listitem>
+ <para>
+ Period of the eldest items remover execution, 20 minutes by default.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>blocking-users-count</term>
+ <listitem>
+ <para>
+ Number of concurrent users allowed to read cache storage, 0 - unlimited by default.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
- </listitem>
-
- </itemizedlist>
- <para>
- <emphasis>properties</emphasis>: The list of properties (name-value pairs) for Workspace cache.
- </para>
- <para>
- <emphasis>max-size</emphasis>: Cache maximum size (maxSize prior to v.1.9).
- </para>
- <para>
- <emphasis>live-time</emphasis>: Cached item live time (liveTime prior to v.1.9).
- </para>
- <para>
- From 1.9 LinkedWorkspaceStorageCacheImpl supports additional optional parameters.
- </para>
- <para>
- <emphasis>statistic-period</emphasis>: Period (time format) of cache statistic thread execution, 5 minutes by default.
- </para>
- <para>
- <emphasis>statistic-log</emphasis>: If true cache statistic will be printed to default logger (log.info), false by default or not.
- </para>
- <para>
- <emphasis>statistic-clean</emphasis>: If true cache statistic will be cleaned after was gathered, false by default or not.
- </para>
- <para>
- <emphasis>cleaner-period</emphasis>: Period of the eldest items remover execution, 20 minutes by default.
- </para>
- <para>
- <emphasis>blocking-users-count</emphasis>: Number of concurrent users allowed to read cache storage, 0 - unlimited by default.
- </para>
-
</section>
<section id="sect-Reference_Guide-Portal_configuration-Query_Handler_configuration">
<title>Query Handler configuration:</title>
- <para>
- <emphasis>class</emphasis>: A Query Handler class name.
- </para>
- <para>
- <emphasis>properties</emphasis>: The list of properties (name-value pairs) for a Query Handler (indexDir).
- </para>
- <para>
- Properties and advanced features described in Search Configuration.
- </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>class</term>
+ <listitem>
+ <para>
+ A Query Handler class name.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>properties</term>
+ <listitem>
+ <para>
+ The list of properties (name-value pairs) for a Query Handler (indexDir).
+ </para>
+ <para>
+ Properties and advanced features described in Search Configuration.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</section>
<section id="sect-Reference_Guide-Portal_configuration-Lock_Manager_configuration">
<title>Lock Manager configuration:</title>
- <para>
- <emphasis>time-out</emphasis>: Time after which the unused global lock will be removed.
- </para>
- <para>
- <emphasis>persister</emphasis>: A class for storing lock information for future use. For example, remove lock after jcr restart.
- </para>
- <para>
- <emphasis>path</emphasis>: A lock folder. Each workspace has its own one.
- </para>
-
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>time-out</term>
+ <listitem>
+ <para>
+ Time after which the unused global lock will be removed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>persister</term>
+ <listitem>
+ <para>
+ A class for storing lock information for future use. For example, remove lock after jcr restart.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>path</term>
+ <listitem>
+ <para>
+ A lock folder. Each workspace has its own one.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
<programlisting language="XML" role="XML"><!ELEMENT repository-service (repositories)>
<!ATTLIST repository-service default-repository NMTOKEN #REQUIRED>
<!ELEMENT repositories (repository)>
@@ -591,7 +781,7 @@
</section>
- <section id="sect-Reference_Guide-Portal_configuration-Help_application_to_prohibit_the_use_of_closed_sessions">
+<!-- <section id="sect-Reference_Guide-Portal_configuration-Help_application_to_prohibit_the_use_of_closed_sessions">
<title>Help application to prohibit the use of closed sessions</title>
<para>
Products that use eXo JCR, sometimes misuse it since they continue to use a session that has been closed through a method call on a node, a property or even the session itself. To prevent bad practices we propose three modes which are the following:
@@ -618,7 +808,7 @@
</orderedlist>
- </section>
+ </section> -->
</section>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/configuration/multilanguage-support.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,70 +4,70 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-Multi_language_Support_the_JCR_RDB">
- <title>Multi-language Support the JCR RDB</title>
- <para>
- Whenever a relational database is used to store multilingual text data in the eXo Java Content Repository the configuration must be adapted to support UTF-8 encoding. Dialect is automatically detected for certified database. You can still enforce it in case of failure, see below.
- </para>
- <para>
- The following sections describe enabling UTF-8 support with various databases.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle" />
- </para>
+ <title>Multi-language Support</title>
+ <para>
+ Whenever a relational database is used to store multilingual text data in the eXo Java Content Repository the configuration must be adapted to support UTF-8 encoding. Dialect is automatically detected for certified database. You can still enforce it in case of failure, see below.
+ </para>
+ <para>
+ The following sections describe enabling UTF-8 support with various databases.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL" />
+ </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL" />
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL" />
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
- <note>
- <itemizedlist>
- <listitem>
- <para>
- The configuration file to be modified for these changes is <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
- </para>
+ </itemizedlist>
+ <note>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The configuration file to be modified for these changes is <filename><replaceable>JBOSS_HOME</replaceable>/server/<replaceable><PROFILE></replaceable>/deploy/gatein.ear/02portal.war/WEB-INF/conf/jcr/repository-configuration.xml</filename>.
+ </para>
- </listitem>
- <listitem>
- <para>
- The datasource <parameter>jdbcjcr</parameter> used in the following examples can be configured via the <literal>InitialContextInitializer</literal> component.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The datasource <parameter>jdbcjcr</parameter> used in the following examples can be configured via the <literal>InitialContextInitializer</literal> component.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </note>
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle">
- <title>Oracle</title>
- <para>
- In order to run multilanguage JCR on an Oracle backend Unicode encoding for characters set should be applied to the database. Other Oracle globalization parameters do not have any effect. The property to modify is <literal>NLS_CHARACTERSET</literal>.
- </para>
- <para>
- The <literal>NLS_CHARACTERSET = AL32UTF8</literal> entry has been successfully tested with many European and Asian languages.
- </para>
- <para>
- Example of database configuration:
- </para>
-
+ </note>
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-Oracle">
+ <title>Oracle</title>
+ <para>
+ In order to run multilanguage JCR on an Oracle backend Unicode encoding for characters set should be applied to the database. Other Oracle globalization parameters do not have any effect. The property to modify is <literal>NLS_CHARACTERSET</literal>.
+ </para>
+ <para>
+ The <literal>NLS_CHARACTERSET = AL32UTF8</literal> entry has been successfully tested with many European and Asian languages.
+ </para>
+ <para>
+ Example of database configuration:
+ </para>
+
<programlisting>NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
@@ -87,100 +87,100 @@
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16</programlisting>
- <!-- <warning>
+ <!-- <warning>
<para>
JCR 1.12.x doesn't use NVARCHAR columns, so that the value of the parameter NLS_NCHAR_CHARACTERSET does not matter for JCR.
</para>
</warning> --> <para>
- Create database with Unicode encoding and use Oracle dialect for the Workspace Container:
- </para>
-
+ Create database with Unicode encoding and use Oracle dialect for the Workspace Container:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default54.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2">
- <title>DB2</title>
- <para>
- DB2 Universal Database (DB2 UDB) supports <ulink url="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.i...">UTF-8 and UTF-16/UCS-2</ulink>. When a Unicode database is created, <parameter>CHAR</parameter>, <parameter>VARCHAR</parameter> and <parameter>LONG VARCHAR</parameter> data are stored in UTF-8 form.
- </para>
- <para>
- This enables JCR multi-lingual support.
- </para>
- <para>
- Below is an example of creating a UTF-8 database using the <parameter>db2</parameter> dialect for a workspace container with DB2 version 9 and higher:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-DB2">
+ <title>DB2</title>
+ <para>
+ DB2 Universal Database (DB2 UDB) supports <ulink url="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.i...">UTF-8 and UTF-16/UCS-2</ulink>. When a Unicode database is created, <parameter>CHAR</parameter>, <parameter>VARCHAR</parameter> and <parameter>LONG VARCHAR</parameter> data are stored in UTF-8 form.
+ </para>
+ <para>
+ This enables JCR multi-lingual support.
+ </para>
+ <para>
+ Below is an example of creating a UTF-8 database using the <parameter>db2</parameter> dialect for a workspace container with DB2 version 9 and higher:
+ </para>
+
<programlisting>DB2 CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY US
</programlisting>
-
+
<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default56.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- <note>
- <para>
- For DB2 version 8.<replaceable>x</replaceable> support change the property "dialect" to db2v8.
- </para>
+ <note>
+ <para>
+ For DB2 version 8.<replaceable>x</replaceable> support change the property "dialect" to db2v8.
+ </para>
- </note>
+ </note>
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL">
- <title>MySQL</title>
- <para>
- Using JCR with a MySQL-back end requires a special dialect <ulink url="http://jira.exoplatform.org/browse/JCR-375">MySQL-UTF8</ulink> to be used for internationalization support.
- </para>
- <para>
- The database default charset should be <parameter>latin1</parameter> so as to use limited index space effectively (1000 bytes for an <literal>MyISAM</literal> engine and 767 for <literal>InnoDB</literal>).
- </para>
- <para>
- If the database default charset is multibyte, a JCR database initialization error is encountered concerning index creation failure.
- </para>
- <para>
- JCR can work on any single byte default charset of database, with UTF8 supported by MySQL server. However it has only been tested using the <parameter>latin1</parameter> charset.
- </para>
- <para>
- An example entry:
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-MySQL">
+ <title>MySQL</title>
+ <para>
+ Using JCR with a MySQL-back end requires a special dialect <ulink url="http://jira.exoplatform.org/browse/JCR-375">MySQL-UTF8</ulink> to be used for internationalization support.
+ </para>
+ <para>
+ The database default charset should be <parameter>latin1</parameter> so as to use limited index space effectively (1000 bytes for an <literal>MyISAM</literal> engine and 767 for <literal>InnoDB</literal>).
+ </para>
+ <para>
+ If the database default charset is multibyte, a JCR database initialization error is encountered concerning index creation failure.
+ </para>
+ <para>
+ JCR can work on any single byte default charset of database, with UTF8 supported by MySQL server. However it has only been tested using the <parameter>latin1</parameter> charset.
+ </para>
+ <para>
+ An example entry:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default57.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL">
- <title>PostgreSQL</title>
- <para>
- Multilingual support can be enabled with a PostgreSQL-back end in <ulink url="http://www.postgresql.org/docs/8.3/interactive/charset.html">different ways</ulink>:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Using the locale features of the operating system to provide locale-specific collation order, number formatting, translated messages, and other aspects.
- </para>
- <para>
- UTF-8 is widely used on Linux distributions by default, so it can be useful in such cases.
- </para>
+ </section>
+
+ <section id="sect-Reference_Guide-Multi_language_Support_the_JCR_RDB-PostgreSQL">
+ <title>PostgreSQL</title>
+ <para>
+ Multilingual support can be enabled with a PostgreSQL-back end in <ulink url="http://www.postgresql.org/docs/8.3/interactive/charset.html">different ways</ulink>:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Using the locale features of the operating system to provide locale-specific collation order, number formatting, translated messages, and other aspects.
+ </para>
+ <para>
+ UTF-8 is widely used on Linux distributions by default, so it can be useful in such cases.
+ </para>
- </listitem>
- <listitem>
- <para>
- Providing a number of different character sets defined in the PostgreSQL server, including multiple-byte character sets, to support storing text any language, and providing character set translation between client and server.
- </para>
- <para>
- Using UTF-8 database charset is recommended as it will allow any-to-any conversations and make this issue transparent for the JCR.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ Providing a number of different character sets defined in the PostgreSQL server, including multiple-byte character sets, to support storing text any language, and providing character set translation between client and server.
+ </para>
+ <para>
+ Using UTF-8 database charset is recommended as it will allow any-to-any conversations and make this issue transparent for the JCR.
+ </para>
- </listitem>
+ </listitem>
- </orderedlist>
- <para>
- Example of a database with UTF-8 encoding using PgSQL dialect for the Workspace Container:
- </para>
-
+ </orderedlist>
+ <para>
+ Example of a database with UTF-8 encoding using PgSQL dialect for the Workspace Container:
+ </para>
+
<programlisting language="XML" role="XML"><xi:include href="../../../../extras/Advanced_Development_JCR_multilanguage-support/default58.xml" parse="text" xmlns:xi="http://www.w3.org/2001/XInclude" /></programlisting>
- </section>
-
+ </section>
+
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/lock-manager-config.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -364,7 +364,7 @@
</section>
<section id="sect-Reference_Guide-CacheableLockManagerImpl-Lock_migration_from_1.12.x">
- <title>Lock migration from 1.12.x</title>
+ <title>Lock Migration</title>
<para>
There are three options available:
</para>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/protocols/webdav.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -4,50 +4,50 @@
%BOOK_ENTITIES;
]>
<chapter id="chap-Reference_Guide-WebDAV">
- <!-- This document was created with Syntext Serna Free. --> <title>WebDAV</title>
- <section id="sect-Reference_Guide-WebDAV-Introduction">
- <title>Introduction</title>
- <para>
- The <application>WebDAV</application> protocol enables you to use third party tools to communicate with hierarchical content servers via the HTTP protocol. It is possible to add and remove documents or a set of documents from a path on the server.
- </para>
- <para>
- <application>DeltaV</application> is an extension of the WebDav protocol that allows managing document versioning. The <emphasis>Locking</emphasis> feature guarantees protection against multiple access when writing resources. The ordering support allows changing the position of the resource in the list and sort the directory to make the directory tree viewed conveniently. The full-text search makes it easy to find the necessary documents. You can search by using two languages: SQL and XPATH.
- </para>
- <para>
- In the eXo JCR, the WebDAV layer (based on the code taken from the extension modules of the reference implementation) is plugged in on top of our JCR implementation. This makes it possible to browse a workspace using the third party tools regardless of operating system environments. You can use a Java WebDAV client, such as <application>DAVExplorer</application> or <application>Internet Explorer</application> using <menuchoice><guimenu>File</guimenu><guimenuitem>Open as a Web Folder</guimenuitem></menuchoice>.
- </para>
- <para>
- WebDav is an extension of the REST service. To get the WebDav server ready, you must deploy the REST application. Then, you can access any workspaces of your repository by using the following URL:
- </para>
- <para>
- <ulink type="http" url="http://host:port/portal/rest/private/jcr/{RepositoryName}/{WorkspaceName}..." />
- </para>
- <para>
- When accessing the WebDAV server via <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production" />, you can substitute <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production">production</ulink> with <ulink type="http" url="http://localhost:8080/rest/jcr/repository/collaboration">collaboration</ulink>.
- </para>
- <para>
- You will be asked to enter your login credentials. These will then be checked by using the organization service that can be implemented thanks to an InMemory (dummy) module or a DB module or an LDAP one and the JCR user session will be created with the correct JCR Credentials.
- </para>
- <note>
- <title>Note:</title>
- <!-- <remark>DOCS NOTE: I have no idea what this means!</remark> --> <para>
- If you try the "in ECM" option, add "@ecm" to the user's password. Alternatively, you may modify jaas.conf by adding the <emphasis role="bold">domain=ecm</emphasis> option as follows:
- </para>
-
+ <!-- This document was created with Syntext Serna Free. --> <title>WebDAV</title>
+ <section id="sect-Reference_Guide-WebDAV-Introduction">
+ <title>Introduction</title>
+ <para>
+ The <application>WebDAV</application> protocol enables you to use third party tools to communicate with hierarchical content servers via the HTTP protocol. It is possible to add and remove documents or a set of documents from a path on the server.
+ </para>
+ <para>
+ <application>DeltaV</application> is an extension of the WebDav protocol that allows managing document versioning. The <emphasis>Locking</emphasis> feature guarantees protection against multiple access when writing resources. The ordering support allows changing the position of the resource in the list and sort the directory to make the directory tree viewed conveniently. The full-text search makes it easy to find the necessary documents. You can search by using two languages: SQL and XPATH.
+ </para>
+ <para>
+ In the eXo JCR, the WebDAV layer (based on the code taken from the extension modules of the reference implementation) is plugged in on top of our JCR implementation. This makes it possible to browse a workspace using the third party tools regardless of operating system environments. You can use a Java WebDAV client, such as <application>DAVExplorer</application> or <application>Internet Explorer</application> using <menuchoice><guimenu>File</guimenu><guimenuitem>Open as a Web Folder</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ WebDav is an extension of the REST service. To get the WebDav server ready, you must deploy the REST application. Then, you can access any workspaces of your repository by using the following URL:
+ </para>
+ <para>
+ <ulink type="http" url="http://host:port/portal/rest/private/jcr/{RepositoryName}/{WorkspaceName}..." />
+ </para>
+ <para>
+ When accessing the WebDAV server via <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production" />, you can substitute <ulink type="http" url="http://localhost:8080/rest/jcr/repository/production">production</ulink> with <ulink type="http" url="http://localhost:8080/rest/jcr/repository/collaboration">collaboration</ulink>.
+ </para>
+ <para>
+ You will be asked to enter your login credentials. These will then be checked by using the organization service that can be implemented thanks to an InMemory (dummy) module or a DB module or an LDAP one and the JCR user session will be created with the correct JCR Credentials.
+ </para>
+ <note>
+ <title>Note:</title>
+ <!-- <remark>DOCS NOTE: I have no idea what this means!</remark> --> <para>
+ If you try the "in ECM" option, add "@ecm" to the user's password. Alternatively, you may modify jaas.conf by adding the <emphasis role="bold">domain=ecm</emphasis> option as follows:
+ </para>
+
<programlisting>exo-domain {
org.exoplatform.services.security.jaas.BasicLoginModule required domain=ecm;
};</programlisting>
- </note>
+ </note>
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-WebDAV_Configuration">
- <title>WebDAV Configuration</title>
- <para>
- The WebDAV configuration file: <!-- is defined in the <remark><filename>DOC NOTE: where/is/this/file.xml</filename></remark> -->
- </para>
-
+ </section>
+
+ <section id="sect-Reference_Guide-WebDAV-WebDAV_Configuration">
+ <title>WebDAV Configuration</title>
+ <para>
+ The WebDAV configuration file: <!-- is defined in the <remark><filename>DOC NOTE: where/is/this/file.xml</filename></remark> -->
+ </para>
+
<programlisting language="XML" role="XML"><component>
<key>org.exoplatform.services.webdav.WebDavServiceImpl</key>
<type>org.exoplatform.services.webdav.WebDavServiceImpl</type>
@@ -128,359 +128,359 @@
<value>/absolute/path/to/file</value>
</value-param>
- </init-params
+ </init-params>
</component></programlisting>
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-Corresponding_WebDav_and_JCR_actions">
- <title>Corresponding WebDav and JCR actions</title>
- <table>
- <title></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- WebDav
- </entry>
- <entry>
- JCR
- </entry>
+ </section>
+
+ <section id="sect-Reference_Guide-WebDAV-Corresponding_WebDav_and_JCR_actions">
+ <title>Corresponding WebDav and JCR actions</title>
+ <table>
+ <title></title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ WebDav
+ </entry>
+ <entry>
+ JCR
+ </entry>
- </row>
+ </row>
- </thead>
- <tbody>
- <row>
- <entry>
- COPY
- </entry>
- <entry>
- Workspace.copy(...)
- </entry>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ COPY
+ </entry>
+ <entry>
+ Workspace.copy(...)
+ </entry>
- </row>
- <row>
- <entry>
- DELETE
- </entry>
- <entry>
- Node.remove()
- </entry>
+ </row>
+ <row>
+ <entry>
+ DELETE
+ </entry>
+ <entry>
+ Node.remove()
+ </entry>
- </row>
- <row>
- <entry>
- GET
- </entry>
- <entry>
- Node.getProperty(...); Property.getValue()
- </entry>
+ </row>
+ <row>
+ <entry>
+ GET
+ </entry>
+ <entry>
+ Node.getProperty(...); Property.getValue()
+ </entry>
- </row>
- <row>
- <entry>
- HEAD
- </entry>
- <entry>
- Node.getProperty(...); Property.getLength()
- </entry>
+ </row>
+ <row>
+ <entry>
+ HEAD
+ </entry>
+ <entry>
+ Node.getProperty(...); Property.getLength()
+ </entry>
- </row>
- <row>
- <entry>
- MKCOL
- </entry>
- <entry>
- Node.addNode(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ MKCOL
+ </entry>
+ <entry>
+ Node.addNode(...)
+ </entry>
- </row>
- <row>
- <entry>
- MOVE
- </entry>
- <entry>
- Session.move(...) or Workspace.move(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ MOVE
+ </entry>
+ <entry>
+ Session.move(...) or Workspace.move(...)
+ </entry>
- </row>
- <row>
- <entry>
- PROPFIND
- </entry>
- <entry>
- Session.getNode(...); Node.getNode(...); Node.getNodes(...); Node.getProperties()
- </entry>
+ </row>
+ <row>
+ <entry>
+ PROPFIND
+ </entry>
+ <entry>
+ Session.getNode(...); Node.getNode(...); Node.getNodes(...); Node.getProperties()
+ </entry>
- </row>
- <row>
- <entry>
- PROPPATCH
- </entry>
- <entry>
- Node.setProperty(...); Node.getProperty(...).remove()
- </entry>
+ </row>
+ <row>
+ <entry>
+ PROPPATCH
+ </entry>
+ <entry>
+ Node.setProperty(...); Node.getProperty(...).remove()
+ </entry>
- </row>
- <row>
- <entry>
- PUT
- </entry>
- <entry>
- Node.addNode("node","nt:file"); Node.setProperty("jcr:data", "data")
- </entry>
+ </row>
+ <row>
+ <entry>
+ PUT
+ </entry>
+ <entry>
+ Node.addNode("node","nt:file"); Node.setProperty("jcr:data", "data")
+ </entry>
- </row>
- <row>
- <entry>
- CHECKIN
- </entry>
- <entry>
- Node.checkin()
- </entry>
+ </row>
+ <row>
+ <entry>
+ CHECKIN
+ </entry>
+ <entry>
+ Node.checkin()
+ </entry>
- </row>
- <row>
- <entry>
- CHECKOUT
- </entry>
- <entry>
- Node.checkout()
- </entry>
+ </row>
+ <row>
+ <entry>
+ CHECKOUT
+ </entry>
+ <entry>
+ Node.checkout()
+ </entry>
- </row>
- <row>
- <entry>
- REPORT
- </entry>
- <entry>
- Node.getVersionHistory(); VersionHistory.getAllVersions(); Version.getProperties()
- </entry>
+ </row>
+ <row>
+ <entry>
+ REPORT
+ </entry>
+ <entry>
+ Node.getVersionHistory(); VersionHistory.getAllVersions(); Version.getProperties()
+ </entry>
- </row>
- <row>
- <entry>
- RESTORE
- </entry>
- <entry>
- Node.restore(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ RESTORE
+ </entry>
+ <entry>
+ Node.restore(...)
+ </entry>
- </row>
- <row>
- <entry>
- UNCHECKOUT
- </entry>
- <entry>
- Node.restore(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ UNCHECKOUT
+ </entry>
+ <entry>
+ Node.restore(...)
+ </entry>
- </row>
- <row>
- <entry>
- VERSION-CONTROL
- </entry>
- <entry>
- Node.addMixin("mix:versionable")
- </entry>
+ </row>
+ <row>
+ <entry>
+ VERSION-CONTROL
+ </entry>
+ <entry>
+ Node.addMixin("mix:versionable")
+ </entry>
- </row>
- <row>
- <entry>
- LOCK
- </entry>
- <entry>
- Node.lock(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ LOCK
+ </entry>
+ <entry>
+ Node.lock(...)
+ </entry>
- </row>
- <row>
- <entry>
- UNLOCK
- </entry>
- <entry>
- Node.unlock()
- </entry>
+ </row>
+ <row>
+ <entry>
+ UNLOCK
+ </entry>
+ <entry>
+ Node.unlock()
+ </entry>
- </row>
- <row>
- <entry>
- ORDERPATCH
- </entry>
- <entry>
- Node.orderBefore(...)
- </entry>
+ </row>
+ <row>
+ <entry>
+ ORDERPATCH
+ </entry>
+ <entry>
+ Node.orderBefore(...)
+ </entry>
- </row>
- <row>
- <entry>
- SEARCH
- </entry>
- <entry>
- Workspace.getQueryManager(); QueryManager.createQuery(); Query.execute()
- </entry>
+ </row>
+ <row>
+ <entry>
+ SEARCH
+ </entry>
+ <entry>
+ Workspace.getQueryManager(); QueryManager.createQuery(); Query.execute()
+ </entry>
- </row>
+ </row>
- </tbody>
+ </tbody>
- </tgroup>
+ </tgroup>
- </table>
+ </table>
- </section>
-
- <section id="sect-Reference_Guide-WebDAV-WebDAV_Considerations">
- <title>WebDAV Considerations</title>
+ </section>
+
+ <section id="sect-Reference_Guide-WebDAV-WebDAV_Considerations">
+ <title>WebDAV Considerations</title>
<!-- DOCS NOTE: This content is duplicated in the Site Publisher User Guide to avoid cross-document linking.
Any changes here should also be made there-->
- <para>
- There are some restrictions for WebDAV in different operating systems.
- </para>
- <formalpara id="form-Reference_Guide-WebDAV_Considerations-Windows_7">
- <title>Windows 7</title>
- <para>
- When attemping to set up a web folder through <guilabel>Add a Network Location</guilabel> or <guilabel>Map a Network Drive</guilabel> through <guilabel>My Computer</guilabel>, an error message stating <guilabel>The folder you entered does not appear to be valid. Please choose another</guilabel> or <guilabel>Windows cannot access … Check the spelling of the name. Otherwise, there might be …</guilabel> may be encountered. These errors may appear when you are using SSL or non-SSL.
- </para>
+ <para>
+ There are some restrictions for WebDAV in different operating systems.
+ </para>
+ <formalpara id="form-Reference_Guide-WebDAV_Considerations-Windows_7">
+ <title>Windows 7</title>
+ <para>
+ When attemping to set up a web folder through <guilabel>Add a Network Location</guilabel> or <guilabel>Map a Network Drive</guilabel> through <guilabel>My Computer</guilabel>, an error message stating <guilabel>The folder you entered does not appear to be valid. Please choose another</guilabel> or <guilabel>Windows cannot access … Check the spelling of the name. Otherwise, there might be …</guilabel> may be encountered. These errors may appear when you are using SSL or non-SSL.
+ </para>
- </formalpara>
- <para>
- To fix this, do as follows:
- </para>
- <procedure>
- <step>
- <para>
- Go to Windows Registry Editor.
- </para>
+ </formalpara>
+ <para>
+ To fix this, do as follows:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Go to Windows Registry Editor.
+ </para>
- </step>
- <step>
- <para>
- Find a key: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\services\WebClient\Parameters\BasicAuthLevel .
- </para>
+ </step>
+ <step>
+ <para>
+ Find a key: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\services\WebClient\Parameters\BasicAuthLevel .
+ </para>
- </step>
- <step>
- <para>
- Change the value to 2.
- </para>
+ </step>
+ <step>
+ <para>
+ Change the value to 2.
+ </para>
- </step>
+ </step>
- </procedure>
- <formalpara id="form-Reference_Guide-WebDAV_Considerations-Microsoft_Office_2010">
- <title>Microsoft Office 2010</title>
- <para>
- If you have:
- </para>
+ </procedure>
+ <formalpara id="form-Reference_Guide-WebDAV_Considerations-Microsoft_Office_2010">
+ <title>Microsoft Office 2010</title>
+ <para>
+ If you have:
+ </para>
- </formalpara>
- <itemizedlist>
- <listitem>
- <para>
- Microsoft Office 2007/2010 applications installed on a client computer AND...
- </para>
+ </formalpara>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Microsoft Office 2007/2010 applications installed on a client computer AND...
+ </para>
- </listitem>
- <listitem>
- <para>
- The client computer is connected to a web server configured for Basic authentication VIA...
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ The client computer is connected to a web server configured for Basic authentication VIA...
+ </para>
- </listitem>
- <listitem>
- <para>
- A connection that does not use Secure Sockets Layer (SSL) AND...
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ A connection that does not use Secure Sockets Layer (SSL) AND...
+ </para>
- </listitem>
- <listitem>
- <para>
- You try to access an Office file that is stored on the remote server...
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ You try to access an Office file that is stored on the remote server...
+ </para>
- </listitem>
- <listitem>
- <para>
- You might experience the following symptoms when you try to open or to download the file:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- The Office file does not open or download.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ You might experience the following symptoms when you try to open or to download the file:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ The Office file does not open or download.
+ </para>
- </listitem>
- <listitem>
- <para>
- You do not receive a Basic authentication password prompt when you try to open or to download the file.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ You do not receive a Basic authentication password prompt when you try to open or to download the file.
+ </para>
- </listitem>
- <listitem>
- <para>
- You do not receive an error message when you try to open the file. The associated Office application starts. However, the selected file does not open.
- </para>
+ </listitem>
+ <listitem>
+ <para>
+ You do not receive an error message when you try to open the file. The associated Office application starts. However, the selected file does not open.
+ </para>
- </listitem>
+ </listitem>
- </itemizedlist>
+ </itemizedlist>
- </listitem>
+ </listitem>
- </itemizedlist>
- <para>
- These outcomes can be circumvented by enabling Basic authentication on the client machine.
- </para>
- <para>
- To enable Basic authentication on the client computer, follow these steps:
- </para>
- <procedure>
- <step>
- <para>
- Click Start, type <literal>regedit</literal> in the Start Search box, and then press Enter.
- </para>
+ </itemizedlist>
+ <para>
+ These outcomes can be circumvented by enabling Basic authentication on the client machine.
+ </para>
+ <para>
+ To enable Basic authentication on the client computer, follow these steps:
+ </para>
+ <procedure>
+ <step>
+ <para>
+ Click Start, type <literal>regedit</literal> in the Start Search box, and then press Enter.
+ </para>
- </step>
- <step>
- <para>
- Locate and then click the following registry subkey:
- </para>
- <para>
- <envar>HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Internet</envar>
- </para>
+ </step>
+ <step>
+ <para>
+ Locate and then click the following registry subkey:
+ </para>
+ <para>
+ <envar>HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Internet</envar>
+ </para>
- </step>
- <step>
- <para>
- On the <guilabel>Edit</guilabel> menu, point to <guilabel>New</guilabel>, and then click <guilabel>DWORD Value</guilabel>.
- </para>
+ </step>
+ <step>
+ <para>
+ On the <guilabel>Edit</guilabel> menu, point to <guilabel>New</guilabel>, and then click <guilabel>DWORD Value</guilabel>.
+ </para>
- </step>
- <step>
- <para>
- Type <literal>BasicAuthLevel</literal>, and then press <keycap>Enter</keycap>.
- </para>
+ </step>
+ <step>
+ <para>
+ Type <literal>BasicAuthLevel</literal>, and then press <keycap>Enter</keycap>.
+ </para>
- </step>
- <step>
- <para>
- Right-click <literal>BasicAuthLevel</literal>, and then click <guilabel>Modify</guilabel>.
- </para>
+ </step>
+ <step>
+ <para>
+ Right-click <literal>BasicAuthLevel</literal>, and then click <guilabel>Modify</guilabel>.
+ </para>
- </step>
- <step>
- <para>
- In the Value data box, type <literal>2</literal>, and then click <guilabel>OK</guilabel>.
- </para>
+ </step>
+ <step>
+ <para>
+ In the Value data box, type <literal>2</literal>, and then click <guilabel>OK</guilabel>.
+ </para>
- </step>
+ </step>
- </procedure>
+ </procedure>
- </section>
-
+ </section>
+
</chapter>
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/repository-creation-service.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -129,7 +129,7 @@
</section>
- <section id="sect-Reference_Guide-RepositoryCreationService-RepositoryCreationService_Interface">
+ <!--<section id="sect-Reference_Guide-RepositoryCreationService-RepositoryCreationService_Interface">
<title>RepositoryCreationService Interface</title>
<programlisting language="Java" role="Java">public interface RepositoryCreationService
@@ -214,7 +214,7 @@
}</programlisting>
- </section>
+ </section> -->
<section id="sect-Reference_Guide-RepositoryCreationService-Conclusions_and_restrictions">
<title>Conclusions and restrictions</title>
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,163 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node">
- <title>Finding a node by content of child node</title>
- <para>
- The node type <literal>nt:file</literal> represents a file. It requires a single child node, called <literal>jcr:content</literal>. This node type represents images and other binary content. The node type of <literal>jcr:content</literal> is <literal>nt:resource</literal> which represents the actual content of a file.
- </para>
- <formalpara id="form-Reference_Guide-Finding_a_node_by_content_of_child_node-Task">
- <title>Task:</title>
- <para>
- Find node with the primary type <literal>nt:file</literal> and whose <literal>jcr:content</literal> child node contains <emphasis>cats</emphasis>.
- </para>
-
- </formalpara>
- <para>
-
- </para>
- <para>
- Although JCR SQL or XPath queries cannot usually find nodes, indexing can be configured so that <literal>nt:file</literal> aggregates the <literal>jcr:content</literal> values of a child node.
- </para>
- <para>
- To do this, change <filename>indexing-configuration.xml</filename> to be:
- </para>
-
-<programlisting language="XML" role="XML"><?xml version="1.0"?>
-<!DOCTYPE configuration SYSTEM "http://www.exoplatform.org/dtd/indexing-configuration-1.2.dtd">
-<configuration xmlns:jcr="http://www.jcp.org/jcr/1.0"
- xmlns:nt="http://www.jcp.org/jcr/nt/1.0">
- <aggregate primaryType="nt:file">
- <include>jcr:content</include>
- <include>jcr:content/*</include>
- <include-property>jcr:content/jcr:lastModified</include-property>
- </aggregate>
-</configuration></programlisting>
- <para>
- Now the content of <literal>nt:file</literal> and <literal>jcr:content</literal> (<literal>nt:resource</literal>) nodes are concatenated in a single Lucene document. Then, a fulltext search query can be based on content of the <literal>nt:file</literal> and this search includes the content of child <literal>jcr:content</literal> node.
- </para>
- <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains different <literal>nt:file</literal> nodes.
- </para>
-
-<programlisting>root
- ├── document1 (nt:file)
- │ └── jcr:content (nt:resource) jcr:data = "The quick brown fox jumps over the lazy dog."
- ├── document2 (nt:file)
- │ └── jcr:content (nt:resource) jcr:data = "Dogs do not like cats."
- └── document3 (nt:file)
- └── jcr:content (nt:resource) jcr:data = "Cats jumping high."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:file WHERE CONTAINS(*,'cats')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:file)[jcr:contains(.,'cats')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Fetching_the_result">
- <title>Fetching the result</title>
- <para>
- To fetch the matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis> and <literal>document3</literal>.
- </para>
- <para>
- The output can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Finding_a_node_by_content_of_child_node-Fetching_the_result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /document2
- </entry>
- <entry>
- 1030
- </entry>
-
- </row>
- <row>
- <entry>
- /document3
- </entry>
- <entry>
- 1030
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/aggregation-rule.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,163 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node">
+ <title>Finding a node by content of child node</title>
+ <para>
+ The node type <literal>nt:file</literal> represents a file. It requires a single child node, called <literal>jcr:content</literal>. This node type represents images and other binary content. The node type of <literal>jcr:content</literal> is <literal>nt:resource</literal> which represents the actual content of a file.
+ </para>
+ <formalpara id="form-Reference_Guide-Finding_a_node_by_content_of_child_node-Task">
+ <title>Task:</title>
+ <para>
+ Find node with the primary type <literal>nt:file</literal> and whose <literal>jcr:content</literal> child node contains <emphasis>cats</emphasis>.
+ </para>
+
+ </formalpara>
+ <para>
+
+ </para>
+ <para>
+ Although JCR SQL or XPath queries cannot usually find nodes, indexing can be configured so that <literal>nt:file</literal> aggregates the <literal>jcr:content</literal> values of a child node.
+ </para>
+ <para>
+ To do this, change <filename>indexing-configuration.xml</filename> to be:
+ </para>
+
+<programlisting language="XML" role="XML"><?xml version="1.0"?>
+<!DOCTYPE configuration SYSTEM "http://www.exoplatform.org/dtd/indexing-configuration-1.2.dtd">
+<configuration xmlns:jcr="http://www.jcp.org/jcr/1.0"
+ xmlns:nt="http://www.jcp.org/jcr/nt/1.0">
+ <aggregate primaryType="nt:file">
+ <include>jcr:content</include>
+ <include>jcr:content/*</include>
+ <include-property>jcr:content/jcr:lastModified</include-property>
+ </aggregate>
+</configuration></programlisting>
+ <para>
+ Now the content of <literal>nt:file</literal> and <literal>jcr:content</literal> (<literal>nt:resource</literal>) nodes are concatenated in a single Lucene document. Then, a fulltext search query can be based on content of the <literal>nt:file</literal> and this search includes the content of child <literal>jcr:content</literal> node.
+ </para>
+ <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains different <literal>nt:file</literal> nodes.
+ </para>
+
+<programlisting>root
+ ├── document1 (nt:file)
+ │ └── jcr:content (nt:resource) jcr:data = "The quick brown fox jumps over the lazy dog."
+ ├── document2 (nt:file)
+ │ └── jcr:content (nt:resource) jcr:data = "Dogs do not like cats."
+ └── document3 (nt:file)
+ └── jcr:content (nt:resource) jcr:data = "Cats jumping high."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:file WHERE CONTAINS(*,'cats')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_a_node_by_content_of_child_node-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:file)[jcr:contains(.,'cats')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_a_node_by_content_of_child_node-Fetching_the_result">
+ <title>Fetching the result</title>
+ <para>
+ To fetch the matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis> and <literal>document3</literal>.
+ </para>
+ <para>
+ The output can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Finding_a_node_by_content_of_child_node-Fetching_the_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 1030
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 1030
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,150 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-AND_Constraint">
- <title>AND Constraint</title>
- <formalpara id="form-Reference_Guide-AND_Constraint-Task">
- <title>Task:</title>
- <para>
- To find all <emphasis>fairytales</emphasis> with a page count more than <literal>90</literal> pages. Or, in JCR terms; find all nodes with mixin type <literal>mix:title</literal> where the property <parameter>jcr:description</parameter> equals <emphasis>fairytale</emphasis> and whose <parameter>prop_pagecount</parameter> property value is less than <literal>90</literal>.
- </para>
-
- </formalpara>
- <note>
- <para>
- See also <xref linkend="sect-Reference_Guide-Multivalue_Property_Comparison" />.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-AND_Constraint-Repository_Structure">
- <title>Repository Structure:</title>
- <para>
- The repository contains <literal>mix:title</literal> nodes, where <parameter>prop_pagecount</parameter> has different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="War and peace" jcr:description="novel" prop_pagecount=1000
- ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale" prop_pagecount=100
- └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale" prop_pagecount=60
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-AND_Constraint-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-AND_Constraint-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE jcr:description = 'fairytale' AND prop_pagecount > 90";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-AND_Constraint-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[@jcr:description='fairytale' and @prop_pagecount > 90]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-AND_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- <literal>NodeIterator</literal> will return <emphasis>document2</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-AND_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="5">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- prop_pagecount
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Cinderella
- </entry>
- <entry>
- fairytale
- </entry>
- <entry>
- 100
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 7086
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/and-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,150 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-AND_Constraint">
+ <title>AND Constraint</title>
+ <formalpara id="form-Reference_Guide-AND_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ To find all <emphasis>fairytales</emphasis> with a page count more than <literal>90</literal> pages. Or, in JCR terms; find all nodes with mixin type <literal>mix:title</literal> where the property <parameter>jcr:description</parameter> equals <emphasis>fairytale</emphasis> and whose <parameter>prop_pagecount</parameter> property value is less than <literal>90</literal>.
+ </para>
+
+ </formalpara>
+ <note>
+ <para>
+ See also <xref linkend="sect-Reference_Guide-Multivalue_Property_Comparison" />.
+ </para>
+
+ </note>
+ <section id="sect-Reference_Guide-AND_Constraint-Repository_Structure">
+ <title>Repository Structure:</title>
+ <para>
+ The repository contains <literal>mix:title</literal> nodes, where <parameter>prop_pagecount</parameter> has different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="War and peace" jcr:description="novel" prop_pagecount=1000
+ ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale" prop_pagecount=100
+ └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale" prop_pagecount=60
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-AND_Constraint-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-AND_Constraint-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE jcr:description = 'fairytale' AND prop_pagecount > 90";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-AND_Constraint-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[@jcr:description='fairytale' and @prop_pagecount > 90]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-AND_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ <literal>NodeIterator</literal> will return <emphasis>document2</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-AND_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="5">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ prop_pagecount
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Cinderella
+ </entry>
+ <entry>
+ fairytale
+ </entry>
+ <entry>
+ 100
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 7086
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,140 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Child_Node_Constraint">
- <title>Child Node Constraint</title>
- <formalpara id="form-Reference_Guide-Child_Node_Constraint-Task">
- <title>Task:</title>
- <para>
- To find all nodes with the primary type '<literal>nt:folder</literal>' that are children of node by path "<filename>/root1/root2</filename>". Only find children, do not find further descendants.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Child_Node_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository is filled by "<literal>nt:folder</literal>" nodes. The nodes are placed in a multilayer tree.
- </para>
-
-<screen>root
- └── folder1 (nt:folder)
- └── folder2 (nt:folder)
- ├── folder3 (nt:folder) // This node we want to find
- │ └── folder4 (nt:folder) // This node is not child but a descendant of '/folder1/folder2/'
- └── folder5 (nt:folder) // This node we want to find
-</screen>
-
- </section>
-
- <section id="sect-Reference_Guide-Child_Node_Constraint-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Child_Node_Constraint-Query_Execution-SQL">
- <title>SQL</title>
- <para>
- The use of "%" in the LIKE statement includes any string, therefore there is a second LIKE statement that excludes that the string contains "/". This way child nodes are included but descendant nodes are excluded.
- </para>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/folder1/folder2/%' AND NOT jcr:path LIKE '/folder1/folder2/%/%'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Child_Node_Constraint-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "/jcr:root/folder1[1]/folder2[1]/element(*,nt:folder)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Child_Node_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>folder3</emphasis> and <emphasis>folder5</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is:
- <table id="tabl-Reference_Guide-Child_Node_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /folder1/folder2/folder3
- </entry>
- <entry>
- 1707
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2/folder5
- </entry>
- <entry>
- 1707
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/child-node-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,140 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Child_Node_Constraint">
+ <title>Child Node Constraint</title>
+ <formalpara id="form-Reference_Guide-Child_Node_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ To find all nodes with the primary type '<literal>nt:folder</literal>' that are children of node by path "<filename>/root1/root2</filename>". Only find children, do not find further descendants.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Child_Node_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository is filled by "<literal>nt:folder</literal>" nodes. The nodes are placed in a multilayer tree.
+ </para>
+
+<screen>root
+ └── folder1 (nt:folder)
+ └── folder2 (nt:folder)
+ ├── folder3 (nt:folder) // This node we want to find
+ │ └── folder4 (nt:folder) // This node is not child but a descendant of '/folder1/folder2/'
+ └── folder5 (nt:folder) // This node we want to find
+</screen>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Child_Node_Constraint-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Child_Node_Constraint-Query_Execution-SQL">
+ <title>SQL</title>
+ <para>
+ The use of "%" in the LIKE statement includes any string, therefore there is a second LIKE statement that excludes that the string contains "/". This way child nodes are included but descendant nodes are excluded.
+ </para>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/folder1/folder2/%' AND NOT jcr:path LIKE '/folder1/folder2/%/%'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Child_Node_Constraint-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "/jcr:root/folder1[1]/folder2[1]/element(*,nt:folder)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Child_Node_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>folder3</emphasis> and <emphasis>folder5</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is:
+ <table id="tabl-Reference_Guide-Child_Node_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /folder1/folder2/folder3
+ </entry>
+ <entry>
+ 1707
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2/folder5
+ </entry>
+ <entry>
+ 1707
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,166 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Date_Property_Comparison">
- <title>Date Property Comparison</title>
- <formalpara id="form-Reference_Guide-Date_Property_Comparison-Task">
- <title>Task:</title>
- <para>
- Find all nodes of primary type <literal>nt:resource</literal> whose <parameter>jcr:lastModified</parameter> property value is greater than <literal>2006-06-04</literal> and less than <literal>2008-06-04</literal>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Date_Property_Comparison-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- Repository contains <literal>nt:resource</literal> nodes with different values of <parameter>jcr:lastModified</parameter> property.
- </para>
-
-<programlisting>root
- ├── document1 (nt:file)
- │ └── jcr:content (nt:resource) jcr:lastModified="2006-01-19T15:34:15.917+02:00"
- ├── document2 (nt:file)
- │ └── jcr:content (nt:resource) jcr:lastModified="2005-01-19T15:34:15.917+02:00"
- └── document3 (nt:file)
- └── jcr:content (nt:resource) jcr:lastModified="2007-01-19T15:34:15.917+02:00"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Date_Property_Comparison-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Date_Property_Comparison-Query_Execution-SQL">
- <title>SQL</title>
- <para>
- In SQL you have to use the keyword <emphasis>TIMESTAMP</emphasis> for date comparisons. Otherwise, the date would be interpreted as a string.
- </para>
- <para>
- The date has to be surrounded by single quotes (<literal>TIMESTAMP 'datetime'</literal>) and in the ISO standard format: YYYY-MM-DDThh:mm:ss.sTZD.
- </para>
- <para>
- Refer to <ulink url="http://en.wikipedia.org/wiki/ISO_8601">http://en.wikipedia.org/wiki/ISO_8601</ulink> or <ulink url="http://www.w3.org/TR/NOTE-datetime">http://www.w3.org/TR/NOTE-datetime</ulink> to more information.
- </para>
- <para>
- You will see that it can be a date only (YYYY-MM-DD) but also a complete date and time with a timezone designator (TZD).
- </para>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-StringBuffer sb = new StringBuffer();
-sb.append("select * from nt:resource where ");
-sb.append("( jcr:lastModified >= TIMESTAMP '");
-sb.append("2006-06-04T15:34:15.917+02:00");
-sb.append("' )");
-sb.append(" and ");
-sb.append("( jcr:lastModified <= TIMESTAMP '");
-sb.append("2008-06-04T15:34:15.917+02:00");
-sb.append("' )");
-String sqlStatement = sb.toString();
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Date_Property_Comparison-Query_Execution-XPath">
- <title>XPath</title>
- <para>
- Compared to the SQL format, you have to use the keyword <emphasis>xs:dateTime</emphasis> and surround the datetime by extra brackets: <literal>xs:dateTime('datetime')</literal>. The actual format of the datetime also conforms with the ISO date standard.
- </para>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-StringBuffer sb = new StringBuffer();
-sb.append("//element(*,nt:resource)");
-sb.append("[");
-sb.append("@jcr:lastModified >= xs:dateTime('2006-08-19T10:11:38.281+02:00')");
-sb.append(" and ");
-sb.append("@jcr:lastModified <= xs:dateTime('2008-06-04T15:34:15.917+02:00')");
-sb.append("]");
-String xpathStatement = sb.toString();
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Date_Property_Comparison-Fetching_the_result">
- <title>Fetching the result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node foundNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <literal>/document3/jcr:content</literal>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is:
- <table id="tabl-Reference_Guide-Date_Property_Comparison-Fetching_the_result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:lastModified
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- 2007-01-19T15:34:15.917+02:00
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document3/jcr:content
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/date-property-comparison.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,166 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Date_Property_Comparison">
+ <title>Date Property Comparison</title>
+ <formalpara id="form-Reference_Guide-Date_Property_Comparison-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes of primary type <literal>nt:resource</literal> whose <parameter>jcr:lastModified</parameter> property value is greater than <literal>2006-06-04</literal> and less than <literal>2008-06-04</literal>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Date_Property_Comparison-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ Repository contains <literal>nt:resource</literal> nodes with different values of <parameter>jcr:lastModified</parameter> property.
+ </para>
+
+<programlisting>root
+ ├── document1 (nt:file)
+ │ └── jcr:content (nt:resource) jcr:lastModified="2006-01-19T15:34:15.917+02:00"
+ ├── document2 (nt:file)
+ │ └── jcr:content (nt:resource) jcr:lastModified="2005-01-19T15:34:15.917+02:00"
+ └── document3 (nt:file)
+ └── jcr:content (nt:resource) jcr:lastModified="2007-01-19T15:34:15.917+02:00"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Date_Property_Comparison-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Date_Property_Comparison-Query_Execution-SQL">
+ <title>SQL</title>
+ <para>
+ In SQL you have to use the keyword <emphasis>TIMESTAMP</emphasis> for date comparisons. Otherwise, the date would be interpreted as a string.
+ </para>
+ <para>
+ The date has to be surrounded by single quotes (<literal>TIMESTAMP 'datetime'</literal>) and in the ISO standard format: YYYY-MM-DDThh:mm:ss.sTZD.
+ </para>
+ <para>
+ Refer to <ulink url="http://en.wikipedia.org/wiki/ISO_8601">http://en.wikipedia.org/wiki/ISO_8601</ulink> or <ulink url="http://www.w3.org/TR/NOTE-datetime">http://www.w3.org/TR/NOTE-datetime</ulink> to more information.
+ </para>
+ <para>
+ You will see that it can be a date only (YYYY-MM-DD) but also a complete date and time with a timezone designator (TZD).
+ </para>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+StringBuffer sb = new StringBuffer();
+sb.append("select * from nt:resource where ");
+sb.append("( jcr:lastModified >= TIMESTAMP '");
+sb.append("2006-06-04T15:34:15.917+02:00");
+sb.append("' )");
+sb.append(" and ");
+sb.append("( jcr:lastModified <= TIMESTAMP '");
+sb.append("2008-06-04T15:34:15.917+02:00");
+sb.append("' )");
+String sqlStatement = sb.toString();
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Date_Property_Comparison-Query_Execution-XPath">
+ <title>XPath</title>
+ <para>
+ Compared to the SQL format, you have to use the keyword <emphasis>xs:dateTime</emphasis> and surround the datetime by extra brackets: <literal>xs:dateTime('datetime')</literal>. The actual format of the datetime also conforms with the ISO date standard.
+ </para>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+StringBuffer sb = new StringBuffer();
+sb.append("//element(*,nt:resource)");
+sb.append("[");
+sb.append("@jcr:lastModified >= xs:dateTime('2006-08-19T10:11:38.281+02:00')");
+sb.append(" and ");
+sb.append("@jcr:lastModified <= xs:dateTime('2008-06-04T15:34:15.917+02:00')");
+sb.append("]");
+String xpathStatement = sb.toString();
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Date_Property_Comparison-Fetching_the_result">
+ <title>Fetching the result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node foundNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <literal>/document3/jcr:content</literal>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is:
+ <table id="tabl-Reference_Guide-Date_Property_Comparison-Fetching_the_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:lastModified
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ 2007-01-19T15:34:15.917+02:00
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document3/jcr:content
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,149 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Escaping_in_LIKE_Statements">
- <title>Escaping in LIKE Statements</title>
- <formalpara id="form-Reference_Guide-Escaping_in_LIKE_Statements-Task">
- <title>Task:</title>
- <para>
- Find all nodes with a mixin type 'mix:title' and whose property <literal>jcr:title</literal> starts with <emphasis>P%ri</emphasis>.
- </para>
-
- </formalpara>
- <para>
- As you see <emphasis>P%rison break</emphasis> contains the symbol '<literal>%</literal>'. This symbol is reserved for LIKE comparisons.
- </para>
- <para>
- Within the LIKE pattern, literal instances of the <emphasis>percent</emphasis> character ("<literal>%</literal>") or an underscore ("<literal>_</literal>") must be escaped. The <emphasis>SQL ESCAPE</emphasis> clause allows the definition of an arbitrary escape character within the context of a single LIKE statement. The following example defines the backslash '<literal>\</literal>' as an escape character:
- </para>
-
-<programlisting>SELECT * FROM mytype WHERE a LIKE 'foo\%' ESCAPE '\'</programlisting>
- <para>
- XPath does not have any specification for defining escape symbols. The default XPath escape character is the backslash ('<literal>\</literal>').
- </para>
- <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Repository_structure">
- <title>Repository structure</title>
- <para>
- The repository contains <literal>mix:title</literal> nodes, where <parameter>jcr:title</parameter> can have different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Dart rules!!"
- ├── document2 (mix:title) jcr:title="P%rison break" jcr:description="Run, Forest, run ))"
- └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title LIKE 'P#%ri%' ESCAPE '#'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[jcr:like(@jcr:title, 'P\\%ri%')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Fetching_result">
- <title>Fetching result</title>
- <para>
- To get the matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <literal>document2</literal>.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is
- <table id="tabl-Reference_Guide-Escaping_in_LIKE_Statements-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- P%rison break
- </entry>
- <entry>
- Run, Forest, run ))
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 7452
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/escaping-like-statements.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,149 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Escaping_in_LIKE_Statements">
+ <title>Escaping in LIKE Statements</title>
+ <formalpara id="form-Reference_Guide-Escaping_in_LIKE_Statements-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with a mixin type 'mix:title' and whose property <literal>jcr:title</literal> starts with <emphasis>P%ri</emphasis>.
+ </para>
+
+ </formalpara>
+ <para>
+ As you see <emphasis>P%rison break</emphasis> contains the symbol '<literal>%</literal>'. This symbol is reserved for LIKE comparisons.
+ </para>
+ <para>
+ Within the LIKE pattern, literal instances of the <emphasis>percent</emphasis> character ("<literal>%</literal>") or an underscore ("<literal>_</literal>") must be escaped. The <emphasis>SQL ESCAPE</emphasis> clause allows the definition of an arbitrary escape character within the context of a single LIKE statement. The following example defines the backslash '<literal>\</literal>' as an escape character:
+ </para>
+
+<programlisting>SELECT * FROM mytype WHERE a LIKE 'foo\%' ESCAPE '\'</programlisting>
+ <para>
+ XPath does not have any specification for defining escape symbols. The default XPath escape character is the backslash ('<literal>\</literal>').
+ </para>
+ <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Repository_structure">
+ <title>Repository structure</title>
+ <para>
+ The repository contains <literal>mix:title</literal> nodes, where <parameter>jcr:title</parameter> can have different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Dart rules!!"
+ ├── document2 (mix:title) jcr:title="P%rison break" jcr:description="Run, Forest, run ))"
+ └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title LIKE 'P#%ri%' ESCAPE '#'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Escaping_in_LIKE_Statements-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[jcr:like(@jcr:title, 'P\\%ri%')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Escaping_in_LIKE_Statements-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To get the matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <literal>document2</literal>.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is
+ <table id="tabl-Reference_Guide-Escaping_in_LIKE_Statements-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ P%rison break
+ </entry>
+ <entry>
+ Run, Forest, run ))
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 7452
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,137 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Exact_Path_Constraint">
- <title>Exact Path Constraint</title>
- <formalpara id="form-Reference_Guide-Exact_Path_Constraint-Task">
- <title>Task:</title>
- <para>
- Find a node with the primary type <literal>nt:file</literal> that is located on the exact path <filename>/folder1/folder2/document1</filename>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Exact_Path_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- Repository filled by different nodes. There are several folders which contain other folders and files.
- </para>
-
-<programlisting>root
- └── folder1 (nt:folder)
- └── folder2 (nt:folder)
- ├── document1 (nt:file) // This document we want to find
- └── folder3 (nt:folder)
- └── document1 (nt:file)
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Exact_Path_Constraint-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Exact_Path_Constraint-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// we want find 'document1'
-String sqlStatement = "SELECT * FROM nt:file WHERE jcr:path = '/folder1/folder2/document1'";
-// create query
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Exact_Path_Constraint-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// we want to find 'document1'
-String xpathStatement = "/jcr:root/folder1[1]/folder2[1]/element(document1,nt:file)[1]";
-// create query
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <note>
- <title>Note</title>
- <para>
- The indexes [1] are used in order to get the same result as the SQL statement. SQL by default only returns the first node, whereas XPath fetches by default all nodes.
- </para>
-
- </note>
-
- </section>
-
- <section id="sect-Reference_Guide-Exact_Path_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return expected <emphasis>document1</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-Exact_Path_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /folder1/folder2/document1
- </entry>
- <entry>
- 1030
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/exact-path-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,137 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Exact_Path_Constraint">
+ <title>Exact Path Constraint</title>
+ <formalpara id="form-Reference_Guide-Exact_Path_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find a node with the primary type <literal>nt:file</literal> that is located on the exact path <filename>/folder1/folder2/document1</filename>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Exact_Path_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ Repository filled by different nodes. There are several folders which contain other folders and files.
+ </para>
+
+<programlisting>root
+ └── folder1 (nt:folder)
+ └── folder2 (nt:folder)
+ ├── document1 (nt:file) // This document we want to find
+ └── folder3 (nt:folder)
+ └── document1 (nt:file)
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Exact_Path_Constraint-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Exact_Path_Constraint-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// we want find 'document1'
+String sqlStatement = "SELECT * FROM nt:file WHERE jcr:path = '/folder1/folder2/document1'";
+// create query
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Exact_Path_Constraint-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// we want to find 'document1'
+String xpathStatement = "/jcr:root/folder1[1]/folder2[1]/element(document1,nt:file)[1]";
+// create query
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <note>
+ <title>Note</title>
+ <para>
+ The indexes [1] are used in order to get the same result as the SQL statement. SQL by default only returns the first node, whereas XPath fetches by default all nodes.
+ </para>
+
+ </note>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Exact_Path_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return expected <emphasis>document1</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-Exact_Path_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /folder1/folder2/document1
+ </entry>
+ <entry>
+ 1030
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,146 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_All_Descendant_Nodes">
- <title>Finding All Descendant Nodes</title>
- <formalpara id="form-Reference_Guide-Finding_All_Descendant_Nodes-Task">
- <title>Task:</title>
- <para>
- Find all nodes with the primary type <literal>nt:folder</literal> that are descendants of the node <literal>/folder1/folder2</literal>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains <literal>nt:folder</literal> nodes. The nodes are placed in a multilayer tree.
- </para>
-
-<programlisting>root
- └── folder1 (nt:folder)
- └── folder2 (nt:folder)
- ├── folder3 (nt:folder) // This node we want to find
- │ └── folder4 (nt:folder) // This node we want to find
- └── folder5 (nt:folder) // This node we want to find
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/folder1/folder2/%'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "/jcr:root/folder1[1]/folder2[1]//element(*,nt:folder)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return "folder3", "folder4" and "folder5" nodes.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-Finding_All_Descendant_Nodes-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /folder1/folder2/folder3
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2/folder3/folder4
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2/folder5
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-descendant-nodes.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,146 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_All_Descendant_Nodes">
+ <title>Finding All Descendant Nodes</title>
+ <formalpara id="form-Reference_Guide-Finding_All_Descendant_Nodes-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with the primary type <literal>nt:folder</literal> that are descendants of the node <literal>/folder1/folder2</literal>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains <literal>nt:folder</literal> nodes. The nodes are placed in a multilayer tree.
+ </para>
+
+<programlisting>root
+ └── folder1 (nt:folder)
+ └── folder2 (nt:folder)
+ ├── folder3 (nt:folder) // This node we want to find
+ │ └── folder4 (nt:folder) // This node we want to find
+ └── folder5 (nt:folder) // This node we want to find
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:folder WHERE jcr:path LIKE '/folder1/folder2/%'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_All_Descendant_Nodes-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "/jcr:root/folder1[1]/folder2[1]//element(*,nt:folder)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_All_Descendant_Nodes-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return "folder3", "folder4" and "folder5" nodes.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-Finding_All_Descendant_Nodes-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /folder1/folder2/folder3
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2/folder3/folder4
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2/folder5
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,179 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_All_Nodes">
- <title>Finding All Nodes</title>
- <formalpara id="form-Reference_Guide-Finding_All_Nodes-Task">
- <title>Task:</title>
- <para>
- Find all nodes in the repository.
- </para>
-
- </formalpara>
- <note>
- <title>Note</title>
- <para>
- This search will only nodes that the current session has READ access to. See also <xref linkend="chap-Reference_Guide-Access_Control" />.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-Finding_All_Nodes-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains many different nodes.
- </para>
-
-<programlisting>root
- └── folder1 (nt:folder)
- ├── document1 (nt:file)
- └── folder2 (nt:folder)
- ├── document2 (nt:unstructured)
- └── document3 (nt:folder)
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_All_Nodes-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Finding_All_Nodes-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:base";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_All_Nodes-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:base)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_All_Nodes-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>folder1</emphasis>, <emphasis>folder2</emphasis>, <emphasis>document1</emphasis>, <emphasis>document2</emphasis>, <emphasis>document3</emphasis>, and each other node in the workspace.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is
- </para>
- <table id="tabl-Reference_Guide-Finding_All_Nodes-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /folder1
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/document1
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2/document2
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- /folder1/folder2/document3
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- ...
- </entry>
- <entry>
- ...
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-all-nodes.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,179 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_All_Nodes">
+ <title>Finding All Nodes</title>
+ <formalpara id="form-Reference_Guide-Finding_All_Nodes-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes in the repository.
+ </para>
+
+ </formalpara>
+ <note>
+ <title>Note</title>
+ <para>
+ This search will only nodes that the current session has READ access to. See also <xref linkend="chap-Reference_Guide-Access_Control" />.
+ </para>
+
+ </note>
+ <section id="sect-Reference_Guide-Finding_All_Nodes-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains many different nodes.
+ </para>
+
+<programlisting>root
+ └── folder1 (nt:folder)
+ ├── document1 (nt:file)
+ └── folder2 (nt:folder)
+ ├── document2 (nt:unstructured)
+ └── document3 (nt:folder)
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_All_Nodes-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Finding_All_Nodes-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:base";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_All_Nodes-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:base)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_All_Nodes-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>folder1</emphasis>, <emphasis>folder2</emphasis>, <emphasis>document1</emphasis>, <emphasis>document2</emphasis>, <emphasis>document3</emphasis>, and each other node in the workspace.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is
+ </para>
+ <table id="tabl-Reference_Guide-Finding_All_Nodes-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /folder1
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/document1
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2/document2
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /folder1/folder2/document3
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ ...
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,153 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type">
- <title>Finding Nodes by Mixin Type</title>
- <formalpara id="form-Reference_Guide-Finding_Nodes_by_Mixin_Type-Task">
- <title>Task:</title>
- <para>
- Find all nodes in repository, that contain a mixin type <literal>mix:title</literal>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains nodes with different primary types and mixin types.
- </para>
-
-<programlisting>root
- ├── document1 primarytype = "nt:unstructured" mixintype = "mix:title"
- ├── document2 primarytype = "nt:file" mixintype = "mix:lockable"
- └── document3 primarytype = "nt:file" mixintype = "mix:title"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Fetching_result">
- <title>Fetching result</title>
- <para>
- To the fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return "document1" and "document3".
- </para>
- <para>
- the output cab also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is
- <table id="tabl-Reference_Guide-Finding_Nodes_by_Mixin_Type-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- First document
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document1
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
- <row>
- <entry>
- Second document
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-mixin-type.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,153 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type">
+ <title>Finding Nodes by Mixin Type</title>
+ <formalpara id="form-Reference_Guide-Finding_Nodes_by_Mixin_Type-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes in repository, that contain a mixin type <literal>mix:title</literal>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains nodes with different primary types and mixin types.
+ </para>
+
+<programlisting>root
+ ├── document1 primarytype = "nt:unstructured" mixintype = "mix:title"
+ ├── document2 primarytype = "nt:file" mixintype = "mix:lockable"
+ └── document3 primarytype = "nt:file" mixintype = "mix:title"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Nodes_by_Mixin_Type-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To the fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return "document1" and "document3".
+ </para>
+ <para>
+ the output cab also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is
+ <table id="tabl-Reference_Guide-Finding_Nodes_by_Mixin_Type-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ First document
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ Second document
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,135 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type">
- <title>Finding Nodes by Primary Type</title>
- <formalpara id="form-Reference_Guide-Finding_Nodes_by_Primary_Type-Task">
- <title>Task:</title>
- <para>
- Find all nodes whose primary type is <literal>nt:file</literal>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains nodes with different primary types and mixin types.
- </para>
-
-<programlisting>root
- ├── document1 primarytype = "nt:unstructured" mixintype = "mix:title"
- ├── document2 primarytype = "nt:file" mixintype = "mix:lockable"
- └── document3 primarytype = "nt:file" mixintype = "mix:title"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:file";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:file)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch the matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis> and <literal>document3</literal>.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is
- <table id="tabl-Reference_Guide-Finding_Nodes_by_Primary_Type-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /document2
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
- <row>
- <entry>
- /document3
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-by-primary-type.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,135 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type">
+ <title>Finding Nodes by Primary Type</title>
+ <formalpara id="form-Reference_Guide-Finding_Nodes_by_Primary_Type-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes whose primary type is <literal>nt:file</literal>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains nodes with different primary types and mixin types.
+ </para>
+
+<programlisting>root
+ ├── document1 primarytype = "nt:unstructured" mixintype = "mix:title"
+ ├── document2 primarytype = "nt:file" mixintype = "mix:lockable"
+ └── document3 primarytype = "nt:file" mixintype = "mix:title"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:file";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Nodes_by_Primary_Type-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:file)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_by_Primary_Type-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch the matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis> and <literal>document3</literal>.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is
+ <table id="tabl-Reference_Guide-Finding_Nodes_by_Primary_Type-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,180 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way">
- <title>Finding Nodes in a Case-Insensitive Way</title>
- <formalpara id="form-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Task">
- <title>Task:</title>
- <para>
- Find all nodes with a mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> equals <literal>casesensitive</literal> in lower or upper case.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains <literal>mix:title</literal> nodes, whose <literal>jcr:title</literal> properties have different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="CaseSensitive"
- ├── document2 (mix:title) jcr:title="casesensitive"
- └── document3 (mix:title) jcr:title="caseSENSITIVE"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-SQL_Uppercase">
- <title>SQL- Uppercase</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE UPPER(jcr:title) = 'CASESENSITIVE'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-XPath_Upper_Case">
- <title>XPath - Upper Case</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[fn:upper-case(@jcr:title)='CASESENSITIVE']";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-SQL_Lower_Case">
- <title>SQL - Lower Case</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE LOWER(jcr:title) = 'casesensitive'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-XPath_Lower_Case">
- <title>XPath - Lower Case</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[fn:lower-case(@jcr:title)='casesensitive']";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>, <emphasis>document2</emphasis> and <emphasis>document3</emphasis> (in all examples).
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- CaseSensitive
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document1
- </entry>
-
- </row>
- <row>
- <entry>
- casesensitive
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document2
- </entry>
-
- </row>
- <row>
- <entry>
- caseSENSITIVE
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document3
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-nodes-case-insensitive.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,180 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way">
+ <title>Finding Nodes in a Case-Insensitive Way</title>
+ <formalpara id="form-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with a mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> equals <literal>casesensitive</literal> in lower or upper case.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains <literal>mix:title</literal> nodes, whose <literal>jcr:title</literal> properties have different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="CaseSensitive"
+ ├── document2 (mix:title) jcr:title="casesensitive"
+ └── document3 (mix:title) jcr:title="caseSENSITIVE"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-SQL_Uppercase">
+ <title>SQL- Uppercase</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE UPPER(jcr:title) = 'CASESENSITIVE'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-XPath_Upper_Case">
+ <title>XPath - Upper Case</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[fn:upper-case(@jcr:title)='CASESENSITIVE']";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-SQL_Lower_Case">
+ <title>SQL - Lower Case</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE LOWER(jcr:title) = 'casesensitive'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Query_Execution-XPath_Lower_Case">
+ <title>XPath - Lower Case</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[fn:lower-case(@jcr:title)='casesensitive']";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>, <emphasis>document2</emphasis> and <emphasis>document3</emphasis> (in all examples).
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ CaseSensitive
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document1
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ casesensitive
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document2
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ caseSENSITIVE
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document3
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,218 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Finding_Similar_Nodes">
- <title>Finding Similar Nodes</title>
- <formalpara id="form-Reference_Guide-Finding_Similar_Nodes-Task">
- <title>Task:</title>
- <para>
- To find nodes similar to a nominated node at: <literal>/baseFile/jcr:content</literal>.
- </para>
-
- </formalpara>
- <para>
- In this example, <literal>baseFile</literal> contains text where a keyword (<literal>terms</literal>) is repeated often. This word will be used as a criteria of node similarity (for node baseFile).
- </para>
- <note>
- <title>Reference</title>
- <para>
- Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about Similarity and configuration.
- </para>
-
- </note>
- <para>
- Higlighting support must be added to the configuration (in <filename>test-jcr-config.xml</filename>):
- </para>
-
-<programlisting language="Java" role="Java"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- ...
- <property name="support-highlighting" value="true" />
- ...
- </properties>
-</query-handler></programlisting>
- <section id="sect-Reference_Guide-Finding_Similar_Nodes-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains many nt:file nodes"
- </para>
- <programlistingco>
- <areaspec>
- <area coords="2" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-baseFile" />
- <area coords="3" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target1" />
- <area coords="4" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target2" />
- <area coords="5" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target3" />
-
- </areaspec>
-
-<programlisting>root
- ├── baseFile (nt:file)
- ├── target1 (nt:file)
- ├── target2 (nt:file)
- └── target3 (nt:file)
-</programlisting>
- <calloutlist>
- <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-baseFile">
- <para>
- jcr:content (nt:resource) jcr:data="Similarity is determined by looking up <emphasis role="bold">terms</emphasis> that are common to nodes. There are some conditions that must be met for a <emphasis role="bold">term</emphasis> to be considered. This is required to limit the number possibly relevant <emphasis role="bold">terms</emphasis>. Only <emphasis role="bold">terms</emphasis> with at least 4 characters are considered. Only <emphasis role="bold">terms</emphasis> that occur at least 2 times in the source node are considered. Only <emphasis role="bold">terms</emphasis> that occur in at least 5 nodes are considered."
- </para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target1">
- <para>
- jcr:content (nt:resource) jcr:data="Similarity is determined by looking up <emphasis role="bold">terms</emphasis> that are common to nodes."
- </para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target2">
- <para>
- jcr:content (nt:resource) jcr:data="There is no you know what"
- </para>
-
- </callout>
- <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target3">
- <para>
- jcr:content (nt:resource) jcr:data=" <emphasis role="bold">Terms</emphasis> occurs here"
- </para>
-
- </callout>
-
- </calloutlist>
-
- </programlistingco>
-
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Similar_Nodes-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Finding_Similar_Nodes-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:resource WHERE SIMILAR(.,'/baseFile/jcr:content')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Finding_Similar_Nodes-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*, nt:resource)[rep:similar(., '/testroot/baseFile/jcr:content')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Finding_Similar_Nodes-Fetching_results">
- <title>Fetching results</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- <literal>NodeIterator</literal> will return <emphasis>/baseFile/jcr:content</emphasis>,<emphasis>/target1/jcr:content</emphasis> and <emphasis>/target3/jcr:content</emphasis>.
- </para>
- <para>
- As you see the base node are also in the result set.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is:
- </para>
- <table id="tabl-Reference_Guide-Finding_Similar_Nodes-Fetching_results-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /baseFile/jcr:content
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
- <row>
- <entry>
- /target1/jcr:content
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
- <row>
- <entry>
- /target3/jcr:content
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- 2674
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/find-similar-nodes.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,218 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Finding_Similar_Nodes">
+ <title>Finding Similar Nodes</title>
+ <formalpara id="form-Reference_Guide-Finding_Similar_Nodes-Task">
+ <title>Task:</title>
+ <para>
+ To find nodes similar to a nominated node at: <literal>/baseFile/jcr:content</literal>.
+ </para>
+
+ </formalpara>
+ <para>
+ In this example, <literal>baseFile</literal> contains text where a keyword (<literal>terms</literal>) is repeated often. This word will be used as a criteria of node similarity (for node baseFile).
+ </para>
+ <note>
+ <title>Reference</title>
+ <para>
+ Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about Similarity and configuration.
+ </para>
+
+ </note>
+ <para>
+ Higlighting support must be added to the configuration (in <filename>test-jcr-config.xml</filename>):
+ </para>
+
+<programlisting language="Java" role="Java"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ ...
+ <property name="support-highlighting" value="true" />
+ ...
+ </properties>
+</query-handler></programlisting>
+ <section id="sect-Reference_Guide-Finding_Similar_Nodes-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains many nt:file nodes"
+ </para>
+ <programlistingco>
+ <areaspec>
+ <area coords="2" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-baseFile" />
+ <area coords="3" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target1" />
+ <area coords="4" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target2" />
+ <area coords="5" id="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target3" />
+
+ </areaspec>
+
+<programlisting>root
+ ├── baseFile (nt:file)
+ ├── target1 (nt:file)
+ ├── target2 (nt:file)
+ └── target3 (nt:file)
+</programlisting>
+ <calloutlist>
+ <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-baseFile">
+ <para>
+ jcr:content (nt:resource) jcr:data="Similarity is determined by looking up <emphasis role="bold">terms</emphasis> that are common to nodes. There are some conditions that must be met for a <emphasis role="bold">term</emphasis> to be considered. This is required to limit the number possibly relevant <emphasis role="bold">terms</emphasis>. Only <emphasis role="bold">terms</emphasis> with at least 4 characters are considered. Only <emphasis role="bold">terms</emphasis> that occur at least 2 times in the source node are considered. Only <emphasis role="bold">terms</emphasis> that occur in at least 5 nodes are considered."
+ </para>
+
+ </callout>
+ <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target1">
+ <para>
+ jcr:content (nt:resource) jcr:data="Similarity is determined by looking up <emphasis role="bold">terms</emphasis> that are common to nodes."
+ </para>
+
+ </callout>
+ <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target2">
+ <para>
+ jcr:content (nt:resource) jcr:data="There is no you know what"
+ </para>
+
+ </callout>
+ <callout arearefs="area-Reference_Guide-Finding_Similar_Nodes-Repository_structure-target3">
+ <para>
+ jcr:content (nt:resource) jcr:data=" <emphasis role="bold">Terms</emphasis> occurs here"
+ </para>
+
+ </callout>
+
+ </calloutlist>
+
+ </programlistingco>
+
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Similar_Nodes-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Finding_Similar_Nodes-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:resource WHERE SIMILAR(.,'/baseFile/jcr:content')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Finding_Similar_Nodes-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*, nt:resource)[rep:similar(., '/testroot/baseFile/jcr:content')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Finding_Similar_Nodes-Fetching_results">
+ <title>Fetching results</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ <literal>NodeIterator</literal> will return <emphasis>/baseFile/jcr:content</emphasis>,<emphasis>/target1/jcr:content</emphasis> and <emphasis>/target3/jcr:content</emphasis>.
+ </para>
+ <para>
+ As you see the base node are also in the result set.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Finding_Similar_Nodes-Fetching_results-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /baseFile/jcr:content
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /target1/jcr:content
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ /target3/jcr:content
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ 2674
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,156 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node">
- <title>Fulltext Search by All Properties in Node</title>
- <formalpara id="form-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Task">
- <title>Task:</title>
- <para>
- Find nodes with mixin type <literal>mix:title</literal> where any property contains <literal>break</literal> string.
- </para>
-
- </formalpara>
- <para>
-
- </para>
- <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository filled with different nodes with mixin type <literal>mix:title</literal> and different values of <literal>jcr:title</literal> and <literal>jcr:description</literal> properties.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title ='Star Wars' jcr:description = 'Darth rules!!'
- ├── document2 (mix:title) jcr:title ='Prison break' jcr:description = 'Run, Forest, run ))'
- └── document3 (mix:title) jcr:title ='Titanic' jcr:description = 'An iceberg breaks a ship.'
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(*,'break')";
-// create query
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// we want find 'document1'
-String xpathStatement = "//element(*,mix:title)[jcr:contains(.,'break')]";
-// create query
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-while(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> and <emphasis>document2</emphasis>.
- </para>
- <para>
- The output can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Prison break.
- </entry>
- <entry>
- Run, Forest, run ))
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document2
- </entry>
-
- </row>
- <row>
- <entry>
- Titanic
- </entry>
- <entry>
- An iceberg breaks a ship.
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document3
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-all-properties.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,156 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node">
+ <title>Fulltext Search by All Properties in Node</title>
+ <formalpara id="form-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Task">
+ <title>Task:</title>
+ <para>
+ Find nodes with mixin type <literal>mix:title</literal> where any property contains <literal>break</literal> string.
+ </para>
+
+ </formalpara>
+ <para>
+
+ </para>
+ <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository filled with different nodes with mixin type <literal>mix:title</literal> and different values of <literal>jcr:title</literal> and <literal>jcr:description</literal> properties.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title ='Star Wars' jcr:description = 'Darth rules!!'
+ ├── document2 (mix:title) jcr:title ='Prison break' jcr:description = 'Run, Forest, run ))'
+ └── document3 (mix:title) jcr:title ='Titanic' jcr:description = 'An iceberg breaks a ship.'
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(*,'break')";
+// create query
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// we want find 'document1'
+String xpathStatement = "//element(*,mix:title)[jcr:contains(.,'break')]";
+// create query
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+while(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> and <emphasis>document2</emphasis>.
+ </para>
+ <para>
+ The output can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Fulltext_Search_by_All_Properties_in_Node-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Prison break.
+ </entry>
+ <entry>
+ Run, Forest, run ))
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document2
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ Titanic
+ </entry>
+ <entry>
+ An iceberg breaks a ship.
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document3
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,138 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Fulltext_Search_by_Property">
- <title>Fulltext Search by Property</title>
- <formalpara id="form-Reference_Guide-Fulltext_Search_by_Property-Task">
- <title>Task:</title>
- <para>
- Find all nodes containing a mixin type <literal>mix:title</literal> and whose <literal>jcr:description</literal> contains the string; <emphasis>forest</emphasis>.
- </para>
-
- </formalpara>
- <para>
-
- </para>
- <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository is filled with nodes of the mixin type <literal>mix:title</literal> and different values of the <literal>jcr:description</literal> property.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:description = "The quick brown fox jumps over the lazy dog."
- ├── document2 (mix:title) jcr:description = "The brown fox lives in a forest."
- ├── document3 (mix:title) jcr:description = "The fox is a nice animal."
- └── document4 (nt:unstructured) jcr:description = "There is the word forest, too."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Query_Execution">
- <title>Query Execution</title>
-
- <example id="exam-Reference_Guide-Fulltext_Search_by_Property-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// we want find document which contains "forest" word
-String sqlStatement = "SELECT \* FROM mix:title WHERE CONTAINS(jcr:description, 'forest')";
-// create query
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Fulltext_Search_by_Property-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// we want find document which contains "forest" word
-String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:description, 'forest')]";
-// create query
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the appropriate nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis>.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Fulltext_Search_by_Property-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:description
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- The brown fox lives in forest.
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document2
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/fulltext-search-by-property.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,138 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Fulltext_Search_by_Property">
+ <title>Fulltext Search by Property</title>
+ <formalpara id="form-Reference_Guide-Fulltext_Search_by_Property-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes containing a mixin type <literal>mix:title</literal> and whose <literal>jcr:description</literal> contains the string; <emphasis>forest</emphasis>.
+ </para>
+
+ </formalpara>
+ <para>
+
+ </para>
+ <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository is filled with nodes of the mixin type <literal>mix:title</literal> and different values of the <literal>jcr:description</literal> property.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:description = "The quick brown fox jumps over the lazy dog."
+ ├── document2 (mix:title) jcr:description = "The brown fox lives in a forest."
+ ├── document3 (mix:title) jcr:description = "The fox is a nice animal."
+ └── document4 (nt:unstructured) jcr:description = "There is the word forest, too."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Query_Execution">
+ <title>Query Execution</title>
+
+ <example id="exam-Reference_Guide-Fulltext_Search_by_Property-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// we want find document which contains "forest" word
+String sqlStatement = "SELECT \* FROM mix:title WHERE CONTAINS(jcr:description, 'forest')";
+// create query
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Fulltext_Search_by_Property-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// we want find document which contains "forest" word
+String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:description, 'forest')]";
+// create query
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Fulltext_Search_by_Property-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the appropriate nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document2</emphasis>.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Fulltext_Search_by_Property-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ The brown fox lives in forest.
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document2
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,150 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search">
- <title>Highlighting Results of Fulltext Search</title>
- <para>
- The highlighting functionality is also called excerption (refer to the Excerpt configuration information in <xref linkend="chap-Reference_Guide-Search_Configuration" />).
- </para>
- <para>
- This query will find and highlight instances of <emphasis>eXo</emphasis> and <emphasis>implementation</emphasis> within fulltext search results.
- </para>
- <para>
- Highlighting is not a default feature so it must be set in <filename>jcr-config.xml</filename>. The excerpt provider must also be defined:
- </para>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- ...
- <property name="support-highlighting" value="true" />
- <property name="excerptprovider-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.WeightedHTMLExcerpt"/>
- ...
- <properties>
-</query-handler></programlisting>
- <para>
- This example uses a rule for all nodes with the primary node type <literal>nt:unstructured</literal>, where the property <parameter>rule</parameter> equals <literal>excerpt</literal>. Within those nodes, exclude the property <literal>title</literal> from the highlighting feature and set the <parameter>text</parameter>" property as highlightable.
- </para>
- <para>
- The <filename>indexing-configuration.xml</filename> must contain the following rule:
- </para>
-
-<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured" condition="@rule='excerpt'">
- <property useInExcerpt="false">title</property>
- <property>text</property>
-</index-rule></programlisting>
- <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains a single node with the primary type <literal>nt:unstructured</literal>:
- </para>
-
-<programlisting>document (nt:unstructured)
- ├── rule = "excerpt"
- ├── title = "eXoJCR"
- └── text = "eXo is a JCR implementation"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT rep:excerpt() FROM nt:unstructured WHERE CONTAINS(*, 'eXo implementation')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'eXo implementation')]/rep:excerpt(.)";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Fetching_result">
- <title>Fetching result</title>
- <para>
- Below is the result table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is
- </para>
- <table id="tabl-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- rep:excerpt()
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- \<div\>\<span\>\<strong\>eXo\</strong\> is a JCR \<strong\>implementation\</strong\>\</span\>\</div\>
- </entry>
- <entry>
- /testroot/node1
- </entry>
- <entry>
- 335
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
- <para>
- As you see, instances of <emphasis>eXo</emphasis> and <emphasis>implementation</emphasis> are highlighted.
- </para>
- <para>
- You can also get the exact <literal>rep:excerpt</literal> value:
- </para>
-
-<programlisting language="Java" role="Java">RowIterator rows = result.getRows();
-Value excerpt = rows.nextRow().getValue("rep:excerpt(.)");
-// excerpt will be equal to "<div><span\><strong>eXo</strong> is a JCR <strong>implementation</strong></span></div>"</programlisting>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/higlight.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,150 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search">
+ <title>Highlighting Results of Fulltext Search</title>
+ <para>
+ The highlighting functionality is also called excerption (refer to the Excerpt configuration information in <xref linkend="chap-Reference_Guide-Search_Configuration" />).
+ </para>
+ <para>
+ This query will find and highlight instances of <emphasis>eXo</emphasis> and <emphasis>implementation</emphasis> within fulltext search results.
+ </para>
+ <para>
+ Highlighting is not a default feature so it must be set in <filename>jcr-config.xml</filename>. The excerpt provider must also be defined:
+ </para>
+
+<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ ...
+ <property name="support-highlighting" value="true" />
+ <property name="excerptprovider-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.WeightedHTMLExcerpt"/>
+ ...
+ <properties>
+</query-handler></programlisting>
+ <para>
+ This example uses a rule for all nodes with the primary node type <literal>nt:unstructured</literal>, where the property <parameter>rule</parameter> equals <literal>excerpt</literal>. Within those nodes, exclude the property <literal>title</literal> from the highlighting feature and set the <parameter>text</parameter>" property as highlightable.
+ </para>
+ <para>
+ The <filename>indexing-configuration.xml</filename> must contain the following rule:
+ </para>
+
+<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured" condition="@rule='excerpt'">
+ <property useInExcerpt="false">title</property>
+ <property>text</property>
+</index-rule></programlisting>
+ <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains a single node with the primary type <literal>nt:unstructured</literal>:
+ </para>
+
+<programlisting>document (nt:unstructured)
+ ├── rule = "excerpt"
+ ├── title = "eXoJCR"
+ └── text = "eXo is a JCR implementation"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT rep:excerpt() FROM nt:unstructured WHERE CONTAINS(*, 'eXo implementation')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'eXo implementation')]/rep:excerpt(.)";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ Below is the result table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is
+ </para>
+ <table id="tabl-Reference_Guide-Highlighting_Results_of_Fulltext_Search-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ rep:excerpt()
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ \<div\>\<span\>\<strong\>eXo\</strong\> is a JCR \<strong\>implementation\</strong\>\</span\>\</div\>
+ </entry>
+ <entry>
+ /testroot/node1
+ </entry>
+ <entry>
+ 335
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+ <para>
+ As you see, instances of <emphasis>eXo</emphasis> and <emphasis>implementation</emphasis> are highlighted.
+ </para>
+ <para>
+ You can also get the exact <literal>rep:excerpt</literal> value:
+ </para>
+
+<programlisting language="Java" role="Java">RowIterator rows = result.getRows();
+Value excerpt = rows.nextRow().getValue("rep:excerpt(.)");
+// excerpt will be equal to "<div><span\><strong>eXo</strong> is a JCR <strong>implementation</strong></span></div>"</programlisting>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,212 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Ignoring_Accent_Symbols">
- <title>Ignoring Accent Symbols</title>
- <formalpara id="form-Reference_Guide-Ignoring_Accent_Symbols-Task">
- <title>Task:</title>
- <para>
- Create a new Analyzer to normalize accented characters (such as; é,è,à), set the new Analyzer in QueryHandler configuration, and create a query to check it.
- </para>
-
- </formalpara>
- <para>
- There are two ways of setting up a new Analyzer:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Create a descendant class of SearchIndex with the new Analyzer (refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more infomation).
- </para>
-
- </listitem>
- <listitem>
- <para>
- Register new Analyzer in QueryHandler configuration.
- </para>
-
- </listitem>
-
- </orderedlist>
- <procedure id="proc-Reference_Guide-Ignoring_Accent_Symbols-Creating_and_Registering_a_New_Analyzer">
- <title>Creating and Registering a New Analyzer</title>
- <step>
- <para>
- Create a new Analyzer (<literal>MyAnalyzer</literal>):
- </para>
-
-<programlisting language="Java" role="Java">public class MyAnalyzer extends Analyzer
-{
- @Override
- public TokenStream tokenStream(String fieldName, Reader reader)
- {
- StandardTokenizer tokenStream = new StandardTokenizer(reader);
- // process all text with standard filter
- // removes 's (as 's in "Peter's") from the end of words and removes dots from acronyms.
- TokenStream result = new StandardFilter(tokenStream);
- // this filter normalizes token text to lower case
- result = new LowerCaseFilter(result);
- // this one replaces accented characters in the ISO Latin 1 character set (ISO-8859-1) by their unaccented equivalents
- result = new ISOLatin1AccentFilter(result);
- // and finally return token stream
- return result;
- }
-}</programlisting>
-
- </step>
- <step>
- <para>
- Register the new Analyzer in QueryHandler configuration:
- </para>
-
-<programlisting language="XML" role="XML"><workspace name="ws">
- ...
- <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- <property name="analyzer" value="org.exoplatform.services.jcr.impl.core.MyAnalyzer"/>
- ...
- </properties>
- </query-handler>
- ...
-</workspace></programlisting>
-
- </step>
- <step>
- <para>
- Test the new Analyzer by following the example below (query to find nodes with mixin type <literal>mix:title</literal> where <parameter>jcr:title</parameter> contains <emphasis>tréma</emphasis> and <literal>naïve</literal> strings).
- </para>
-
- </step>
-
- </procedure>
-
- <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository filled by nodes with mixin type <literal>mix:title</literal> and different values of <parameter>jcr:title</parameter> property.
- </para>
-
-<programlisting>root
- ├── node1 (mix:title) jcr:title = "tréma blabla naïve"
- └── node2 (mix:title) jcr:description = "trema come text naive"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Ignoring_Accent_Symbols-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:title, 'tr\u00E8ma na\u00EFve')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Ignoring_Accent_Symbols-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:title, 'tr\u00E8ma na\u00EFve')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch applicable nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> <emphasis role="bold">and</emphasis> <emphasis>node2</emphasis>. Since <literal>MyAnalyzer</literal> transforms <emphasis>tréma</emphasis> word to <emphasis>trema</emphasis>, <emphasis>node2</emphasis> matches our constraints as well.
- </para>
- <para>
- The output can be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is
- </para>
- <table id="tabl-Reference_Guide-Ignoring_Accent_Symbols-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- cr:title
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- cr:path
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- trèma blabla naïve
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /node1
- </entry>
-
- </row>
- <row>
- <entry>
- trema come text naive
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /node2
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/ignore-accent-symbols.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,212 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Ignoring_Accent_Symbols">
+ <title>Ignoring Accent Symbols</title>
+ <formalpara id="form-Reference_Guide-Ignoring_Accent_Symbols-Task">
+ <title>Task:</title>
+ <para>
+ Create a new Analyzer to normalize accented characters (such as; é,è,à), set the new Analyzer in QueryHandler configuration, and create a query to check it.
+ </para>
+
+ </formalpara>
+ <para>
+ There are two ways of setting up a new Analyzer:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Create a descendant class of SearchIndex with the new Analyzer (refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more infomation).
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Register new Analyzer in QueryHandler configuration.
+ </para>
+
+ </listitem>
+
+ </orderedlist>
+ <procedure id="proc-Reference_Guide-Ignoring_Accent_Symbols-Creating_and_Registering_a_New_Analyzer">
+ <title>Creating and Registering a New Analyzer</title>
+ <step>
+ <para>
+ Create a new Analyzer (<literal>MyAnalyzer</literal>):
+ </para>
+
+<programlisting language="Java" role="Java">public class MyAnalyzer extends Analyzer
+{
+ @Override
+ public TokenStream tokenStream(String fieldName, Reader reader)
+ {
+ StandardTokenizer tokenStream = new StandardTokenizer(reader);
+ // process all text with standard filter
+ // removes 's (as 's in "Peter's") from the end of words and removes dots from acronyms.
+ TokenStream result = new StandardFilter(tokenStream);
+ // this filter normalizes token text to lower case
+ result = new LowerCaseFilter(result);
+ // this one replaces accented characters in the ISO Latin 1 character set (ISO-8859-1) by their unaccented equivalents
+ result = new ISOLatin1AccentFilter(result);
+ // and finally return token stream
+ return result;
+ }
+}</programlisting>
+
+ </step>
+ <step>
+ <para>
+ Register the new Analyzer in QueryHandler configuration:
+ </para>
+
+<programlisting language="XML" role="XML"><workspace name="ws">
+ ...
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ <property name="analyzer" value="org.exoplatform.services.jcr.impl.core.MyAnalyzer"/>
+ ...
+ </properties>
+ </query-handler>
+ ...
+</workspace></programlisting>
+
+ </step>
+ <step>
+ <para>
+ Test the new Analyzer by following the example below (query to find nodes with mixin type <literal>mix:title</literal> where <parameter>jcr:title</parameter> contains <emphasis>tréma</emphasis> and <literal>naïve</literal> strings).
+ </para>
+
+ </step>
+
+ </procedure>
+
+ <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository filled by nodes with mixin type <literal>mix:title</literal> and different values of <parameter>jcr:title</parameter> property.
+ </para>
+
+<programlisting>root
+ ├── node1 (mix:title) jcr:title = "tréma blabla naïve"
+ └── node2 (mix:title) jcr:description = "trema come text naive"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Ignoring_Accent_Symbols-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:title, 'tr\u00E8ma na\u00EFve')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Ignoring_Accent_Symbols-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:title, 'tr\u00E8ma na\u00EFve')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ignoring_Accent_Symbols-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch applicable nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> <emphasis role="bold">and</emphasis> <emphasis>node2</emphasis>. Since <literal>MyAnalyzer</literal> transforms <emphasis>tréma</emphasis> word to <emphasis>trema</emphasis>, <emphasis>node2</emphasis> matches our constraints as well.
+ </para>
+ <para>
+ The output can be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is
+ </para>
+ <table id="tabl-Reference_Guide-Ignoring_Accent_Symbols-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ cr:title
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ cr:path
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ trèma blabla naïve
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /node1
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ trema come text naive
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /node2
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,142 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Changing_Priority_of_Node">
- <title>Changing Priority of Node</title>
- <formalpara id="form-Reference_Guide-Changing_Priority_of_Node-Task">
- <title>Task:</title>
- <para>
- Set different boost values for predefined nodes, and check the effect of this change by selecting those nodes and order them by <literal>jcr:score</literal>.
- </para>
-
- </formalpara>
- <para>
- The default boost value is <literal>1.0</literal>. Higher boost values (a reasonable range is between <literal>1.0</literal> and <literal>5.0</literal>) will yield a higher score value and appear as more relevant.
- </para>
- <para>
- Refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more information.
- </para>
- <section id="sect-Reference_Guide-Changing_Priority_of_Node-Indexing_configuration">
- <title>Indexing configuration</title>
- <para>
- In this configuration the boost values for <literal>nt:unstructured</literal> nodes <emphasis>text</emphasis> property will be increased.
- </para>
- <example id="exam-Reference_Guide-Indexing_configuration-indexing_config.xml">
- <title>indexing-config.xml:</title>
-
-<programlisting language="XML" role="XML"><!--
-This rule actualy do nothing. 'text' property has default boost value.
--->
-<index-rule nodeType="nt:unstructured" condition="@rule='boost1'">
- <!-- default boost: 1.0 -->
- <property>text</property>
-</index-rule>
-
-<!--
-Set boost value as 2.0 for 'text' property in nt:unstructured nodes where property 'rule' equal to 'boost2'
--->
-<index-rule nodeType="nt:unstructured" condition="@rule='boost2'">
- <!-- boost: 2.0 -->
- <property boost="2.0">text</property>
-</index-rule>
-
-<!--
-Set boost value as 3.0 for 'text' property in nt:unstructured nodes where property 'rule' equal to 'boost3'
--->
-<index-rule nodeType="nt:unstructured" condition="@rule='boost3'">
- <!-- boost: 3.0 -->
- <property boost="3.0">text</property>
-</index-rule></programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Changing_Priority_of_Node-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains many nodes with primary type <literal>nt:unstructured</literal>. Each node contains <emphasis>text</emphasis> property and <emphasis>rule</emphasis> property with different values.
- </para>
-
-<programlisting>root
- ├── node1(nt:unstructured) rule='boost1' text='The quick brown fox jump...'
- ├── node2(nt:unstructured) rule='boost2' text='The quick brown fox jump...'
- └── node3(nt:unstructured) rule='boost3' text='The quick brown fox jump...'
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Changing_Priority_of_Node-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Changing_Priority_of_Node-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(text, 'quick') ORDER BY jcr:score() DESC";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Changing_Priority_of_Node-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(@text, 'quick')] order by @jcr:score descending";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Changing_Priority_of_Node-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return the nodes in this order:
- </para>
- <orderedlist>
- <listitem>
- <para>
- node3
- </para>
-
- </listitem>
- <listitem>
- <para>
- node2
- </para>
-
- </listitem>
- <listitem>
- <para>
- node1
- </para>
-
- </listitem>
-
- </orderedlist>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/index-boost-value.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,142 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Changing_Priority_of_Node">
+ <title>Changing Priority of Node</title>
+ <formalpara id="form-Reference_Guide-Changing_Priority_of_Node-Task">
+ <title>Task:</title>
+ <para>
+ Set different boost values for predefined nodes, and check the effect of this change by selecting those nodes and order them by <literal>jcr:score</literal>.
+ </para>
+
+ </formalpara>
+ <para>
+ The default boost value is <literal>1.0</literal>. Higher boost values (a reasonable range is between <literal>1.0</literal> and <literal>5.0</literal>) will yield a higher score value and appear as more relevant.
+ </para>
+ <para>
+ Refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more information.
+ </para>
+ <section id="sect-Reference_Guide-Changing_Priority_of_Node-Indexing_configuration">
+ <title>Indexing configuration</title>
+ <para>
+ In this configuration the boost values for <literal>nt:unstructured</literal> nodes <emphasis>text</emphasis> property will be increased.
+ </para>
+ <example id="exam-Reference_Guide-Indexing_configuration-indexing_config.xml">
+ <title>indexing-config.xml:</title>
+
+<programlisting language="XML" role="XML"><!--
+This rule actualy do nothing. 'text' property has default boost value.
+-->
+<index-rule nodeType="nt:unstructured" condition="@rule='boost1'">
+ <!-- default boost: 1.0 -->
+ <property>text</property>
+</index-rule>
+
+<!--
+Set boost value as 2.0 for 'text' property in nt:unstructured nodes where property 'rule' equal to 'boost2'
+-->
+<index-rule nodeType="nt:unstructured" condition="@rule='boost2'">
+ <!-- boost: 2.0 -->
+ <property boost="2.0">text</property>
+</index-rule>
+
+<!--
+Set boost value as 3.0 for 'text' property in nt:unstructured nodes where property 'rule' equal to 'boost3'
+-->
+<index-rule nodeType="nt:unstructured" condition="@rule='boost3'">
+ <!-- boost: 3.0 -->
+ <property boost="3.0">text</property>
+</index-rule></programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Changing_Priority_of_Node-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains many nodes with primary type <literal>nt:unstructured</literal>. Each node contains <emphasis>text</emphasis> property and <emphasis>rule</emphasis> property with different values.
+ </para>
+
+<programlisting>root
+ ├── node1(nt:unstructured) rule='boost1' text='The quick brown fox jump...'
+ ├── node2(nt:unstructured) rule='boost2' text='The quick brown fox jump...'
+ └── node3(nt:unstructured) rule='boost3' text='The quick brown fox jump...'
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Changing_Priority_of_Node-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Changing_Priority_of_Node-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(text, 'quick') ORDER BY jcr:score() DESC";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Changing_Priority_of_Node-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(@text, 'quick')] order by @jcr:score descending";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Changing_Priority_of_Node-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return the nodes in this order:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ node3
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ node2
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ node1
+ </para>
+
+ </listitem>
+
+ </orderedlist>
+
+ </section>
+
+
+</section>
+
+
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/jcr-query-usecases.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -80,283 +80,18 @@
<para>
The <literal>jcr:score</literal> is calculated as; <literal>(lucene score)*1000f</literal>.
</para>
- <para>
+ <!--<para>
Score may be increased for specified nodes, see <xref linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
</para>
<para>
- Also, see an example in <xref linkend="sect-Reference_Guide-Ordering_by_Score" />
- </para>
+ Also, see an example in sect-Reference_Guide-Ordering_by_Score />
+ </para>-->
</section>
</section>
- <!-- DOCS NOTE: The following 'ToC' sections are not required in Publican builds if the publican.cfg parameter
- "generate_section_toc_level:" is set to "3" --> <!-- <section id="sect-Reference_Guide-JCR_Query_Usecases-Query_result_settings">
- <title>Query result settings</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-SetOffset_and_SetLimit" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Type_Constraints">
- <title>Type Constraints</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_All_Nodes" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Nodes_by_Primary_Type" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Nodes_by_Mixin_Type" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Property_Constraints">
- <title>Property Constraints</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Property_Comparison" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-LIKE_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Escaping_in_LIKE_Statements" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-NOT_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-AND_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-OR_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Property_Existence_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Nodes_in_a_Case_Insensitive_Way" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Date_Property_Comparison" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Node_Name_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Multivalue_Property_Comparison" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Path_Constraint">
- <title>Path Constraint</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Exact_Path_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Child_Node_Constraint" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_All_Descendant_Nodes" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Ordering_specifying">
- <title>Ordering specifying</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Sorting_Nodes_by_Property" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Ordering_by_Score" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Ordering_by_Path_or_Name" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section>
-
- <section id="sect-Reference_Guide-JCR_Query_Usecases-Indexing_rules_and_additional_features">
- <title>Indexing rules and additional features</title>
- <itemizedlist>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_a_node_by_content_of_child_node" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Highlighting_Results_of_Fulltext_Search" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Changing_Priority_of_Node" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Searching_By_Synonym" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Checking_the_spelling_of_Phrase" />
- </para>
-
- </listitem>
- <listitem>
- <para>
- <xref linkend="sect-Reference_Guide-Finding_Similar_Nodes" />
- </para>
-
- </listitem>
-
- </itemizedlist>
-
- </section> --> <section id="sect-Reference_Guide-JCR_Query_Usecases-Query_Examples">
- <title>Query Examples</title>
- <xi:include href="offset-and-limit.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-all-nodes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-by-primary-type.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-by-mixin-type.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="property-comparison.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="like-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="escaping-like-statements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="not-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="and-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="or-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="property-existance-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-nodes-case-insensitive.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="date-property-comparison.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="node-name-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="multivalue-property-comparison.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="exact-path-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="child-node-constraint.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-all-descendant-nodes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-property.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-descendant.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-score.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="order-by-path-or-name.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="fulltext-search-by-property.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="fulltext-search-by-all-properties.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="ignore-accent-symbols.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="aggregation-rule.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="index-boost-value.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="node-scope-index.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="regexp-indexing-rule.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="higlight.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="synonim-provider.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="spell-checker.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="find-similar-nodes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-
- </section>
-
<section id="sect-Reference_Guide-JCR_Query_Usecases-Tips_and_tricks">
<title>Tips and tricks</title>
<xi:include href="tip-nodename-with-number.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,159 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-LIKE_Constraint">
- <title>LIKE Constraint</title>
- <formalpara id="form-Reference_Guide-LIKE_Constraint-Task">
- <title>Task:</title>
- <para>
- Find all nodes with mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> starts with <literal>P</literal>.
- </para>
-
- </formalpara>
- <note>
- <para>
- Further useful information can be found in <xref linkend="sect-Reference_Guide-NOT_Constraint" />.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-LIKE_Constraint-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains three mix:title nodes, where each jcr:title has a different value.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Darth rules!!"
- ├── document2 (mix:title) jcr:title="Prison break" jcr:description="Run, Forest, run ))"
- └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-LIKE_Constraint-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-LIKE_Constraint-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title LIKE 'P%'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-LIKE_Constraint-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[jcr:like(@jcr:title, 'P%')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-LIKE_Constraint-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return "document2" and "document3".
- </para>
- <para>
- The output can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is
- <table id="tabl-Reference_Guide-LIKE_Constraint-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Prison break
- </entry>
- <entry>
- Run, Forest, run ))
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 4713
- </entry>
-
- </row>
- <row>
- <entry>
- Panopticum
- </entry>
- <entry>
- It's imagine film
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 5150
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/like-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,159 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-LIKE_Constraint">
+ <title>LIKE Constraint</title>
+ <formalpara id="form-Reference_Guide-LIKE_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> starts with <literal>P</literal>.
+ </para>
+
+ </formalpara>
+ <note>
+ <para>
+ Further useful information can be found in <xref linkend="sect-Reference_Guide-NOT_Constraint" />.
+ </para>
+
+ </note>
+ <section id="sect-Reference_Guide-LIKE_Constraint-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains three mix:title nodes, where each jcr:title has a different value.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Darth rules!!"
+ ├── document2 (mix:title) jcr:title="Prison break" jcr:description="Run, Forest, run ))"
+ └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-LIKE_Constraint-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-LIKE_Constraint-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title LIKE 'P%'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-LIKE_Constraint-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[jcr:like(@jcr:title, 'P%')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-LIKE_Constraint-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return "document2" and "document3".
+ </para>
+ <para>
+ The output can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is
+ <table id="tabl-Reference_Guide-LIKE_Constraint-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Prison break
+ </entry>
+ <entry>
+ Run, Forest, run ))
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 4713
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ Panopticum
+ </entry>
+ <entry>
+ It's imagine film
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 5150
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,144 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Multivalue_Property_Comparison">
- <title>Multivalue Property Comparison</title>
- <formalpara id="form-Reference_Guide-Multivalue_Property_Comparison-Task">
- <title>Task:</title>
- <para>
- To find all nodes with the primary type <literal>nt:unstructured</literal> whose property <parameter>multiprop</parameter> contains both values <emphasis>one</emphasis> and <emphasis>two</emphasis>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains nt:unstructured nodes with different 'multiprop' properties.
- </para>
-
-<programlisting>root
- ├── node1 (nt:unstructured) multiprop = [ "one","two" ]
- ├── node1 (nt:unstructured) multiprop = [ "one","two","three" ]
- └── node1 (nt:unstructured) multiprop = [ "one","five" ]
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Multivalue_Property_Comparison-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:unstructured WHERE multiprop = 'one' AND multiprop = 'two'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Multivalue_Property_Comparison-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:unstructured)[@multiprop = 'one' and @multiprop = 'two']";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node2</emphasis>.
- </para>
- <para>
- The results can be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is:
- <table id="tabl-Reference_Guide-Multivalue_Property_Comparison-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:primarytyp
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node1
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node2
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/multivalue-property-comparison.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,144 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Multivalue_Property_Comparison">
+ <title>Multivalue Property Comparison</title>
+ <formalpara id="form-Reference_Guide-Multivalue_Property_Comparison-Task">
+ <title>Task:</title>
+ <para>
+ To find all nodes with the primary type <literal>nt:unstructured</literal> whose property <parameter>multiprop</parameter> contains both values <emphasis>one</emphasis> and <emphasis>two</emphasis>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains nt:unstructured nodes with different 'multiprop' properties.
+ </para>
+
+<programlisting>root
+ ├── node1 (nt:unstructured) multiprop = [ "one","two" ]
+ ├── node1 (nt:unstructured) multiprop = [ "one","two","three" ]
+ └── node1 (nt:unstructured) multiprop = [ "one","five" ]
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Multivalue_Property_Comparison-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:unstructured WHERE multiprop = 'one' AND multiprop = 'two'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Multivalue_Property_Comparison-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:unstructured)[@multiprop = 'one' and @multiprop = 'two']";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Multivalue_Property_Comparison-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node2</emphasis>.
+ </para>
+ <para>
+ The results can be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is:
+ <table id="tabl-Reference_Guide-Multivalue_Property_Comparison-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:primarytyp
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node1
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node2
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,133 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Node_Name_Constraint">
- <title>Node Name Constraint</title>
- <formalpara id="form-Reference_Guide-Node_Name_Constraint-Task">
- <title>Task:</title>
- <para>
- Find all nodes with primary type <literal>nt:file</literal> whose node name is <parameter>document</parameter>. The node name is accessible by a function called <code>fn:name()</code>.
- </para>
-
- </formalpara>
- <note>
- <title>Note</title>
- <para>
- <code>fn:name()</code> can be used ONLY with an equal(<literal>=</literal>) comparison.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-Node_Name_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains nt:file nodes with different names.
- </para>
-
-<programlisting>root
- ├── document1 (nt:file)
- ├── file (nt:file)
- └── somename (nt:file)
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Node_Name_Constraint-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Node_Name_Constraint-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:file WHERE fn:name() = 'document'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Node_Name_Constraint-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:file)[fn:name() = 'document']";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Node_Name_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch appropriate nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return the node whose <literal>fn:name</literal> equals <emphasis>document</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-Node_Name_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- /document1
- </entry>
- <entry>
- 3575
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-name-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Node_Name_Constraint">
+ <title>Node Name Constraint</title>
+ <formalpara id="form-Reference_Guide-Node_Name_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with primary type <literal>nt:file</literal> whose node name is <parameter>document</parameter>. The node name is accessible by a function called <code>fn:name()</code>.
+ </para>
+
+ </formalpara>
+ <note>
+ <title>Note</title>
+ <para>
+ <code>fn:name()</code> can be used ONLY with an equal(<literal>=</literal>) comparison.
+ </para>
+
+ </note>
+ <section id="sect-Reference_Guide-Node_Name_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains nt:file nodes with different names.
+ </para>
+
+<programlisting>root
+ ├── document1 (nt:file)
+ ├── file (nt:file)
+ └── somename (nt:file)
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Node_Name_Constraint-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Node_Name_Constraint-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:file WHERE fn:name() = 'document'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Node_Name_Constraint-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:file)[fn:name() = 'document']";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Node_Name_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch appropriate nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return the node whose <literal>fn:name</literal> equals <emphasis>document</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-Node_Name_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 3575
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,155 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope">
- <title>Removing Nodes Property From Indexing Scope</title>
- <para>
- This example will cover excluding a <emphasis>text</emphasis> property of <literal>nt:unstructured</literal> nodes from being indexed. This means the node will not be found by a search for the content of this property, even if it accepts all constraints.
- </para>
- <para>
- Add appropriate rules to the <filename>indexing-configuration.xml</filename> file:
- </para>
-
-<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured" condition="@rule='nsiTrue'">
- <!-- default value for nodeScopeIndex is true -->
- <property>text</property>
-</index-rule>
-
-<index-rule nodeType="nt:unstructured" condition="@rule='nsiFalse'">
- <!-- do not include text in node scope index -->
- <property nodeScopeIndex="false">text</property>
-</index-rule></programlisting>
- <para>
- Refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more details.
- </para>
- <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Repository_structure">
- <title>Repository structure</title>
- <para>
- The repository contains <literal>nt:unstructured</literal> nodes, with same <emphasis>text</emphasis> property and different <emphasis>rule</emphasis> properties.
- </para>
-
-<programlisting>root
- ├── node1 (nt:unstructured) rule="nsiTrue" text="The quick brown fox ..."
- ├── node2 (nt:unstructured) rule="nsiFalse" text="The quick brown fox ..."
- └── node3 (nt:unstructured) text="The quick brown fox ..." // as you see this node not mentioned in indexing-configuration
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(*,'quick')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'quick')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node3</emphasis>. <emphasis>Node2</emphasis> is not in the result set.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:primarytype
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node1
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node3
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/node-scope-index.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,155 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope">
+ <title>Removing Nodes Property From Indexing Scope</title>
+ <para>
+ This example will cover excluding a <emphasis>text</emphasis> property of <literal>nt:unstructured</literal> nodes from being indexed. This means the node will not be found by a search for the content of this property, even if it accepts all constraints.
+ </para>
+ <para>
+ Add appropriate rules to the <filename>indexing-configuration.xml</filename> file:
+ </para>
+
+<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured" condition="@rule='nsiTrue'">
+ <!-- default value for nodeScopeIndex is true -->
+ <property>text</property>
+</index-rule>
+
+<index-rule nodeType="nt:unstructured" condition="@rule='nsiFalse'">
+ <!-- do not include text in node scope index -->
+ <property nodeScopeIndex="false">text</property>
+</index-rule></programlisting>
+ <para>
+ Refer to <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more details.
+ </para>
+ <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Repository_structure">
+ <title>Repository structure</title>
+ <para>
+ The repository contains <literal>nt:unstructured</literal> nodes, with same <emphasis>text</emphasis> property and different <emphasis>rule</emphasis> properties.
+ </para>
+
+<programlisting>root
+ ├── node1 (nt:unstructured) rule="nsiTrue" text="The quick brown fox ..."
+ ├── node2 (nt:unstructured) rule="nsiFalse" text="The quick brown fox ..."
+ └── node3 (nt:unstructured) text="The quick brown fox ..." // as you see this node not mentioned in indexing-configuration
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(*,'quick')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'quick')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node3</emphasis>. <emphasis>Node2</emphasis> is not in the result set.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Removing_Nodes_Property_From_Indexing_Scope-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:primarytype
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node1
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node3
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,138 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-NOT_Constraint">
- <title>NOT Constraint</title>
- <formalpara id="form-Reference_Guide-NOT_Constraint-Task">
- <title>Task:</title>
- <para>
- Find all nodes with a mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> does <emphasis role="bold">not</emphasis> start with a <literal>P</literal> symbol.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-NOT_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains a mix:title nodes, where the jcr:title has different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Darth rules!!"
- ├── document2 (mix:title) jcr:title="Prison break" jcr:description="Run, Forest, run ))"
- └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-NOT_Constraint-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-NOT_Constraint-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE NOT jcr:title LIKE 'P%'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-NOT_Constraint-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[not(jcr:like(@jcr:title, 'P%'))]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-NOT_Constraint-Fetching_the_result">
- <title>Fetching the result</title>
- <para>
- To fetch the matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is
- <table id="tabl-Reference_Guide-NOT_Constraint-Fetching_the_result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Star wars
- </entry>
- <entry>
- Dart rules!!
- </entry>
- <entry>
- /document1
- </entry>
- <entry>
- 4713
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/not-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,138 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-NOT_Constraint">
+ <title>NOT Constraint</title>
+ <formalpara id="form-Reference_Guide-NOT_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with a mixin type <literal>mix:title</literal> and where the property <parameter>jcr:title</parameter> does <emphasis role="bold">not</emphasis> start with a <literal>P</literal> symbol.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-NOT_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains a mix:title nodes, where the jcr:title has different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="Star wars" jcr:description="Darth rules!!"
+ ├── document2 (mix:title) jcr:title="Prison break" jcr:description="Run, Forest, run ))"
+ └── document3 (mix:title) jcr:title="Panopticum" jcr:description="It's imagine film"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-NOT_Constraint-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-NOT_Constraint-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE NOT jcr:title LIKE 'P%'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-NOT_Constraint-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[not(jcr:like(@jcr:title, 'P%'))]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-NOT_Constraint-Fetching_the_result">
+ <title>Fetching the result</title>
+ <para>
+ To fetch the matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is
+ <table id="tabl-Reference_Guide-NOT_Constraint-Fetching_the_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Star wars
+ </entry>
+ <entry>
+ Dart rules!!
+ </entry>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 4713
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,109 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-SetOffset_and_SetLimit">
- <title><literal>SetOffset</literal> and <literal>SetLimit</literal></title>
- <formalpara id="form-Reference_Guide-SetOffset_and_SetLimit-Task">
- <title>Task:</title>
- <para>
- Select all nodes with primary type <literal>nt:unstructured</literal> and return only three nodes starting with the second node in the list.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Common_information">
- <title>Common information</title>
- <para>
- <literal>QueryImpl</literal> class has two methods; one to indicate how many results shall be returned at most, and another to fix the starting position.
- </para>
- <variablelist>
- <title></title>
- <varlistentry>
- <term>setOffset(long offset)</term>
- <listitem>
- <para>
- Sets the start offset of the result set.
- </para>
-
- </listitem>
-
- </varlistentry>
- <varlistentry>
- <term>setLimit(long position)</term>
- <listitem>
- <para>
- Sets the maximum size of the result set.
- </para>
-
- </listitem>
-
- </varlistentry>
-
- </variablelist>
-
- </section>
-
- <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Repository_structure">
- <title>Repository structure</title>
- <para>
- The repository contains <literal>mix:title</literal> nodes, where <literal>jcr:title</literal> has different values.
- </para>
-
-<programlisting>root
- ├── node1 (nt:unstructured)
- ├── node2 (nt:unstructured)
- ├── node3 (nt:unstructured)
- ├── node4 (nt:unstructured)
- ├── node5 (nt:unstructured)
- └── node6 (nt:unstructured)
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-SetOffset_and_SetLimit-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:unstructured";
-QueryImpl query = (QueryImpl)queryManager.createQuery(sqlStatement, Query.SQL);
-//return starting with second result
-query.setOffset(1);
-// return 3 results
-query.setLimit(3);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch the matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- In usual cases (without using <literal>setOffset</literal> and <literal>setLimit</literal> methods), the <literal>NodeIterator</literal> returns all nodes (<emphasis>node1</emphasis> to <emphasis>node6</emphasis>). However in this case <literal>NodeIterator</literal> will return; <emphasis>node2</emphasis>, <emphasis>node3</emphasis> and <emphasis>node4</emphasis>.
- </para>
- <para>
- \[node1 <emphasis role="bold">node2</emphasis> <emphasis role="bold">node3</emphasis> <emphasis role="bold">node4</emphasis> node5 node6\]
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/offset-and-limit.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-SetOffset_and_SetLimit">
+ <title><literal>SetOffset</literal> and <literal>SetLimit</literal></title>
+ <formalpara id="form-Reference_Guide-SetOffset_and_SetLimit-Task">
+ <title>Task:</title>
+ <para>
+ Select all nodes with primary type <literal>nt:unstructured</literal> and return only three nodes starting with the second node in the list.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Common_information">
+ <title>Common information</title>
+ <para>
+ <literal>QueryImpl</literal> class has two methods; one to indicate how many results shall be returned at most, and another to fix the starting position.
+ </para>
+ <variablelist>
+ <title></title>
+ <varlistentry>
+ <term>setOffset(long offset)</term>
+ <listitem>
+ <para>
+ Sets the start offset of the result set.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+ <varlistentry>
+ <term>setLimit(long position)</term>
+ <listitem>
+ <para>
+ Sets the maximum size of the result set.
+ </para>
+
+ </listitem>
+
+ </varlistentry>
+
+ </variablelist>
+
+ </section>
+
+ <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Repository_structure">
+ <title>Repository structure</title>
+ <para>
+ The repository contains <literal>mix:title</literal> nodes, where <literal>jcr:title</literal> has different values.
+ </para>
+
+<programlisting>root
+ ├── node1 (nt:unstructured)
+ ├── node2 (nt:unstructured)
+ ├── node3 (nt:unstructured)
+ ├── node4 (nt:unstructured)
+ ├── node5 (nt:unstructured)
+ └── node6 (nt:unstructured)
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-SetOffset_and_SetLimit-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:unstructured";
+QueryImpl query = (QueryImpl)queryManager.createQuery(sqlStatement, Query.SQL);
+//return starting with second result
+query.setOffset(1);
+// return 3 results
+query.setLimit(3);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-SetOffset_and_SetLimit-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch the matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ In usual cases (without using <literal>setOffset</literal> and <literal>setLimit</literal> methods), the <literal>NodeIterator</literal> returns all nodes (<emphasis>node1</emphasis> to <emphasis>node6</emphasis>). However in this case <literal>NodeIterator</literal> will return; <emphasis>node2</emphasis>, <emphasis>node3</emphasis> and <emphasis>node4</emphasis>.
+ </para>
+ <para>
+ \[node1 <emphasis role="bold">node2</emphasis> <emphasis role="bold">node3</emphasis> <emphasis role="bold">node4</emphasis> node5 node6\]
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,153 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-OR_Constraint">
- <title>OR Constraint</title>
- <formalpara id="form-Reference_Guide-OR_Constraint-Task">
- <title>Task:</title>
- <para>
- Find all documents whose title is <emphasis>Cinderella</emphasis> OR whose description is <emphasis>novel</emphasis>. In JCR terms this would be; find all nodes with a mixin type <literal>mix:title</literal> whose property <parameter>jcr:title</parameter> equals <emphasis>Cinderella</emphasis> or whose <parameter>jcr:description</parameter> property value is <emphasis>novel</emphasis>.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-OR_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains mix:title nodes, where jcr:title and jcr:description have different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="War and peace" jcr:description="novel"
- ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale"
- └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-OR_Constraint-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-OR_Constraint-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title = 'Cinderella' OR jcr:description = 'novel'";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-OR_Constraint-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[@jcr:title='Cinderella' or @jcr:description = 'novel']";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-OR_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch matching nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> and <emphasis>document2</emphasis>.
- </para>
- <para>
- The output can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-OR_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- War and peace
- </entry>
- <entry>
- novel
- </entry>
- <entry>
- /document1
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
- <row>
- <entry>
- Cinderella
- </entry>
- <entry>
- fairytale
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/or-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,153 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-OR_Constraint">
+ <title>OR Constraint</title>
+ <formalpara id="form-Reference_Guide-OR_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find all documents whose title is <emphasis>Cinderella</emphasis> OR whose description is <emphasis>novel</emphasis>. In JCR terms this would be; find all nodes with a mixin type <literal>mix:title</literal> whose property <parameter>jcr:title</parameter> equals <emphasis>Cinderella</emphasis> or whose <parameter>jcr:description</parameter> property value is <emphasis>novel</emphasis>.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-OR_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains mix:title nodes, where jcr:title and jcr:description have different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="War and peace" jcr:description="novel"
+ ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale"
+ └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-OR_Constraint-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-OR_Constraint-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE jcr:title = 'Cinderella' OR jcr:description = 'novel'";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-OR_Constraint-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[@jcr:title='Cinderella' or @jcr:description = 'novel']";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-OR_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch matching nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> and <emphasis>document2</emphasis>.
+ </para>
+ <para>
+ The output can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-OR_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ War and peace
+ </entry>
+ <entry>
+ novel
+ </entry>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ Cinderella
+ </entry>
+ <entry>
+ fairytale
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,155 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only">
- <title>Ordering by Descendant Nodes Property (XPath only)</title>
- <formalpara id="form-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Task">
- <title>Task:</title>
- <para>
- Find all nodes with the primary type <literal>nt:unstructured</literal> and sort them by the property value of descendant nodes with the relative path <literal>/a/b</literal>.
- </para>
-
- </formalpara>
- <note>
- <title>Note</title>
- <para>
- This ORDER BY construction only works in XPath.
- </para>
-
- </note>
- <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Repository_structure">
- <title>Repository structure</title>
-
-<programlisting>root
- ├── node1 (nt:unstructured)
- │ └── a (nt:unstructured)
- │ └── b (nt:unstructured)
- ├── node2 (nt:unstructured)
- │ └── a (nt:unstructured)
- │ └── b (nt:unstructured)
- │ └── c (nt:unstructured) prop = "a"
- └── node3 (nt:unstructured)
- └── a (nt:unstructured)
- └── b (nt:unstructured)
- └── c (nt:unstructured) prop = "b"
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "/jcr:root/* order by a/b/c/@prop descending;
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return nodes in the following order - "node3","node2" and "node1".
- </para>
- <para>
- The output can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:primaryType
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /testroot/node3
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /testroot/node2
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /testroot/node1
- </entry>
- <entry>
- 1000
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-descendant.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,155 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only">
+ <title>Ordering by Descendant Nodes Property (XPath only)</title>
+ <formalpara id="form-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with the primary type <literal>nt:unstructured</literal> and sort them by the property value of descendant nodes with the relative path <literal>/a/b</literal>.
+ </para>
+
+ </formalpara>
+ <note>
+ <title>Note</title>
+ <para>
+ This ORDER BY construction only works in XPath.
+ </para>
+
+ </note>
+ <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Repository_structure">
+ <title>Repository structure</title>
+
+<programlisting>root
+ ├── node1 (nt:unstructured)
+ │ └── a (nt:unstructured)
+ │ └── b (nt:unstructured)
+ ├── node2 (nt:unstructured)
+ │ └── a (nt:unstructured)
+ │ └── b (nt:unstructured)
+ │ └── c (nt:unstructured) prop = "a"
+ └── node3 (nt:unstructured)
+ └── a (nt:unstructured)
+ └── b (nt:unstructured)
+ └── c (nt:unstructured) prop = "b"
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "/jcr:root/* order by a/b/c/@prop descending;
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return nodes in the following order - "node3","node2" and "node1".
+ </para>
+ <para>
+ The output can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Ordering_by_Descendant_Nodes_Property_XPath_only-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:primaryType
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /testroot/node3
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /testroot/node2
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /testroot/node1
+ </entry>
+ <entry>
+ 1000
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,42 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Ordering_by_Path_or_Name">
- <title>Ordering by Path or Name</title>
- <warning>
- <para>
- Ordering by <literal>jcr:path</literal> or <literal>jcr:name</literal> is not supported.
- </para>
-
- </warning>
- <para>
- There are two ways to order results, when path may be used as criteria:
- </para>
- <orderedlist>
- <listitem>
- <para>
- Order by property with value type <parameter>NAME</parameter> or <parameter>PATH</parameter> (as the JCR supports it).
- </para>
-
- </listitem>
- <listitem>
- <para>
- Order by <literal>jcr:path</literal> or <literal>jcr:name</literal> which will sort results by exact path or name of node (the JCR does not supports this).
- </para>
-
- </listitem>
-
- </orderedlist>
- <para>
- If no order specification is supplied in the query statement, implementations may support document order on the result nodes (as per the <literal>JSR-170</literal> specification). This will sort by order number.
- </para>
- <para>
- By default, (if the query does not contains any ordering statements) result nodes is sorted by document order.
- </para>
-
-<programlisting>SELECT * FROM nt:unstructured WHERE jcr:path LIKE 'testRoot/%'</programlisting>
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-path-or-name.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Ordering_by_Path_or_Name">
+ <title>Ordering by Path or Name</title>
+ <warning>
+ <para>
+ Ordering by <literal>jcr:path</literal> or <literal>jcr:name</literal> is not supported.
+ </para>
+
+ </warning>
+ <para>
+ There are two ways to order results, when path may be used as criteria:
+ </para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Order by property with value type <parameter>NAME</parameter> or <parameter>PATH</parameter> (as the JCR supports it).
+ </para>
+
+ </listitem>
+ <listitem>
+ <para>
+ Order by <literal>jcr:path</literal> or <literal>jcr:name</literal> which will sort results by exact path or name of node (the JCR does not supports this).
+ </para>
+
+ </listitem>
+
+ </orderedlist>
+ <para>
+ If no order specification is supplied in the query statement, implementations may support document order on the result nodes (as per the <literal>JSR-170</literal> specification). This will sort by order number.
+ </para>
+ <para>
+ By default, (if the query does not contains any ordering statements) result nodes is sorted by document order.
+ </para>
+
+<programlisting>SELECT * FROM nt:unstructured WHERE jcr:path LIKE 'testRoot/%'</programlisting>
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,179 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Sorting_Nodes_by_Property">
- <title>Sorting Nodes by Property</title>
- <formalpara id="form-Reference_Guide-Sorting_Nodes_by_Property-Task">
- <title>Task:</title>
- <para>
- Select all nodes with the mixin type <literal>mix:title</literal> and order them by the <parameter>prop_pagecount</parameter> property.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains several <literal>mix:title</literal> nodes, where <parameter>prop_pagecount</parameter> has different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="War and peace" jcr:description="roman" prop_pagecount=4
- ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale" prop_pagecount=7
- └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale" prop_pagecount=1
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title ORDER BY prop_pagecount ASC";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title) order by @prop_pagecount ascending";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return nodes in the following order: <emphasis>document3</emphasis>, <emphasis>document1</emphasis>, <emphasis>document2</emphasis>".
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Sorting_Nodes_by_Property-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="5">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:description
- </entry>
- <entry>
- prop_pagecount
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Puss in Boots
- </entry>
- <entry>
- fairytale
- </entry>
- <entry>
- 1
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 1405
- </entry>
-
- </row>
- <row>
- <entry>
- War and peace
- </entry>
- <entry>
- roman
- </entry>
- <entry>
- 4
- </entry>
- <entry>
- /document1
- </entry>
- <entry>
- 1405
- </entry>
-
- </row>
- <row>
- <entry>
- Cinderella
- </entry>
- <entry>
- fairytale
- </entry>
- <entry>
- 7
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 1405
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-property.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,179 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Sorting_Nodes_by_Property">
+ <title>Sorting Nodes by Property</title>
+ <formalpara id="form-Reference_Guide-Sorting_Nodes_by_Property-Task">
+ <title>Task:</title>
+ <para>
+ Select all nodes with the mixin type <literal>mix:title</literal> and order them by the <parameter>prop_pagecount</parameter> property.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains several <literal>mix:title</literal> nodes, where <parameter>prop_pagecount</parameter> has different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="War and peace" jcr:description="roman" prop_pagecount=4
+ ├── document2 (mix:title) jcr:title="Cinderella" jcr:description="fairytale" prop_pagecount=7
+ └── document3 (mix:title) jcr:title="Puss in Boots" jcr:description="fairytale" prop_pagecount=1
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title ORDER BY prop_pagecount ASC";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Sorting_Nodes_by_Property-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title) order by @prop_pagecount ascending";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Sorting_Nodes_by_Property-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return nodes in the following order: <emphasis>document3</emphasis>, <emphasis>document1</emphasis>, <emphasis>document2</emphasis>".
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Sorting_Nodes_by_Property-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="5">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ prop_pagecount
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Puss in Boots
+ </entry>
+ <entry>
+ fairytale
+ </entry>
+ <entry>
+ 1
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 1405
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ War and peace
+ </entry>
+ <entry>
+ roman
+ </entry>
+ <entry>
+ 4
+ </entry>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 1405
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ Cinderella
+ </entry>
+ <entry>
+ fairytale
+ </entry>
+ <entry>
+ 7
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 1405
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,194 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Ordering_by_Score">
- <title>Ordering by Score</title>
- <formalpara id="form-Reference_Guide-Ordering_by_Score-Task">
- <title>Task:</title>
- <para>
- Select all nodes with the mixin type <literal>mix:title</literal> containing any word from the set {<emphasis>brown</emphasis>, <emphasis>fox</emphasis>, <emphasis>jumps</emphasis>}. Then, sort the results by their score in ascending node. This way nodes that are a closer match to the query statement are in the last positions in the result list.
- </para>
-
- </formalpara>
- <para>
-
- </para>
- <section id="sect-Reference_Guide-Ordering_by_Score-Info">
- <title>Info</title>
- <para>
- SQL and XPath queries both support score constructions <literal>jcr:score</literal> and <literal>jcr:score()</literal>.
- </para>
-
-<programlisting>SELECT * FROM nt:base ORDER BY jcr:score [ASC|DESC]
-SELECT * FROM nt:base ORDER BY jcr:score()[ASC|DESC]
-
-//element(*,nt:base) order by jcr:score() [descending]
-//element(*,nt:base) order by @jcr:score [descending]</programlisting>
- <para>
- Do not use <parameter>ascending</parameter> combined with <literal>jcr:score</literal> in XPath. The following XPath statement may throw an exception:
- </para>
-
-<programlisting>... order by jcr:score() ascending</programlisting>
- <para>
- If you do not set any ordering specifier the default is ascending:
- </para>
-
-<programlisting>... order by jcr:score()</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Ordering_by_Score-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains mix:title nodes, where the jcr:description has different values.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:description="The quick brown fox jumps over the lazy dog."
- ├── document2 (mix:title) jcr:description="The brown fox lives in the forest."
- └── document3 (mix:title) jcr:description="The fox is a nice animal."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Ordering_by_Score-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Ordering_by_Score-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(*, 'brown OR fox OR jumps') ORDER BY jcr:score() ASC";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Ordering_by_Score-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[jcr:contains(., 'brown OR fox OR jumps')] order by jcr:score()";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Ordering_by_Score-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return nodes in the following order: <emphasis>document3</emphasis>, <emphasis>document2</emphasis>, <emphasis>document1</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Ordering_by_Score-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- jcr:description
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- The fox is a nice animal.
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 2512
- </entry>
-
- </row>
- <row>
- <entry>
- The brown fox lives in the forest.
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document2
- </entry>
- <entry>
- 3595
- </entry>
-
- </row>
- <row>
- <entry>
- The quick brown fox jumps over the lazy dog.
- </entry>
- <entry>
- ...
- </entry>
- <entry>
- /document1
- </entry>
- <entry>
- 5017
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/order-by-score.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,194 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Ordering_by_Score">
+ <title>Ordering by Score</title>
+ <formalpara id="form-Reference_Guide-Ordering_by_Score-Task">
+ <title>Task:</title>
+ <para>
+ Select all nodes with the mixin type <literal>mix:title</literal> containing any word from the set {<emphasis>brown</emphasis>, <emphasis>fox</emphasis>, <emphasis>jumps</emphasis>}. Then, sort the results by their score in ascending node. This way nodes that are a closer match to the query statement are in the last positions in the result list.
+ </para>
+
+ </formalpara>
+ <para>
+
+ </para>
+ <section id="sect-Reference_Guide-Ordering_by_Score-Info">
+ <title>Info</title>
+ <para>
+ SQL and XPath queries both support score constructions <literal>jcr:score</literal> and <literal>jcr:score()</literal>.
+ </para>
+
+<programlisting>SELECT * FROM nt:base ORDER BY jcr:score [ASC|DESC]
+SELECT * FROM nt:base ORDER BY jcr:score()[ASC|DESC]
+
+//element(*,nt:base) order by jcr:score() [descending]
+//element(*,nt:base) order by @jcr:score [descending]</programlisting>
+ <para>
+ Do not use <parameter>ascending</parameter> combined with <literal>jcr:score</literal> in XPath. The following XPath statement may throw an exception:
+ </para>
+
+<programlisting>... order by jcr:score() ascending</programlisting>
+ <para>
+ If you do not set any ordering specifier the default is ascending:
+ </para>
+
+<programlisting>... order by jcr:score()</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ordering_by_Score-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains mix:title nodes, where the jcr:description has different values.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:description="The quick brown fox jumps over the lazy dog."
+ ├── document2 (mix:title) jcr:description="The brown fox lives in the forest."
+ └── document3 (mix:title) jcr:description="The fox is a nice animal."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ordering_by_Score-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Ordering_by_Score-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(*, 'brown OR fox OR jumps') ORDER BY jcr:score() ASC";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Ordering_by_Score-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[jcr:contains(., 'brown OR fox OR jumps')] order by jcr:score()";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Ordering_by_Score-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return nodes in the following order: <emphasis>document3</emphasis>, <emphasis>document2</emphasis>, <emphasis>document1</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Ordering_by_Score-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ jcr:description
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ The fox is a nice animal.
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 2512
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ The brown fox lives in the forest.
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document2
+ </entry>
+ <entry>
+ 3595
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ The quick brown fox jumps over the lazy dog.
+ </entry>
+ <entry>
+ ...
+ </entry>
+ <entry>
+ /document1
+ </entry>
+ <entry>
+ 5017
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,132 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Property_Comparison">
- <title>Property Comparison</title>
- <formalpara id="form-Reference_Guide-Property_Comparison-Task">
- <title>Task:</title>
- <para>
- To find all nodes with mixin type <literal>mix:title</literal> where the <parameter>prop_pagecount</parameter> property contains a value less than <literal>90</literal>. Only select the title of each node.
- </para>
-
- </formalpara>
- <section id="sect-Reference_Guide-Property_Comparison-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains several <literal>mix:title</literal> nodes, where each <parameter>prop_pagecount</parameter> contains a different value.
- </para>
-
-<programlisting>root
- ├── document1 (mix:title) jcr:title="War and peace" prop_pagecount=1000
- ├── document2 (mix:title) jcr:title="Cinderella" prop_pagecount=100
- └── document3 (mix:title) jcr:title="Puss in Boots" prop_pagecount=60
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Property_Comparison-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Property_Comparison-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT jcr:title FROM mix:title WHERE prop_pagecount < 90";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Property_Comparison-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[@prop_pagecount < 90]/@jcr:title";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Property_Comparison-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document3</emphasis>.
- </para>
- <para>
- The results can also be formatted as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- The table content is:
- <table id="tabl-Reference_Guide-Property_Comparison-Fetching_result-Table_Content">
- <title>Table Content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:title
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Puss in Boots
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 1725
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-comparison.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,132 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Property_Comparison">
+ <title>Property Comparison</title>
+ <formalpara id="form-Reference_Guide-Property_Comparison-Task">
+ <title>Task:</title>
+ <para>
+ To find all nodes with mixin type <literal>mix:title</literal> where the <parameter>prop_pagecount</parameter> property contains a value less than <literal>90</literal>. Only select the title of each node.
+ </para>
+
+ </formalpara>
+ <section id="sect-Reference_Guide-Property_Comparison-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains several <literal>mix:title</literal> nodes, where each <parameter>prop_pagecount</parameter> contains a different value.
+ </para>
+
+<programlisting>root
+ ├── document1 (mix:title) jcr:title="War and peace" prop_pagecount=1000
+ ├── document2 (mix:title) jcr:title="Cinderella" prop_pagecount=100
+ └── document3 (mix:title) jcr:title="Puss in Boots" prop_pagecount=60
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Property_Comparison-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Property_Comparison-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT jcr:title FROM mix:title WHERE prop_pagecount < 90";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Property_Comparison-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[@prop_pagecount < 90]/@jcr:title";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Property_Comparison-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document3</emphasis>.
+ </para>
+ <para>
+ The results can also be formatted as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ The table content is:
+ <table id="tabl-Reference_Guide-Property_Comparison-Fetching_result-Table_Content">
+ <title>Table Content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:title
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Puss in Boots
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 1725
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,139 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Property_Existence_Constraint">
- <title>Property Existence Constraint</title>
- <formalpara id="form-Reference_Guide-Property_Existence_Constraint-Task">
- <title>Task:</title>
- <para>
- Find all nodes with a mixin type '<literal>mix:title</literal>' where the property <parameter>jcr:description</parameter> does not exist (is null).
- </para>
-
- </formalpara>
- <para>
-
- </para>
- <section id="sect-Reference_Guide-Property_Existence_Constraint-Repository_Structure">
- <title>Repository Structure</title>
- <para>
- The repository contains <literal>mix:title</literal> nodes, in one of these nodes the <literal>jcr:description</literal> property is null.
- </para>
-
-<programlisting>root
- ├── document1 mix:title jcr:title ="Star Wars" jcr:description ="Darth rules!!"
- ├── document2 (mix:title) jcr:title="Prison Break" jcr:description="Run, Forest, run ))"
- └── document3 (mix:title) jcr:title="Titanic" // The description property does not exist. This is the node we wish to find.
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Property_Existence_Constraint-Query_Execution">
- <title>Query Execution</title>
- <example id="exam-Reference_Guide-Property_Existence_Constraint-Query_Execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE jcr:description IS NULL";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
- <example id="exam-Reference_Guide-Property_Existence_Constraint-Query_Execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = ""//element(*,mix:title)[not(@jcr:description)]"";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Property_Existence_Constraint-Fetching_the_Result">
- <title>Fetching the Result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document3</emphasis>.
- </para>
- <para>
- We can also get a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- <table id="tabl-Reference_Guide-Property_Existence_Constraint-Fetching_the_Result-Table_content">
- <title>Table content</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>
- <literal>jcr:title</literal>
- </entry>
- <entry>
- <literal>jcr:description</literal>
- </entry>
- <entry>
- <literal>jcr:path</literal>
- </entry>
- <entry>
- <literal>jcr:score</literal>
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- Titanic
- </entry>
- <entry>
- null
- </entry>
- <entry>
- /document3
- </entry>
- <entry>
- 1947
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/property-existance-constraint.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,139 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Property_Existence_Constraint">
+ <title>Property Existence Constraint</title>
+ <formalpara id="form-Reference_Guide-Property_Existence_Constraint-Task">
+ <title>Task:</title>
+ <para>
+ Find all nodes with a mixin type '<literal>mix:title</literal>' where the property <parameter>jcr:description</parameter> does not exist (is null).
+ </para>
+
+ </formalpara>
+ <para>
+
+ </para>
+ <section id="sect-Reference_Guide-Property_Existence_Constraint-Repository_Structure">
+ <title>Repository Structure</title>
+ <para>
+ The repository contains <literal>mix:title</literal> nodes, in one of these nodes the <literal>jcr:description</literal> property is null.
+ </para>
+
+<programlisting>root
+ ├── document1 mix:title jcr:title ="Star Wars" jcr:description ="Darth rules!!"
+ ├── document2 (mix:title) jcr:title="Prison Break" jcr:description="Run, Forest, run ))"
+ └── document3 (mix:title) jcr:title="Titanic" // The description property does not exist. This is the node we wish to find.
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Property_Existence_Constraint-Query_Execution">
+ <title>Query Execution</title>
+ <example id="exam-Reference_Guide-Property_Existence_Constraint-Query_Execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE jcr:description IS NULL";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+ <example id="exam-Reference_Guide-Property_Existence_Constraint-Query_Execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = ""//element(*,mix:title)[not(@jcr:description)]"";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Property_Existence_Constraint-Fetching_the_Result">
+ <title>Fetching the Result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document3</emphasis>.
+ </para>
+ <para>
+ We can also get a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ <table id="tabl-Reference_Guide-Property_Existence_Constraint-Fetching_the_Result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>
+ <literal>jcr:title</literal>
+ </entry>
+ <entry>
+ <literal>jcr:description</literal>
+ </entry>
+ <entry>
+ <literal>jcr:path</literal>
+ </entry>
+ <entry>
+ <literal>jcr:score</literal>
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ Titanic
+ </entry>
+ <entry>
+ null
+ </entry>
+ <entry>
+ /document3
+ </entry>
+ <entry>
+ 1947
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,153 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules">
- <title>Regular Expression as Property Name in Indexing Rules</title>
- <formalpara id="form-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Task">
- <title>Task:</title>
- <para>
- To configure indexing so that all properties of <literal>nt:unstructured</literal> nodes must be excluded from searches, except properties with names ending with a particular <emphasis>Text</emphasis> string.
- </para>
-
- </formalpara>
- <para>
- To begin, add the appropriate rules to the <filename>indexing-configuration.xml</filename> file:
- </para>
-
-<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured"">
- <property isRegexp="true">.*Text</property>
-</index-rule></programlisting>
- <para>
- See <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more information.
- </para>
- <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Repository_structure">
- <title>Repository structure:</title>
- <para>
- The repository contains <literal>nt:unstructured</literal> nodes, with different <parameter>text</parameter>-based properties:
- </para>
-
-<programlisting>root
- ├── node1 (nt:unstructured) Text="The quick brown fox ..."
- ├── node2 (nt:unstructured) OtherText="The quick brown fox ..."
- └── node3 (nt:unstructured) Textle="The quick brown fox ..."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(*,'quick')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
- <example id="exam-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'quick')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
-
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch the nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node2</emphasis>. <emphasis>Node3</emphasis> is not in result set.
- </para>
- <para>
- The results can also be output as a table:
- </para>
-
-<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
-RowIterator rit = result.getRows();
-while (rit.hasNext())
-{
- Row row = rit.nextRow();
- // get values of the row
- Value[] values = row.getValues();
-}</programlisting>
- <para>
- Table content is:
- </para>
- <table id="tabl-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Fetching_result-Table_content">
- <title>Table content</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>
- jcr:primarytype
- </entry>
- <entry>
- jcr:path
- </entry>
- <entry>
- jcr:score
- </entry>
-
- </row>
-
- </thead>
- <tbody>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node1
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
- <row>
- <entry>
- nt:unstructured
- </entry>
- <entry>
- /node2
- </entry>
- <entry>
- 3806
- </entry>
-
- </row>
-
- </tbody>
-
- </tgroup>
-
- </table>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/regexp-indexing-rule.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,153 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules">
+ <title>Regular Expression as Property Name in Indexing Rules</title>
+ <formalpara id="form-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Task">
+ <title>Task:</title>
+ <para>
+ To configure indexing so that all properties of <literal>nt:unstructured</literal> nodes must be excluded from searches, except properties with names ending with a particular <emphasis>Text</emphasis> string.
+ </para>
+
+ </formalpara>
+ <para>
+ To begin, add the appropriate rules to the <filename>indexing-configuration.xml</filename> file:
+ </para>
+
+<programlisting language="XML" role="XML"><index-rule nodeType="nt:unstructured"">
+ <property isRegexp="true">.*Text</property>
+</index-rule></programlisting>
+ <para>
+ See <xref linkend="chap-Reference_Guide-Search_Configuration" /> for more information.
+ </para>
+ <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ The repository contains <literal>nt:unstructured</literal> nodes, with different <parameter>text</parameter>-based properties:
+ </para>
+
+<programlisting>root
+ ├── node1 (nt:unstructured) Text="The quick brown fox ..."
+ ├── node2 (nt:unstructured) OtherText="The quick brown fox ..."
+ └── node3 (nt:unstructured) Textle="The quick brown fox ..."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM nt:unstructured WHERE CONTAINS(*,'quick')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+ <example id="exam-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,nt:unstructured)[jcr:contains(., 'quick')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch the nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>node1</emphasis> and <emphasis>node2</emphasis>. <emphasis>Node3</emphasis> is not in result set.
+ </para>
+ <para>
+ The results can also be output as a table:
+ </para>
+
+<programlisting language="Java" role="Java">String[] columnNames = result.getColumnNames();
+RowIterator rit = result.getRows();
+while (rit.hasNext())
+{
+ Row row = rit.nextRow();
+ // get values of the row
+ Value[] values = row.getValues();
+}</programlisting>
+ <para>
+ Table content is:
+ </para>
+ <table id="tabl-Reference_Guide-Regular_Expression_as_Property_Name_in_Indexing_Rules-Fetching_result-Table_content">
+ <title>Table content</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>
+ jcr:primarytype
+ </entry>
+ <entry>
+ jcr:path
+ </entry>
+ <entry>
+ jcr:score
+ </entry>
+
+ </row>
+
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node1
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+ <row>
+ <entry>
+ nt:unstructured
+ </entry>
+ <entry>
+ /node2
+ </entry>
+ <entry>
+ 3806
+ </entry>
+
+ </row>
+
+ </tbody>
+
+ </tgroup>
+
+ </table>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,96 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase">
- <title>Checking the spelling of Phrase</title>
- <formalpara id="form-Reference_Guide-Checking_the_spelling_of_Phrase-Task">
- <title>Task:</title>
- <para>
- Check the correct spelling of phrase '<emphasis>quik OR (-foo bar)</emphasis>' according to data already stored in index.
- </para>
-
- </formalpara>
- <note>
- <para>
- Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about SpellChecker configuration.
- </para>
-
- </note>
- <para>
- The SpellChecker must be set in query-handler configuration.
- </para>
- <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-test_jcr_config.xml">
- <title>test-jcr-config.xml:</title>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- ...
- <property name="spellchecker-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$FiveSecondsRefreshInterval" />
- ...
- </properties>
-</query-handler></programlisting>
- </example>
- <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Repository_structure">
- <title>Repository structure:</title>
- <para>
- Repository contains node, with string property "The quick brown fox jumps over the lazy dog."
- </para>
-
-<programlisting>root
- └── node1 property="The quick brown fox jumps over the lazy dog."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution">
- <title>Query execution</title>
- <para>
- The query looks only for the <literal>root</literal> node, because the spell checker looks for suggestions by full index. Therefore a complicated query is unecessary.
- </para>
- <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT rep:spellcheck() FROM nt:base WHERE jcr:path = '/' AND SPELLCHECK('quik OR (-foo bar)')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
- <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "/jcr:root[rep:spellcheck('quik OR (-foo bar)')]/(rep:spellcheck())";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Fetching_result">
- <title>Fetching result</title>
- <para>
- To get suggestions of the correct spelling of the nominated phrase:
- </para>
-
-<programlisting language="Java" role="Java">RowIterator it = result.getRows();
-Row r = rows.nextRow();
-Value v = r.getValue("rep:spellcheck()");
-String correctPhrase = v.getString();</programlisting>
- <para>
- The result would offer "<literal>quick OR (-fox bar)</literal>" as the correct spelling for the phrase "<literal>quik OR (-foo bar)</literal>" .
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/spell-checker.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,96 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase">
+ <title>Checking the spelling of Phrase</title>
+ <formalpara id="form-Reference_Guide-Checking_the_spelling_of_Phrase-Task">
+ <title>Task:</title>
+ <para>
+ Check the correct spelling of phrase '<emphasis>quik OR (-foo bar)</emphasis>' according to data already stored in index.
+ </para>
+
+ </formalpara>
+ <note>
+ <para>
+ Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about SpellChecker configuration.
+ </para>
+
+ </note>
+ <para>
+ The SpellChecker must be set in query-handler configuration.
+ </para>
+ <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-test_jcr_config.xml">
+ <title>test-jcr-config.xml:</title>
+
+<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ ...
+ <property name="spellchecker-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$FiveSecondsRefreshInterval" />
+ ...
+ </properties>
+</query-handler></programlisting>
+ </example>
+ <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ Repository contains node, with string property "The quick brown fox jumps over the lazy dog."
+ </para>
+
+<programlisting>root
+ └── node1 property="The quick brown fox jumps over the lazy dog."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution">
+ <title>Query execution</title>
+ <para>
+ The query looks only for the <literal>root</literal> node, because the spell checker looks for suggestions by full index. Therefore a complicated query is unecessary.
+ </para>
+ <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT rep:spellcheck() FROM nt:base WHERE jcr:path = '/' AND SPELLCHECK('quik OR (-foo bar)')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+ <example id="exam-Reference_Guide-Checking_the_spelling_of_Phrase-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "/jcr:root[rep:spellcheck('quik OR (-foo bar)')]/(rep:spellcheck())";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Checking_the_spelling_of_Phrase-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To get suggestions of the correct spelling of the nominated phrase:
+ </para>
+
+<programlisting language="Java" role="Java">RowIterator it = result.getRows();
+Row r = rows.nextRow();
+Value v = r.getValue("rep:spellcheck()");
+String correctPhrase = v.getString();</programlisting>
+ <para>
+ The result would offer "<literal>quick OR (-fox bar)</literal>" as the correct spelling for the phrase "<literal>quik OR (-foo bar)</literal>" .
+ </para>
+
+ </section>
+
+
+</section>
+
+
Deleted: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -1,103 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
-%BOOK_ENTITIES;
-]>
-<section id="sect-Reference_Guide-Searching_By_Synonym">
- <title>Searching By Synonym</title>
- <formalpara id="form-Reference_Guide-Searching_By_Synonym-Task">
- <title>Task:</title>
- <para>
- Find all <literal>mix:title</literal> nodes whose title contains a synonym for the term <emphasis>fast</emphasis>.
- </para>
-
- </formalpara>
- <note>
- <para>
- Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about synonym provider configuration
- </para>
-
- </note>
- <para>
- The synonym provider must be configured in the <filename>indexing-configuration.xml</filename> configuration file:
- </para>
-
-<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
- <properties>
- ...
- <property name="synonymprovider-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.PropertiesSynonymProvider" />
- <property name="synonymprovider-config-path" value="../../synonyms.properties" />
- ...
- </properties>
-</query-handler></programlisting>
- <para>
- The <filename>synonym.properties</filename> file contains the synonyms list:
- </para>
- <example id="exam-Reference_Guide-Searching_By_Synonym-Example_Synonym_List">
- <title>Example Synonym List</title>
-
-<programlisting>ASF=Apache Software Foundation
-quick=fast
-sluggish=lazy</programlisting>
- </example>
- <section id="sect-Reference_Guide-Searching_By_Synonym-Repository_structure">
- <title>Repository structure:</title>
- <para>
- the repository contains <literal>mix:title</literal> nodes, where <literal>jcr:title</literal> has different values.
- </para>
-
-<programlisting>root
- └── document1 (mix:title) jcr:title="The quick brown fox jumps over the lazy dog."
-</programlisting>
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_By_Synonym-Query_execution">
- <title>Query execution</title>
- <example id="exam-Reference_Guide-Searching_By_Synonym-Query_execution-SQL">
- <title>SQL</title>
-
-<programlisting language="Java" role="Java">// make SQL query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:title, '~fast')";
-Query query = queryManager.createQuery(sqlStatement, Query.SQL);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
- <example id="exam-Reference_Guide-Searching_By_Synonym-Query_execution-XPath">
- <title>XPath</title>
-
-<programlisting language="Java" role="Java">// make XPath query
-QueryManager queryManager = workspace.getQueryManager();
-// create query
-String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:title, '~fast')]";
-Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
-// execute query and fetch result
-QueryResult result = query.execute();</programlisting>
- </example>
-
- </section>
-
- <section id="sect-Reference_Guide-Searching_By_Synonym-Fetching_result">
- <title>Fetching result</title>
- <para>
- To fetch nodes:
- </para>
-
-<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
-
-if(it.hasNext())
-{
- Node findedNode = it.nextNode();
-}</programlisting>
- <para>
- The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> as expected. This is a purpose of synonym providers; to search using specified keyword(s), but return results that contain synonyms to it.
- </para>
-
- </section>
-
-
-</section>
-
-
Copied: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml.cut (from rev 8158, epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml)
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml.cut (rev 0)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR/jcr/searching/synonim-provider.xml.cut 2011-12-07 04:31:34 UTC (rev 8202)
@@ -0,0 +1,103 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
+%BOOK_ENTITIES;
+]>
+<section id="sect-Reference_Guide-Searching_By_Synonym">
+ <title>Searching By Synonym</title>
+ <formalpara id="form-Reference_Guide-Searching_By_Synonym-Task">
+ <title>Task:</title>
+ <para>
+ Find all <literal>mix:title</literal> nodes whose title contains a synonym for the term <emphasis>fast</emphasis>.
+ </para>
+
+ </formalpara>
+ <note>
+ <para>
+ Refer to <xref linkend="chap-Reference_Guide-Searching_Repository_Content" /> for information about synonym provider configuration
+ </para>
+
+ </note>
+ <para>
+ The synonym provider must be configured in the <filename>indexing-configuration.xml</filename> configuration file:
+ </para>
+
+<programlisting language="XML" role="XML"><query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ ...
+ <property name="synonymprovider-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.PropertiesSynonymProvider" />
+ <property name="synonymprovider-config-path" value="../../synonyms.properties" />
+ ...
+ </properties>
+</query-handler></programlisting>
+ <para>
+ The <filename>synonym.properties</filename> file contains the synonyms list:
+ </para>
+ <example id="exam-Reference_Guide-Searching_By_Synonym-Example_Synonym_List">
+ <title>Example Synonym List</title>
+
+<programlisting>ASF=Apache Software Foundation
+quick=fast
+sluggish=lazy</programlisting>
+ </example>
+ <section id="sect-Reference_Guide-Searching_By_Synonym-Repository_structure">
+ <title>Repository structure:</title>
+ <para>
+ the repository contains <literal>mix:title</literal> nodes, where <literal>jcr:title</literal> has different values.
+ </para>
+
+<programlisting>root
+ └── document1 (mix:title) jcr:title="The quick brown fox jumps over the lazy dog."
+</programlisting>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Searching_By_Synonym-Query_execution">
+ <title>Query execution</title>
+ <example id="exam-Reference_Guide-Searching_By_Synonym-Query_execution-SQL">
+ <title>SQL</title>
+
+<programlisting language="Java" role="Java">// make SQL query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String sqlStatement = "SELECT * FROM mix:title WHERE CONTAINS(jcr:title, '~fast')";
+Query query = queryManager.createQuery(sqlStatement, Query.SQL);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+ <example id="exam-Reference_Guide-Searching_By_Synonym-Query_execution-XPath">
+ <title>XPath</title>
+
+<programlisting language="Java" role="Java">// make XPath query
+QueryManager queryManager = workspace.getQueryManager();
+// create query
+String xpathStatement = "//element(*,mix:title)[jcr:contains(@jcr:title, '~fast')]";
+Query query = queryManager.createQuery(xpathStatement, Query.XPATH);
+// execute query and fetch result
+QueryResult result = query.execute();</programlisting>
+ </example>
+
+ </section>
+
+ <section id="sect-Reference_Guide-Searching_By_Synonym-Fetching_result">
+ <title>Fetching result</title>
+ <para>
+ To fetch nodes:
+ </para>
+
+<programlisting language="Java" role="Java">NodeIterator it = result.getNodes();
+
+if(it.hasNext())
+{
+ Node findedNode = it.nextNode();
+}</programlisting>
+ <para>
+ The <literal>NodeIterator</literal> will return <emphasis>document1</emphasis> as expected. This is a purpose of synonym providers; to search using specified keyword(s), but return results that contain synonyms to it.
+ </para>
+
+ </section>
+
+
+</section>
+
+
Modified: epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR.xml
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR.xml 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/en-US/modules/eXoJCR.xml 2011-12-07 04:31:34 UTC (rev 8202)
@@ -3,61 +3,130 @@
<!ENTITY % BOOK_ENTITIES SYSTEM "Reference_Guide.ent">
%BOOK_ENTITIES;
]>
-<part id="part-Reference_Guide-The_Java_Content_Repository_">
- <title><remark>The Java Content Repository</remark>
- </title>
- <!-- <xi:include href="eXoJCR/eXoJCR/jcr.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="eXoJCR/jcr/intro.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- concepts --> <!-- <xi:include href="eXoJCR/jcr/concepts/why-jcr.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="eXoJCR/jcr/concepts/jcr-exo-implementation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/jcr-advantages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/jcr-compatibility-levels.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/jcr-usage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- <xi:include href="eXoJCR/jcr/concepts/jcr-extensions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="eXoJCR/jcr/concepts/jcr-applications.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/nodetype-registration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/jcr-registry-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/concepts/jcr-namespace-altering.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- common configs --> <xi:include href="eXoJCR/jcr/configuration/exo-jcr-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/multilanguage-support.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/search-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/configuration-persister.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/jdbc-data-container-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/external-value-storages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/workspace-persistence-storage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/configuration/rest-services-on-groovy.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- cluster configs --> <xi:include href="eXoJCR/jcr/cluster-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/jbosscache-configuration-templates.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/lock-manager-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/query-handler-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/jbossts-transaction-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/transaction-manager-lookup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/repository-creation-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- search --> <xi:include href="eXoJCR/jcr/searching/jcr-query-usecases.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/searching/searching-repository-content.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/searching/fulltext-search-and-settings.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- api extensions --> <xi:include href="eXoJCR/jcr/api-extensions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- protocols --> <xi:include href="eXoJCR/jcr/protocols/webdav.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/protocols/ftp.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- backup --> <xi:include href="eXoJCR/jcr/backup/exojcr-backup-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/backup/backup-client.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/backup/use-external-backup-tool.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- other --> <xi:include href="eXoJCR/jcr/statistics.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/repository-check-controller.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/jta.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/jca.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/other/acl.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/other/acl-ext.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/other/link-producer.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/other/binary-values-processing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="eXoJCR/jcr/other/jcr-resources.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- data container configs --> <xi:include href="eXoJCR/jcr/data-container.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- <xi:include href="eXoJCR/jcr/data-container-howto.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <xi:include href="eXoJCR/jcr/db-cleaner-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- tuning guide
- DOC NOTE: Could possibly be moved to a specific Tuning Guide later --> <xi:include href="eXoJCR/jcr/performance-tuning-guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- JCR Core
+ <part id="part-Reference_Guide-The_Java_Content_Repository_">
+ <title><remark>The Java Content Repository</remark></title>
+ <!-- <xi:include href="eXoJCR/eXoJCR/jcr.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ <xi:include href="eXoJCR/jcr/intro.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!--concepts -->
+ <!--<xi:include href="eXoJCR/jcr/concepts/why-jcr.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ <xi:include href="eXoJCR/jcr/concepts/jcr-exo-implementation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!--<xi:include href="eXoJCR/jcr/concepts/jcr-advantages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!--<xi:include href="eXoJCR/jcr/concepts/jcr-compatibility-levels.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!--<xi:include href="eXoJCR/jcr/concepts/jcr-usage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!-- <xi:include href="eXoJCR/jcr/concepts/jcr-extensions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ <!--<xi:include href="eXoJCR/jcr/concepts/jcr-applications.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!--<xi:include href="eXoJCR/jcr/concepts/nodetypes-and-namespaces.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!--<xi:include href="eXoJCR/jcr/concepts/nodetype-registration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!-- <xi:include href="eXoJCR/jcr/concepts/jcr-registry-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+ <!--<xi:include href="eXoJCR/jcr/concepts/jcr-namespace-altering.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <!-- common configs -->
+ <xi:include href="eXoJCR/jcr/configuration/exo-jcr-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/configuration/multilanguage-support.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/configuration/search-configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <!-- <xi:include href="eXoJCR/jcr/configuration/configuration-persister.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <xi:include href="eXoJCR/jcr/configuration/jdbc-data-container-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/configuration/external-value-storages.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/configuration/workspace-persistence-storage.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/configuration/rest-services-on-groovy.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+ <!-- cluster configs -->
+ <xi:include href="eXoJCR/jcr/cluster-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/jbosscache-configuration-templates.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/lock-manager-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/query-handler-config.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/jbossts-transaction-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/transaction-manager-lookup.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/repository-creation-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+
+ <!-- search -->
+ <xi:include href="eXoJCR/jcr/searching/jcr-query-usecases.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/searching/searching-repository-content.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/searching/fulltext-search-and-settings.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+
+ <!-- api extensions -->
+ <!--<xi:include href="eXoJCR/jcr/api-extensions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+
+
+ <!-- protocols -->
+ <xi:include href="eXoJCR/jcr/protocols/webdav.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/protocols/ftp.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+
+ <!-- backup -->
+ <xi:include href="eXoJCR/jcr/backup/exojcr-backup-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/backup/backup-client.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/backup/use-external-backup-tool.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+ <!-- other -->
+ <xi:include href="eXoJCR/jcr/statistics.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="eXoJCR/jcr/repository-check-controller.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <!--<xi:include href="eXoJCR/jcr/jta.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <!--<xi:include href="eXoJCR/jcr/jca.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <!--<xi:include href="eXoJCR/jcr/other/acl.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <!--<xi:include href="eXoJCR/jcr/other/acl-ext.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <xi:include href="eXoJCR/jcr/other/link-producer.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <!--<xi:include href="eXoJCR/jcr/other/binary-values-processing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />-->
+
+ <xi:include href="eXoJCR/jcr/other/jcr-resources.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+ <!-- data container configs -->
+ <xi:include href="eXoJCR/jcr/data-container.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!-- <xi:include href="eXoJCR/jcr/data-container-howto.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ <xi:include href="eXoJCR/jcr/db-cleaner-service.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+ <!-- tuning guide
+ DOC NOTE: Could possibly be moved to a specific Tuning Guide later -->
+ <xi:include href="eXoJCR/jcr/performance-tuning-guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+
+ <!-- JCR Core
DOC NOTE: This section seems to include items covered elsewhere in this guide, or things that are not relevant to EPP
- <xi:include href="eXoJCR/core.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <!-- Web services
+ <xi:include href="eXoJCR/core.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+
+
+ <!-- Web services
DOC NOTE: Red Hat JBoss has two possible Web Services packages. No need to document the eXo offering:
- <xi:include href="eXoJCR/ws.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> --> <!-- GateIn and JCR --> <xi:include href="eXoJCR/jcr-with-gatein.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <!-- DOC NOTE: Commented FAQ section out as per advice from Philippe Aristote; "Unfit for publication" --> <!-- <xi:include href="eXoJCR/faq.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
-</part>
+ <xi:include href="eXoJCR/ws.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+
+ <!-- GateIn and JCR -->
+ <xi:include href="eXoJCR/jcr-with-gatein.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <!-- DOC NOTE: Commented FAQ section out as per advice from Philippe Aristote; "Unfit for publication" -->
+ <!-- <xi:include href="eXoJCR/faq.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+ </part>
\ No newline at end of file
Modified: epp/docs/branches/5.2/Reference_Guide/publican.cfg
===================================================================
--- epp/docs/branches/5.2/Reference_Guide/publican.cfg 2011-12-07 04:28:19 UTC (rev 8201)
+++ epp/docs/branches/5.2/Reference_Guide/publican.cfg 2011-12-07 04:31:34 UTC (rev 8202)
@@ -10,4 +10,4 @@
debug: 1
type: Book
#toc_section_depth: 10
-generate_section_toc_level: 3
\ No newline at end of file
+#generate_section_toc_level: 3
\ No newline at end of file
13 years
gatein SVN: r8201 - in epp/docs/branches/5.2/User_Guide/en-US: modules and 2 other directories.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:28:19 -0500 (Tue, 06 Dec 2011)
New Revision: 8201
Modified:
epp/docs/branches/5.2/User_Guide/en-US/images/PageWizard2.png
epp/docs/branches/5.2/User_Guide/en-US/images/Pagewizard1.png
epp/docs/branches/5.2/User_Guide/en-US/images/SiteMap.png
epp/docs/branches/5.2/User_Guide/en-US/images/Wizard1.png
epp/docs/branches/5.2/User_Guide/en-US/modules/Supported_Browsers.xml
epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Permission.xml
epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Portals.xml
epp/docs/branches/5.2/User_Guide/en-US/modules/portletsUser/Dashboard_Portlet.xml
Log:
JBEPP-1431: QA feedback
Modified: epp/docs/branches/5.2/User_Guide/en-US/images/PageWizard2.png
===================================================================
(Binary files differ)
Modified: epp/docs/branches/5.2/User_Guide/en-US/images/Pagewizard1.png
===================================================================
(Binary files differ)
Modified: epp/docs/branches/5.2/User_Guide/en-US/images/SiteMap.png
===================================================================
(Binary files differ)
Modified: epp/docs/branches/5.2/User_Guide/en-US/images/Wizard1.png
===================================================================
(Binary files differ)
Modified: epp/docs/branches/5.2/User_Guide/en-US/modules/Supported_Browsers.xml
===================================================================
--- epp/docs/branches/5.2/User_Guide/en-US/modules/Supported_Browsers.xml 2011-12-07 04:26:04 UTC (rev 8200)
+++ epp/docs/branches/5.2/User_Guide/en-US/modules/Supported_Browsers.xml 2011-12-07 04:28:19 UTC (rev 8201)
@@ -17,12 +17,12 @@
<itemizedlist>
<listitem>
<para>
- <ulink type="http" url="http://www.mozilla.com/en-US/firefox/new/">Firefox</ulink> (versions 3 to 5).
+ <ulink type="http" url="http://www.mozilla.com/en-US/firefox/new/">Firefox</ulink> (versions 3.5 to 7).
</para>
</listitem>
<listitem>
<para>
- <ulink type="http" url="http://windows.microsoft.com/en-AU/internet-explorer/downloads/ie">Internet Explorer</ulink> (versions 7 and 8).
+ <ulink type="http" url="http://windows.microsoft.com/en-AU/internet-explorer/downloads/ie">Internet Explorer</ulink> (versions 7 and 9).
</para>
</listitem>
<listitem>
Modified: epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Permission.xml
===================================================================
--- epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Permission.xml 2011-12-07 04:26:04 UTC (rev 8200)
+++ epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Permission.xml 2011-12-07 04:28:19 UTC (rev 8201)
@@ -36,7 +36,7 @@
<term><emphasis role="bold">Existing portals</emphasis></term>
<listitem>
<para>
- On the Toolbar click <emphasis role="bold">Site</emphasis> then <emphasis role="bold">Edit Portal's Config</emphasis>. Then select the <emphasis role="bold">Permission Setting</emphasis> tab.
+ On the Toolbar click <emphasis role="bold">Site</emphasis> then <emphasis role="bold">Edit Portal's Properties</emphasis>. Then select the <emphasis role="bold">Permission Setting</emphasis> tab.
</para>
<mediaobject>
<imageobject role="html">
Modified: epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Portals.xml
===================================================================
--- epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Portals.xml 2011-12-07 04:26:04 UTC (rev 8200)
+++ epp/docs/branches/5.2/User_Guide/en-US/modules/portal/Manage_Portals.xml 2011-12-07 04:28:19 UTC (rev 8201)
@@ -345,7 +345,7 @@
<procedure>
<step>
<para>
- Click on <emphasis role="bold">Site</emphasis>, then <emphasis role="bold">Edit Portal's Config</emphasis>.
+ Click on <emphasis role="bold">Site</emphasis>, then <emphasis role="bold">Edit Portal's Properties</emphasis>.
</para>
</step>
Modified: epp/docs/branches/5.2/User_Guide/en-US/modules/portletsUser/Dashboard_Portlet.xml
===================================================================
--- epp/docs/branches/5.2/User_Guide/en-US/modules/portletsUser/Dashboard_Portlet.xml 2011-12-07 04:26:04 UTC (rev 8200)
+++ epp/docs/branches/5.2/User_Guide/en-US/modules/portletsUser/Dashboard_Portlet.xml 2011-12-07 04:28:19 UTC (rev 8201)
@@ -71,7 +71,7 @@
</step>
</procedure>
<para>
- The Dashboard Workspace lists all available gadgets. Four gadgets are provided by default with JBoss Enterprise Portal Platform, however you can add many more.
+ The Dashboard Workspace lists all available gadgets. Seven gadgets are provided by default with JBoss Enterprise Portal Platform, however you can add many more.
</para>
<mediaobject>
<imageobject role="html">
@@ -162,7 +162,7 @@
</section>
<section id="sect-User_Guide-Dashboard_Portlet-Add_Gadgets">
- <title><remark>Add Gadgets</remark></title>
+ <title>Add Gadgets</title>
<para>
Many more gadgets can be found at <ulink type="http" url="http://www.google.com/ig/directory?synd=open">Google Gadgets</ulink>. JBoss Enterprise Portal Platform is compatible with most of the gadgets available there.
</para>
13 years
gatein SVN: r8200 - epp/docs/branches/5.2/Admin_Guide/en-US.
by do-not-reply@jboss.org
Author: smumford
Date: 2011-12-06 23:26:04 -0500 (Tue, 06 Dec 2011)
New Revision: 8200
Modified:
epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml
epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml
Log:
Incrementing for new staging
Modified: epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml
===================================================================
--- epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml 2011-12-06 23:40:13 UTC (rev 8199)
+++ epp/docs/branches/5.2/Admin_Guide/en-US/Book_Info.xml 2011-12-07 04:26:04 UTC (rev 8200)
@@ -9,7 +9,7 @@
<productname>JBoss Enterprise Portal Platform</productname>
<productnumber>5.2</productnumber>
<edition>5.2.0</edition>
- <pubsnumber>5</pubsnumber>
+ <pubsnumber>6</pubsnumber>
<abstract>
<para>
This document is a guide to administering an implementation of JBoss Enterprise Portal Platform. It is intended for System Administrators and assumes a high level of technical knowledge.
Modified: epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml
===================================================================
--- epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml 2011-12-06 23:40:13 UTC (rev 8199)
+++ epp/docs/branches/5.2/Admin_Guide/en-US/Revision_History.xml 2011-12-07 04:26:04 UTC (rev 8200)
@@ -8,7 +8,7 @@
<simpara>
<revhistory>
<revision>
- <revnumber>5.2.0-5</revnumber>
+ <revnumber>5.2.0-6</revnumber>
<date>Wed Dec 7 2011</date>
<author>
<firstname>Scott</firstname>
13 years