You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bu...@apache.org on 2012/12/11 14:48:11 UTC

svn commit: r841694 - in /websites/production/cxf/content: cache/docs.pageCache docs/jax-rs-advanced-features.html docs/jax-rs-xml-security.html

Author: buildbot
Date: Tue Dec 11 13:48:10 2012
New Revision: 841694

Log:
Production update by buildbot for cxf

Modified:
    websites/production/cxf/content/cache/docs.pageCache
    websites/production/cxf/content/docs/jax-rs-advanced-features.html
    websites/production/cxf/content/docs/jax-rs-xml-security.html

Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/cxf/content/docs/jax-rs-advanced-features.html
==============================================================================
--- websites/production/cxf/content/docs/jax-rs-advanced-features.html (original)
+++ websites/production/cxf/content/docs/jax-rs-advanced-features.html Tue Dec 11 13:48:10 2012
@@ -124,7 +124,7 @@ Apache CXF -- JAX-RS Advanced Features
 <div id="ConfluenceContent"><p><span style="font-size:2em;font-weight:bold">JAX-RS : Advanced Features</span></p>
 
 <div>
-<ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-JMSSupport">JMS Support</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Endpoints">Endpoints</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Client">Client</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-FIQLsearchqueries">FIQL search queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Introduction">Introduction</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-WhentouseFIQL">When to use FIQL</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-DependenciesandConfiguration">Dependencies and Configuration</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-WorkingwithFIQLqueries">Working with FIQL queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-CapturingFIQLqueries">Capturing FIQL queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Mappingofquerypropertiestobeanproperties">Mapping of query properties to bean prop
 erties</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Mappingofquerypropertiestocolumn%2Ffieldnames">Mapping of query properties to column/field names</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SearchBean">SearchBean</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-ConvertingFIQLqueries">Converting FIQL queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SQL">SQL</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-JPA2.0">JPA 2.0</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Lucene">Lucene</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-LDAP">LDAP</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Customvisitors">Custom visitors</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Untypedconverters">Untyped converters</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Typedconverters">Typed converters</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Custompar
 sing">Custom parsing</a></li></ul></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-ConvertingFIQLquerieswithQueryContext">Converting FIQL queries with QueryContext</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SearchExpressionsinURIPathsegments">Search Expressions in URI Path segments</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Queriesinvolvingmultipleentities">Queries involving multiple entities</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Basicqueries">Basic queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Complexqueries">Complex queries</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-BuildingFIQLqueries">Building FIQL queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Usingdatesinqueries">Using dates in queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Alternativequerylanguages">Alternative query languages</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFe
 atures-Onewayinvocations">Oneway invocations</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SupportforContinuations">Support for Continuations</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Serversidecaching">Server-side caching</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-RESTfulserviceswithoutannotations">RESTful services without annotations</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Configuration">Configuration</a></li></ul></ul></div>
+<ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-JMSSupport">JMS Support</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Endpoints">Endpoints</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Client">Client</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-FIQLsearchqueries">FIQL search queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Introduction">Introduction</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-WhentouseFIQL">When to use FIQL</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-DependenciesandConfiguration">Dependencies and Configuration</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-WorkingwithFIQLqueries">Working with FIQL queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-CapturingFIQLqueries">Capturing FIQL queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Mappingofquerypropertiestobeanproperties">Mapping of query properties to bean prop
 erties</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Parserproperties">Parser properties</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Mappingofquerypropertiestocolumn%2Ffieldnames">Mapping of query properties to column/field names</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SearchBean">SearchBean</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-ConvertingFIQLqueries">Converting FIQL queries</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SQL">SQL</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-JPA2.0">JPA 2.0</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Lucene">Lucene</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-LDAP">LDAP</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Customvisitors">Custom visitors</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Untypedconverters">Untyped converters</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Typedco
 nverters">Typed converters</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Customparsing">Custom parsing</a></li></ul></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-ConvertingFIQLquerieswithQueryContext">Converting FIQL queries with QueryContext</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SearchExpressionsinURIPathsegments">Search Expressions in URI Path segments</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Queriesinvolvingmultipleentities">Queries involving multiple entities</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Basicqueries">Basic queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Complexqueries">Complex queries</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-BuildingFIQLqueries">Building FIQL queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Usingdatesinqueries">Using dates in queries</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Alternativequeryl
 anguages">Alternative query languages</a></li></ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Onewayinvocations">Oneway invocations</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-SupportforContinuations">Support for Continuations</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Serversidecaching">Server-side caching</a></li><li><a shape="rect" href="#JAX-RSAdvancedFeatures-RESTfulserviceswithoutannotations">RESTful services without annotations</a></li><ul><li><a shape="rect" href="#JAX-RSAdvancedFeatures-Configuration">Configuration</a></li></ul></ul></div>
 
 <h1><a shape="rect" name="JAX-RSAdvancedFeatures-JMSSupport"></a>JMS Support</h1>
 
@@ -304,7 +304,7 @@ expression or a more complex, composite 
 <ul class="alternate" type="square"><li>Capturing beans may evolve independently of the actual queries; for example, a working query such as "name==b" will break if a Book 'name' gets renamed to 'title' which will make it difficult to have the queries bookmarked.</li><li>Direct match will simply not work for cases where an actual bean property does not belong to the capturing bean itself but to one of its child properties; for example, a JPA2 Book entity may have an OwnerInfo bean with Name bean property which does contain a primitive 'name' property.</li></ul>
 
 
-<p>The preferred approach, when working with typed beans, is to register a bean properties map, using a "search.bean.property.map" contextual property. For example, given</p>
+<p>The preferred approach, when working with typed beans, is to register a bean properties map, using a "search.bean.property.map" contextual property or directly with SearchContext. For example, given</p>
 
 <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
 <pre class="code-java">
@@ -371,13 +371,38 @@ expression or a more complex, composite 
 </div></div>
 <p>the mapping between "oname" and "ownerinfo.name" will work too.</p>
 
+<p>You can also have many to one mappings, for example</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-xml">
+<span class="code-tag">&lt;map&gt;</span>
+ <span class="code-tag"><span class="code-comment">&lt;!-- 'oname' and 'owner' are aliases for the 'ownerinfo.name.name' bean property --&gt;</span></span>
+ <span class="code-tag">&lt;entry key=<span class="code-quote">"oname"</span> value=<span class="code-quote">"ownerinfo.name.name"</span>/&gt;</span>
+ <span class="code-tag">&lt;entry key=<span class="code-quote">"owner"</span> value=<span class="code-quote">"ownerinfo.name.name"</span>/&gt;</span>
+<span class="code-tag">&lt;/map&gt;</span>
+</pre>
+</div></div>
+
+
+
+<h3><a shape="rect" name="JAX-RSAdvancedFeatures-Parserproperties"></a>Parser properties</h3>
+
+<p>The parser properties are the ones which tell the parser how to treat the conversion of Date values and the unrecognized search property names. </p>
+
+<p>As explained above, "search.lax.property.match" can be used to tell the parser that it should ignore the search property names which have no corresponding bean properties.</p>
+
+<p>"search.date.format" and "search.timezone.support" tell the parser how to convert the date values, see "Using dates in queries" section.</p>
+
+<p>More properties may be supported in the future.</p>
+
+<p>All of these properties can be set as endpoint contextual properties or directly with SearchContext.</p>
+
 <h2><a shape="rect" name="JAX-RSAdvancedFeatures-Mappingofquerypropertiestocolumn%2Ffieldnames"></a>Mapping of query properties to column/field names</h2>
 
 <p>When converting FIQL queries to SQL or other untyped query language expressions, as well as when using Lucene converter, it can be useful to be able to map between an actual query parameter and the column or field name. All FIQL converters shipped with CXF have constructors accepting a map for mapping the queries to columns/fields. See the next "SearchBean" section for one example.</p>
 
 <p>Note this property is not the same as the one described in the "Mapping of query properties to bean properties" section. The latter (the one described in the previous section) is required for getting FIQL queries captured into typed, domain specific beans like Book, and it can be sufficient for JPA2 which also has annotations like @Column.  </p>
 
-
 <h2><a shape="rect" name="JAX-RSAdvancedFeatures-SearchBean"></a>SearchBean</h2>
 
 <p>org.apache.cxf.jaxrs.ext.search.SearchBean is a utility bean class which can simplify analyzing the captured FIQL expressions and converting them to the other language expressions, in cases where having to update the bean class such as Book.class with all the properties that may need to be supported is not practical or the properties need to be managed manually. For example:</p>
@@ -938,12 +963,7 @@ server = sf.create();
         <span class="code-keyword">throws</span> BookNotFoundFault {
         <span class="code-object">String</span> sqlExpression = searchContext.getConvertedExpression(expression);
         <span class="code-comment">// pass it to the SQL DB and <span class="code-keyword">return</span> the list of Books
-</span>
-        <span class="code-comment">// or instead of registering SQLPrinterVisitor, register JPA2TypedQueryVisitor
-</span>        <span class="code-comment">// (see section on JPA2) and <span class="code-keyword">do</span>
-</span>        TypedQuery&lt;Book&gt; query = searchContext.getConvertedExpression(expression, Book.class, TypedQuery.class);
-        <span class="code-keyword">return</span> query.getResultList();   
-    }
+</span>    }
 }
 </pre>
 </div></div>
@@ -1204,6 +1224,49 @@ assertEquals(<span class="code-quote">"f
 </pre>
 </div></div>
 
+<p>Note, starting from CXF 2.7.1 the following can be used to make connection multiple primitive expressions simpler:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-comment">// AND condition, '.and(<span class="code-quote">"bar"</span>)' is a shortcut <span class="code-keyword">for</span> <span class="code-quote">"and().is("</span>bar<span class="code-quote">")"</span>, similar shortcut is supported <span class="code-keyword">for</span> 'or'
+</span><span class="code-object">String</span> ret = b.is(<span class="code-quote">"foo"</span>).greaterThan(20).and(<span class="code-quote">"bar"</span>).equalTo(<span class="code-quote">"plonk"</span>).query();
+assertEquals(<span class="code-quote">"foo=gt=20;bar==plonk"</span>, ret);
+</pre>
+</div></div>
+
+<p>More updates to the builder API are available on the trunk:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-comment">// OR condition
+</span><span class="code-object">String</span> ret = b.is(<span class="code-quote">"foo"</span>).equalTo(20).or().is(<span class="code-quote">"foo"</span>).equalTo(10).query();
+assertEquals(<span class="code-quote">"foo==20,foo==10"</span>, ret);
+
+<span class="code-comment">// Same query, shorter expression
+</span><span class="code-object">String</span> ret = b.is(<span class="code-quote">"foo"</span>).equalTo(20, 10).query();
+assertEquals(<span class="code-quote">"foo==20,foo==10"</span>, ret);
+</pre>
+</div></div> 
+
+<p>and</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
+<pre class="code-java">
+<span class="code-comment">// Connecting composite or() and and() expressions will add <span class="code-quote">"()"</span> implicitly:
+</span><span class="code-object">String</span> ret = b.is(<span class="code-quote">"foo"</span>).equalTo(20, 10).and(<span class="code-quote">"bar"</span>).lessThan(10).query();
+assertEquals(<span class="code-quote">"(foo==20,foo==10);bar=lt=10"</span>, ret);
+
+<span class="code-comment">// wrap() method can be used to wrap explicitly:
+</span>
+<span class="code-object">String</span> ret = b.is(<span class="code-quote">"foo"</span>).equalTo(10).and(<span class="code-quote">"bar"</span>).lessThan(10).wrap().or(<span class="code-quote">"bar"</span>).greaterThan(25).query();
+assertEquals(<span class="code-quote">"(foo==20;bar=lt=10),bar=gt=25"</span>, ret);
+
+
+</pre>
+</div></div> 
+
+
+
 <h2><a shape="rect" name="JAX-RSAdvancedFeatures-Usingdatesinqueries"></a>Using dates in queries</h2>
 
 <p>By default, the date values have to have the following <a shape="rect" class="external-link" href="http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html" rel="nofollow">format</a>: "yyyy-MM-dd", for example:</p>

Modified: websites/production/cxf/content/docs/jax-rs-xml-security.html
==============================================================================
--- websites/production/cxf/content/docs/jax-rs-xml-security.html (original)
+++ websites/production/cxf/content/docs/jax-rs-xml-security.html Tue Dec 11 13:48:10 2012
@@ -672,6 +672,8 @@ The following properties can be set on i
 <p>Getting the same SignatureProperties and EncryptionProperties beans (with "sigProps" and "encProps" ids) registered with the outbound<br clear="none">
 handlers will ensure that the algorithms used by the current client have not only been validated on the inbound side but also used on the outbound side for encrypting and signing the data.</p>
 
+<p>Note that from CXF 2.7.1, 2.6.4 and 2.5.7, the XmlEncInHandler will require that the RSA-OAEP algorithm be used as the key transport encryption algorithm by default. As this algorithm is used by default by the XmlEncOutInterceptor, no action is required unless you are specifying a different algorithm on the outbound side. In this case, an EncryptionProperties object will need to be configured on XmlEncInHandler with the desired key transport algorithm.</p>
+
 <h1><a shape="rect" name="JAX-RSXMLSecurity-Interoperability"></a>Interoperability</h1>
 
 <p>The payloads containing the enveloping XML Signatures are structured according to the XML Signature specification and as such can be consumed by any XML Signature aware consumers capable of handling the enveloping signatures and extracting the signed payload. </p>