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