You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2008/05/23 08:36:33 UTC
svn commit: r659449 - in /labs/vysper/src:
main/java/org/apache/vysper/xmpp/delivery/
main/java/org/apache/vysper/xmpp/delivery/failure/
main/java/org/apache/vysper/xmpp/modules/core/base/handler/
test/java/org/apache/vysper/xmpp/modules/core/base/hand...
Author: berndf
Date: Thu May 22 23:36:28 2008
New Revision: 659449
URL: http://svn.apache.org/viewvc?rev=659449&view=rev
Log:
[vysper] use of failure strategy in delivery, extend message handler tests
Added:
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverQueue.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveringStanzaRelay.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveryFailureStrategy.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/MasterStanzaRelay.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/IgnoreFailureStrategy.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveringStanzaRelay.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveringStanzaRelay.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveringStanzaRelay.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveringStanzaRelay.java Thu May 22 23:36:28 2008
@@ -78,6 +78,26 @@
}
public RelayResult call() {
+ RelayResult relayResult = deliver();
+ if (relayResult == null || relayResult.isRelayed()) return relayResult;
+ return runFailureStrategy(relayResult);
+ }
+
+ private RelayResult runFailureStrategy(RelayResult relayResult) {
+ if (deliveryFailureStrategy != null) {
+ try {
+ deliveryFailureStrategy.process(stanza, null, relayResult.getProcessingError());
+ } catch (DeliveryException e) {
+ return new RelayResult(e);
+ } catch (RuntimeException e) {
+ return new RelayResult(new DeliveryException(e));
+ }
+ }
+ // TODO throw relayResult.getProcessingError() in some appropriate context
+ return relayResult;
+ }
+
+ protected RelayResult deliver() {
try {
List<SessionContext> receivingSessions = resourceRegistry.getSessions(receiver);
if (receivingSessions == null || receivingSessions.size() == 0) {
@@ -89,22 +109,23 @@
try {
stanzaWriter = sessionContext.getResponseWriter();
} catch (Exception e) {
- return new RelayResult(e);
+ // TODO do not break out here. we should try to deliver to the others first!
+ return new RelayResult(new DeliveryException(e));
}
stanzaWriter.write(stanza);
}
} catch (RuntimeException e) {
- return new RelayResult(e);
+ return new RelayResult(new DeliveryException(e));
}
return new RelayResult();
}
}
private class RelayResult {
- private Throwable processingError;
+ private DeliveryException processingError;
private boolean relayed;
- public RelayResult(Throwable processingError) {
+ public RelayResult(DeliveryException processingError) {
this.processingError = processingError;
this.relayed = false;
}
@@ -113,7 +134,7 @@
this.relayed = true;
}
- public Throwable getProcessingError() {
+ public DeliveryException getProcessingError() {
return processingError;
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveryFailureStrategy.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveryFailureStrategy.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveryFailureStrategy.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/DeliveryFailureStrategy.java Thu May 22 23:36:28 2008
@@ -29,6 +29,6 @@
*/
public interface DeliveryFailureStrategy {
- public void process(Stanza failedToDeliverStanza, ServerRuntimeContext serverRuntimeContext, DeliveryException deliveryException);
+ public void process(Stanza failedToDeliverStanza, ServerRuntimeContext serverRuntimeContext, DeliveryException deliveryException) throws DeliveryException;
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/MasterStanzaRelay.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/MasterStanzaRelay.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/MasterStanzaRelay.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/MasterStanzaRelay.java Thu May 22 23:36:28 2008
@@ -59,10 +59,10 @@
boolean relayToExternal = serverRuntimeContext.getServerFeatures().isRelayingToFederationServers();
if (domain.equals(serverRuntimeContext.getServerEnitity().getDomain())) {
- internalRelay.relay(receiver, stanza, new IgnoreFailureStrategy());
+ internalRelay.relay(receiver, stanza, deliveryFailureStrategy);
} else {
if (!relayToExternal) throw new IllegalStateException("this server is not relaying to external currently");
- externalRelay.relay(receiver, stanza, new IgnoreFailureStrategy());
+ externalRelay.relay(receiver, stanza, deliveryFailureStrategy);
}
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java Thu May 22 23:36:28 2008
@@ -23,20 +23,21 @@
import java.util.Iterator;
/**
- * a relay which simply records the sequence of entity/stanza pairs received
+ * a relay which does not relay anything but simply records the sequence of entity/stanza pairs received
* and makes it accessible for debugging or testing purposes
+ * for a little bit more advanced testing relay see StanzaReceiverRelay
*/
public class RecordingStanzaRelay implements StanzaRelay {
- private final ArrayList<Pair> entityStanzaPairs = new ArrayList<Pair>();
+ private final ArrayList<Triple> entityStanzaPairs = new ArrayList<Triple>();
private boolean acceptingMode = true;
public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException {
if (!acceptingMode) return;
- entityStanzaPairs.add(new Pair(receiver, stanza));
+ entityStanzaPairs.add(new Triple(receiver, stanza, deliveryFailureStrategy));
}
- public Iterator<Pair> iterator() {
+ public Iterator<Triple> iterator() {
return entityStanzaPairs.iterator();
}
@@ -52,13 +53,15 @@
this.acceptingMode = accepting;
}
- public class Pair {
+ public class Triple {
private Entity entity;
private Stanza stanza;
+ private DeliveryFailureStrategy deliveryFailureStrategy;
- Pair(Entity entity, Stanza stanza) {
+ Triple(Entity entity, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) {
this.entity = entity;
this.stanza = stanza;
+ this.deliveryFailureStrategy = deliveryFailureStrategy;
}
public Entity getEntity() {
@@ -68,5 +71,9 @@
public Stanza getStanza() {
return stanza;
}
+
+ public DeliveryFailureStrategy getDeliveryFailureStrategy() {
+ return deliveryFailureStrategy;
+ }
}
}
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverQueue.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverQueue.java?rev=659449&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverQueue.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverQueue.java Thu May 22 23:36:28 2008
@@ -0,0 +1,37 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation. *
+ * All rights reserved. *
+ * ------------------------------------------------------------------- *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you *
+ * may not use this file except in compliance with the License. You *
+ * may obtain a copy of the License at: *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, software *
+ * distributed under the License is distributed on an "AS IS" BASIS, *
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or *
+ * implied. See the License for the specific language governing *
+ * permissions and limitations under the License. *
+ ***********************************************************************/
+package org.apache.vysper.xmpp.delivery;
+
+import org.apache.vysper.xmpp.stanza.Stanza;
+
+import java.util.Queue;
+import java.util.LinkedList;
+
+/**
+ */
+public class StanzaReceiverQueue implements StanzaReceiver {
+
+ Queue<Stanza> queue = new LinkedList<Stanza>();
+
+ public void deliver(Stanza stanza) {
+ queue.add(stanza);
+ }
+
+ public Stanza getNext() {
+ return queue.poll();
+ }
+}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java Thu May 22 23:36:28 2008
@@ -19,16 +19,24 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.stanza.Stanza;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import java.util.Map;
import java.util.HashMap;
/**
- * relays stanzas to a StanzaReceiver identified by a Entity
+ * relays stanzas to a StanzaReceiver identified by an Entity
+ * this relay is mostly for testing purposes
*/
public class StanzaReceiverRelay implements StanzaRelay {
private Map<Entity, StanzaReceiver> receiverMap = new HashMap<Entity, StanzaReceiver>();
+ private boolean exploitFailureStrategy = true;
+ private ServerRuntimeContext serverRuntimeContext = null;
+
+ public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
+ this.serverRuntimeContext = serverRuntimeContext;
+ }
public void add(Entity receiverID, StanzaReceiver receiver) {
receiverMap.put(receiverID, receiver);
@@ -36,7 +44,15 @@
public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException {
if (receiver == null) throw new DeliveryException("receiver cannot be NULL");
- if (receiverMap.get(receiver) == null) throw new DeliveryException("cannot find receiver" + receiver.getFullQualifiedName());
+ if (receiverMap.get(receiver) == null) {
+
+ if (deliveryFailureStrategy != null && exploitFailureStrategy) {
+ deliveryFailureStrategy.process(stanza, serverRuntimeContext, null);
+ }
+
+ throw new LocalRecipientNotReachableException("cannot find receiver" + receiver.getFullQualifiedName());
+ }
+
receiverMap.get(receiver).deliver(stanza);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/IgnoreFailureStrategy.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/IgnoreFailureStrategy.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/IgnoreFailureStrategy.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/IgnoreFailureStrategy.java Thu May 22 23:36:28 2008
@@ -26,6 +26,8 @@
*/
public class IgnoreFailureStrategy implements DeliveryFailureStrategy {
+ public final static IgnoreFailureStrategy IGNORE_FAILURE_STRATEGY = new IgnoreFailureStrategy();
+
public void process(Stanza failedToDeliverStanza, ServerRuntimeContext serverRuntimeContext, DeliveryException deliveryException) {
// do nothing
}
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java?rev=659449&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/failure/ReturnErrorToSenderFailureStrategy.java Thu May 22 23:36:28 2008
@@ -0,0 +1,59 @@
+/***********************************************************************
+ * Copyright (c) 2006-2007 The Apache Software Foundation. *
+ * All rights reserved. *
+ * ------------------------------------------------------------------- *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you *
+ * may not use this file except in compliance with the License. You *
+ * may obtain a copy of the License at: *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, software *
+ * distributed under the License is distributed on an "AS IS" BASIS, *
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or *
+ * implied. See the License for the specific language governing *
+ * permissions and limitations under the License. *
+ ***********************************************************************/
+package org.apache.vysper.xmpp.delivery.failure;
+
+import org.apache.vysper.xmpp.delivery.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.delivery.DeliveryException;
+import org.apache.vysper.xmpp.delivery.LocalRecipientNotReachableException;
+import org.apache.vysper.xmpp.stanza.*;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
+import org.apache.vysper.xmpp.addressing.Entity;
+
+/**
+ */
+public class ReturnErrorToSenderFailureStrategy implements DeliveryFailureStrategy {
+
+ public void process(Stanza failedToDeliverStanza, ServerRuntimeContext serverRuntimeContext, DeliveryException deliveryException) throws DeliveryException {
+
+ StanzaErrorCondition stanzaErrorCondition = StanzaErrorCondition.SERVICE_UNAVAILABLE;
+ StanzaErrorType errorType = StanzaErrorType.CANCEL;
+
+ if (!(failedToDeliverStanza instanceof XMPPCoreStanza)) {
+ throw new DeliveryException("could not return to sender");
+ }
+ XMPPCoreStanza failedCoreStanza = (XMPPCoreStanza) failedToDeliverStanza;
+ if (failedCoreStanza.getType() != null && failedCoreStanza.getType().equals("error")) {
+ return; // do not answer these
+ }
+
+ if (deliveryException != null) {
+ if (deliveryException instanceof LocalRecipientNotReachableException) {
+ stanzaErrorCondition = StanzaErrorCondition.RECIPIENT_UNAVAILABLE;
+ if (failedCoreStanza instanceof MessageStanza) {
+ // RFC3921bis#8.1
+ stanzaErrorCondition = StanzaErrorCondition.SERVICE_UNAVAILABLE;
+ }
+ }
+ }
+
+ Entity from = failedCoreStanza.getFrom();
+
+ Stanza error = ServerErrorResponses.getInstance().getStanzaError(stanzaErrorCondition, failedCoreStanza, errorType, "stanza could not be delivered", "en", null);
+ serverRuntimeContext.getStanzaRelay().relay(from, error, IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY);
+ }
+}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java Thu May 22 23:36:28 2008
@@ -20,6 +20,7 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
+import org.apache.vysper.xmpp.delivery.failure.ReturnErrorToSenderFailureStrategy;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -79,7 +80,7 @@
StanzaRelay stanzaRelay = sessionContext.getServerRuntimeContext().getStanzaRelay();
try {
- stanzaRelay.relay(to, stanza, new IgnoreFailureStrategy());
+ stanzaRelay.relay(to, stanza, new ReturnErrorToSenderFailureStrategy());
} catch (Exception e) {
// TODO return error stanza
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java Thu May 22 23:36:28 2008
@@ -19,13 +19,16 @@
import junit.framework.TestCase;
import org.apache.vysper.xmpp.addressing.EntityImpl;
-import org.apache.vysper.xmpp.delivery.RecordingStanzaRelay;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityFormatException;
+import org.apache.vysper.xmpp.delivery.*;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
import org.apache.vysper.xmpp.xmlfragment.XMLElementVerifier;
/**
@@ -34,14 +37,16 @@
private TestSessionContext sessionContext;
private SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ private MessageHandler messageHandler = new MessageHandler();
protected void setUp() throws Exception {
super.setUp();
- sessionContext = new TestSessionContext(sessionStateHolder);
+ sessionContext = TestSessionContext.createWithStanzaReceiverRelay(sessionStateHolder);
}
public void testStanzaRelayed() {
-
+ sessionContext = new TestSessionContext(sessionStateHolder);
+
String timestamp = "" + System.currentTimeMillis();
StanzaBuilder stanzaBuilder = new StanzaBuilder("message", NamespaceURIs.JABBER_SERVER);
@@ -49,22 +54,20 @@
stanzaBuilder.addAttribute("to", receiver);
stanzaBuilder.startInnerElement("timestamp").addAttribute("value", timestamp).endInnerElement();
- TestSessionContext sessionContext = this.sessionContext;
sessionContext.setServerToServer();
RecordingStanzaRelay stanzaRelay = (RecordingStanzaRelay) sessionContext.getServerRuntimeContext().getStanzaRelay();
- assertFalse(stanzaRelay.iterator().hasNext());
+ assertFalse(stanzaRelay.iterator().hasNext()); // nothing there yet
- MessageHandler messageHandler = new MessageHandler();
Stanza stanza = stanzaBuilder.getFinalStanza();
ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(stanza, sessionContext, null);
- RecordingStanzaRelay.Pair pair = stanzaRelay.iterator().next();
- XMLElementVerifier timestampVerifier = pair.getStanza().getFirstInnerElement().getVerifier();
+ RecordingStanzaRelay.Triple triple = stanzaRelay.iterator().next();
+ XMLElementVerifier timestampVerifier = triple.getStanza().getFirstInnerElement().getVerifier();
- assertTrue("stanza relayed to", pair.getStanza().getVerifier().toAttributeEquals(receiver));
+ assertTrue("stanza relayed to", triple.getStanza().getVerifier().toAttributeEquals(receiver));
assertTrue("stanza relayed inner", timestampVerifier.attributeEquals("value", timestamp));
- assertEquals("stanza relayed to correct receiver", new EntityImpl("test", "example.com", null), pair.getEntity());
+ assertEquals("stanza relayed to correct receiver", new EntityImpl("test", "example.com", null), triple.getEntity());
// clean and do not accept follow-up relays
stanzaRelay.reset();
@@ -75,4 +78,29 @@
}
+ public void testStanzaReceiverUnavailable() throws EntityFormatException, DeliveryException {
+ Entity sender = EntityImpl.parse("from@example.com");
+ Entity receiver = EntityImpl.parse("to_exist@example.com");
+ Entity noReceiver = EntityImpl.parse("to_unavail@example.com");
+
+ StanzaReceiverRelay stanzaRelay = (StanzaReceiverRelay) sessionContext.getServerRuntimeContext().getStanzaRelay();
+ StanzaReceiverQueue senderQueue = new StanzaReceiverQueue();
+ StanzaReceiverQueue receiverQueue = new StanzaReceiverQueue();
+ stanzaRelay.add(sender, senderQueue);
+ stanzaRelay.add(receiver, receiverQueue);
+
+ Stanza successfulMessageStanza = StanzaBuilder.createMessageStanza(sender, receiver, "en", "info").getFinalStanza();
+ ResponseStanzaContainer responseStanzaContainer = messageHandler.execute(successfulMessageStanza, sessionContext, sessionStateHolder);
+ assertEquals(successfulMessageStanza, receiverQueue.getNext());
+
+ Stanza failureMessageStanza = StanzaBuilder.createMessageStanza(sender, noReceiver, "en", "info").getFinalStanza();
+ responseStanzaContainer = messageHandler.execute(failureMessageStanza, sessionContext, sessionStateHolder);
+ assertNull(receiverQueue.getNext());
+ Stanza rejectionStanza = senderQueue.getNext();
+ assertNotNull(rejectionStanza);
+ XMPPCoreStanza rejectionCoreStanza = XMPPCoreStanza.getWrapper(rejectionStanza);
+ assertEquals("error", rejectionCoreStanza.getType());
+
+ }
+
}
\ No newline at end of file
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolStateTestCase.java Thu May 22 23:36:28 2008
@@ -44,7 +44,9 @@
super.setUp();
protocolWorker = new ProtocolWorker();
- serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, new StanzaReceiverRelay());
+ StanzaReceiverRelay receiverRelay = new StanzaReceiverRelay();
+ serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, receiverRelay);
+ receiverRelay.setServerRuntimeContext(serverRuntimeContext);
serverRuntimeContext.addDictionary(new BaseStreamStanzaDictionary());
sessionStateHolder = new SessionStateHolder();
sessionContext = new TestSessionContext(serverRuntimeContext, sessionStateHolder);
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerAquireTestCase.java Thu May 22 23:36:28 2008
@@ -40,7 +40,10 @@
protocolWorker = new ProtocolWorker();
sessionStateHolder = new SessionStateHolder();
- sessionContext = new TestSessionContext(new DefaultServerRuntimeContext(new EntityImpl(null, "test", null), new StanzaReceiverRelay()), sessionStateHolder);
+ StanzaReceiverRelay receiverRelay = new StanzaReceiverRelay();
+ DefaultServerRuntimeContext context = new DefaultServerRuntimeContext(new EntityImpl(null, "test", null), receiverRelay);
+ receiverRelay.setServerRuntimeContext(context);
+ sessionContext = new TestSessionContext(context, sessionStateHolder);
}
public void testAquireSimpleStanza() {
@@ -92,4 +95,4 @@
assertFalse("not closed", sessionContext.isClosed());
}
-}
\ No newline at end of file
+}
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java Thu May 22 23:36:28 2008
@@ -50,7 +50,9 @@
protocolWorker = new ProtocolWorker();
namespaceHandlerDictionary = new NamespaceHandlerDictionary("testNSURI");
- serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, new StanzaReceiverRelay());
+ StanzaReceiverRelay receiverRelay = new StanzaReceiverRelay();
+ serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, receiverRelay);
+ receiverRelay.setServerRuntimeContext(serverRuntimeContext);
serverRuntimeContext.addDictionary(namespaceHandlerDictionary);
sessionStateHolder = new SessionStateHolder();
sessionContext = new TestSessionContext(serverRuntimeContext, sessionStateHolder);
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerStateAwarenessTestCase.java Thu May 22 23:36:28 2008
@@ -44,7 +44,9 @@
protocolWorker = new ProtocolWorker();
sessionStateHolder = new SessionStateHolder();
Entity serverEnitity = new EntityImpl(null, "vysper-server.org", null);
- DefaultServerRuntimeContext serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, new StanzaReceiverRelay());
+ StanzaReceiverRelay receiverRelay = new StanzaReceiverRelay();
+ DefaultServerRuntimeContext serverRuntimeContext = new DefaultServerRuntimeContext(serverEnitity, receiverRelay);
+ receiverRelay.setServerRuntimeContext(serverRuntimeContext);
serverRuntimeContext.addDictionary(new BaseStreamStanzaDictionary());
sessionStateHolder = new SessionStateHolder();
sessionContext = new TestSessionContext(serverRuntimeContext, sessionStateHolder);
@@ -100,4 +102,4 @@
}
-}
\ No newline at end of file
+}
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java?rev=659449&r1=659448&r2=659449&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java Thu May 22 23:36:28 2008
@@ -17,9 +17,10 @@
package org.apache.vysper.xmpp.server;
-import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.delivery.RecordingStanzaRelay;
+import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.writer.StanzaWriter;
@@ -34,6 +35,20 @@
private boolean switchToTLSCalled;
private boolean isReopeningXMLStream;
+ public static TestSessionContext createSessionContext(Entity entity) {
+ SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ TestSessionContext sessionContext = new TestSessionContext(sessionStateHolder);
+ sessionContext.setInitiatingEntity(entity);
+ return sessionContext;
+ }
+
+ public static TestSessionContext createWithStanzaReceiverRelay(SessionStateHolder sessionStateHolder) {
+ StanzaReceiverRelay relay = new org.apache.vysper.xmpp.delivery.StanzaReceiverRelay();
+ DefaultServerRuntimeContext serverContext = new DefaultServerRuntimeContext(new EntityImpl(null, "test", null), relay);
+ relay.setServerRuntimeContext(serverContext);
+ return new TestSessionContext(serverContext, sessionStateHolder);
+ }
+
public TestSessionContext(SessionStateHolder sessionStateHolder) {
this(new DefaultServerRuntimeContext(new EntityImpl(null, "test", null), new RecordingStanzaRelay()), sessionStateHolder);
}
@@ -79,11 +94,4 @@
public boolean isSwitchToTLSCalled() {
return switchToTLSCalled;
}
-
- public static TestSessionContext createSessionContext(Entity entity) {
- SessionStateHolder sessionStateHolder = new SessionStateHolder();
- TestSessionContext sessionContext = new TestSessionContext(sessionStateHolder);
- sessionContext.setInitiatingEntity(entity);
- return sessionContext;
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org