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/04/11 09:03:53 UTC
svn commit: r647069 - in /labs/vysper/src/main/java/org/apache/vysper/xmpp:
modules/roster/ modules/roster/RosterDictionary.java
modules/roster/handler/ modules/roster/handler/IQRosterHandler.java
protocol/NamespaceURIs.java
Author: berndf
Date: Fri Apr 11 00:03:36 2008
New Revision: 647069
URL: http://svn.apache.org/viewvc?rev=647069&view=rev
Log:
[vysper] add very basic (empty) roster retrieval (LABS-119)
Added:
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java
- copied, changed from r628539, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/SessionStanzaDictionary.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java
- copied, changed from r628539, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/IQBindHandler.java
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java
Copied: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java (from r628539, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/SessionStanzaDictionary.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java?p2=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java&p1=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/SessionStanzaDictionary.java&r1=628539&r2=647069&rev=647069&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/session/SessionStanzaDictionary.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/RosterDictionary.java Fri Apr 11 00:03:36 2008
@@ -15,20 +15,20 @@
* permissions and limitations under the License. *
***********************************************************************/
-package org.apache.vysper.xmpp.modules.core.session;
+package org.apache.vysper.xmpp.modules.roster;
-import org.apache.vysper.xmpp.modules.core.session.handler.IQSessionHandler;
+import org.apache.vysper.xmpp.modules.roster.handler.IQRosterHandler;
import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
/**
- * handler for session establishment (RFC3921). this logic is planned to be removed in revisions of RFC3921.
+ * handler for roster retrieval (RFC3921#7.3)
*/
-public class SessionStanzaDictionary extends NamespaceHandlerDictionary {
+public class RosterDictionary extends NamespaceHandlerDictionary {
- public SessionStanzaDictionary() {
- super(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_SESSION);
- register(new IQSessionHandler());
+ public RosterDictionary() {
+ super(NamespaceURIs.JABBER_IQ_ROSTER);
+ register(new IQRosterHandler());
seal();
}
}
Copied: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java (from r628539, labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/IQBindHandler.java)
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java?p2=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java&p1=labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/IQBindHandler.java&r1=628539&r2=647069&rev=647069&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/bind/handler/IQBindHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/roster/handler/IQRosterHandler.java Fri Apr 11 00:03:36 2008
@@ -15,26 +15,23 @@
* permissions and limitations under the License. *
***********************************************************************/
-package org.apache.vysper.xmpp.modules.core.bind.handler;
+package org.apache.vysper.xmpp.modules.roster.handler;
import org.apache.vysper.xmpp.modules.core.base.handler.IQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
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.stanza.IQStanzaType;
-import org.apache.vysper.xmpp.resourcebinding.BindException;
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityImpl;
/**
* handles bind requests
*/
-public class IQBindHandler extends IQHandler {
+public class IQRosterHandler extends IQHandler {
protected boolean verifyNamespace(Stanza stanza) {
- return verifyInnerNamespace(stanza, NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_BIND);
+ return verifyInnerNamespace(stanza, NamespaceURIs.JABBER_IQ_ROSTER);
}
protected Stanza executeIQLogic(IQStanza stanza, SessionContext sessionContext) {
@@ -44,13 +41,13 @@
case ERROR:
new RuntimeException("iq stanza type ERROR not yet handled");
case GET:
- new RuntimeException("iq stanza type GET not yet handled");
- break;
+ return retrieveRoster(stanza, sessionContext);
case RESULT:
new RuntimeException("iq stanza type RESULT not yet handled");
break;
case SET:
- return bindNewResource(stanza, sessionContext);
+ new RuntimeException("iq stanza type GET not yet handled");
+ break;
default:
new RuntimeException("iq stanza type not supported: " + stanza.getIQType());
}
@@ -58,45 +55,15 @@
return null;
}
- private Stanza bindNewResource(IQStanza stanza, SessionContext sessionContext) {
-
- // As per RFC3920.7, the client may propose a resource id to the server:
- //
- // <iq type='set' id='bind_2'>
- // <bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>
- // <resource>someresource</resource>
- // </bind>
- // </iq>
- //
- // The client's proposed resource id is ignored by this server.
+ private Stanza retrieveRoster(IQStanza stanza, SessionContext sessionContext) {
- String resourceId = null;
- try {
- resourceId = sessionContext.bindResource();
- } catch (BindException e) {
- return bindError(stanza, sessionContext);
- }
-
- Entity entity = new EntityImpl(sessionContext.getInitiatingEntity(), resourceId);
-
StanzaBuilder stanzaBuilder =
StanzaBuilder.createIQStanza(IQStanzaType.RESULT, stanza.getID()).
- startInnerElement("bind").
- addNamespaceAttribute(NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_BIND).
- startInnerElement("jid").addText(entity.getFullQualifiedName()).endInnerElement().
- endInnerElement();
+ startInnerElement("query", NamespaceURIs.JABBER_IQ_ROSTER);
+ // TODO add roster items
+ stanzaBuilder.endInnerElement();
return stanzaBuilder.getFinalStanza();
}
- private Stanza bindError(IQStanza stanza, SessionContext sessionContext) {
- StanzaBuilder stanzaBuilder =
- StanzaBuilder.createIQStanza(IQStanzaType.ERROR, stanza.getID()).
- startInnerElement("error").
- addAttribute("type", "cancel").
- startInnerElement("not-allowed", NamespaceURIs.URN_IETF_PARAMS_XML_NS_XMPP_STANZAS).
- endInnerElement();
-
- return stanzaBuilder.getFinalStanza();
- }
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java?rev=647069&r1=647068&r2=647069&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java Fri Apr 11 00:03:36 2008
@@ -31,6 +31,7 @@
public static final String JABBER_CLIENT = "jabber:client";
public static final String JABBER_SERVER = "jabber:server";
public static final String JABBER_SERVER_DIALBACK = "jabber:server:dialback";
+ public static final String JABBER_IQ_ROSTER = "jabber:iq:roster";
// compatibility namespaces
public static final String JABBER_IQ_AUTH_COMPATIBILITY = "jabber:iq:auth";
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org