You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ch...@apache.org on 2005/10/21 13:26:45 UTC

svn commit: r327157 - in /webservices/sandesha/trunk/src/org/apache/sandesha2: FaultMgr.java wsrm/FaultCode.java wsrm/SequenceFault.java

Author: chamikara
Date: Fri Oct 21 04:26:23 2005
New Revision: 327157

URL: http://svn.apache.org/viewcvs?rev=327157&view=rev
Log:
Applied Sanka's patch. 

Modified:
    webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java?rev=327157&r1=327156&r2=327157&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java Fri Oct 21 04:26:23 2005
@@ -1,34 +1,39 @@
 package org.apache.sandesha2;
 
-import org.apache.sandesha2.wsrm.AckRequested;
-import org.apache.sandesha2.wsrm.CreateSequence;
-import org.apache.sandesha2.wsrm.CreateSequenceResponse;
-import org.apache.sandesha2.wsrm.Sequence;
-import org.apache.sandesha2.wsrm.Identifier;
-import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
-import org.apache.sandesha2.wsrm.SequenceFault;
-import org.apache.sandesha2.wsrm.FaultCode;
-import org.apache.sandesha2.wsrm.TerminateSequence;
+import java.math.BigInteger;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.soap.SOAP11Constants;
+import org.apache.axis2.soap.SOAP12Constants;
+import org.apache.axis2.soap.SOAPBody;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.soap.SOAPFactory;
+import org.apache.axis2.soap.SOAPFault;
+import org.apache.axis2.soap.SOAPFaultCode;
+import org.apache.axis2.soap.SOAPFaultDetail;
+import org.apache.axis2.soap.SOAPFaultReason;
+import org.apache.axis2.soap.SOAPFaultSubCode;
+import org.apache.axis2.soap.SOAPFaultText;
+import org.apache.axis2.soap.SOAPFaultValue;
+import org.apache.axis2.soap.SOAPHeader;
+import org.apache.axis2.soap.impl.llom.SOAPConstants;
+import org.apache.axis2.soap.impl.llom.soap12.SOAP12Factory;
 import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
 import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
-import org.apache.sandesha2.storage.beanmanagers.RetransmitterBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
-import org.apache.sandesha2.storage.beans.RetransmitterBean;
 import org.apache.sandesha2.storage.beans.SequencePropertyBean;
-import org.apache.sandesha2.storage.beans.StorageMapBean;
 import org.apache.sandesha2.util.SandeshaUtil;
-import org.apache.axis2.soap.*;
-import org.apache.axis2.soap.impl.llom.SOAPConstants;
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.om.OMAttribute;
-import org.apache.axis2.om.OMElement;
-import org.apache.axis2.AxisFault;
-
-import javax.xml.namespace.QName;
-import java.math.BigInteger;
-import java.util.Iterator;
+import org.apache.sandesha2.wsrm.FaultCode;
+import org.apache.sandesha2.wsrm.SequenceFault;
 
 /**
  * Created by IntelliJ IDEA.
@@ -39,11 +44,8 @@
  */
 public class FaultMgr {
 
-    private static final int SEQUENCE_FAULT = 10;
-    private static final String WSA_ACTION_FAULT = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
-
-    private static final int SEQUENCE_TYPE = 22;
-    private static final int NON_SEQUENCE_TYPe = 23;
+    private static final String WSA_ACTION_FAULT 
+        = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
     
     public static final int UNKNOWN_SEQUENCE_TYPE = 1;
     public static final int MESSAGE_NUMBER_ROLLOVER_TYPE = 2;
@@ -72,13 +74,20 @@
         int type;
         String code;
         String subcode;
-        String reason;  
+        String reason; 
+        OMElement detail;
         MessageContext msgCtx;
     }
     
     public FaultMgr() {
     }
     
+    /**
+     * 
+     * @param msgCtx
+     * @return
+     * @throws SandeshaException
+     */
     public RMMsgContext check(MessageContext msgCtx) throws SandeshaException {
         int msgType = getMessageType(msgCtx);
         
@@ -87,22 +96,31 @@
             case Constants.MessageTypes.APPLICATION:
             
                 /* Sequence*/
-                return checkSequence(msgCtx);
+                return checkSequenceMsg(msgCtx);
             
             case Constants.MessageTypes.ACK:
                 
                 /* SequenceAcknowledgement */
-                return checkSequenceAcknowledgement(msgCtx);
-            
+                return checkSequenceAcknowledgementMsg(msgCtx);
             
+            default:
                 
-                
-                
+                /* TODO check for other message types */
+                return null;       
         }
-        return null;
     }
     
-    public RMMsgContext checkSequence(MessageContext msgCtx) 
+    /**
+     * Check whether a Sequence message
+     * (a) belongs to a unknown sequence (generates an UnknownSequence fault)
+     * (b) message number exceeds a predifined limit ( genenrates a Message 
+     *     Number Rollover fault)
+     * 
+     * @param msgCtx
+     * @return
+     * @throws SandeshaException
+     */
+    public RMMsgContext checkSequenceMsg(MessageContext msgCtx) 
             throws SandeshaException {
         
         NextMsgBeanMgr mgr =
@@ -137,37 +155,40 @@
         return null;
     }
     
-    public RMMsgContext checkSequenceAcknowledgement(MessageContext msgCtx) 
+    /**
+     * 
+     * @param msgCtx
+     * @return
+     * @throws SandeshaException
+     */
+    public RMMsgContext checkSequenceAcknowledgementMsg(MessageContext msgCtx) 
             throws SandeshaException {
-        
+        NextMsgBeanMgr mgr 
+            = AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
+        StorageMapBeanMgr smgr 
+            = AbstractBeanMgrFactory.getInstance(msgCtx).getStorageMapBeanMgr();
+        SequencePropertyBeanMgr propertyBeanMgr 
+            = AbstractBeanMgrFactory.getInstance(msgCtx).getSequencePropretyBeanMgr();
+    
         SOAPEnvelope envelope = msgCtx.getEnvelope();
-        
+        // this is a SequenceAcknowledgement message
         OMElement element = envelope.getFirstChildWithName(
                 new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE_ACK));
-          
-        // this is a SequenceAcknowledgement message
-        OMElement identifierPart = element.getFirstChildWithName(
+        OMElement identifier = element.getFirstChildWithName(
                 new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
-        NextMsgBeanMgr mgr =
-            AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
-        if (mgr.retrieve(identifierPart.getText()) == null) {
+        
+        if (mgr.retrieve(identifier.getText()) == null) {
             //throw UnknownSequenceFault
             return getFault(FaultMgr.UNKNOWN_SEQUENCE_TYPE, msgCtx);
         }
         
-        String identifierString = identifierPart.getText().trim();
-        StorageMapBeanMgr smgr = 
-                AbstractBeanMgrFactory.getInstance(msgCtx).getStorageMapBeanMgr();
-        SequencePropertyBeanMgr propertyBeanMgr = 
-                AbstractBeanMgrFactory.getInstance(msgCtx).getSequencePropretyBeanMgr();
-        
+        String identifierString = identifier.getText().trim();
         SequencePropertyBean propertyBean = 
             propertyBeanMgr.retrieve(identifierString, 
                     Constants.SequenceProperties.TEMP_SEQUENCE_ID);
         
         //TODO 
         String acksString = ""; //propertyBean.getAcksString();
-        
         String[] msgNumberStrs = acksString.split(",");
 
         //TODO move this to a util class
@@ -223,134 +244,14 @@
         }        
         return null;
     }
-
-    public RMMsgContext checkSequenceMessage(MessageContext msgCtx) 
-            throws SandeshaException {
-
-        SOAPEnvelope envelope = msgCtx.getEnvelope();
-        OMElement element;
-        
-        element = envelope.getHeader().getFirstChildWithName(
-                new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE));
-        
-        if (element != null) {
-            // this is a Sequence message
-            OMElement identifier = element.getFirstChildWithName(
-                new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
-
-            String identifierString = identifier.getText().trim();
-            NextMsgBeanMgr mgr =
-                   AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
-
-            if (mgr.retrieve(identifierString) == null) {
-                // throws new UnknownSequence fault
-                return getFault(FaultMgr.UNKNOWN_SEQUENCE_TYPE, msgCtx);
-            }
-
-            OMElement msgNumber = element.getFirstChildWithName(
-				new QName (Constants.WSRM.NS_URI_RM,Constants.WSRM.MSG_NUMBER));
-
-            BigInteger bigInteger = new BigInteger(msgNumber.getText().trim());
-            
-            // throws new MessageNumberRollover fault
-            if (bigInteger.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) == 1) {
-                return getFault(FaultMgr.MESSAGE_NUMBER_ROLLOVER_TYPE,
-                        msgCtx);
-            }
-            
-            return null;            
-        } 
-        
-       
-        element = envelope.getHeader().getFirstChildWithName(
-                new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE_ACK));
-        
-        if (element != null) {
-            // this is a SequenceAcknowledgement message
-            OMElement identifierPart = element.getFirstChildWithName(
-                    new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
-            NextMsgBeanMgr mgr =
-                AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
-            if (mgr.retrieve(identifierPart.getText()) == null) {
-                //throw UnknownSequenceFault
-                return getFault(FaultMgr.UNKNOWN_SEQUENCE_TYPE, msgCtx);
-            }
-            
-            String identifierString = identifierPart.getText().trim();
-            StorageMapBeanMgr smgr = 
-                    AbstractBeanMgrFactory.getInstance(msgCtx).getStorageMapBeanMgr();
-            SequencePropertyBeanMgr propertyBeanMgr = 
-                    AbstractBeanMgrFactory.getInstance(msgCtx).getSequencePropretyBeanMgr();
-            
-            SequencePropertyBean propertyBean = 
-                propertyBeanMgr.retrieve(identifierString, 
-                        Constants.SequenceProperties.TEMP_SEQUENCE_ID);
-            
-            //TODO 
-            String acksString = ""; //propertyBean.getAcksString();
-            
-            String[] msgNumberStrs = acksString.split(",");
-
-            //TODO move this to a util class
-            long[] msgNumbers = new long[msgNumberStrs.length];
-            for (int i=0; i < msgNumbers.length; i++) {
-                msgNumbers[i] = Long.parseLong(msgNumberStrs[i]);
-            }
-            
-            Iterator acks = element.getChildrenWithName(new QName(
-                    Constants.WSRM.NS_URI_RM, Constants.WSRM.ACK_RANGE));
-            while (acks.hasNext()) {
-                OMElement ack = (OMElement) acks.next();
-
-                OMAttribute lowerAttrib = ack.getAttribute(
-                        new QName(Constants.WSRM.LOWER));
-                long lower = Long.parseLong(lowerAttrib.getAttributeValue());
-
-                OMAttribute upperAttrib = ack.getAttribute(
-                        new QName(Constants.WSRM.UPPER));
-                long upper = Long.parseLong(upperAttrib.getAttributeValue());
-                
-                for (; lower <= upper; lower++) {    
-                    boolean found = false;
-                    for (int j = 0; j < msgNumbers.length; j++) {
-                        if (lower == msgNumbers[j]) {
-                            found = true;
-                            break;
-                        }
-                    }
-                    if (!found) {
-                        //TODO throw new InvalidAcknowledgement   
-                    }
-                }
-            }
-            
-            Iterator nacks = element.getChildrenWithName(new QName(
-                    Constants.WSRM.NS_URI_RM, Constants.WSRM.NACK));
-            
-            while (nacks.hasNext()) {
-                OMElement nack = (OMElement) nacks.next();
-                long msgNo = Long.parseLong(nack.getText());
-                
-                boolean found = false;
-                for (int j = 0; j < msgNumbers.length; j++) {
-                    if (msgNo == msgNumbers[j]) {
-                        found = true;
-                        break;
-                    }
-                }
-                if (!found) {
-                    //TODO throw new InvalidAcknowledgement   
-                }
-            }
-        }
-        
-        return null;
-    }
-    
-    public RMMsgContext checkInvalidAcknowledge() {
-        return null;
-    }
     
+    /**
+     * 
+     * @param type
+     * @param msgCtx
+     * @return
+     * @throws SandeshaException
+     */
     public RMMsgContext getFault(int type, MessageContext msgCtx) 
             throws SandeshaException {
 
@@ -358,44 +259,43 @@
 
         switch (type) {
             case FaultMgr.UNKNOWN_SEQUENCE_TYPE:
-                data.type = FaultMgr.UNKNOWN_SEQUENCE_TYPE;
                 data.code = FaultMgr.UNKNOW_SEQUENCE_CODE;
                 data.subcode = FaultMgr.UNKNOW_SEQUENCE_SUBCODE;
-                data.reason = FaultMgr.UNKNOW_SEQUENCE_RESON;   
+                data.reason = FaultMgr.UNKNOW_SEQUENCE_RESON;
+                data.msgCtx = msgCtx;
                 break;
             
             case FaultMgr.MESSAGE_NUMBER_ROLLOVER_TYPE:  
-                data.type = FaultMgr.MESSAGE_NUMBER_ROLLOVER_TYPE;
                 data.code = FaultMgr.MESSAGE_NUMBER_ROLLOVER_CODE;
                 data.subcode = FaultMgr.MESSAGE_NUMBER_ROLLOVER_SUBCODE;
                 data.reason = FaultMgr.MESSAGE_NUMBER_ROLLOVER_REASON;
+                data.msgCtx = msgCtx;
                 break;
             
             case FaultMgr.INVALID_ACKNOWLEDGEMENT_TYPE:
-                data.type = FaultMgr.INVALID_ACKNOWLEDGEMENT_TYPE;
                 data.code = FaultMgr.INVALID_ACKNOWLEDGEMENT_CODE;
                 data.subcode = FaultMgr.INVALID_ACKNOWLEDGEMENT_SUBCODE;
                 data.reason = FaultMgr.INVALID_ACKNOWLEDGEMENT_REASON;
+                data.msgCtx = msgCtx;
                 break;
         }
         
+        data.type = getMessageType(msgCtx);
+        
         MessageContext newMsgCtx = SandeshaUtil.shallowCopy(msgCtx);
-//        newMsgCtx.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
-//        newMsgCtx.setServiceContext(msgCtx.getServiceContext());
+        newMsgCtx.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+        newMsgCtx.setServiceContext(msgCtx.getServiceContext());
         RMMsgContext newRMMsgCtx = new RMMsgContext(newMsgCtx);
         
         SequenceFault seqFault = new SequenceFault();
-        //seqFault.setSubcode(data.subcode);
-        //seqFault.setReason(data.reason);
-        
         FaultCode faultCode = new FaultCode();
-        //faultCode.setFault(data.code);
+        faultCode.setFaultCode(data.code);
         seqFault.setFaultCode(faultCode);
         
-        //TODO is it SEQUENCE_FAULT or just FAULT
-        //newRMMsgCtx.setMessagePart(SEQUENCE_FAULT, seqFault);
+        //TODO 
+        //newRMMsgCtx.setMessagePart(Constants.MessageParts.SEQUENCE_FAULT, seqFault);
         
-        SOAPEnvelope inMsgEnvelope = msgCtx.getEnvelope();
+        String str = msgCtx.getEnvelope().getNamespace().getName();
         
         if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
                 msgCtx.getEnvelope().getNamespace().getName())) {
@@ -412,102 +312,158 @@
         return newRMMsgCtx;
     }
     
-
-    public void doSOAP12Encoding(FaultData data, MessageContext msgCtx) {
-        msgCtx.setProperty(AddressingConstants.WSA_ACTION, WSA_ACTION_FAULT);
+    /**
+     * 
+     * @param data
+     * @param msgCtx
+     * @throws SandeshaException
+     */
+    public void doSOAP11Encoding(FaultData data, MessageContext msgCtx) 
+            throws SandeshaException {
+        
+        
+        SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_1);
+        SOAPEnvelope faultMsgEnvelope = factory.getDefaultFaultEnvelope();
         
+        SOAPFault fault;
+        SOAPFaultCode faultCode;
+        SOAPFaultReason faultReason;
+        SOAPFaultText faultText;
+
+        switch (data.type) {
+            case Constants.MessageTypes.CREATE_SEQ:
+                
+                /* CreateSequence */
+                fault = faultMsgEnvelope.getBody().getFault();
+                faultCode = fault.getCode();
+                faultCode.getValue().setText(data.subcode);
+                
+                faultReason = fault.getReason();
+                faultReason.getSOAPText().setText(data.reason);
+                // TODO
+                OMNamespace namespace = 
+                    factory.createOMNamespace(
+                            SOAP11Constants.XMLNS_URI,
+                            SOAP11Constants.XMLNS_PREFIX);
+                faultReason.getSOAPText().addAttribute("lang", "en", namespace);
+                break;
+                
+            default:
+                
+                /* */
+                fault = faultMsgEnvelope.getBody().getFault();
+                faultCode = fault.getCode();
+                faultCode.getValue().setText(data.code);
+                
+                faultReason = fault.getReason();
+                faultReason.getSOAPText().setText(data.reason);
+                break;
+        }
+                
+        try {
+            msgCtx.setEnvelope(faultMsgEnvelope);
+            
+        } catch (AxisFault axisFault) {
+            throw new SandeshaException(axisFault.getMessage());
+        }
+    }
+    
+    /**
+     * 
+     * @param msgCtx
+     * @return
+     */
+    public void doSOAP12Encoding(FaultData data, MessageContext msgCtx) 
+        throws SandeshaException{
+           
         SOAPFactory factory = 
                 SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_2);
         SOAPEnvelope envelope = factory.getDefaultFaultEnvelope();
                 
-        SOAPFault fault = factory.createSOAPFault(envelope.getBody());
-        SOAPFaultCode faultCode = factory.createSOAPFaultCode(fault);
-        SOAPFaultValue faultValue = factory.createSOAPFaultValue(faultCode);
-        faultValue.setText(data.code);
-        SOAPFaultSubCode faultSubCode = factory.createSOAPFaultSubCode(faultCode);
-        SOAPFaultValue faultValue2 = factory.createSOAPFaultValue(faultSubCode);
-        faultValue2.setText(data.subcode);
+        SOAPFault fault = envelope.getBody().getFault();
+        SOAPFaultCode faultCode = fault.getCode();
+        SOAPFaultValue codeValue = faultCode.getValue();
+        codeValue.setText(data.code);
         
-        //TODO
-        faultCode.setSubCode(faultSubCode);
+        SOAPFaultSubCode faultSubCode = factory.createSOAPFaultSubCode(faultCode);
+        SOAPFaultValue subCodeValue = factory.createSOAPFaultValue(faultSubCode);
+        subCodeValue.setText(data.subcode);
         
-        SOAPFaultReason faultReason = factory.createSOAPFaultReason(fault);
-        SOAPFaultText faultText = factory.createSOAPFaultText(faultReason);
+        SOAPFaultReason faultReason = fault.getReason();
+        SOAPFaultText faultText = faultReason.getSOAPText();
         faultText.setText(data.reason);
+                
+        SOAPFaultDetail faultDetail = fault.getDetail();
         
-        SOAPFaultDetail faultDetail = factory.createSOAPFaultDetail(fault);
-        SOAPHeader header = data.msgCtx.getEnvelope().getHeader();
-        OMElement sequence = header.getFirstChildWithName(
-                new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE));
-        OMElement identifier = sequence.getFirstChildWithName(
-                new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
-        identifier.detach();
-        
-        faultDetail.addChild(identifier);
-        
-    }
-
-    public void doSOAP11Encoding(FaultData data, MessageContext msgCtx) 
-            throws SandeshaException {
-
-        SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_1);
-        SOAPEnvelope faultMsgEnvelope = factory.getDefaultFaultEnvelope();
-
-        SOAPFault fault = factory.createSOAPFault(faultMsgEnvelope.getBody());
-        SOAPFaultCode soapFaultCode = factory.createSOAPFaultCode(fault);
-        SOAPFaultValue soapFaultValue = 
-                factory.createSOAPFaultValue(soapFaultCode);
-        SOAPFaultReason faultReason = factory.createSOAPFaultReason(fault);
-
-        if (data.type == FaultMgr.UNKNOWN_SEQUENCE_TYPE) {
-            soapFaultValue.setText(data.code);
-
-        } else {
-//          TODO sets the attribute xml:lang = "en" ..
-            soapFaultValue.setText(data.subcode);
+        SOAPEnvelope ienvelope = data.msgCtx.getEnvelope();
+       
+        switch (data.type) {
+            case Constants.MessageTypes.APPLICATION:
+                
+                /* Sequence */
+                OMElement sequence = ienvelope.getHeader().getFirstChildWithName(
+                        new QName(Constants.WSRM.NS_URI_RM, 
+                                Constants.WSRM.SEQUENCE));
+                OMElement sidentifier = sequence.getFirstChildWithName(
+                       new QName(Constants.WSRM.NS_URI_RM,
+                               Constants.WSRM.IDENTIFIER));
+                
+                OMNamespace snamespace = 
+                        factory.createOMNamespace(
+                                Constants.WSRM.NS_URI_RM, 
+                                Constants.WSRM.NS_PREFIX_RM);
+                OMElement selement = factory.createOMElement(
+                        Constants.WSRM.IDENTIFIER, snamespace);
+                
+                selement.setText(sidentifier.getText());
+                faultDetail.addChild(selement);
+                break;
+                
+            case Constants.MessageTypes.ACK:
+                
+                /* SequenceAcknowledge */
+                
+                OMElement sequenceAck 
+                    = ienvelope.getHeader().getFirstChildWithName(
+                            new QName(
+                                    Constants.WSRM.NS_URI_RM, 
+                                    Constants.WSRM.SEQUENCE_ACK));
+                OMElement aidentifier 
+                    = sequenceAck.getFirstChildWithName(
+                            new QName(Constants.WSRM.NS_URI_RM, 
+                                    Constants.WSRM.IDENTIFIER));
+                OMNamespace anamespace = 
+                    factory.createOMNamespace(
+                            Constants.WSRM.NS_URI_RM, 
+                            Constants.WSRM.NS_PREFIX_RM);
+                OMElement aelement = factory.createOMElement(
+                    Constants.WSRM.IDENTIFIER, anamespace);
+            
+                aelement.setText(aidentifier.getText());
+                faultDetail.addChild(aelement);
+                break;
+            
+                default:
+                    
+                    /* TODO for other message types */
+                    break;
+                
         }
-
-        faultReason.setText(data.reason);
+        
+        msgCtx.setProperty(AddressingConstants.WSA_ACTION, WSA_ACTION_FAULT);
         
         try {
-            msgCtx.setEnvelope(faultMsgEnvelope);
-        } catch (AxisFault axisFault) {
-            throw new SandeshaException(axisFault.getMessage());
+            msgCtx.setEnvelope(envelope);
+        } catch (AxisFault e) {
+            throw new SandeshaException(e.getMessage());
         }
     }
 
-//    public void doSOAP12Encoding(FaultData data, MessageContext msgCtx) 
-//            throws SandeshaException {
-//
-//        SOAPFactory factory = 
-//                SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_2);
-//        SOAPEnvelope faultMsgEnvelope = factory.getDefaultFaultEnvelope();
-//        
-//        SOAPFault fault = faultMsgEnvelope.getBody().getFault();
-//        SOAPFaultCode soapFaultCode = fault.getCode();
-//        soapFaultCode.getValue().setText(data.code);
-//          
-//
-//        SOAPFaultSubCode soapFaultSubCode
-//                = factory.createSOAPFaultSubCode(soapFaultCode, soapFaultCode.getBuilder());
-//        SOAPFaultValue soapFaultValue = factory.createSOAPFaultValue(soapFaultSubCode);
-//        soapFaultValue.setText(data.subcode);
-//
-//
-//        fault.getReason().getSOAPText().setText(data.reason);   
-//        SOAPEnvelope envelope = msgCtx.getEnvelope();
-//                
-//
-//        try {
-//            msgCtx.setEnvelope(faultMsgEnvelope);
-//        } catch (AxisFault axisFault) {
-//            throw new SandeshaException(axisFault.getMessage());
-//        }
-//    }
     
     public int getMessageType(MessageContext msgCtx) {
         
         SOAPHeader header = msgCtx.getEnvelope().getHeader();
+        SOAPBody body = msgCtx.getEnvelope().getBody();
         
         if (header.getFirstChildWithName(
                     new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE)) 
@@ -519,17 +475,17 @@
             != null) {
             return Constants.MessageTypes.ACK;
             
-        } else if (header.getFirstChildWithName(
+        } else if (body.getFirstChildWithName(
                     new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.CREATE_SEQUENCE))
             != null) {
             return Constants.MessageTypes.CREATE_SEQ;
             
-        } else if (header.getFirstChildWithName(
+        } else if (body.getFirstChildWithName(
                     new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.CREATE_SEQUENCE_RESPONSE))
             != null) {
             return Constants.MessageTypes.CREATE_SEQ_RESPONSE;
             
-        } else if (header.getFirstChildWithName(
+        } else if (body.getFirstChildWithName(
                     new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.TERMINATE_SEQUENCE))
             != null) {
             return Constants.MessageTypes.TERMINATE_SEQ;
@@ -546,9 +502,5 @@
         
         
     }
-    
-    
-
-
-    
+      
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java?rev=327157&r1=327156&r2=327157&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java Fri Oct 21 04:26:23 2005
@@ -95,5 +95,13 @@
 
 		return sequenceFault;
 	}
+    
+    public void setFaultCode(String faultCode) {
+        this.faultCode = faultCode;
+    }
+    
+    public String getFaultCode() {
+        return faultCode;
+    }
 
-}
\ No newline at end of file
+}

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java?rev=327157&r1=327156&r2=327157&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java Fri Oct 21 04:26:23 2005
@@ -18,14 +18,13 @@
 
 import java.util.Iterator;
 
-import javax.wsdl.extensions.soap.SOAPBinding;
-import javax.wsdl.extensions.soap.SOAPBody;
 import javax.xml.namespace.QName;
 
 import org.apache.axis2.om.OMAbstractFactory;
 import org.apache.axis2.om.OMElement;
 import org.apache.axis2.om.OMException;
 import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.soap.SOAPBody;
 import org.apache.axis2.soap.SOAPEnvelope;
 import org.apache.axis2.soap.SOAPHeader;
 import org.apache.axis2.soap.SOAPHeaderBlock;
@@ -125,4 +124,4 @@
 		return sequenceFaultElement;
 	}
 
-}
\ No newline at end of file
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org