Author: berndf
Date: Fri Aug 28 10:01:32 2009
New Revision: 808830

URL: http://svn.apache.org/viewvc?rev=808830&view=rev
Log:
VYSPER-176: components now route responses back

Modified:
    
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java

Modified: 
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
URL: 
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java?rev=808830&r1=808829&r2=808830&view=diff
==============================================================================
--- 
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
 (original)
+++ 
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
 Fri Aug 28 10:01:32 2009
@@ -24,10 +24,14 @@
 import org.apache.vysper.xmpp.protocol.AbstractHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.ProtocolException;
+import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.ResponseWriter;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
+import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
 
 /**
  */
@@ -59,17 +63,29 @@
         if (xmppStanza == null) throw new RuntimeException("cannot process 
only: IQ, message or presence");
 
         StanzaHandler stanzaHandler = handlers.get(xmppStanza);
-        
+
         if (stanzaHandler == null) {
             unhandledStanza(stanza);
             return;
         }
 
+        ResponseStanzaContainer responseStanzaContainer = null;
         try {
-            stanzaHandler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder);
+            responseStanzaContainer = stanzaHandler.execute(stanza, 
serverRuntimeContext, false, sessionContext, sessionStateHolder);
         } catch (ProtocolException e) {
             e.printStackTrace();  //To change body of catch statement use File 
| Settings | File Templates.
         }
+
+        if (responseStanzaContainer != null && 
responseStanzaContainer.getResponseStanza() != null) {
+            Stanza responseStanza = 
responseStanzaContainer.getResponseStanza();
+            try {
+                IgnoreFailureStrategy failureStrategy = new 
IgnoreFailureStrategy(); // TODO call back MUC module
+                
serverRuntimeContext.getStanzaRelay().relay(responseStanza.getTo(), 
responseStanza, failureStrategy);
+            } catch (DeliveryException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
     }
 
     private void unhandledStanza(Stanza stanza) {


Reply via email to