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