Team,
Somehow SVN ended up generating a huge un-reviewable diff commit
email. Here's the actual diff for your review.
thanks,
dims
--
Davanum Srinivas : http://www.wso2.net (Oxygen for Web Service Developers)
Index: kernel/src/org/apache/axis2/description/AxisService2OM.java
===================================================================
--- kernel/src/org/apache/axis2/description/AxisService2OM.java (revision 453304)
+++ kernel/src/org/apache/axis2/description/AxisService2OM.java (working copy)
@@ -249,8 +249,6 @@
.equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
- || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY
- .equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
@@ -384,8 +382,6 @@
.equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
- || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY
- .equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
@@ -619,8 +615,6 @@
.equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
- || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY
- .equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
@@ -755,8 +749,6 @@
.equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
- || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY
- .equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
@@ -857,8 +849,6 @@
.equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY
.equals(MEP)
- || WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY
- .equals(MEP)
|| WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT
.equals(MEP)) {
AxisMessage outAxisMessage = axisOperation
Index: kernel/src/org/apache/axis2/description/AxisOperationFactory.java
===================================================================
--- kernel/src/org/apache/axis2/description/AxisOperationFactory.java (revision 453304)
+++ kernel/src/org/apache/axis2/description/AxisOperationFactory.java (working copy)
@@ -93,7 +93,7 @@
} else if (WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_OUT_ONLY.equals(mepURI)) {
abOpdesc = new OutInAxisOperation();
} else if (WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI) || WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY.equals(mepURI)) {
- abOpdesc = new InOutAxisOperation();
+ abOpdesc = new InOnlyAxisOperation();
}else {
throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
}
Index: kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java
===================================================================
--- kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (revision 453304)
+++ kernel/src/org/apache/axis2/description/WSDL11ToAxisServiceBuilder.java (working copy)
@@ -689,6 +689,9 @@
boolean isWrapped) {
List extensibilityElements = bindingOutput.getExtensibilityElements();
+ if(wsdl4jOperation.getOutput() == null) {
+ return;
+ }
Message wsdl4jMessage = wsdl4jOperation.getOutput().getMessage();
for (int i = 0; i < extensibilityElements.size(); i++) {
@@ -1972,8 +1975,12 @@
if (operationType.equals(OperationType.REQUEST_RESPONSE))
return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT;
- if (operationType.equals(OperationType.ONE_WAY))
+ if (operationType.equals(OperationType.ONE_WAY)) {
+ if(operation.getFaults().size() > 0) {
+ return WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY;
+ }
return WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY;
+ }
if (operationType.equals(OperationType.NOTIFICATION))
return WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_ONLY;
Index: kernel/src/org/apache/axis2/wsdl/WSDLUtil.java
===================================================================
--- kernel/src/org/apache/axis2/wsdl/WSDLUtil.java (revision 453304)
+++ kernel/src/org/apache/axis2/wsdl/WSDLUtil.java (working copy)
@@ -53,7 +53,6 @@
WSDLConstants.WSDL20_2004Constants.MEP_URI_OUT_OPTIONAL_IN.equals(MEP) ||
WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||
WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_OUT_ONLY.equals(MEP) ||
- WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY.equals(MEP) ||
WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT.equals(MEP) ||
WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OPTIONAL_OUT.equals(MEP) ||
WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT.equals(MEP) ||
Index: codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java
===================================================================
--- codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java (revision 453304)
+++ codegen/src/org/apache/axis2/wsdl/codegen/emitter/AxisServiceBasedMultiLanguageEmitter.java (working copy)
@@ -112,6 +112,8 @@
mepToClassMap = new HashMap();
mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, "org.apache.axis2.receivers.AbstractInMessageReceiver");
+ mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
+ mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, "org.apache.axis2.receivers.AbstractRobustInMessageReceiver");
mepToClassMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
mepToClassMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, "org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver");
@@ -119,6 +121,8 @@
mepToSuffixMap = new HashMap();
mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
+ mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_ROBUST_IN_ONLY, MESSAGE_RECEIVER_SUFFIX + "InOnly");
mepToSuffixMap.put(WSDLConstants.WSDL20_2004Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
mepToSuffixMap.put(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT, MESSAGE_RECEIVER_SUFFIX + "InOut");
//register the other types as necessary
@@ -1538,7 +1542,7 @@
methodElement.appendChild(getInputElement(doc,
axisOperation, soapHeaderInputParameterList));
- if(!(axisOperation instanceof InOnlyAxisOperation)){
+ if(WSDLUtil.isOutputPresentForMEP(axisOperation.getMessageExchangePattern())){
methodElement.appendChild(getOutputElement(doc,
axisOperation, soapHeaderOutputParameterList));
}
Index: codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl
===================================================================
--- codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl (revision 453304)
+++ codegen/src/org/apache/axis2/wsdl/template/java/InterfaceTemplate.xsl (working copy)
@@ -104,7 +104,8 @@
</xsl:if>
</xsl:if>
<!-- Code for in-only mep -->
- <xsl:if test="@mep='10'">
+ <xsl:if test="@mep='10' or @mep='11'">
+ <xsl:variable name="mep"><xsl:value-of select="@mep"/></xsl:variable>
<!-- For in-only meps there would not be any asynchronous methods since there is no output -->
/**
@@ -121,7 +122,13 @@
<xsl:for-each select="input/param/param">
<xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:if>
- </xsl:for-each>) throws java.rmi.RemoteException;
+ </xsl:for-each>) throws java.rmi.RemoteException
+ <xsl:if test="$mep='11'"><!--add the faults-->
+ <xsl:for-each select="fault/[EMAIL PROTECTED]'']">
+ ,<xsl:value-of select="@name"/>
+ </xsl:for-each>
+ </xsl:if>
+ ;
</xsl:when>
<xsl:otherwise>
<!-- Use object as wrapper for input parameters -->
@@ -134,7 +141,13 @@
<xsl:for-each select="input/param">
<xsl:if test="@type!=''"><xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:if>
- </xsl:for-each>) throws java.rmi.RemoteException;
+ </xsl:for-each>) throws java.rmi.RemoteException
+ <xsl:if test="$mep='11'"><!--add the faults-->
+ <xsl:for-each select="fault/[EMAIL PROTECTED]'']">
+ ,<xsl:value-of select="@name"/>
+ </xsl:for-each>
+ </xsl:if>
+ ;
</xsl:otherwise>
</xsl:choose>
Index: codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl
===================================================================
--- codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl (revision 453304)
+++ codegen/src/org/apache/axis2/wsdl/template/java/TestClassTemplate.xsl (working copy)
@@ -168,7 +168,7 @@
<!-- end of in-out mep -->
</xsl:if>
<!-- start of in-only mep-->
- <xsl:if test="@mep='10'">
+ <xsl:if test="@mep='10' or @mep='11'">
/**
* Auto generated test method
*/
Index: codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
===================================================================
--- codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl (revision 453318)
+++ codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl (working copy)
@@ -68,6 +68,9 @@
<xsl:when test="@mep='10'">
__operation = new org.apache.axis2.description.OutOnlyAxisOperation();
</xsl:when>
+ <xsl:when test="@mep='11'">
+ __operation = new org.apache.axis2.description.RobustOutOnlyAxisOperation();
+ </xsl:when>
<xsl:otherwise>
__operation = new org.apache.axis2.description.OutInAxisOperation();
</xsl:otherwise>
@@ -553,7 +556,7 @@
<!-- Start of in only mep-->
- <xsl:if test="$mep='10'"> <!-- These constants can be found in org.apache.axis2.wsdl.WSDLConstants -->
+ <xsl:if test="$mep='10' or $mep='11'"> <!-- These constants can be found in org.apache.axis2.wsdl.WSDLConstants -->
<!-- for the in only mep there is no notion of sync or async. And there is no return type also -->
public void <xsl:text> </xsl:text><xsl:value-of select="@name"/>(
<xsl:variable name="inputcount" select="count(input/[EMAIL PROTECTED]'body' and @type!=''])"/>
@@ -581,8 +584,16 @@
<xsl:if test="position()>1">,</xsl:if><xsl:value-of select="@type"/><xsl:text> </xsl:text><xsl:value-of select="@name"/>
</xsl:for-each>
- ) throws java.rmi.RemoteException{
+ ) throws java.rmi.RemoteException
+ <!--add the faults-->
+ <xsl:if test="$mep='11'">
+ <xsl:for-each select="fault/[EMAIL PROTECTED]'']">
+ ,<xsl:value-of select="@name"/>
+ </xsl:for-each>
+ </xsl:if>
+ {
+ <xsl:if test="$mep='11'">try {</xsl:if>
org.apache.axis2.client.OperationClient _operationClient = _serviceClient.createClient(_operations[<xsl:value-of select="position()-1"/>].getName());
_operationClient.getOptions().setAction("<xsl:value-of select="$soapAction"/>");
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);
@@ -669,6 +680,58 @@
_operationClient.addMessageContext(_messageContext);
_operationClient.execute(true);
+ <xsl:if test="$mep='11'">
+ }catch(org.apache.axis2.AxisFault f){
+ org.apache.axiom.om.OMElement faultElt = f.getDetail();
+ if (faultElt!=null){
+ if (faultExeptionNameMap.containsKey(faultElt.getQName())){
+ //make the fault by reflection
+ try{
+ java.lang.String exceptionClassName = (java.lang.String)faultExeptionClassNameMap.get(faultElt.getQName());
+ java.lang.Class exceptionClass = java.lang.Class.forName(exceptionClassName);
+ java.lang.Exception ex=
+ (java.lang.Exception) exceptionClass.newInstance();
+ //message class
+ java.lang.String messageClassName = (java.lang.String)faultMessageMap.get(faultElt.getQName());
+ java.lang.Class messageClass = java.lang.Class.forName(messageClassName);
+ java.lang.Object messageObject = fromOM(faultElt,messageClass,null);
+ java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",
+ new java.lang.Class[]{messageClass});
+ m.invoke(ex,new java.lang.Object[]{messageObject});
+ <xsl:for-each select="fault/param">
+ if (ex instanceof <xsl:value-of select="@name"/>){
+ throw (<xsl:value-of select="@name"/>)ex;
+ }
+ </xsl:for-each>
+
+ throw new java.rmi.RemoteException(ex.getMessage(), ex);
+ }catch(java.lang.ClassCastException e){
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ } catch (java.lang.ClassNotFoundException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ }catch (java.lang.NoSuchMethodException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ } catch (java.lang.reflect.InvocationTargetException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ } catch (java.lang.IllegalAccessException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ } catch (java.lang.InstantiationException e) {
+ // we cannot intantiate the class - throw the original Axis fault
+ throw f;
+ }
+ }else{
+ throw f;
+ }
+ }else{
+ throw f;
+ }
+ }
+ </xsl:if>
return;
}
</xsl:if>
Index: codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
===================================================================
--- codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl (revision 453304)
+++ codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl (working copy)
@@ -327,4 +327,169 @@
</xsl:template>
+ <!--Template for robust in message receiver -->
+ <xsl:template match="/[EMAIL PROTECTED]'org.apache.axis2.receivers.AbstractRobustInMessageReceiver']">
+
+ <xsl:variable name="skeletonname"><xsl:value-of select="@skeletonInterfaceName"/></xsl:variable>
+ <xsl:variable name="dbsupportpackage"><xsl:value-of select="@dbsupportpackage"/></xsl:variable>
+
+ /**
+ * <xsl:value-of select="@name"/>.java
+ *
+ * This file was auto-generated from WSDL
+ * by the Apache Axis2 version: #axisVersion# #today#
+ */
+ package <xsl:value-of select="@package"/>;
+
+ /**
+ * <xsl:value-of select="@name"/> message receiver
+ */
+
+ public class <xsl:value-of select="@name"/> extends <xsl:value-of select="@basereceiver"/>{
+
+
+ public void invokeBusinessLogic(org.apache.axis2.context.MessageContext msgContext)
+ throws org.apache.axis2.AxisFault{
+
+ try {
+
+ // get the implementation class for the Web Service
+ Object obj = getTheImplementationObject(msgContext);
+
+ //Inject the Message Context if it is asked for
+ org.apache.axis2.engine.DependencyManager.configureBusinessLogicProvider(obj, msgContext.getOperationContext());
+
+ <xsl:value-of select="$skeletonname"/> skel = (<xsl:value-of select="$skeletonname"/>)obj;
+ //Out Envelop
+ org.apache.axiom.soap.SOAPEnvelope envelope = null;
+ //Find the axisOperation that has been set by the Dispatch phase.
+ org.apache.axis2.description.AxisOperation op = msgContext.getOperationContext().getAxisOperation();
+ if (op == null) {
+ throw new org.apache.axis2.AxisFault("Operation is not located, if this is doclit style the SOAP-ACTION should specified via the SOAP Action to use the RawXMLProvider");
+ }
+
+ java.lang.String methodName;
+ if(op.getName() != null & (methodName = op.getName().getLocalPart()) != null){
+
+ <xsl:for-each select="method">
+
+ if("<xsl:value-of select="@name"/>".equals(methodName)){
+
+ <!-- If usedbmethod attribute present, gives name of method to call for implementation -->
+ <xsl:variable name="usedbmethod"><xsl:value-of select="@usedbmethod"/></xsl:variable>
+
+
+
+ <xsl:choose>
+ <xsl:when test="string-length(normalize-space($usedbmethod))=0">
+
+ <xsl:variable name="namespace"><xsl:value-of select="@namespace"/></xsl:variable>
+
+ <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+ <xsl:variable name="style"><xsl:value-of select="@style"/></xsl:variable>
+
+ <xsl:choose>
+ <!-- We really don't need to make a difference between these-->
+ <xsl:when test="$style='document' or $style='rpc'">
+ //doc style
+ <xsl:variable name="inputcount" select="count(input/[EMAIL PROTECTED]'body' and @type!=''])"/>
+ <xsl:variable name="inputtype" select="input/[EMAIL PROTECTED]'body' and @type!='']/@type"/>
+
+ <xsl:choose>
+ <xsl:when test="$inputcount=1">
+ <xsl:value-of select="$inputtype"/> wrappedParam =
+ (<xsl:value-of select="$inputtype"/>)fromOM(
+ msgContext.getEnvelope().getBody().getFirstElement(),
+ <xsl:value-of select="$inputtype"/>.class,
+ getEnvelopeNamespaces(msgContext.getEnvelope()));
+ <!-- Even when the parameters are 1 we have to see whether we have the
+ wrapped parameters -->
+ <xsl:variable name="inputWrappedCount" select="count(input/[EMAIL PROTECTED]'body' and @type!='']/param)"/>
+ <xsl:choose>
+ <xsl:when test="$inputWrappedCount > 0">
+ skel.<xsl:value-of select="@name"/>(
+ <xsl:for-each select="input/[EMAIL PROTECTED]'body' and @type!='']/param">
+ <xsl:if test="position() > 1">,</xsl:if>
+ get<xsl:value-of select="@partname"/>(wrappedParam)
+ </xsl:for-each>
+
+ );
+
+ </xsl:when>
+ <xsl:otherwise>
+ skel.<xsl:value-of select="@name"/>(wrappedParam) ;
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ skel.<xsl:value-of select="@name"/>();
+ </xsl:otherwise>
+ </xsl:choose>
+ envelope = getSOAPFactory(msgContext).getDefaultEnvelope();
+ </xsl:when>
+
+ <xsl:otherwise>
+ //Unknown style!! No code is generated
+ throw new UnsupportedOperationException("Unknown Style");
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ envelope = <xsl:value-of select="$usedbmethod"/>(msgContext.getEnvelope().getBody().getFirstElement(), skel, getSOAPFactory(msgContext));
+ </xsl:otherwise>
+
+ </xsl:choose>
+
+ }
+ </xsl:for-each>
+ }
+ <xsl:for-each select="fault-list/fault">
+ <xsl:if test="position()=1">}</xsl:if>catch (<xsl:value-of select="@name"/> e) {
+
+ org.apache.axis2.AxisFault f = createAxisFault(e);
+
+ f.setDetail(toOM(e.getFaultMessage(),false));
+
+ throw f;
+ }
+ </xsl:for-each>
+ <!-- put the extra bracket-->
+ <xsl:if test="count(fault-list/fault)=0">}</xsl:if>
+ catch (Exception e) {
+ throw org.apache.axis2.AxisFault.makeFault(e);
+ }
+ }
+ <!-- Call templates recursively-->
+ //<xsl:apply-templates><xsl:with-param name="context">message-receiver</xsl:with-param></xsl:apply-templates>
+
+ /**
+ * A utility method that copies the namepaces from the SOAPEnvelope
+ */
+ private java.util.Map getEnvelopeNamespaces(org.apache.axiom.soap.SOAPEnvelope env){
+ java.util.Map returnMap = new java.util.HashMap();
+ java.util.Iterator namespaceIterator = env.getAllDeclaredNamespaces();
+ while (namespaceIterator.hasNext()) {
+ org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace) namespaceIterator.next();
+ returnMap.put(ns.getPrefix(),ns.getNamespaceURI());
+ }
+ return returnMap;
+ }
+
+ private org.apache.axis2.AxisFault createAxisFault(java.lang.Exception e) {
+ org.apache.axis2.AxisFault f;
+ Throwable cause = e.getCause();
+ if (cause != null) {
+ f = new org.apache.axis2.AxisFault(e.getMessage(), cause);
+ } else {
+ f = new org.apache.axis2.AxisFault(e.getMessage());
+ }
+
+ return f;
+ }
+
+ }//end of class
+ </xsl:template>
+ <!-- end of template for robust in message receiver -->
+
</xsl:stylesheet>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]