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/07/06 13:12:34 UTC
svn commit: r674283 - in /labs/vysper/src:
main/java/org/apache/vysper/xmpp/authorization/
main/java/org/apache/vysper/xmpp/modules/core/bind/handler/
main/java/org/apache/vysper/xmpp/modules/core/im/handler/
main/java/org/apache/vysper/xmpp/modules/co...
Author: berndf
Date: Sun Jul 6 04:12:34 2008
New Revision: 674283
URL: http://svn.apache.org/viewvc?rev=674283&view=rev
Log:
[vysper] improve roster subscripton workflow (LABS-132)
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/UserAuthorization.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/Roster.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterItem.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/protocol/ProtocolWorkerProcessTestCase.java
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java Sun Jul 6 04:12:34 2008
@@ -47,6 +47,10 @@
return verify(username, passwordCleartext);
}
+ public boolean verifyUserExists(Entity jid) {
+ return userPasswordMap.get(jid.getBareJID().getFullQualifiedName()) != null;
+ }
+
private boolean verify(String username, String passwordCleartext) {
return passwordCleartext.equals(userPasswordMap.get(username));
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/UserAuthorization.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/UserAuthorization.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/UserAuthorization.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/authorization/UserAuthorization.java Sun Jul 6 04:12:34 2008
@@ -25,4 +25,5 @@
public interface UserAuthorization {
boolean verifyCredentials(Entity jid, String passwordCleartext, Object credentials);
boolean verifyCredentials(String username, String passwordCleartext, Object credentials);
+ boolean verifyUserExists(Entity jid);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/BindIQHandler.java Sun Jul 6 04:12:34 2008
@@ -82,7 +82,7 @@
Entity entity = new EntityImpl(sessionContext.getInitiatingEntity(), resourceId);
StanzaBuilder stanzaBuilder =
- StanzaBuilder.createIQStanza(IQStanzaType.RESULT, stanza.getID()).
+ StanzaBuilder.createIQStanza(null, null, IQStanzaType.RESULT, stanza.getID()).
startInnerElement("bind").
addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_BIND).
startInnerElement("jid").addText(entity.getFullQualifiedName()).endInnerElement().
@@ -93,7 +93,7 @@
private Stanza bindError(IQStanza stanza, SessionContext sessionContext) {
StanzaBuilder stanzaBuilder =
- StanzaBuilder.createIQStanza(IQStanzaType.ERROR, stanza.getID()).
+ StanzaBuilder.createIQStanza(null, null, IQStanzaType.ERROR, stanza.getID()).
startInnerElement("error").
addAttribute("type", "cancel").
startInnerElement("not-allowed", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java Sun Jul 6 04:12:34 2008
@@ -24,6 +24,7 @@
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
import org.apache.vysper.xmpp.modules.roster.AskSubscriptionType;
+import org.apache.vysper.xmpp.modules.roster.RosterException;
import org.apache.vysper.xmpp.modules.roster.RosterItem;
import org.apache.vysper.xmpp.modules.roster.RosterStanzaUtils;
import org.apache.vysper.xmpp.modules.roster.SubscriptionType;
@@ -81,21 +82,25 @@
case SUBSCRIBE:
// RFC3921bis-04#3.1.2
+ // user requests subsription to contact
handleOutboundSubscriptionRequest(stampedStanza, sessionContext, registry);
break;
case SUBSCRIBED:
// RFC3921bis-04#3.1.5
- handleOutboundSubscriptionApproval(stampedStanza, sessionContext, registry);
+ // user approves subscription to requesting contact
+ handleOutboundSubscriptionApproval(stampedStanza, sessionContext, registry, rosterManager);
break;
case UNSUBSCRIBE:
// RFC3921bis-04#3.3.2
+ // user removes subscription from contact
handleOutboundUnsubscription(stampedStanza, sessionContext, registry);
break;
case UNSUBSCRIBED:
// RFC3921bis-04#3.2.2
+ // user approves unsubscription of contact
handleOutboundSubscriptionCancellation(stampedStanza, sessionContext, registry);
break;
@@ -109,18 +114,22 @@
case SUBSCRIBE:
// RFC3921bis-04#3.1.3
- return handleInboundSubscriptionRequest(presenceStanza, sessionContext, registry);
+ // contact requests subscription to user
+ return handleInboundSubscriptionRequest(presenceStanza, sessionContext, registry, rosterManager);
case SUBSCRIBED:
// RFC3921bis-04#3.1.6
+ // contact approves user's subsription request
return handleInboundSubscriptionApproval(presenceStanza, sessionContext, registry);
case UNSUBSCRIBE:
// RFC3921bis-04#3.3.3
+ // contact unsubscribes
handleInboundUnsubscription(presenceStanza, sessionContext, registry);
case UNSUBSCRIBED:
// RFC3921bis-04#3.2.3
+ // contact denies subsription
handleInboundSubscriptionCancellation(presenceStanza, sessionContext, registry);
default:
@@ -214,20 +223,32 @@
@SpecCompliant(spec = "RFC3921bis-04", section = "3.1.5")
private void handleOutboundSubscriptionApproval(PresenceStanza stanza,
- SessionContext sessionContext, ResourceRegistry registry) {
+ SessionContext sessionContext, ResourceRegistry registry, RosterManager rosterManager) {
Entity user = stanza.getFrom();
Entity contact = stanza.getTo();
- relayStanza(contact, stanza, sessionContext);
+ Entity userBareJid = user.getBareJID();
- // send roster push to all of the user's interested resources
+ // TODO check if BOTH is needed
+ SubscriptionType newSubscriptionType = SubscriptionType.FROM;
+ RosterItem newItem = new RosterItem(contact.getBareJID(), newSubscriptionType);
+ try {
+ rosterManager.addContact(contact, newItem);
+ } catch (RosterException e) {
+ // TODO internal server error
+ // contact could not be added
+ }
+
+ relayStanza(contact, stanza, sessionContext);
+
+ // send roster push to all of the user's interested resources
List<String> resources = registry.getInterestedResources(user);
for (String resource : resources) {
Entity userResource = new EntityImpl(user, resource);
Stanza push = buildRosterPushStanza(userResource,
sessionContext.nextSequenceValue(), contact.getBareJID(),
- SubscriptionType.FROM, null /*TODO ask? */);
+ newSubscriptionType, null);
relayStanza(userResource, push, sessionContext);
}
@@ -269,28 +290,34 @@
@SpecCompliant(spec = "RFC3920bis-04", section = "3.1.3")
private Stanza handleInboundSubscriptionRequest(PresenceStanza stanza,
- SessionContext sessionContext, ResourceRegistry registry) {
+ SessionContext sessionContext, ResourceRegistry registry, RosterManager rosterManager) {
Entity contact = stanza.getFrom();
Entity user = stanza.getTo();
+
+ Entity userBareJid = user.getBareJID();
- // TODO: verify that user actually exists on this server
- if (false) {
+ boolean userExists = sessionContext.getServerRuntimeContext().getUserAuthorization().verifyUserExists(userBareJid);
+ if (!userExists) {
// user does not exist
- return buildPresenceStanza(user.getBareJID(), contact.getBareJID(), UNSUBSCRIBED, stanza);
+ return buildPresenceStanza(userBareJid, contact.getBareJID(), UNSUBSCRIBED, stanza);
}
- // assert: user exists
- // TODO: check whether user already has a subscription to
- // contact
- if (false) {
- return buildPresenceStanza(user.getBareJID(), contact.getBareJID(), SUBSCRIBED, stanza);
+
+ RosterItem item = null;
+ try {
+ item = rosterManager.retrieve(userBareJid).getEntry(contact);
+ } catch (RosterException e) {
+ // item could not be retrieved
+ }
+ // check whether user already has a subscription to contact
+ if (item != null && item.hasFrom() ) {
+ return buildPresenceStanza(userBareJid, contact.getBareJID(), SUBSCRIBED, stanza);
}
// user exists and doesn't have a subscription
// to the contact and user is currently online (# of
// interested resources > 0)
- List<String> interestedResources = registry
- .getInterestedResources(user);
+ List<String> interestedResources = registry.getInterestedOrAvailableResources(user);
if (!interestedResources.isEmpty()) {
for (String resource : interestedResources) {
Entity userResource = new EntityImpl(user, resource);
@@ -323,8 +350,7 @@
Entity contact = stanza.getTo();
// send roster push to all of the user's interested resources
- List<String> resources = registry.getInterestedResources(user);
- resources.addAll(registry.getAvailableResources(user));
+ List<String> resources = registry.getInterestedOrAvailableResources(user);
for (String resource : resources) {
Entity userResource = new EntityImpl(user, resource);
Stanza push = buildRosterPushStanza(userResource,
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/handler/SessionIQHandler.java Sun Jul 6 04:12:34 2008
@@ -41,7 +41,7 @@
switch (stanza.getIQType()) {
case SET:
- return StanzaBuilder.createIQStanza(IQStanzaType.RESULT, stanza.getID())
+ return StanzaBuilder.createIQStanza(null, null, IQStanzaType.RESULT, stanza.getID())
.addAttribute("from", sessionContext.getServerJID().getFullQualifiedName()).getFinalStanza();
case GET:
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java Sun Jul 6 04:12:34 2008
@@ -1,5 +1,7 @@
package org.apache.vysper.xmpp.modules.roster;
+import org.apache.vysper.xmpp.addressing.Entity;
+
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
@@ -13,6 +15,15 @@
return items.iterator();
}
+ public RosterItem getEntry(Entity contact) {
+ for (RosterItem item : items) {
+ if (item.getJid().equals(contact)) {
+ return item;
+ }
+ }
+ return null;
+ }
+
public void addItem(RosterItem rosterItem) {
items.add(rosterItem);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/Roster.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/Roster.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/Roster.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/Roster.java Sun Jul 6 04:12:34 2008
@@ -16,6 +16,8 @@
***********************************************************************/
package org.apache.vysper.xmpp.modules.roster;
+import org.apache.vysper.xmpp.addressing.Entity;
+
import java.util.Iterator;
/**
@@ -24,5 +26,6 @@
public interface Roster extends Iterable<RosterItem> {
public Iterator<RosterItem> iterator();
-
+
+ public RosterItem getEntry(Entity contact);
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterItem.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterItem.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterItem.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterItem.java Sun Jul 6 04:12:34 2008
@@ -17,6 +17,8 @@
package org.apache.vysper.xmpp.modules.roster;
import org.apache.vysper.xmpp.addressing.Entity;
+import static org.apache.vysper.xmpp.modules.roster.SubscriptionType.*;
+import static org.apache.vysper.xmpp.modules.roster.AskSubscriptionType.*;
import java.util.List;
import java.util.ArrayList;
@@ -45,7 +47,7 @@
this.jid = jid;
this.name = name;
this.subscriptionType = subscriptionType;
- this.askSubscriptionType = askSubscriptionType == null ? AskSubscriptionType.NOT_SET : askSubscriptionType;
+ this.askSubscriptionType = askSubscriptionType == null ? NOT_SET : askSubscriptionType;
}
public Entity getJid() {
@@ -67,4 +69,16 @@
public AskSubscriptionType getAskSubscriptionType() {
return askSubscriptionType;
}
+
+ public boolean hasTo() {
+ return subscriptionType == TO || subscriptionType == BOTH;
+ }
+
+ public boolean hasFrom() {
+ return subscriptionType == FROM || subscriptionType == BOTH;
+ }
+
+ public boolean isBoth() {
+ return subscriptionType == BOTH;
+ }
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterStanzaUtils.java Sun Jul 6 04:12:34 2008
@@ -16,9 +16,10 @@
***********************************************************************/
package org.apache.vysper.xmpp.modules.roster;
-import org.apache.vysper.xmpp.stanza.StanzaBuilder;
-import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import java.util.List;
@@ -26,8 +27,8 @@
*/
public class RosterStanzaUtils {
- public static StanzaBuilder createRosterItemPushIQ(String id, IQStanzaType type, Iterable<RosterItem> rosterItems) {
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(type, id).
+ public static StanzaBuilder createRosterItemPushIQ(Entity to, String id, IQStanzaType type, Iterable<RosterItem> rosterItems) {
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, to, type, id).
startInnerElement("query").
addNamespaceAttribute(NamespaceURIs.JABBER_IQ_ROSTER);
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java Sun Jul 6 04:12:34 2008
@@ -31,6 +31,7 @@
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.addressing.Entity;
/**
* handles roster get, set, push & result requests
@@ -82,15 +83,22 @@
registry.setResourceState(resourceId, ResourceState.INTERESTED);
}
+ Entity from = stanza.getFrom();
+ if (from == null) {
+ if (sessionContext.getInitiatingEntity() == null) throw new RuntimeException("handle this case");
+ else from = sessionContext.getInitiatingEntity();
+ }
+
Roster roster = null;
try {
- roster = rosterManager.retrieve(stanza.getFrom().getBareJID());
+ roster = rosterManager.retrieve(from.getBareJID());
if (roster == null) return handleCannotRetrieveRoster(stanza, sessionContext);
} catch (RosterException e) {
return handleCannotRetrieveRoster(stanza, sessionContext);
}
- StanzaBuilder stanzaBuilder = RosterStanzaUtils.createRosterItemPushIQ(stanza.getID(), IQStanzaType.RESULT, roster);
+ // from becomes to
+ StanzaBuilder stanzaBuilder = RosterStanzaUtils.createRosterItemPushIQ(from, stanza.getID(), IQStanzaType.RESULT, roster);
return stanzaBuilder.getFinalStanza();
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java Sun Jul 6 04:12:34 2008
@@ -147,9 +147,14 @@
}
}
- stateAwareProtocolWorker.processStanza(sessionContext, sessionStateHolder,
- stanza, stanzaHandler,
- responseWriter);
+ try {
+ stateAwareProtocolWorker.processStanza(sessionContext, sessionStateHolder,
+ stanza, stanzaHandler,
+ responseWriter);
+ } catch (Exception e) {
+ System.err.println("error executing handler " + stanzaHandler.getClass().getName());
+ e.printStackTrace();
+ }
}
public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) {
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/resourcebinding/ResourceRegistry.java Sun Jul 6 04:12:34 2008
@@ -298,6 +298,12 @@
return filterResources(entity, ResourceState.AVAILABLE);
}
+ public List<String> getInterestedOrAvailableResources(Entity entity) {
+ List<String> resources = filterResources(entity, ResourceState.INTERESTED);
+ resources.addAll(filterResources(entity, ResourceState.AVAILABLE));
+ return resources;
+ }
+
private List<String> filterResources(Entity entity, ResourceState state) {
if (state == null || entity == null) {
throw new IllegalArgumentException(
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/StanzaBuilder.java Sun Jul 6 04:12:34 2008
@@ -34,8 +34,10 @@
*/
public class StanzaBuilder {
- public static StanzaBuilder createIQStanza(IQStanzaType type, String id) {
+ public static StanzaBuilder createIQStanza(Entity from, Entity to, IQStanzaType type, String id) {
StanzaBuilder stanzaBuilder = new StanzaBuilder("iq");
+ if (from != null) stanzaBuilder.addAttribute("from", from.getFullQualifiedName());
+ if (to != null) stanzaBuilder.addAttribute("to", to.getFullQualifiedName());
stanzaBuilder.addAttribute("type", type.value());
stanzaBuilder.addAttribute("id", id);
return stanzaBuilder;
Modified: labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/smack/BasicClient.java Sun Jul 6 04:12:34 2008
@@ -19,14 +19,13 @@
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
+import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.SASLAuthentication;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
-import java.util.Date;
import java.util.Random;
/**
@@ -78,7 +77,9 @@
try { Thread.sleep((new Random().nextInt(9)+1)*1000 ); } catch (InterruptedException e) { ; }
}
- try { Thread.sleep(120*1000 ); } catch (InterruptedException e) { ; }
+ for (int i = 0; i < 2000; i++) {
+ try { Thread.sleep(500); } catch (InterruptedException e) { ; }
+ }
connection.disconnect();
} catch (Throwable e) {
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java?rev=674283&r1=674282&r2=674283&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java Sun Jul 6 04:12:34 2008
@@ -35,7 +35,7 @@
public void testRosterGet() {
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "id1");
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "id1");
stanzaBuilder.addAttribute("from", client.getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute(NamespaceURIs.JABBER_IQ_ROSTER).endInnerElement();
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=674283&r1=674282&r2=674283&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 Sun Jul 6 04:12:34 2008
@@ -166,7 +166,7 @@
CallTestStanzaHandler stanzaHandler = new CallTestStanzaHandler("iq");
namespaceHandlerDictionary.register(stanzaHandler);
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
// we set a different from user name 'ernest'!
stanzaBuilder.addAttribute("from", new EntityImpl("ernest", server.getDomain(), null).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("jabber:iq:roster").endInnerElement();
@@ -195,7 +195,7 @@
String onlyBoundResource = sessionContext.bindResource();
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
stanzaBuilder.addAttribute("from", new EntityImpl("charlotte", server.getDomain(), onlyBoundResource).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("testNSURI").endInnerElement();
@@ -217,7 +217,7 @@
String onlyBoundResource = sessionContext.bindResource();
String arbitraryUnboundResource = "unboundResourceID";
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
stanzaBuilder.addAttribute("from", new EntityImpl("charlotte", server.getDomain(), arbitraryUnboundResource).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("testNSURI").endInnerElement();
@@ -250,7 +250,7 @@
String firstBoundResource = sessionContext.bindResource();
String secondBoundResource = sessionContext.bindResource();
- StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
stanzaBuilder.addAttribute("from", new EntityImpl("lea", server.getDomain(), null).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("testNSURI").endInnerElement();
@@ -263,7 +263,7 @@
sessionContext.getServerRuntimeContext().getResourceRegistry().unbindResource(secondBoundResource);
// bare id allowed, only one resource is bound
- stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
stanzaBuilder.addAttribute("from", new EntityImpl("lea", server.getDomain(), null).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("testNSURI").endInnerElement();
protocolWorker.processStanza(sessionContext, stanzaBuilder.getFinalStanza(), sessionStateHolder);
@@ -271,7 +271,7 @@
sessionContext.write(null); // reset
// second resource is now invalid and cannot be used anymore in a full qualified entity
- stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "test");
+ stanzaBuilder = StanzaBuilder.createIQStanza(null, null, IQStanzaType.GET, "test");
stanzaBuilder.addAttribute("from", new EntityImpl("lea", server.getDomain(), secondBoundResource).getFullQualifiedName());
stanzaBuilder.startInnerElement("query").addNamespaceAttribute("testNSURI").endInnerElement();
protocolWorker.processStanza(sessionContext, stanzaBuilder.getFinalStanza(), sessionStateHolder);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org