Author: buildbot
Date: Wed Mar 7 17:48:05 2012
New Revision: 807773
Log:
Production update by buildbot for cxf
Modified:
websites/production/cxf/content/cache/docs.pageCache
websites/production/cxf/content/docs/developing-assertions.html
Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/cxf/content/docs/developing-assertions.html
==============================================================================
--- websites/production/cxf/content/docs/developing-assertions.html (original)
+++ websites/production/cxf/content/docs/developing-assertions.html Wed Mar 7
17:48:05 2012
@@ -145,6 +145,11 @@ Apache CXF -- Developing Assertions
<h2><a shape="rect"
name="DevelopingAssertions-ImplementingandRegisteringtheAssertionBuilderInterface"></a>Implementing
and Registering the AssertionBuilder Interface</h2>
+<p>Assertion Builder class for custom assertion should implement
<em>AssertionBuilder<T></em> interface. The interface type can be
<em>Element</em>, <em>XMLStreamReader</em> or <em>OMElement</em>. <br
clear="none">
+Interface contains two methods: <em>build()</em> and
<em>getKnownElements()</em>. <br clear="none">
+Implementation of <em>build()</em> method should construct Assertion from the
incoming type. It can be <em>PrimitiveAssertion</em> (without attributes or
child elements), NestedPrimitiveAssertion (without attributes but with nested
policy element) and <em>JaxbAssertion</em> (assertion described by any XML
schema).<br clear="none">
+<em>getKnownElements()</em> method must return QNames of assertion elements
from which assertion can be built.</p>
+
<p>Implementing the build method of the AssertionBuilder interface is
straightforward (in the case of JaxbAssertions you can extend the
JaxbAssertionBuilder class, which provides an appropriate JAXB context and some
other useful methods). </p>
<p>The implementation of buildCompatible may need some more consideration if
your assertion represents an element with attributes and/or child elements. </p>
@@ -187,7 +192,7 @@ class MyPolicyAwareInterceptor {
</pre>
</div></div>
-<p>Sometimes, it may be more convenient to spead the above functionality
accross several interceptors, possibly according to chain (in, in fault, out,
outfault). In any case, you need to also provide a PolicyInterceptorProvider,
and declare a corresponding bean. Either implement one from scratch or use the
PolicyInterceptorProviderImpl in the api package and customise it as follows
(assuming that one and the same interceptor is used for all paths):</p>
+<p>Sometimes, it may be more convenient to spead the above functionality
accross several interceptors, possibly according to chain (in, in fault, out,
outfault). In any case, you need to also provide a PolicyInterceptorProvider,
and declare a corresponding bean. Either implement one from scratch or use the
PolicyInterceptorProviderImpl in the api package and customise it as follows
(assuming that one and the same interceptor is used for all paths). The main
task of policy interceptor provider is to say which interceptors must be
activated for specified policy assertion:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
<pre class="code-xml">
@@ -231,6 +236,30 @@ class MyPolicyAwareInterceptor {
<p>All beans of type PolicyInterceptorProvider are automatically registered
with the framework's PolicyInterceptorProviderRegistry.</p>
+<p>It is also possible to implement policy interceptor provider
programmatically from scratch. It's constructor gives assertions QNames as
argument of super constructor and adds corresponded interceptors using
getters:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+<span class="code-keyword">public</span> class
AuthorizationInterceptorProvider <span class="code-keyword">extends</span>
AbstractPolicyInterceptorProvider {
+ <span class="code-keyword">private</span> <span
class="code-keyword">static</span> <span class="code-keyword">final</span>
<span class="code-object">long</span> serialVersionUID = -5248428637449096540L;
+ <span class="code-keyword">private</span> <span
class="code-keyword">static</span> <span class="code-keyword">final</span>
AuthorizationInInterceptor IN_AUTHZ_INTERCEPTOR = <span
class="code-keyword">new</span> AuthorizationInInterceptor();
+ <span class="code-keyword">private</span> <span
class="code-keyword">static</span> <span class="code-keyword">final</span>
AuthorizationInInterceptor OUT_AUTHZ_INTERCEPTOR = <span
class="code-keyword">new</span> AuthorizationOutInterceptor();
+
+ <span class="code-keyword">private</span> <span
class="code-keyword">static</span> <span class="code-keyword">final</span>
Collection<QName> ASSERTION_TYPES;
+ <span class="code-keyword">static</span> {
+ ASSERTION_TYPES = <span class="code-keyword">new</span>
ArrayList<QName>();
+ ASSERTION_TYPES.add(AuthorizationConstants.AUTHORIZATION_ASSERTION);
+ }
+
+ <span class="code-keyword">public</span>
AuthorizationInterceptorProvider() {
+ <span class="code-keyword">super</span>(ASSERTION_TYPES);
+ getInInterceptors().add(IN_AUTHZ_INTERCEPTOR);
+ getOutInterceptors().add(OUT_AUTHZ_INTERCEPTOR);
+ }
+}
+</pre>
+</div></div>
+
<h2><a shape="rect"
name="DevelopingAssertions-ImplementingaPolicyAwareConduit%2FDestination"></a>Implementing
a Policy-Aware Conduit/Destination</h2>
<h3><a shape="rect"
name="DevelopingAssertions-Initialisation"></a>Initialisation</h3>