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) {


Reply via email to