Author: asankha
Date: Tue Jul 18 05:14:56 2006
New Revision: 423064

URL: http://svn.apache.org/viewvc?rev=423064&view=rev
Log:
fix formatting for xdocs

Modified:
    incubator/synapse/trunk/java/xdocs/extending_synapse.html

Modified: incubator/synapse/trunk/java/xdocs/extending_synapse.html
URL: 
http://svn.apache.org/viewvc/incubator/synapse/trunk/java/xdocs/extending_synapse.html?rev=423064&r1=423063&r2=423064&view=diff
==============================================================================
--- incubator/synapse/trunk/java/xdocs/extending_synapse.html (original)
+++ incubator/synapse/trunk/java/xdocs/extending_synapse.html Tue Jul 18 
05:14:56 2006
@@ -34,8 +34,80 @@
 </p>
 <h4>MessageContext Interface</h4>
 <p></p>
-<pre>package org.apache.synapse;<br><br>import ...<br><br>public interface 
<span
- style="font-weight: bold;">MessageContext </span>{<br><br>    /**<br>     * 
Get a reference to the current SynapseConfiguration<br>     *<br>     * @return 
the current synapse configuration<br>     */<br>    public SynapseConfiguration 
getConfiguration();<br><br>    /**<br>     * Set or replace the Synapse 
Configuration instance to be used. May be used to<br>     * programatically 
change the configuration at runtime etc.<br>     *<br>     * @param cfg The new 
synapse configuration instance<br>     */<br>    public void 
setConfiguration(SynapseConfiguration cfg);<br><br>    /**<br>     * Returns a 
reference to the host Synapse Environment<br>     * @return the Synapse 
Environment<br>     */<br>    public SynapseEnvironment 
getEnvironment();<br><br>    /**<br>     * Sets the SynapseEnvironment 
reference to this context<br>     * @param se the reference to the Synapse 
Environment<br>     */<br>    public void setEnvironment(SynapseEnvironment 
se);<br><br>    /**<br>     * Get 
 the value of a custom (local) property set on the message instance<br>     * 
@param key key to look up property<br>     * @return value for the given 
key<br>     */<br>    public Object getProperty(String key);<br><br>    /**<br> 
    * Set a custom (local) property with the given name on the message 
instance<br>     * @param key key to be used<br>     * @param value value to be 
saved<br>     */<br>    public void setProperty(String key, Object 
value);<br><br>    /**<br>     * Returns the Set of keys over the properties on 
this message context<br>     * @return a Set of keys over message 
properties<br>     */<br>    public Set getPropertyKeySet();<br><br>    /**<br> 
    * Get the SOAP envelope of this message<br>     * @return the SOAP envelope 
of the message<br>     */<br>    public SOAPEnvelope getEnvelope();<br><br>    
/**<br>     * Sets the given envelope as the current SOAPEnvelope for this 
message<br>     * @param envelope the envelope to be set<br>     * @throws 
org.ap
 ache.axis2.AxisFault on exception<br>     */<br>    public void 
setEnvelope(SOAPEnvelope envelope) throws AxisFault;<br><br>    /**<br>     * 
SOAP message related getters and setters<br>     */<br>    public 
....get/set()...<br><br>}<br></pre>
+<pre>
+package org.apache.synapse;
+
+import ...
+
+public interface MessageContext {
+
+    /**
+     * Get a reference to the current SynapseConfiguration
+     *
+     * @return the current synapse configuration
+     */
+    public SynapseConfiguration getConfiguration();
+
+    /**
+     * Set or replace the Synapse Configuration instance to be used. May be 
used to
+     * programatically change the configuration at runtime etc.
+     *
+     * @param cfg The new synapse configuration instance
+     */
+    public void setConfiguration(SynapseConfiguration cfg);
+
+    /**
+     * Returns a reference to the host Synapse Environment
+     * @return the Synapse Environment
+     */
+    public SynapseEnvironment getEnvironment();
+
+    /**
+     * Sets the SynapseEnvironment reference to this context
+     * @param se the reference to the Synapse Environment
+     */
+    public void setEnvironment(SynapseEnvironment se);
+
+    /**
+     * Get the value of a custom (local) property set on the message instance
+     * @param key key to look up property
+     * @return value for the given key
+     */
+    public Object getProperty(String key);
+
+    /**
+     * Set a custom (local) property with the given name on the message 
instance
+     * @param key key to be used
+     * @param value value to be saved
+     */
+    public void setProperty(String key, Object value);
+
+    /**
+     * Returns the Set of keys over the properties on this message context
+     * @return a Set of keys over message properties
+     */
+    public Set getPropertyKeySet();
+
+    /**
+     * Get the SOAP envelope of this message
+     * @return the SOAP envelope of the message
+     */
+    public SOAPEnvelope getEnvelope();
+
+    /**
+     * Sets the given envelope as the current SOAPEnvelope for this message
+     * @param envelope the envelope to be set
+     * @throws org.apache.axis2.AxisFault on exception
+     */
+    public void setEnvelope(SOAPEnvelope envelope) throws AxisFault;
+
+    /**
+     * SOAP message related getters and setters
+     */
+    public ....get/set()...
+
+}
+</pre>
 <p>The MessageContext interface is based on the Axis2 <a>MessageContext</a>
 interface, and uses the Axis2 <a>EndpointReference</a> and
 SOAPEnvelope
@@ -47,8 +119,35 @@
 <h4>Mediator interface</h4>
 <p>The second key interface for mediator writers is the Mediator
 interface:</p>
-<pre>package org.apache.synapse.api;<br><br>import 
org.apache.synapse.MessageContext;<br><br>/**<br> * All Synapse mediators must 
implement this Mediator interface. As a message passes<br> * through the 
synapse system, each mediator's mediate() method is invoked in the<br> * 
sequence/order defined in the SynapseConfiguration.<br> */<br>public interface 
<span
- style="font-weight: bold;">Mediator </span>{<br><br>    /**<br>     * Invokes 
the mediator passing the current message for mediation. Each<br>     * mediator 
performs its mediation action, and returns true if mediation<br>     * should 
continue, or false if further mediation should be aborted.<br>     *<br>     * 
@param synCtx the current message for mediation<br>     * @return true if 
further mediation should continue<br>     */<br>    public boolean 
mediate(MessageContext synCtx);<br><br>    /**<br>     * This is used for 
debugging purposes and exposes the type of the current<br>     * mediator for 
logging and debugging purposes<br>     * @return a String representation of the 
mediator type<br>     */<br>    public String getType();<br>}</pre>
+<pre>package org.apache.synapse.api;
+
+import org.apache.synapse.MessageContext;
+
+/**
+ * All Synapse mediators must implement this Mediator interface. As a message 
passes
+ * through the synapse system, each mediator's mediate() method is invoked in 
the
+ * sequence/order defined in the SynapseConfiguration.
+ */
+public interface <span
+ style="font-weight: bold;">Mediator </span>{
+
+    /**
+     * Invokes the mediator passing the current message for mediation. Each
+     * mediator performs its mediation action, and returns true if mediation
+     * should continue, or false if further mediation should be aborted.
+     *
+     * @param synCtx the current message for mediation
+     * @return true if further mediation should continue
+     */
+    public boolean mediate(MessageContext synCtx);
+
+    /**
+     * This is used for debugging purposes and exposes the type of the current
+     * mediator for logging and debugging purposes
+     * @return a String representation of the mediator type
+     */
+    public String getType();
+}</pre>
 <p>A mediator can read and/or modify the <a>SynapseMessage</a> in any
 suitable
 manner - adjusting the routing headers or changing the message body. If
@@ -58,95 +157,110 @@
 security agent it
 may decide that this message is dangerous and should not be processed
 further. This is generally the exception as mediators are usually
-designed to co-operate to process the message onwards.<br>
-<br>
+designed to co-operate to process the message onwards.
+
+
+
 </p>
-<h3>Leaf and Node Mediators, List mediators and Filter mediators<br>
+<h3>Leaf and Node Mediators, List mediators and Filter mediators
+
 </h3>
 Mediators may be Node mediators (i.e. these contain sub mediators) or
 Leaf mediators (mediators that does not hold any sub mediators). A Node
 mediator&nbsp; must implement the org.apache.synapse.api.ListMediator
 interface listed below, or extend from the
-org.apache.synapse.mediators.AbstractListMediator.<br>
-<h4>The ListMediator interface<br>
+org.apache.synapse.mediators.AbstractListMediator.
+
+<h4>The ListMediator interface
+
 </h4>
-package org.apache.synapse.api;<br>
-<br>
-import java.util.List;<br>
-<br>
-/**<br>
-&nbsp;* The List mediator executes a given sequence/list of child
-mediators<br>
-&nbsp;*/<br>
-public interface ListMediator extends Mediator {<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Appends the specified mediator to the end of
-this mediator's (children) list<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @param m the mediator to be added<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return true (as per the general contract of
-the Collection.add method)<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public boolean addChild(Mediator m);<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Appends all of the mediators in the
-specified collection to the end of this mediator's (children)<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * list, in the order that they are returned by
-the specified collection's iterator<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @param c the list of mediators to be added<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return true if this list changed as a
-result of the call<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public boolean addAll(List c);<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Returns the mediator at the specified
-position<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @param pos index of mediator to return<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return the mediator at the specified
-position in this list<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public Mediator getChild(int pos);<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Removes the first occurrence in this list of
-the specified mediator<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @param m mediator to be removed from this
-list, if present<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return true if this list contained the
-specified mediator<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public boolean removeChild(Mediator m);<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Removes the mediator at the specified
-position in this list<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @param pos the index of the mediator to
-remove<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return the mediator previously at the
-specified position<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public Mediator removeChild(int pos);<br>
-<br>
-&nbsp;&nbsp;&nbsp; /**<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * Return the list of mediators of this List
-mediator instance<br>
-&nbsp;&nbsp;&nbsp;&nbsp; * @return the child/sub mediator list<br>
-&nbsp;&nbsp;&nbsp;&nbsp; */<br>
-&nbsp;&nbsp;&nbsp; public List getList();<br>
-}<br>
-<br>
+<pre>
+package org.apache.synapse.api;
+
+import java.util.List;
+
+/**
+* The List mediator executes a given sequence/list of child mediators
+*/
+public interface ListMediator extends Mediator {
+    /**
+    * Appends the specified mediator to the end of this mediator's (children) 
list
+    * @param m the mediator to be added
+    * @return true (as per the general contract of the Collection.add method)
+    */
+    public boolean addChild(Mediator m);
+    
+    /**
+    * Appends all of the mediators in the specified collection to the end of 
this mediator's (children)
+    * list, in the order that they are returned by the specified collection's 
iterator
+    * @param c the list of mediators to be added
+    * @return true if this list changed as a result of the call
+    */
+    public boolean addAll(List c);
+    
+    /**
+    * Returns the mediator at the specified position
+    * @param pos index of mediator to return
+    * @return the mediator at the specified position in this list
+    */
+    public Mediator getChild(int pos);
+    
+    /**
+    * Removes the first occurrence in this list of the specified mediator
+    * @param m mediator to be removed from this list, if present
+    * @return true if this list contained the specified mediator
+    */
+    public boolean removeChild(Mediator m);
+    
+    /**
+    * Removes the mediator at the specified position in this list
+    * @param pos the index of the mediator to remove
+    * @return the mediator previously at the specified position
+    */
+    public Mediator removeChild(int pos);
+    
+    /**
+    * Return the list of mediators of this List mediator instance
+    * @return the child/sub mediator list
+    */
+    public List getList();
+}
+
+</pre>
+
 A ListMediator implementation should call super.mediate(synCtx) to
 process its sub mediator sequence. A FilterMediator is a ListMediator
 which executes its sequence of sub mediators on successful outcome of a
 test condition. Mediator instance which performs filtering should
-implement the FilterMediator interface.<br>
-<br>
+implement the FilterMediator interface.
+
+
+
 <h4>FilterMediator interface</h4>
-<pre>package org.apache.synapse.api;<br><br>import 
org.apache.synapse.MessageContext;<br><br>/**<br> * The filter mediator is a 
list mediator, which executes the given (sub) list of mediators<br> * if the 
specified condition is satisfied<br> *<br> * @see 
FilterMediator#test(org.apache.synapse.MessageContext)<br> */<br>public 
interface <span
- style="font-weight: bold;">FilterMediator </span>extends ListMediator 
{<br><br>    /**<br>     * Should return true if the sub/child mediators should 
execute. i.e. if the filter<br>     * condition is satisfied<br>     * @param 
synCtx<br>     * @return true if the configured filter condition evaluates to 
true<br>     */<br>    public boolean test(MessageContext 
synCtx);<br>}<br></pre>
-<h2>Writing custom Configuration implementations for mediators<br>
+<pre>package org.apache.synapse.api;
+
+import org.apache.synapse.MessageContext;
+
+/**
+ * The filter mediator is a list mediator, which executes the given (sub) list 
of mediators
+ * if the specified condition is satisfied
+ *
+ * @see FilterMediator#test(org.apache.synapse.MessageContext)
+ */
+public interface <span
+ style="font-weight: bold;">FilterMediator </span>extends ListMediator {
+
+    /**
+     * Should return true if the sub/child mediators should execute. i.e. if 
the filter
+     * condition is satisfied
+     * @param synCtx
+     * @return true if the configured filter condition evaluates to true
+     */
+    public boolean test(MessageContext synCtx);
+}
+</pre>
+<h2>Writing custom Configuration implementations for mediators
+
 </h2>
 You may write your own custom configurator for the Mediator
 implementation you write without relying on the Class mediator or
@@ -166,8 +280,10 @@
 "org.apache.synapse.config.xml.MediatorFactory" which will contain the
 fully qualified name(s) of your MediatorFactory implementation
 class(es). You should also place any dependency JARs into the same lib
-folder so that the correct classpath references could be made. <br>
-<br>
+folder so that the correct classpath references could be made. 
+
+
+
 The
 MediatorFactory interface listing is given below, which you should
 implement, and its getTagQName()
@@ -179,10 +295,34 @@
 that an instance of the mediator could be created utilizing the custom
 XML specification and returned.
 See the ValidateMediator and the ValidateMediatorFactory classes under
-modules/extensions in the Synapse source distribution for examples.<br>
-<br>
+modules/extensions in the Synapse source distribution for examples.
+
+
+
 <h4>The MediatorFactory interface</h4>
-<pre>package org.apache.synapse.config.xml;<br><br>import ...<br><br>/**<br> * 
A mediator factory capable of creating an instance of a mediator through a 
given<br> * XML should implement this interface<br> */<br>public interface 
MediatorFactory {<br>    /**<br>     * Creates an instance of the mediator 
using the OMElement<br>     * @param elem<br>     * @return the created 
mediator<br>     */<br>    public Mediator createMediator(OMElement 
elem);<br><br>    /**<br>     * The QName of this mediator element in the XML 
config<br>     * @return QName of the mediator element<br>     */<br>    public 
QName getTagQName();<br>}<br></pre>
+<pre>package org.apache.synapse.config.xml;
+
+import ...
+
+/**
+ * A mediator factory capable of creating an instance of a mediator through a 
given
+ * XML should implement this interface
+ */
+public interface MediatorFactory {
+    /**
+     * Creates an instance of the mediator using the OMElement
+     * @param elem
+     * @return the created mediator
+     */
+    public Mediator createMediator(OMElement elem);
+
+    /**
+     * The QName of this mediator element in the XML config
+     * @return QName of the mediator element
+     */
+    public QName getTagQName();
+}
+</pre>
 <h2>Writing custom Configuration implementations for Configuration
 extensions</h2>
 Mediators could be configured in multiple ways as Synapse, i.e.
@@ -197,13 +337,56 @@
 that
 it could be set into the SynapseConfiguration as a named global
 'property'.
-The interfaces referenced are listed below.<br>
-<br>
+The interfaces referenced are listed below.
+
+
+
 <h4>The Extension interface</h4>
-<pre>package org.apache.synapse.config;<br><br>import ...<br><br>/**<br> * An 
Extension allows the Synapse configuration to be extended. The Spring<br> * 
configuration support is implemented as such an extension, so that the<br> * 
Synapse core will not be dependent on Spring classes. An extension<br> * 
&lt;b&gt;must&lt;/b&gt; specify the following methods to set and get its 
name.<br> */<br>public interface Extension {<br><br>    public String 
getName();<br><br>    public void setName(String name);<br>   <br>}<br></pre>
-<h4>The ExtensionFactory interface<br>
+<pre>package org.apache.synapse.config;
+
+import ...
+
+/**
+ * An Extension allows the Synapse configuration to be extended. The Spring
+ * configuration support is implemented as such an extension, so that the
+ * Synapse core will not be dependent on Spring classes. An extension
+ * &lt;b&gt;must&lt;/b&gt; specify the following methods to set and get its 
name.
+ */
+public interface Extension {
+
+    public String getName();
+
+    public void setName(String name);
+   
+}
+</pre>
+<h4>The ExtensionFactory interface
+
 </h4>
-<pre>package org.apache.synapse.config.xml;<br><br>import ....<br><br>/**<br> 
* A extension factory that is capable of creating an instance of a<br> * named 
extension, through a given XML, should implement this interface<br> 
*/<br>public interface ExtensionFactory {<br>    /**<br>     * Creates an 
instance of a named extension using the OMElement<br>     * @param elem<br>     
* @return the created named extension<br>     */<br>    public Extension 
createExtension(OMElement elem);<br><br>    /**<br>     * The QName of the 
extension element in the XML config<br>     * @return QName of the extension 
element<br>     */<br>    public QName getTagQName();<br><br>}<br></pre>
+<pre>package org.apache.synapse.config.xml;
+
+import ....
+
+/**
+ * A extension factory that is capable of creating an instance of a
+ * named extension, through a given XML, should implement this interface
+ */
+public interface ExtensionFactory {
+    /**
+     * Creates an instance of a named extension using the OMElement
+     * @param elem
+     * @return the created named extension
+     */
+    public Extension createExtension(OMElement elem);
+
+    /**
+     * The QName of the extension element in the XML config
+     * @return QName of the extension element
+     */
+    public QName getTagQName();
+
+}
+</pre>
 <h4>Loading of Extensions by the Synapse runtime</h4>
 Synapse loads available extensions from the runtime classpath using the
 <a
@@ -214,25 +397,82 @@
 text
 file with the name org.apache.synapse.config.xml.ExtensionFactory which
 contains a list of fully qualified classname that implement the above
-interface, listing each class in a separate line.<br>
-<br>
+interface, listing each class in a separate line.
+
+
+
 e.g. The built-in extension_mediators.jar contains the following
-structure<br>
-<br>
-<pre>extension_mediators.jar<br>    /META-INF/services<br>        
org.apache.synapse.config.xml.ExtensionFactory<br>        
org.apache.synapse.config.xml.MediatorFactory<br>    /... the implementation 
classes as usual...<br><br></pre>
+structure
+
+
+
+<pre>extension_mediators.jar
+    /META-INF/services
+        org.apache.synapse.config.xml.ExtensionFactory
+        org.apache.synapse.config.xml.MediatorFactory
+    /... the implementation classes as usual...
+
+</pre>
 The org.apache.synapse.config.xml.ExtensionFactory text file discussed
 above contains the line
 "org.apache.synapse.config.xml.SpringConfigExtensionFactory" but may
 contain multiple lines specifying a list of extensions contained within
-the specific JAR file.<br>
-<br>
+the specific JAR file.
+
+
+
 Once the available ExtensionFactory implementations are loaded by the
 Synapse initializer, it accumulates the list of defined XML
 configuration elements by calling to the getTagQName() method of the
 ExtensionFactory implementation. Lets consider the Spring extension as
-an example.<br>
-<br>
-<pre>package org.apache.synapse.config.xml;<br><br>import ...<br><br>/**<br> * 
Creates a Spring configuration extension from XML configuration. A Spring<br> * 
configuration extension keeps Spring away from the core of synapse<br> *<br> * 
&lt;spring:config name="string" src="file"/&gt;<br> */<br>public class 
SpringConfigExtensionFactory implements ExtensionFactory {<br><br>    private 
static final Log log = 
LogFactory.getLog(SpringConfigExtensionFactory.class);<br><br>    private 
static final QName SPRING_CFG_Q = new QName(Constants.SYNAPSE_NAMESPACE + 
"/spring", "config");<br><br>    /**<br>     * &lt;spring:config name="string" 
src="file"/&gt;<br>     *<br>     * @param elem the XML configuration 
element<br>     * @return A named Spring Configuration<br>     */<br>    public 
Extension createExtension(OMElement elem) {<br><br>        
SpringConfigExtension springCfgExt = null;<br>        OMAttribute name = 
elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));<br>   
      OMAttribute src  = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, 
"src"));<br><br>        if (name == null) {<br>            handleException("The 
'name' attribute is required for a Spring configuration definition");<br>       
 } else if (src == null) {<br>            handleException("The 'src' attribute 
is required for a Spring configuration definition");<br>        } else {<br>    
        springCfgExt = new SpringConfigExtension(name.getAttributeValue(), 
src.getAttributeValue());<br>        }<br>        return springCfgExt;<br>    
}<br><br>    private void handleException(String msg) {<br>        
log.error(msg);<br>        throw new SynapseException(msg);<br>    
}<br>}<br></pre>
+an example.
+
+
+
+<pre>package org.apache.synapse.config.xml;
+
+import ...
+
+/**
+ * Creates a Spring configuration extension from XML configuration. A Spring
+ * configuration extension keeps Spring away from the core of synapse
+ *
+ * &lt;spring:config name="string" src="file"/&gt;
+ */
+public class SpringConfigExtensionFactory implements ExtensionFactory {
+
+    private static final Log log = 
LogFactory.getLog(SpringConfigExtensionFactory.class);
+
+    private static final QName SPRING_CFG_Q = new 
QName(Constants.SYNAPSE_NAMESPACE + "/spring", "config");
+
+    /**
+     * &lt;spring:config name="string" src="file"/&gt;
+     *
+     * @param elem the XML configuration element
+     * @return A named Spring Configuration
+     */
+    public Extension createExtension(OMElement elem) {
+
+        SpringConfigExtension springCfgExt = null;
+        OMAttribute name = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "name"));
+        OMAttribute src  = elem.getAttribute(new 
QName(Constants.NULL_NAMESPACE, "src"));
+
+        if (name == null) {
+            handleException("The 'name' attribute is required for a Spring 
configuration definition");
+        } else if (src == null) {
+            handleException("The 'src' attribute is required for a Spring 
configuration definition");
+        } else {
+            springCfgExt = new SpringConfigExtension(name.getAttributeValue(), 
src.getAttributeValue());
+        }
+        return springCfgExt;
+    }
+
+    private void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}
+</pre>
 The getTagQName() returns the name space
 "http://ws.apache.org/ns/synapse/spring"; and the element name as
 "config", and thus registers itself as the handler for a
@@ -250,11 +490,71 @@
 store it into the SynapseConfiguration, as a "property", and thus could
 be retrieved later via this same "name". Hence the implementations
 should be careful to use unique meaningful names for their
-implementations.<br>
-<br>
+implementations.
+
+
+
 For completeness, the implementation of the Spring extension is
-given in the following listing.<br>
-<br>
-<pre>package org.apache.synapse.config;<br><br>import ...<br><br>/**<br> * 
This defines an extension to Synapse to process a Spring Configuration.<br> * 
This keeps the Spring dependency out from the Synapse core, and the<br> * 
dependent Jars from the core distribution.<br> *<br> * A Spring configuration 
is usually named, but this class allows an<br> * inlined configuration to be 
built up as well, where the Spring mediator<br> * defines an inline Spring 
configuration<br> */<br>public class SpringConfigExtension implements Extension 
{<br><br>    /**<br>     * The name of this Spring configuration<br>     */<br> 
   private String name = null;<br><br>    /**<br>     * This is the Spring 
ApplicationContext/BeanFactory<br>     */<br>    private 
GenericApplicationContext appContext = null;<br><br>    /**<br>     * Create a 
Spring configuration from the given configuration<br>     *<br>     * @param 
configFile the configuration file to be used<br>     */<br>    public 
SpringConfigEx
 tension(String name, String configFile) {<br>        setName(name);<br>        
appContext = new GenericApplicationContext();<br>        
XmlBeanDefinitionReader xbdr = new XmlBeanDefinitionReader(appContext);<br>     
   xbdr.setValidating(false);<br>        xbdr.loadBeanDefinitions(new 
FileSystemResource(configFile));<br>        appContext.refresh();<br>    
}<br><br>    public GenericApplicationContext getAppContext() {<br>        
return appContext;<br>    }<br><br>    public String getName() {<br>        
return name;<br>    }<br><br>    public void setName(String name) {<br>        
this.name = name;<br>    }<br><br>    public QName getTagQName() {<br>        
return SPRING_CFG_Q;<br>    }<br>}<br><br></pre>
+given in the following listing.
+
+
+
+<pre>package org.apache.synapse.config;
+
+import ...
+
+/**
+ * This defines an extension to Synapse to process a Spring Configuration.
+ * This keeps the Spring dependency out from the Synapse core, and the
+ * dependent Jars from the core distribution.
+ *
+ * A Spring configuration is usually named, but this class allows an
+ * inlined configuration to be built up as well, where the Spring mediator
+ * defines an inline Spring configuration
+ */
+public class SpringConfigExtension implements Extension {
+
+    /**
+     * The name of this Spring configuration
+     */
+    private String name = null;
+
+    /**
+     * This is the Spring ApplicationContext/BeanFactory
+     */
+    private GenericApplicationContext appContext = null;
+
+    /**
+     * Create a Spring configuration from the given configuration
+     *
+     * @param configFile the configuration file to be used
+     */
+    public SpringConfigExtension(String name, String configFile) {
+        setName(name);
+        appContext = new GenericApplicationContext();
+        XmlBeanDefinitionReader xbdr = new XmlBeanDefinitionReader(appContext);
+        xbdr.setValidating(false);
+        xbdr.loadBeanDefinitions(new FileSystemResource(configFile));
+        appContext.refresh();
+    }
+
+    public GenericApplicationContext getAppContext() {
+        return appContext;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public QName getTagQName() {
+        return SPRING_CFG_Q;
+    }
+}
+
+</pre>
 </body>
 </html>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to