Author: gatfora
Date: Wed Jan 24 03:03:36 2007
New Revision: 499354

URL: http://svn.apache.org/viewvc?view=rev&rev=499354
Log:
Fix NPE in SandeshaGlobalInHandler where Sequence not found

Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?view=diff&rev=499354&r1=499353&r2=499354
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
 Wed Jan 24 03:03:36 2007
@@ -128,7 +128,7 @@
 
                                returnValue = InvocationResponse.ABORT; // the 
msg has been
                                                                                
                                // dropped
-                               processDroppedMessage(rmMessageContext, 
storageManager);
+                               
SequenceProcessor.sendAckIfNeeded(rmMessageContext, storageManager,true);
                                if (log.isDebugEnabled())
                                        log.debug("Exit: 
SandeshaGlobalInHandler::invoke, dropped "
                                                        + returnValue);
@@ -142,6 +142,8 @@
                        }
 
                } catch (Exception e) {
+                       if (log.isDebugEnabled())
+                               log.debug("Caught an exception", e);
                        // message should not be sent in a exception situation.
                        msgContext.pause();
                        returnValue = InvocationResponse.SUSPEND;
@@ -186,15 +188,15 @@
                        Sequence sequence = (Sequence) 
rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
                        long msgNo = 
sequence.getMessageNumber().getMessageNumber();
                        
-                       RMDBean findBean = new RMDBean ();
-                       
findBean.setSequenceID(sequence.getIdentifier().getIdentifier());
-                       
-                       RMDBean rmdBean = 
storageManager.getRMDBeanMgr().findUnique(findBean);
-                       
-                       RangeString serverCompletedMessages = 
rmdBean.getServerCompletedMessages();
+                       RMDBean rmdBean = 
+                               
SandeshaUtil.getRMDBeanFromSequenceId(storageManager, 
sequence.getIdentifier().getIdentifier());
 
-                       if 
(serverCompletedMessages.isMessageNumberInRanges(msgNo))
-                               duplicate = true;
+                       if (rmdBean != null) {
+                               RangeString serverCompletedMessages = 
rmdBean.getServerCompletedMessages();
+       
+                               if 
(serverCompletedMessages.isMessageNumberInRanges(msgNo))
+                                       duplicate = true;
+                       }
                        
                }
                
@@ -285,23 +287,6 @@
                
                return false;
        }
-
-       private void processDroppedMessage(RMMsgContext rmMsgContext, 
StorageManager storageManager)
-                       throws AxisFault {
-               if (log.isDebugEnabled())
-                       log.debug("Enter: 
SandeshaGlobalInHandler::processDroppedMessage");
-
-               if (rmMsgContext.getMessageType() == 
Sandesha2Constants.MessageTypes.APPLICATION) {
-
-                       // Even though the duplicate message is dropped, hv to 
send the ack
-                       // if needed.
-                       SequenceProcessor.sendAckIfNeeded(rmMsgContext, 
storageManager,true);
-
-               }
-               if (log.isDebugEnabled())
-                       log.debug("Exit: 
SandeshaGlobalInHandler::processDroppedMessage");
-       }
-
 
        private void doGlobalProcessing(RMMsgContext rmMsgCtx) throws 
SandeshaException {
        }

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=499354&r1=499353&r2=499354
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
 Wed Jan 24 03:03:36 2007
@@ -44,7 +44,6 @@
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
 import org.apache.sandesha2.storage.StorageManager;
-import org.apache.sandesha2.storage.beanmanagers.RMDBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
 import org.apache.sandesha2.storage.beans.RMDBean;
 import org.apache.sandesha2.storage.beans.RMSBean;
@@ -230,15 +229,11 @@
 
                MessageContext referenceMsg = 
referenceRMMessage.getMessageContext();
 
-               RMDBeanMgr rmdBeanMgr = storageManager.getRMDBeanMgr();
-               RMDBean findBean = new RMDBean ();
-               findBean.setSequenceID(sequenceId);
-               RMDBean rmdBean = rmdBeanMgr.findUnique(findBean);
+               RMDBean rmdBean = 
SandeshaUtil.getRMDBeanFromSequenceId(storageManager, sequenceId);
 
                EndpointReference acksTo = new 
EndpointReference(rmdBean.getAcksToEPR());
-               String acksToStr = acksTo.getAddress();
 
-               if (acksToStr == null)
+               if (acksTo.getAddress() == null)
                        throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.acksToStrNotSet));
 
                AxisOperation ackOperation = 
SpecSpecificConstants.getWSRMOperation(
@@ -409,6 +404,8 @@
        }
        
        public static void sendAckNow (RMMsgContext ackRMMsgContext) throws 
AxisFault {
+               if (log.isDebugEnabled())
+                       log.debug("Enter: AcknowledgementManager::sendAckNow");
 
                MessageContext ackMsgContext = 
ackRMMsgContext.getMessageContext();
                ConfigurationContext configContext = 
ackMsgContext.getConfigurationContext();
@@ -432,7 +429,7 @@
                AxisEngine engine = new AxisEngine(configContext);
                engine.send(ackMsgContext);
                
-       }
-
-       
+               if (log.isDebugEnabled())
+                       log.debug("Exit: AcknowledgementManager::sendAckNow");  
        
+       }       
 }



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

Reply via email to