Author: mlovett
Date: Thu Mar 15 10:03:54 2007
New Revision: 518690
URL: http://svn.apache.org/viewvc?view=rev&rev=518690
Log:
Ensure we try the backchannel before we allow a message to be returned by
MakeConnection
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
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=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
Thu Mar 15 10:03:54 2007
@@ -432,6 +432,10 @@
EndpointReference to = createSeqRMMessage.getTo();
if (to!=null)
createSeqEntry.setToAddress(to.getAddress());
+ // If this message is targetted at an anonymous address then we
must not have a transport
+ // ready for it, as the create sequence is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ createSeqEntry.setTransportAvailable(false);
createSeqMsg.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
Sandesha2Constants.VALUE_FALSE);
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
Thu Mar 15 10:03:54 2007
@@ -60,6 +60,7 @@
//selecting the set of SenderBeans that suit the given criteria.
SenderBean findSenderBean = new SenderBean ();
findSenderBean.setSend(true);
+ findSenderBean.setTransportAvailable(false);
if (address!=null)
findSenderBean.setToAddress(address.getAddress());
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/SenderBean.java
Thu Mar 15 10:03:54 2007
@@ -113,6 +113,14 @@
private long inboundMessageNumber;
/**
+ * If this flag is set to false then the message cannot be delivered,
as it is
+ * targetted at an anonymous address, and we have no approriate
transport available.
+ * When this happens the message will be picked up by a MakeConnection
message (or
+ * by replaying the request message)
+ */
+ private boolean transportAvailable = true;
+
+ /**
* Flags that are used to check if the primitive types on this bean
* have been set. If a primitive type has not been set then it will
* be ignored within the match method.
@@ -126,6 +134,7 @@
private static final int MSG_TYPE_FLAG = 0x00100000;
private static final int LAST_MSG_FLAG = 0x01000000;
private static final int IN_MSG_NUM_FLAG = 0x10000000;
+ private static final int TRANSPORT_FLAG = 0x00000002;
public SenderBean() {
@@ -262,6 +271,15 @@
this.inboundSequence = inboundSequence;
}
+ public boolean isTransportAvailable() {
+ return transportAvailable;
+ }
+
+ public void setTransportAvailable(boolean transportAvailable) {
+ this.transportAvailable = transportAvailable;
+ this.flags |= TRANSPORT_FLAG;
+ }
+
public String toString() {
StringBuffer result = new StringBuffer();
// There is a lot of data in this bean, so we don't trace it
all.
@@ -276,6 +294,7 @@
result.append("\nResend : "); result.append(reSend);
result.append("\nSent count : "); result.append(sentCount);
result.append("\nTime to send : "); result.append(timeToSend);
+ result.append("\nTransport avail: ");
result.append(transportAvailable);
return result.toString();
}
@@ -324,6 +343,9 @@
match = false;
else if((bean.flags & IN_MSG_NUM_FLAG) != 0 &&
bean.getInboundMessageNumber() != this.getInboundMessageNumber())
+ match = false;
+
+ else if((bean.flags & TRANSPORT_FLAG) != 0 &&
bean.isTransportAvailable() != this.isTransportAvailable())
match = false;
return match;
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
Thu Mar 15 10:03:54 2007
@@ -74,6 +74,7 @@
matcher.setSend(true);
matcher.setSequenceID(sequenceId);
matcher.setTimeToSend(System.currentTimeMillis());
+ matcher.setTransportAvailable(true);
List matches = super.find(matcher);
if(log.isDebugEnabled()) log.debug("Found " + matches.size() +
" messages");
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
Thu Mar 15 10:03:54 2007
@@ -374,6 +374,11 @@
if (to!=null)
terminateBean.setToAddress(to.getAddress());
+ // If this message is targetted at an anonymous address then we
must not have a transport
+ // ready for it, as the terminate sequence is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ terminateBean.setTransportAvailable(false);
+
rmsBean.setTerminateAdded(true);
storageManager.getRMSBeanMgr().update(rmsBean);
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java?view=diff&rev=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/WSRMMessageSender.java
Thu Mar 15 10:03:54 2007
@@ -148,6 +148,11 @@
EndpointReference to = msgContext.getTo();
if (to!=null)
senderBean.setToAddress(to.getAddress());
+
+ // If this message is targetted at an anonymous address then we
must not have a transport
+ // ready for it, as the current message is not a reply.
+ if(to == null || to.hasAnonymousAddress())
+ senderBean.setTransportAvailable(false);
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
Sandesha2Constants.VALUE_FALSE);
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=518690&r1=518689&r2=518690
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
Thu Mar 15 10:03:54 2007
@@ -146,6 +146,15 @@
if((toEPR==null || toEPR.hasAnonymousAddress()) &&
(makeConnection == null ||
!makeConnection.booleanValue()) &&
(t == null ||
!t.getStatus().equals(RequestResponseTransportStatus.WAITING))) {
+
+ // Mark this sender bean so that we know that
the transport is unavailable, if the
+ // bean is still stored.
+ SenderBean bean =
senderBeanMgr.retrieve(senderBean.getMessageID());
+ if(bean != null && bean.isTransportAvailable())
{
+ bean.setTransportAvailable(false);
+ senderBeanMgr.update(bean);
+ }
+
if (log.isDebugEnabled())
log.debug("Exit: SenderWorker::run, no
response transport for anonymous message");
return;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]