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/26 20:11:10 UTC
svn commit: r660259 - in /labs/vysper/src:
main/java/org/apache/vysper/xmpp/addressing/
main/java/org/apache/vysper/xmpp/modules/
main/java/org/apache/vysper/xmpp/modules/core/base/handler/
main/java/org/apache/vysper/xmpp/modules/roster/ main/java/org...
Author: berndf
Date: Mon May 26 11:11:03 2008
New Revision: 660259
URL: http://svn.apache.org/viewvc?rev=660259&view=rev
Log:
[vysper] work in roster IQ and presence stuff
Added:
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterException.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java
- copied, changed from r653995, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterManager.java
- copied, changed from r657582, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterPersistenceManager.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManager.java
- copied, changed from r657582, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterPersistenceManager.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java
Removed:
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterPersistenceManager.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterPersistenceManager.java
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/ServerRuntimeContextService.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandler.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/RosterDictionary.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/PresenceStanzaType.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandlerTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/addressing/EntityImpl.java Mon May 26 11:11:03 2008
@@ -94,7 +94,8 @@
}
public Entity getBareJID() {
- return new EntityImpl(node, domain, null);
+ if (!isResourceSet()) return this; // this _is_ a bare id
+ return new EntityImpl(node, domain, null);
}
public String getCanonicalizedName() {
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/ServerRuntimeContextService.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/ServerRuntimeContextService.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/ServerRuntimeContextService.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/ServerRuntimeContextService.java Mon May 26 11:11:03 2008
@@ -20,5 +20,5 @@
* a service which is managed and retrievable through the server runtime context
*/
public interface ServerRuntimeContextService {
- String getName();
+ String getServiceName();
}
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=660259&r1=660258&r2=660259&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 Mon May 26 11:11:03 2008
@@ -19,13 +19,11 @@
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;
import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
-import org.apache.vysper.xmpp.stanza.XMPPCoreStanzaVerifier;
import org.apache.vysper.xmpp.xmlfragment.XMLElement;
import org.apache.vysper.xmpp.xmlfragment.XMLSemanticError;
@@ -44,8 +42,6 @@
protected Stanza executeCore(XMPPCoreStanza stanza, SessionContext sessionContext) {
- XMPPCoreStanzaVerifier stanzaVerifier = stanza.getCoreVerifier();
-
// (try to) read thread id
String threadId = null;
XMLElement threadElement = null;
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandler.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandler.java Mon May 26 11:11:03 2008
@@ -66,7 +66,10 @@
boolean hasTo = verifier.attributePresent("to");
boolean hasType = verifier.attributePresent("type");
boolean isOutbound = !hasFrom && hasTo && !sessionContext.isServerToServer();
+
PresenceStanzaType type = presenceStanza.getPresenceType();
+ boolean subscriptionRelated = type != null && PresenceStanzaType.isSubscriptionType(type);
+
if (!hasTo && !hasType) {
ResourceState resourceState = registry.getResourceState(registry.getFirstResourceForSession(sessionContext));
Added: 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=660259&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/MutableRoster.java Mon May 26 11:11:03 2008
@@ -0,0 +1,19 @@
+package org.apache.vysper.xmpp.modules.roster;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ */
+public class MutableRoster implements Roster {
+ private final List<RosterItem> items = new ArrayList<RosterItem>();
+
+ public Iterator<RosterItem> iterator() {
+ return items.iterator();
+ }
+
+ 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=660259&r1=660258&r2=660259&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 Mon May 26 11:11:03 2008
@@ -16,18 +16,13 @@
***********************************************************************/
package org.apache.vysper.xmpp.modules.roster;
-import java.util.List;
-import java.util.ArrayList;
import java.util.Iterator;
/**
* a whole roster for a user
*/
-public class Roster {
- private final List<RosterItem> items = new ArrayList<RosterItem>();
+public interface Roster extends Iterable<RosterItem> {
- public Iterator<RosterItem> itemsIterator() {
- return items.iterator();
- }
+ public Iterator<RosterItem> iterator();
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java Mon May 26 11:11:03 2008
@@ -17,7 +17,7 @@
package org.apache.vysper.xmpp.modules.roster;
-import org.apache.vysper.xmpp.modules.roster.handler.IQRosterHandler;
+import org.apache.vysper.xmpp.modules.roster.handler.RosterIQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
@@ -28,7 +28,7 @@
public RosterDictionary() {
super(NamespaceURIs.JABBER_IQ_ROSTER);
- register(new IQRosterHandler());
+ register(new RosterIQHandler());
seal();
}
}
\ No newline at end of file
Added: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterException.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterException.java?rev=660259&view=auto
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterException.java (added)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterException.java Mon May 26 11:11:03 2008
@@ -0,0 +1,22 @@
+package org.apache.vysper.xmpp.modules.roster;
+
+/**
+ */
+public class RosterException extends Exception {
+
+ public RosterException() {
+ super();
+ }
+
+ public RosterException(String s) {
+ super(s);
+ }
+
+ public RosterException(String s, Throwable throwable) {
+ super(s, throwable);
+ }
+
+ public RosterException(Throwable throwable) {
+ super(throwable);
+ }
+}
Copied: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java (from r653995, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java?p2=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java&p1=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java&r1=653995&r2=660259&rev=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandler.java Mon May 26 11:11:03 2008
@@ -18,19 +18,27 @@
package org.apache.vysper.xmpp.modules.roster.handler;
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
+import org.apache.vysper.xmpp.modules.roster.Roster;
+import org.apache.vysper.xmpp.modules.roster.RosterException;
+import org.apache.vysper.xmpp.modules.roster.RosterGroup;
+import org.apache.vysper.xmpp.modules.roster.RosterItem;
+import org.apache.vysper.xmpp.modules.roster.persistence.RosterManager;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.resourcebinding.ResourceRegistry;
+import org.apache.vysper.xmpp.resourcebinding.ResourceState;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.IQStanza;
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.resourcebinding.ResourceState;
-import org.apache.vysper.xmpp.resourcebinding.ResourceRegistry;
+
+import java.util.List;
/**
- * handles bind requests
+ * handles roster get, set, push & result requests
*/
-public class IQRosterHandler extends IQHandler {
+public class RosterIQHandler extends IQHandler {
protected boolean verifyNamespace(Stanza stanza) {
return verifyInnerNamespace(stanza, NamespaceURIs.JABBER_IQ_ROSTER);
@@ -61,26 +69,54 @@
private Stanza retrieveRoster(IQStanza stanza, SessionContext sessionContext) {
- ResourceRegistry registry = sessionContext.getServerRuntimeContext().getResourceRegistry();
+ ServerRuntimeContext serverContext = sessionContext.getServerRuntimeContext();
+ ResourceRegistry registry = serverContext.getResourceRegistry();
+ RosterManager rosterManager = (RosterManager)serverContext.getServerRuntimeContextService(RosterManager.SERVER_SERVICE_ROSTERMANAGER);
+
+ if (rosterManager == null) {
+ return handleCannotRetrieveRoster(stanza, sessionContext);
+ }
+
String resourceId = registry.getFirstResourceForSession(sessionContext);
ResourceState currentState = registry.getResourceState(resourceId);
if (currentState != null && currentState == ResourceState.CONNECTED) {
registry.setResourceState(resourceId, ResourceState.INTERESTED);
}
-
+
+ Roster roster = null;
+ try {
+ roster = rosterManager.retrieve(stanza.getFrom().getBareJID());
+ if (roster == null) return handleCannotRetrieveRoster(stanza, sessionContext);
+ } catch (RosterException e) {
+ return handleCannotRetrieveRoster(stanza, sessionContext);
+ }
+
StanzaBuilder stanzaBuilder =
StanzaBuilder.createIQStanza(IQStanzaType.RESULT, stanza.getID()).
startInnerElement("query", NamespaceURIs.JABBER_IQ_ROSTER);
- // TODO add roster items
-
-
- stanzaBuilder.startInnerElement("item").addAttribute("jid", "user2@vysper.org").addAttribute("name", "u2");
- stanzaBuilder.endInnerElement();
+ for (RosterItem rosterItem : roster) {
+ stanzaBuilder.startInnerElement("item")
+ .addAttribute("jid", rosterItem.getJid().getFullQualifiedName())
+ .addAttribute("name", rosterItem.getName());
+ List<RosterGroup> groupList = rosterItem.getGroups();
+ if (groupList != null) {
+ for (RosterGroup rosterGroup : groupList) {
+ stanzaBuilder.startInnerElement("group")
+ .addText(rosterGroup.getName())
+ .endInnerElement();
+ }
+ }
+ stanzaBuilder.endInnerElement();
+ }
stanzaBuilder.endInnerElement();
return stanzaBuilder.getFinalStanza();
}
+ private Stanza handleCannotRetrieveRoster(IQStanza stanza, SessionContext sessionContext) {
+ throw new RuntimeException("gracefully handling roster management problem not implemented");
+ }
+
}
\ No newline at end of file
Copied: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterManager.java (from r657582, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterPersistenceManager.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterManager.java?p2=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterManager.java&p1=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterPersistenceManager.java&r1=657582&r2=660259&rev=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterPersistenceManager.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/MemoryRosterManager.java Mon May 26 11:11:03 2008
@@ -19,6 +19,9 @@
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.modules.roster.Roster;
import org.apache.vysper.xmpp.modules.roster.RosterItem;
+import org.apache.vysper.xmpp.modules.roster.RosterException;
+import org.apache.vysper.xmpp.modules.roster.MutableRoster;
+import org.apache.vysper.xmpp.modules.ServerRuntimeContextService;
import java.util.Map;
import java.util.HashMap;
@@ -26,18 +29,39 @@
/**
* manages rosters in memory (and if the application ends, they are lost)
*/
-public class MemoryRosterPersistenceManager implements RosterPersistenceManager {
+public class MemoryRosterManager implements RosterManager, ServerRuntimeContextService {
- private Map<Entity, Roster> rosterMap = new HashMap<Entity, Roster>();
+ private Map<Entity, MutableRoster> rosterMap = new HashMap<Entity, MutableRoster>();
public Roster retrieve(Entity jid) {
- if (!rosterMap.containsKey(jid)) rosterMap.put(jid, new Roster());
+ if (!rosterMap.containsKey(jid)) rosterMap.put(jid, new MutableRoster());
return rosterMap.get(jid);
}
- public void addContact(Entity jid, RosterItem rosterItem) {
- throw new RuntimeException("not yet implemented");
+ public void addContact(Entity jid, RosterItem rosterItem) throws RosterException {
+ if (jid == null) throw new RosterException("jid not provided");
+ MutableRoster mutableRoster = (MutableRoster) retrieve(jid);
+ if (mutableRoster == null) {
+ mutableRoster = new MutableRoster();
+ rosterMap.put(jid, mutableRoster);
+ }
+ mutableRoster.addItem(rosterItem);
}
+ public void modifyContact(Entity jid, RosterItem rosterItem) throws RosterException {
+ if (jid == null) throw new RosterException("jid not provided");
+ Roster roster = retrieve(jid);
+ if (roster == null) throw new RosterException("roster not available for jid = " + jid.getFullQualifiedName());
+ }
+
+ public void removeContact(Entity jid, RosterItem rosterItem) throws RosterException {
+ if (jid == null) throw new RosterException("jid not provided");
+ Roster roster = retrieve(jid);
+ if (roster == null) throw new RosterException("roster not available for jid = " + jid.getFullQualifiedName());
+ }
+
+ public String getServiceName() {
+ return RosterManager.SERVER_SERVICE_ROSTERMANAGER;
+ }
}
Copied: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManager.java (from r657582, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterPersistenceManager.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManager.java?p2=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManager.java&p1=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterPersistenceManager.java&r1=657582&r2=660259&rev=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterPersistenceManager.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/persistence/RosterManager.java Mon May 26 11:11:03 2008
@@ -18,12 +18,22 @@
import org.apache.vysper.xmpp.modules.roster.Roster;
import org.apache.vysper.xmpp.modules.roster.RosterItem;
+import org.apache.vysper.xmpp.modules.roster.RosterException;
import org.apache.vysper.xmpp.addressing.Entity;
/**
+ * for getting and changing rosters. implementations must transparently handle persistence
*/
-public interface RosterPersistenceManager {
- Roster retrieve(Entity jid);
+public interface RosterManager {
- void addContact(Entity jid, RosterItem rosterItem);
+ public final static String SERVER_SERVICE_ROSTERMANAGER = "rosterManager";
+
+ Roster retrieve(Entity jid) throws RosterException;
+
+ void addContact(Entity jid, RosterItem rosterItem) throws RosterException;
+
+ void modifyContact(Entity jid, RosterItem rosterItem) throws RosterException;
+
+ void removeContact(Entity jid, RosterItem rosterItem) throws RosterException;
+
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java Mon May 26 11:11:03 2008
@@ -132,10 +132,10 @@
public void registerServerRuntimeContextService(ServerRuntimeContextService service) {
if (service == null) throw new IllegalStateException("service must not be null");
- if (serverRuntimeContextServiceMap.get(service.getName()) == null) {
- throw new IllegalStateException("service already registered: " + service.getName());
+ if (serverRuntimeContextServiceMap.get(service.getServiceName()) != null) {
+ throw new IllegalStateException("service already registered: " + service.getServiceName());
}
- serverRuntimeContextServiceMap.put(service.getName(), service);
+ serverRuntimeContextServiceMap.put(service.getServiceName(), service);
}
public ServerRuntimeContextService getServerRuntimeContextService(String name) {
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/PresenceStanzaType.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/PresenceStanzaType.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/PresenceStanzaType.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/stanza/PresenceStanzaType.java Mon May 26 11:11:03 2008
@@ -46,5 +46,10 @@
public String value() {
return value;
}
+
+ public static boolean isSubscriptionType(PresenceStanzaType presenceStanzaType) {
+ return presenceStanzaType == SUBSCRIBE || presenceStanzaType == SUBSCRIBED ||
+ presenceStanzaType == UNSUBSCRIBE || presenceStanzaType == UNSUBSCRIBED;
+ }
}
\ No newline at end of file
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandlerTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandlerTestCase.java?rev=660259&r1=660258&r2=660259&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandlerTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/PresenceHandlerTestCase.java Mon May 26 11:11:03 2008
@@ -20,57 +20,53 @@
import junit.framework.TestCase;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
-import org.apache.vysper.xmpp.protocol.SessionStateHolder;
+import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.resourcebinding.ResourceState;
-import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.server.TestSessionContext;
-import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
+import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.stanza.IQStanzaType;
+import org.apache.vysper.xmpp.modules.roster.persistence.MemoryRosterManager;
+import org.apache.vysper.xmpp.modules.roster.handler.RosterIQHandler;
/**
*/
public class PresenceHandlerTestCase extends TestCase {
private TestSessionContext sessionContext;
- private SessionStateHolder sessionStateHolder = new SessionStateHolder();
private PresenceHandler presenceHandler = new PresenceHandler();
private String boundResourceId;
+ protected MemoryRosterManager rosterManager;
+ protected EntityImpl client;
+ protected RosterIQHandler handler;
protected void setUp() throws Exception {
super.setUp();
- sessionContext = new TestSessionContext(sessionStateHolder);
- sessionContext.setInitiatingEntity(EntityImpl.parse("tester@vysper.org"));
- sessionStateHolder.setState(SessionState.AUTHENTICATED);
+ sessionContext = TestSessionContext.createWithStanzaReceiverRelayAuthenticated();
+ client = EntityImpl.parse("tester@vysper.org");
+ sessionContext.setInitiatingEntity(client);
boundResourceId = sessionContext.bindResource();
sessionContext.getServerRuntimeContext().getResourceRegistry().setResourceState(boundResourceId, ResourceState.INTERESTED);
+ rosterManager = new MemoryRosterManager();
+ sessionContext.getServerRuntimeContext().registerServerRuntimeContextService(rosterManager);
+ handler = new RosterIQHandler();
}
- protected ResourceState getBoundResourcesState() {
- return sessionContext.getServerRuntimeContext().getResourceRegistry().getResourceState(boundResourceId);
- }
-
- protected void setBoundResourcesState(ResourceState newResourcesState) {
- sessionContext.getServerRuntimeContext().getResourceRegistry().setResourceState(boundResourceId, newResourcesState);
- }
-
- public void testInitialPresence() {
- StanzaBuilder stanzaBuilder = new StanzaBuilder("presence");
-
- assertEquals(getBoundResourcesState(), ResourceState.INTERESTED);
- ResponseStanzaContainer responseStanzaContainer = presenceHandler.execute(stanzaBuilder.getFinalStanza(), sessionContext, null);
- assertNull(responseStanzaContainer);
- assertEquals(getBoundResourcesState(), ResourceState.AVAILABLE);
- }
-
- public void testUnavailable() {
- StanzaBuilder stanzaBuilder = StanzaBuilder.createPresenceStanza(null, null, null, PresenceStanzaType.UNAVAILABLE, null, null);
+ public void testRosterGet() {
+
+ StanzaBuilder stanzaBuilder = StanzaBuilder.createIQStanza(IQStanzaType.GET, "id1");
+ stanzaBuilder.addAttribute("from", client.getFullQualifiedName());
+ stanzaBuilder.startInnerElement("query").addNamespaceAttribute(NamespaceURIs.JABBER_IQ_ROSTER).endInnerElement();
- setBoundResourcesState(ResourceState.AVAILABLE);
- ResponseStanzaContainer responseStanzaContainer = presenceHandler.execute(stanzaBuilder.getFinalStanza(), sessionContext, null);
- assertNull(responseStanzaContainer);
- assertEquals(ResourceState.UNAVAILABLE, getBoundResourcesState());
+ handler.execute(stanzaBuilder.getFinalStanza(), sessionContext, null);
+
+// C: <iq from='juliet@example.com/balcony'
+// type='get'
+// id='roster_get'>
+// <query xmlns='jabber:iq:roster'/>
+// </iq>
- // TODO check that the required notifications are sent
}
+
}
Added: 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=660259&view=auto
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java (added)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/roster/handler/RosterIQHandlerTestCase.java Mon May 26 11:11:03 2008
@@ -0,0 +1,10 @@
+package org.apache.vysper.xmpp.modules.roster.handler;
+
+import junit.framework.TestCase;
+
+/**
+ */
+public class RosterIQHandlerTestCase extends TestCase {
+
+
+}
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=660259&r1=660258&r2=660259&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 Mon May 26 11:11:03 2008
@@ -42,6 +42,12 @@
return sessionContext;
}
+ public static TestSessionContext createWithStanzaReceiverRelayAuthenticated() {
+ SessionStateHolder sessionStateHolder = new SessionStateHolder();
+ sessionStateHolder.setState(SessionState.AUTHENTICATED);
+ return createWithStanzaReceiverRelay(sessionStateHolder);
+ }
+
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);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org