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/09/25 11:16:26 UTC

svn commit: r698881 - in /labs/vysper/src/main: config/spring-config.xml java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java

Author: berndf
Date: Thu Sep 25 02:16:25 2008
New Revision: 698881

URL: http://svn.apache.org/viewvc?rev=698881&view=rev
Log:
improve inbound presence handling
fix class name misspelling

Modified:
    labs/vysper/src/main/config/spring-config.xml
    labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
    labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java

Modified: labs/vysper/src/main/config/spring-config.xml
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/config/spring-config.xml?rev=698881&r1=698880&r2=698881&view=diff
==============================================================================
--- labs/vysper/src/main/config/spring-config.xml (original)
+++ labs/vysper/src/main/config/spring-config.xml Thu Sep 25 02:16:25 2008
@@ -34,12 +34,12 @@
         Vysper Server singletons
     -->
     
-    <bean id="internalRelay" class="org.apache.vysper.xmpp.delivery.DeliveringStanzaRelay" >
+    <bean id="internalOutboundRelay" class="org.apache.vysper.xmpp.delivery.DeliveringClientOutboundStanzaRelay" >
         <constructor-arg ref="resourceRegistry"/>
     </bean>
 
     <bean id="stanzaRelay" class="org.apache.vysper.xmpp.delivery.StanzaRelayBroker" >
-        <property name="internalRelay" ref="internalRelay" />
+        <property name="internalRelay" ref="internalOutboundRelay" />
         <property name="externalRelay"><bean class="org.apache.vysper.xmpp.delivery.RecordingStanzaRelay"/></property>
         <property name="serverRuntimeContext" ref="server" />
     </bean>

Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java?rev=698881&r1=698880&r2=698881&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailabilityHandler.java Thu Sep 25 02:16:25 2008
@@ -89,7 +89,7 @@
                 throw new RuntimeException("unhandled presence available case");
             }
         } else if (type == UNAVAILABLE) {
-            handleInboundUnavailable(presenceStanza, sessionContext);
+            handleInboundUnavailable(presenceStanza, sessionContext, registry);
         } else if (type == PROBE) {
             handleInboundPresenceProbe(presenceStanza, sessionContext, registry);
         } else if (type == ERROR) {
@@ -101,16 +101,11 @@
         return null;
     }
 
-    private void handleInboundUnavailable(PresenceStanza presenceStanza, SessionContext sessionContext) {
-        ResourceRegistry registry = sessionContext.getServerRuntimeContext().getResourceRegistry();
+    private void handleInboundUnavailable(PresenceStanza presenceStanza, SessionContext sessionContext, ResourceRegistry registry) {
 
-        String firstResource = registry.getFirstResourceForSession(sessionContext);
-        if (firstResource != null) {
-            registry.setResourceState(firstResource, ResourceState.UNAVAILABLE);
-        }
-        // TODO propagate to _all_ resources for this entity.
+        relayInbound(presenceStanza, sessionContext, registry);
         
-        System.out.println("C: has become unavailable");
+        System.out.println(presenceStanza.getFrom() +  " has become unavailable");
     }
 
     @SpecCompliant(spec = "RFC3921bis-04", section = "4.3.2")
@@ -212,15 +207,23 @@
 	@SpecCompliant(spec = "RFC3921bis-04", section = "4.2.3")
 	private void handleInboundInitialPresence(PresenceStanza stanza,
                                            SessionContext sessionContext, ResourceRegistry registry) {
-		Entity user = stanza.getTo();
-		List<String> resources = registry.getAvailableResources(user);
+        relayInbound(stanza, sessionContext, registry);
 
-		for (String resource : resources) {
-			Entity userResource = new EntityImpl(user, resource);
-			relayStanza(userResource, stanza, sessionContext);
-		}
+        System.out.println(stanza.getFrom() +  " has become available");
 	}
 
+    private void relayInbound(PresenceStanza stanza, SessionContext sessionContext, ResourceRegistry registry) {
+        Entity user = stanza.getTo();
+        List<String> resources = registry.getAvailableResources(user);
+
+        // TODO check, if FROM really in TO's roster? - or trust the sending server?
+
+        for (String resource : resources) {
+            Entity userResource = new EntityImpl(user, resource);
+			relayStanza(userResource, stanza, sessionContext);
+        }
+    }
+
     /**
      * the presence priority is optional, but if contained, it might become relevant for 
      * message delivery (see RFC3921bis-05#8.3.1.1)

Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java?rev=698881&r1=698880&r2=698881&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java Thu Sep 25 02:16:25 2008
@@ -40,20 +40,20 @@
     }
 
     public void processStanza(SessionContext sessionContext, Stanza stanza, SessionStateHolder sessionStateHolder) {
-        executor.submit(new SttanzaProcessorUnitOfWork(sessionContext, stanza, sessionStateHolder));
+        executor.submit(new StanzaProcessorUnitOfWork(sessionContext, stanza, sessionStateHolder));
     }
 
     public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) {
         ProtocolWorker.processTLSEstablishedInternal(sessionContext, sessionStateHolder, responseWriter);
     }
 
-    private class SttanzaProcessorUnitOfWork implements Runnable {
+    private class StanzaProcessorUnitOfWork implements Runnable {
 
         private SessionContext sessionContext;
         private Stanza stanza;
         private SessionStateHolder sessionStateHolder;
 
-        private SttanzaProcessorUnitOfWork(SessionContext sessionContext, Stanza stanza, SessionStateHolder sessionStateHolder) {
+        private StanzaProcessorUnitOfWork(SessionContext sessionContext, Stanza stanza, SessionStateHolder sessionStateHolder) {
             this.sessionContext = sessionContext;
             this.stanza = stanza;
             this.sessionStateHolder = sessionStateHolder;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org