Author: berndf
Date: Thu Sep 3 11:09:29 2009
New Revision: 810891
URL: http://svn.apache.org/viewvc?rev=810891&view=rev
Log:
fix circular dependencies in Spring bean declaration by deferring initializion
stanza relay from constructor-injection to setter injection
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/config/spring-config.xml
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleDefaultServerRuntimeContext.java
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/config/spring-config.xml
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/config/spring-config.xml?rev=810891&r1=810890&r2=810891&view=diff
==============================================================================
--- mina/sandbox/vysper/trunk/server/core/src/main/config/spring-config.xml
(original)
+++ mina/sandbox/vysper/trunk/server/core/src/main/config/spring-config.xml Thu
Sep 3 11:09:29 2009
@@ -87,7 +87,6 @@
<bean id="server"
class="org.apache.vysper.spring.SpringCompatibleDefaultServerRuntimeContext" >
<constructor-arg ref="domain" />
- <constructor-arg ref="stanzaRelay"/>
<constructor-arg ref="serverFeatures"/>
<constructor-arg>
<list>
@@ -100,6 +99,7 @@
</list>
</constructor-arg>
<constructor-arg ref="resourceRegistry"/>
+ <property name="stanzaRelay" ref="stanzaRelay" />
<property name="tlsContextFactory" ref="tlsContextFactory" />
<property name="storageProviderRegistry" ref="storageRegistry" />
<property name="modules">
Modified:
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleDefaultServerRuntimeContext.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleDefaultServerRuntimeContext.java?rev=810891&r1=810890&r2=810891&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleDefaultServerRuntimeContext.java
(original)
+++
mina/sandbox/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleDefaultServerRuntimeContext.java
Thu Sep 3 11:09:29 2009
@@ -1,29 +1,41 @@
package org.apache.vysper.spring;
-import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
-import org.apache.vysper.xmpp.server.ServerFeatures;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
+import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.modules.Module;
import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
+import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
+import org.apache.vysper.xmpp.server.ServerFeatures;
+import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry;
-import org.apache.vysper.xmpp.modules.Module;
-import org.apache.vysper.storage.StorageProviderRegistry;
import java.util.List;
/**
*/
public class SpringCompatibleDefaultServerRuntimeContext extends
DefaultServerRuntimeContext {
- public SpringCompatibleDefaultServerRuntimeContext(Entity serverEntity,
StanzaRelay stanzaRelay) {
- super(serverEntity, stanzaRelay);
+
+ private static class StanzaRelayHull implements StanzaRelay {
+
+ protected StanzaRelay stanzaRelay;
+
+ public void setStanzaRelay(StanzaRelay stanzaRelay) {
+ this.stanzaRelay = stanzaRelay;
+ }
+
+ public void relay(Entity receiver, Stanza stanza,
DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException {
+ stanzaRelay.relay(receiver, stanza, deliveryFailureStrategy);
+ }
}
-
- public SpringCompatibleDefaultServerRuntimeContext(Entity serverEntity,
StanzaRelay stanzaRelay, StorageProviderRegistry storageProviderRegistry) {
- super(serverEntity, stanzaRelay, storageProviderRegistry);
+
+ public SpringCompatibleDefaultServerRuntimeContext(Entity serverEntity,
ServerFeatures serverFeatures, List<NamespaceHandlerDictionary> dictionaries,
ResourceRegistry resourceRegistry) {
+ super(serverEntity, new StanzaRelayHull(), serverFeatures,
dictionaries, resourceRegistry);
}
-
- public SpringCompatibleDefaultServerRuntimeContext(Entity serverEntity,
StanzaRelay stanzaRelay, ServerFeatures serverFeatures,
List<NamespaceHandlerDictionary> dictionaries, ResourceRegistry
resourceRegistry) {
- super(serverEntity, stanzaRelay, serverFeatures, dictionaries,
resourceRegistry);
+
+ public void setStanzaRelay(StanzaRelay stanzaRelay) {
+ ((StanzaRelayHull)getStanzaRelay()).setStanzaRelay(stanzaRelay);
}
public void setModules(List<Module> modules) {