Modified: incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java?rev=399252&r1=399251&r2=399252&view=diff ============================================================================== --- incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java (original) +++ incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java Wed May 3 03:58:21 2006 @@ -28,13 +28,14 @@ * The filter mediator combines the regex and xpath filtering functionality. If an xpath * is set, it is evaluated; else the given regex is evaluated against the source xpath. */ -public class FilterMediator extends AbstractListMediator { +public class FilterMediator extends AbstractListMediator implements org.apache.synapse.api.FilterMediator { - private String source = null; - private String regex = null; - private String xpath = null; + private AXIOMXPath source = null; + private Pattern regex = null; + private AXIOMXPath xpath = null; public boolean mediate(SynapseMessage synMsg) { + log.debug(getType() + " mediate()"); if (test(synMsg)) { return super.mediate(synMsg); } else { @@ -45,14 +46,11 @@ public boolean test(SynapseMessage synMsg) { try { if (xpath != null) { - AXIOMXPath xp = new AXIOMXPath(xpath); - return xp.booleanValueOf(synMsg.getEnvelope()); + return xpath.booleanValueOf(synMsg.getEnvelope()); } else if (source != null && regex != null) { - Pattern pattern = Pattern.compile(regex); - AXIOMXPath xp = new AXIOMXPath(source); - Object result = xp.evaluate(synMsg.getEnvelope()); - return pattern.matcher(result.toString()).matches(); + Object result = source.evaluate(synMsg.getEnvelope()); + return regex.matcher(result.toString()).matches(); } else { log.error("Invalid configuration specified"); @@ -66,27 +64,27 @@ } - public String getSource() { + public AXIOMXPath getSource() { return source; } - public void setSource(String source) { + public void setSource(AXIOMXPath source) { this.source = source; } - public String getRegex() { + public Pattern getRegex() { return regex; } - public void setRegex(String regex) { + public void setRegex(Pattern regex) { this.regex = regex; } - public String getXpath() { + public AXIOMXPath getXpath() { return xpath; } - public void setXpath(String xpath) { + public void setXpath(AXIOMXPath xpath) { this.xpath = xpath; }
Modified: incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java?rev=399252&r1=399251&r2=399252&view=diff ============================================================================== --- incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java (original) +++ incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java Wed May 3 03:58:21 2006 @@ -18,10 +18,9 @@ import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMDocument; -import org.apache.axiom.soap.SOAP12Constants; -import org.apache.axiom.soap.SOAPEnvelope; -import org.apache.axiom.soap.SOAPFactory; +import org.apache.axiom.soap.*; import org.apache.axis2.addressing.EndpointReference; +import org.apache.axis2.AxisFault; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.synapse.SynapseException; @@ -37,55 +36,80 @@ private Log log = LogFactory.getLog(getClass()); - private QName faultCode; - private String reason; + public static final int SOAP11 = 1; + public static final int SOAP12 = 2; + + private int soapVersion; - public boolean mediate(SynapseMessage smc) { - log.debug("process"); + private QName code; + private String reason; + //TODO support SOAP 1.2 fault stuff.. + //Node, Role, detail etc - SOAPEnvelope envelop = smc.getEnvelope(); + public boolean mediate(SynapseMessage synMsg) { + log.debug(getType() + " mediate()"); + SOAPEnvelope envelop = synMsg.getEnvelope(); SOAPFactory factory; - if (envelop != null) { - if (envelop.getNamespace().getName().equals( - SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) { - factory = OMAbstractFactory.getSOAP12Factory(); - } else { + + switch (soapVersion) { + case SOAP11: factory = OMAbstractFactory.getSOAP11Factory(); + break; + case SOAP12: + factory = OMAbstractFactory.getSOAP12Factory(); + break; + default : { + if (envelop != null) { + if (envelop.getNamespace().getName().equals( + SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) { + factory = OMAbstractFactory.getSOAP12Factory(); + } else { + factory = OMAbstractFactory.getSOAP11Factory(); + } + } else { + factory = OMAbstractFactory.getSOAP11Factory(); + } } + } + // TODO : Figure out how to easily gen the correct fault + // Replace this + OMDocument soapFaultDocument = factory.createOMDocument(); + SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope(); + //SOAPFault fault = factory.createSOAPFault(); + //faultEnvelope.setFirstChild(fault); + soapFaultDocument.addChild(faultEnvelope); + + // set the fault message to the "faultTo" of the original message if it exists + // else to the "replyTo" + EndpointReference toEPR = synMsg.getTo(); + EndpointReference faultToEPR = synMsg.getFaultTo(); + if (faultToEPR != null) { + synMsg.setTo(faultToEPR); + synMsg.setReplyTo(toEPR); } else { - factory = OMAbstractFactory.getSOAP11Factory(); + EndpointReference replyToEPR = synMsg.getReplyTo(); + synMsg.setTo(replyToEPR); + synMsg.setReplyTo(toEPR); } - try { - // TODO : Figure out how to easily gen the correct fault + synMsg.setResponse(true); - // Replace this - OMDocument soapFaultDocument = factory.createOMDocument(); - SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope(); - soapFaultDocument.addChild(faultEnvelope); - - smc.setEnvelope(faultEnvelope); - } catch (Exception e) { - throw new SynapseException(e); + try { + synMsg.setEnvelope(faultEnvelope); + } catch (AxisFault af) { + String msg = "Error replacing SOAP envelope with a fault envelope " + af.getMessage(); + log.error(msg); + throw new SynapseException(af); } - smc.setResponse(true); - - // Flipping the headers - EndpointReference tempEPR = smc.getTo(); - smc.setTo(smc.getReplyTo()); - smc.setReplyTo(tempEPR); - - smc.getSynapseEnvironment().injectMessage(smc); - - return false; + return true; } - public QName getFaultCode() { - return faultCode; + public QName getCode() { + return code; } - public void setFaultCode(QName faultCode) { - this.faultCode = faultCode; + public void setCode(QName code) { + this.code = code; } public String getReason() { @@ -95,4 +119,14 @@ public void setReason(String reason) { this.reason = reason; } + + public int getSoapVersion() { + return soapVersion; + } + + public void setSoapVersion(int soapVersion) { + this.soapVersion = soapVersion; + } + + } Modified: incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/XSLTMediator.java URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/XSLTMediator.java?rev=399252&r1=399251&r2=399252&view=diff ============================================================================== --- incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/XSLTMediator.java (original) +++ incubator/synapse/trunk/scratch/synapse2/modules/core/src/org/apache/synapse/mediators/transform/XSLTMediator.java Wed May 3 03:58:21 2006 @@ -32,7 +32,7 @@ private String source = null; public boolean mediate(SynapseMessage synMsg) { - + log.debug(getType() + " mediate()"); if (xsltUrl != null) { performXLST(synMsg); return true; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
