Author: chamikara
Date: Sat Oct  7 06:56:17 2006
New Revision: 453907

URL: http://svn.apache.org/viewvc?view=rev&rev=453907
Log:
Added code prevent two SequenceAcknowledgements going for the same sequence in 
the same message.
Moved Ack sending logic from AckManager to the Application message processor 
which seems to
be the better place for it.
A bug fix in the SequenceAcknowledgement.

Several other bug fixes.

Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Sat Oct  7 06:56:17 2006
@@ -68,6 +68,7 @@
        public static final String 
couldNotCopyParameters="couldNotCopyParameters";

        public static final String senderBeanNotFound="senderBeanNotFound";

        public static final String workAlreadyAssigned="workAlreadyAssigned";

+       public static final String workNotPresent="workNotPresent";

        public static final String 
cannotSendToTheAddress="cannotSendToTheAddress";

        

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 Sat Oct  7 06:56:17 2006
@@ -62,6 +62,7 @@
 invalidQName=Invalid QName string: {0}

 senderBeanNotFound=SenderBean was not found

 workAlreadyAssigned=Work ''{0}'' is already assigned to a different Worker. 
Will try the next one

+workNotPresent="SenderWorker has been assigned an unexisting work with the Id 
''{0}''

 cannotSendToTheAddress=Message cannot be sent to the address ''{0}'' 

 

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Sat Oct  7 06:56:17 2006
@@ -18,6 +18,8 @@
 package org.apache.sandesha2.msgprocessors;
 
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
 
 import javax.xml.namespace.QName;
 
@@ -33,10 +35,12 @@
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.OperationContextFactory;
 import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisOperationFactory;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.transport.TransportSender;
+import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
@@ -344,16 +348,113 @@
                if (configCtx == null)
                        throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.configContextNotSet));
 
-               RMMsgContext ackRMMessage = 
AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey 
,sequenceId, storageManager);
-
-               //if the ack is anonymous send it right now.
+               RMMsgContext ackRMMsgCtx = 
AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey 
,sequenceId, storageManager);
+               MessageContext ackMsgCtx = ackRMMsgCtx.getMessageContext();
+               
+               EndpointReference acksTo = ackRMMsgCtx.getTo();
                
-               EndpointReference to = ackRMMessage.getTo();
-               if (to!=null && SandeshaUtil.isAnonymousURI(to.getAddress())) {
+               if (SandeshaUtil.isAnonymousURI (acksTo.getAddress())) {
+
+                       // AxisEngine engine = new
+                       // AxisEngine(ackRMMsgCtx.getMessageContext()
+                       // .getConfigurationContext());
+
+                       // setting CONTEXT_WRITTEN since acksto is anonymous
+                       if (rmMsgCtx.getMessageContext().getOperationContext() 
== null) {
+                               // operation context will be null when doing in 
a GLOBAL
+                               // handler.
+
+                               AxisOperation op = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);
+                               OperationContext opCtx = new 
OperationContext(op);
+                               
rmMsgCtx.getMessageContext().setAxisOperation(op);
+                               
rmMsgCtx.getMessageContext().setOperationContext(opCtx);
+                       }
+
+                       
rmMsgCtx.getMessageContext().getOperationContext().setProperty(
+                                       
org.apache.axis2.Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);
+
+                       
rmMsgCtx.getMessageContext().setProperty(Sandesha2Constants.ACK_WRITTEN, 
"true");
+
+                       ackRMMsgCtx.getMessageContext().setServerSide(true);
+                       
                        AxisEngine engine = new AxisEngine(configCtx);
-                       engine.send(ackRMMessage.getMessageContext());
-               }
+                       engine.send(ackRMMsgCtx.getMessageContext());
+
+               } else {
+
+                       // / Transaction asyncAckTransaction =
+                       // storageManager.getTransaction();
+
+                       SenderBeanMgr retransmitterBeanMgr = 
storageManager.getRetransmitterBeanMgr();
 
+                       String key = SandeshaUtil.getUUID();
+
+                       SenderBean ackBean = new SenderBean();
+                       ackBean.setMessageContextRefKey(key);
+                       ackBean.setMessageID(ackMsgCtx.getMessageID());
+                       ackBean.setReSend(false);
+                       ackBean.setSequenceID(sequencePropertyKey);
+                       EndpointReference to = ackMsgCtx.getTo();
+                       if (to!=null)
+                               ackBean.setToAddress(to.getAddress());
+
+                       // this will be set to true in the sender.
+                       ackBean.setSend(true);
+
+                       
ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
+
+                       
ackBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
+                       long ackInterval = 
SandeshaUtil.getPropertyBean(rmMsgCtx.getMessageContext().getAxisOperation())
+                                       .getAcknowledgementInterval();
+
+                       // Ack will be sent as stand alone, only after the 
retransmitter
+                       // interval.
+                       long timeToSend = System.currentTimeMillis() + 
ackInterval;
+
+                       // removing old acks.
+                       SenderBean findBean = new SenderBean();
+                       
findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
+
+                       // this will be set to true in the 
sandesha2TransportSender.
+                       findBean.setSend(true);
+                       findBean.setReSend(false);
+                       Collection coll = retransmitterBeanMgr.find(findBean);
+                       Iterator it = coll.iterator();
+
+                       if (it.hasNext()) {
+                               SenderBean oldAckBean = (SenderBean) it.next();
+                               timeToSend = oldAckBean.getTimeToSend(); // If 
there is an
+                                                                               
                                        // old ack. This ack
+                                                                               
                                        // will be sent in
+                                                                               
                                        // the old
+                                                                               
                                        // timeToSend.
+
+                               // removing the retransmitted entry for the 
oldAck
+                               
retransmitterBeanMgr.delete(oldAckBean.getMessageID());
+
+                               // removing the message store entry for the old 
ack
+                               
storageManager.removeMessageContext(oldAckBean.getMessageContextRefKey());
+                       }
+
+                       ackBean.setTimeToSend(timeToSend);
+                       storageManager.storeMessageContext(key, ackMsgCtx);
+
+                       
ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
+                       
+                       // inserting the new ack.
+                       retransmitterBeanMgr.insert(ackBean);
+                       // / asyncAckTransaction.commit();
+
+                       // passing the message through sandesha2sender
+                       
ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);
+                       ackRMMsgCtx = 
MsgInitializer.initializeMessage(ackMsgCtx);
+                       
+                       SandeshaUtil.executeAndStore(ackRMMsgCtx, key);
+                       
+                       
SandeshaUtil.startSenderForTheSequence(ackRMMsgCtx.getConfigurationContext(), 
sequenceId);
+               }
+               
+               
                if (log.isDebugEnabled())
                        log.debug("Exit: 
ApplicationMsgProcessor::sendAckIfNeeded");
        }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 Sat Oct  7 06:56:17 2006
@@ -275,107 +275,8 @@
 

                String addressingNamespaceURI = 
SandeshaUtil.getSequenceProperty(sequencePropertyKey,

                                
Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, 
storageManager);

-               String anonymousURI = 
SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);

 

                
ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, 
addressingNamespaceURI);

-

-               if (anonymousURI.equals(acksTo.getAddress())) {

-

-                       // AxisEngine engine = new

-                       // AxisEngine(ackRMMsgCtx.getMessageContext()

-                       // .getConfigurationContext());

-

-                       // setting CONTEXT_WRITTEN since acksto is anonymous

-                       if 
(referenceRMMessage.getMessageContext().getOperationContext() == null) {

-                               // operation context will be null when doing in 
a GLOBAL

-                               // handler.

-

-                               AxisOperation op = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_IN_OUT);

-                               OperationContext opCtx = new 
OperationContext(op);

-                               
referenceRMMessage.getMessageContext().setAxisOperation(op);

-                               
referenceRMMessage.getMessageContext().setOperationContext(opCtx);

-                       }

-

-                       
referenceRMMessage.getMessageContext().getOperationContext().setProperty(

-                                       
org.apache.axis2.Constants.RESPONSE_WRITTEN, Constants.VALUE_TRUE);

-

-                       
referenceRMMessage.getMessageContext().setProperty(Sandesha2Constants.ACK_WRITTEN,
 "true");

-

-                       ackRMMsgCtx.getMessageContext().setServerSide(true);

-

-               } else {

-

-                       // / Transaction asyncAckTransaction =

-                       // storageManager.getTransaction();

-

-                       SenderBeanMgr retransmitterBeanMgr = 
storageManager.getRetransmitterBeanMgr();

-

-                       String key = SandeshaUtil.getUUID();

-

-                       SenderBean ackBean = new SenderBean();

-                       ackBean.setMessageContextRefKey(key);

-                       ackBean.setMessageID(ackMsgCtx.getMessageID());

-                       ackBean.setReSend(false);

-                       ackBean.setSequenceID(sequencePropertyKey);

-                       EndpointReference to = ackMsgCtx.getTo();

-                       if (to!=null)

-                               ackBean.setToAddress(to.getAddress());

-

-                       // this will be set to true in the sender.

-                       ackBean.setSend(true);

-

-                       
ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);

-

-                       
ackBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);

-                       long ackInterval = 
SandeshaUtil.getPropertyBean(referenceMsg.getAxisOperation())

-                                       .getAcknowledgementInterval();

-

-                       // Ack will be sent as stand alone, only after the 
retransmitter

-                       // interval.

-                       long timeToSend = System.currentTimeMillis() + 
ackInterval;

-

-                       // removing old acks.

-                       SenderBean findBean = new SenderBean();

-                       
findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);

-

-                       // this will be set to true in the 
sandesha2TransportSender.

-                       findBean.setSend(true);

-                       findBean.setReSend(false);

-                       Collection coll = retransmitterBeanMgr.find(findBean);

-                       Iterator it = coll.iterator();

-

-                       if (it.hasNext()) {

-                               SenderBean oldAckBean = (SenderBean) it.next();

-                               timeToSend = oldAckBean.getTimeToSend(); // If 
there is an

-                                                                               
                                        // old ack. This ack

-                                                                               
                                        // will be sent in

-                                                                               
                                        // the old

-                                                                               
                                        // timeToSend.

-

-                               // removing the retransmitted entry for the 
oldAck

-                               
retransmitterBeanMgr.delete(oldAckBean.getMessageID());

-

-                               // removing the message store entry for the old 
ack

-                               
storageManager.removeMessageContext(oldAckBean.getMessageContextRefKey());

-                       }

-

-                       ackBean.setTimeToSend(timeToSend);

-                       storageManager.storeMessageContext(key, ackMsgCtx);

-

-                       
ackMsgCtx.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);

-                       

-                       // inserting the new ack.

-                       retransmitterBeanMgr.insert(ackBean);

-                       // / asyncAckTransaction.commit();

-

-                       // passing the message through sandesha2sender

-                       
ackMsgCtx.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, 
Sandesha2Constants.VALUE_TRUE);

-                       ackRMMsgCtx = 
MsgInitializer.initializeMessage(ackMsgCtx);

-                       

-                       SandeshaUtil.executeAndStore(ackRMMsgCtx, key);

-                       

-                       
SandeshaUtil.startSenderForTheSequence(configurationContext, sequenceId);

-               }

 

                if (log.isDebugEnabled())

                        log.debug("Exit: 
AcknowledgementManager::generateAckMessage");


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
Sat Oct  7 06:56:17 2006
@@ -411,7 +411,18 @@
 
        }
        
-       
+       /**
+        * Adds the necessary Fault elements as properties to the message 
context.
+        * Returns a dummy Fault which will be throw by this method caller.
+        * 
+        * @param referenceRMMsgContext - Message in reference to which the 
fault will be generated.
+        * @param data - data for the fault
+        * @param addressingNamespaceURI
+        * @param storageManager
+        * @return - The dummy fault to be thrown out.
+        * 
+        * @throws AxisFault
+        */
        public SandeshaException getFault (RMMsgContext referenceRMMsgContext, 
FaultData data, String addressingNamespaceURI,
                        StorageManager storageManager) throws AxisFault {
                
@@ -435,7 +446,6 @@
                
                SOAPFaultDetail detail = factory.createSOAPFaultDetail();
                detail.addDetailEntry(data.getDetail());
-               System.out.println("Detail:" + data.getDetail());
                
                String SOAPNamespaceValue = factory.getSoapVersionURI();
                
@@ -453,106 +463,6 @@
                
                SandeshaException fault = new SandeshaException("");
                return fault;
-       }
-
-       /**
-        * Returns a RMMessageContext for the fault message. Data for 
generating the
-        * fault is given in the data parameter.
-        * 
-        * @param referenceRMMsgContext
-        * @param data
-        * @return
-        * @throws SandeshaException
-        */
-       public RMMsgContext getFaultMessage (RMMsgContext 
referenceRMMsgContext, FaultData data, String addressingNamespaceURI,
-                       StorageManager storageManager) throws SandeshaException 
{
-               if (log.isDebugEnabled())
-                       log.debug("Enter: FaultManager::getFault");
-
-               try {
-                       MessageContext referenceMessage = 
referenceRMMsgContext.getMessageContext();
-                       ConfigurationContext configCtx = 
referenceRMMsgContext.getConfigurationContext();
-
-                       // This is to hack to remove NPE. TODO remove this.
-                       if (referenceMessage.getServiceGroupContext() == null) {
-                               ServiceGroupContext serviceGroupContext = new 
ServiceGroupContext(referenceMessage
-                                               .getConfigurationContext(), 
referenceMessage.getAxisServiceGroup());
-                               
referenceMessage.setServiceGroupContext(serviceGroupContext);
-                       }
-                       if (referenceMessage.getServiceContext() == null) {
-                               ServiceContext serviceContext = new 
ServiceContext(referenceMessage.getAxisService(), referenceMessage
-                                               .getServiceGroupContext());
-                               
referenceMessage.setServiceContext(serviceContext);
-                       }
-
-                       // end hack
-
-                       AxisOperation operation = 
AxisOperationFactory.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
-
-                       
-                       //TODO this fails when the in message is in only. Fault 
is thrown at the InOnlyAxisOperation
-                       MessageContext faultMsgContext = 
SandeshaUtil.createNewRelatedMessageContext(referenceRMMsgContext, operation); 
//Utils.createOutMessageContext(referenceMessage);
-
-                       // setting contexts.
-                       
faultMsgContext.setAxisServiceGroup(referenceMessage.getAxisServiceGroup());
-                       
faultMsgContext.setAxisService(referenceMessage.getAxisService());
-                       
faultMsgContext.setAxisServiceGroup(referenceMessage.getAxisServiceGroup());
-                       
faultMsgContext.setServiceGroupContext(referenceMessage.getServiceGroupContext());
-                       
faultMsgContext.setServiceGroupContextId(referenceMessage.getServiceGroupContextId());
-                       
faultMsgContext.setServiceContext(referenceMessage.getServiceContext());
-                       
faultMsgContext.setServiceContextID(referenceMessage.getServiceContextID());
-
-
-                       OperationContext operationContext = new 
OperationContext(operation);
-
-                       faultMsgContext.setAxisOperation(operation);
-                       faultMsgContext.setOperationContext(operationContext);
-
-                       String acksToStr = null;
-                       if (referenceRMMsgContext.getMessageType() == 
Sandesha2Constants.MessageTypes.CREATE_SEQ) {
-                               CreateSequence createSequence = 
(CreateSequence) referenceRMMsgContext
-                                               
.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
-                               acksToStr = 
createSequence.getAcksTo().getAddress().getEpr().getAddress();
-                       } else {
-                               SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
-
-                               // TODO get the acksTo value using the property 
key.
-
-                               String sequenceId = data.getSequenceId();
-                               SequencePropertyBean acksToBean = 
seqPropMgr.retrieve(sequenceId,
-                                               
Sandesha2Constants.SequenceProperties.ACKS_TO_EPR);
-                               if (acksToBean != null) {
-                                       EndpointReference epr = new 
EndpointReference(acksToBean.getValue());
-                                       if (epr != null)
-                                               acksToStr = epr.getAddress();
-                               }
-                       }
-
-                       String anonymousURI = 
SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
-
-                       if (acksToStr != null && 
!acksToStr.equals(anonymousURI)) {
-                               faultMsgContext.setTo(new 
EndpointReference(acksToStr));
-                       }
-
-                       int SOAPVersion = 
SandeshaUtil.getSOAPVersion(referenceMessage.getEnvelope());
-                       
SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMsgContext, SOAPVersion, 
data, referenceRMMsgContext
-                                       .getRMNamespaceValue());
-
-                       RMMsgContext faultRMMsgCtx = 
MsgInitializer.initializeMessage(faultMsgContext);
-                       
-                       
faultRMMsgCtx.setAction(SpecSpecificConstants.getFaultAction 
(addressingNamespaceURI));
-
-                       if (log.isDebugEnabled())
-                               log.debug("Exit: FaultManager::getFault");
-                       
-                       //setting the serverSide property
-                       faultMsgContext.setServerSide(true);
-                       
-                       return faultRMMsgCtx;
-
-               } catch (AxisFault e) {
-                       throw new SandeshaException(e.getMessage(), e);
-               }
        }
 
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java 
Sat Oct  7 06:56:17 2006
@@ -23,10 +23,8 @@
 

 import javax.xml.namespace.QName;

 

-import org.apache.axiom.om.OMAbstractFactory;

 import org.apache.axiom.om.OMElement;

 import org.apache.axiom.om.OMNamespace;

-import org.apache.axiom.soap.SOAP12Constants;

 import org.apache.axiom.soap.SOAPEnvelope;

 import org.apache.axiom.soap.SOAPFactory;

 import org.apache.axis2.AxisFault;

@@ -38,7 +36,6 @@
 import org.apache.axis2.context.OperationContext;

 import org.apache.axis2.description.AxisOperation;

 import org.apache.axis2.description.AxisOperationFactory;

-import org.apache.axis2.description.OutInAxisOperation;

 import org.apache.axis2.description.Parameter;

 import org.apache.axis2.description.TransportInDescription;

 import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;

@@ -54,7 +51,6 @@
 import org.apache.sandesha2.security.SecurityToken;

 import org.apache.sandesha2.storage.StorageManager;

 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;

-import org.apache.sandesha2.storage.beans.CreateSeqBean;

 import org.apache.sandesha2.storage.beans.SequencePropertyBean;

 import org.apache.sandesha2.wsrm.Accept;

 import org.apache.sandesha2.wsrm.AckFinal;

@@ -270,17 +266,11 @@
                EndpointReference referenceTo = applicationMsgContext.getTo();

                EndpointReference referenceReplyTo = 
applicationMsgContext.getReplyTo();

                

-               EndpointReference replyTo = null;

                

-               if (referenceReplyTo!=null && SandeshaUtil.isAnonymousURI 
(referenceReplyTo.getAddress()))

-                       replyTo = new EndpointReference 
(referenceReplyTo.getAddress());

-               else

-                       replyTo = context.getListenerManager().getEPRforService 
(

-                                       
createSeqmsgContext.getAxisService().getName(), null, null 

-                                       
/*axisOperationName!=null?axisOperationName.getLocalPart():null, 

-                                       
transportInName!=null?transportInName.getLocalPart():null*/);

-        

-        createSeqmsgContext.setReplyTo(replyTo);

+               if (referenceReplyTo!=null) {

+                       EndpointReference createSeqReplyTo = new 
EndpointReference (referenceReplyTo.getAddress());

+               createSeqmsgContext.setReplyTo(createSeqReplyTo);

+               }

         

                RMMsgContext createSeqRMMsg = new 
RMMsgContext(createSeqmsgContext);

 

@@ -659,14 +649,10 @@
        public static void addAckMessage(RMMsgContext applicationMsg, String 
sequencePropertyKey ,String sequenceId, StorageManager storageManager)

                        throws SandeshaException {

                

-               SOAPFactory factory = 
SOAPAbstractFactory.getSOAPFactory(SandeshaUtil.getSOAPVersion(applicationMsg

-                               .getSOAPEnvelope()));

-

+               SOAPFactory factory = null;

                SOAPEnvelope envelope = applicationMsg.getSOAPEnvelope();

-               if (envelope == null) {

-                       SOAPEnvelope newEnvelope = factory.getDefaultEnvelope();

-                       applicationMsg.setSOAPEnvelop(newEnvelope);

-               }

+               factory = (SOAPFactory) envelope.getOMFactory();

+               

                envelope = applicationMsg.getSOAPEnvelope();

 

                ConfigurationContext ctx = 
applicationMsg.getMessageContext().getConfigurationContext();

@@ -718,6 +704,9 @@
                }

                

                applicationMsg.setMessageId(SandeshaUtil.getUUID());

+               

+               //generating the SOAP envelope.

+               applicationMsg.addSOAPEnvelope();

        }

        

        public static RMMsgContext createMakeConnectionMessage (RMMsgContext 
referenceRMMessage,  String makeConnectionSeqId,


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
Sat Oct  7 06:56:17 2006
@@ -1044,9 +1044,12 @@
        }

 

        public static boolean isAnonymousURI (String address) {

-               if (AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(address))

+               if (address==null)

+                       return false;

+               

+               if 
(AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(address.trim()))

                        return true;

-               else if 
(AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(address))

+               else if 
(AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(address.trim()))

                        return true;

                else if (isWSRMAnonymousReplyTo(address))

                        return true;


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
 Sat Oct  7 06:56:17 2006
@@ -62,8 +62,10 @@
 
                        SenderBean senderBean = 
senderBeanMgr.retrieve(messageId);
                        if (senderBean==null) {
-                               String message = "SenderWorker has been 
assigned an unexisting work";
-                               throw new SandeshaException (message);
+                               //the work is not present. May be invalid now. 
So should return.
+                               if (log.isDebugEnabled())
+                                       
log.debug(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.workNotPresent,workId));
+                               return;
                        }
                        String key = senderBean.getMessageContextRefKey();
                        MessageContext msgCtx = 
storageManager.retrieveMessageContext(key, configurationContext);
@@ -90,7 +92,8 @@
                        }
 
                        if (msgCtx == null) {
-                               
log.debug(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.sendHasUnavailableMsgEntry));
+                               if (log.isDebugEnabled())
+                                       
log.debug(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.sendHasUnavailableMsgEntry));
                                return;                 
                        }
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?view=diff&rev=453907&r1=453906&r2=453907
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
 Sat Oct  7 06:56:17 2006
@@ -121,6 +121,22 @@
                

                OMNamespace rmNamespace = 
factory.createOMNamespace(namespaceValue,Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);

                

+               //If there already is an ack for this sequence it will be 
removed. 

+               //We do not allow to send two sequenceAcknowledgements for the 
same sequence in the same message.

+               Iterator oldAckIter = header.getChildrenWithName(new QName 
(namespaceValue,Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK));

+               while (oldAckIter.hasNext()) {

+                       

+                       OMElement oldAckElement = (OMElement) oldAckIter.next();

+                       

+                       SequenceAcknowledgement oldSequenceAcknowledgement = 
new SequenceAcknowledgement (namespaceValue);

+                       oldSequenceAcknowledgement.fromOMElement(oldAckElement);

+                       

+                       String oldAckIdentifier = 
oldSequenceAcknowledgement.getIdentifier().getIdentifier();

+                       if (oldAckIdentifier!=null && 
oldAckIdentifier.equals(this.identifier.getIdentifier())) {

+                               oldAckElement.detach();

+                       }

+               }

+               

                SOAPHeader SOAPHeader = (SOAPHeader) header;

                SOAPHeaderBlock sequenceAcknowledgementHeaderBlock = 
SOAPHeader.addHeaderBlock(

                                
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK,rmNamespace);

@@ -191,8 +207,6 @@
                        
ackFinal.toOMElement(sequenceAcknowledgementHeaderBlock);

                }

                

-               SOAPHeader.addChild(sequenceAcknowledgementHeaderBlock);

-

                return header;

        }

 




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

Reply via email to