[jboss-cvs] JBoss Messaging SVN: r3831 - in trunk: src/main/org/jboss/messaging/core/remoting/impl/mina and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 29 05:34:38 EST 2008


Author: jmesnil
Date: 2008-02-29 05:34:38 -0500 (Fri, 29 Feb 2008)
New Revision: 3831

Added:
   trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfigurationValidator.java
   trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/RemotingConfigurationValidatorTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfiguration.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
Log:
* added RemotingConfigurationValidator to check config is valid before using it to start MinaService

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfiguration.java	2008-02-28 15:21:56 UTC (rev 3830)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfiguration.java	2008-02-29 10:34:38 UTC (rev 3831)
@@ -59,7 +59,6 @@
    {
       assert transport != null;
       assert host != null;
-      assert port > 0;
       
       this.transport = transport;
       this.host = host;

Added: trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfigurationValidator.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfigurationValidator.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConfigurationValidator.java	2008-02-29 10:34:38 UTC (rev 3831)
@@ -0,0 +1,67 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.impl;
+
+import static org.jboss.messaging.core.remoting.TransportType.INVM;
+
+import org.jboss.messaging.core.logging.Logger;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * 
+ * @version <tt>$Revision$</tt>
+ * 
+ */
+public class RemotingConfigurationValidator
+{
+   // Constants -----------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(RemotingConfigurationValidator.class);
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   public static void validate(RemotingConfiguration configuration)
+   {
+      assert configuration != null;
+      
+      if (log.isDebugEnabled())
+         log.debug("validating " + configuration);
+      
+      if (configuration.getTransport() == INVM
+            && configuration.isInvmDisabled())
+      {
+         throw new IllegalStateException(
+               "It is not allowed to disable invm communication when the transport is set to invm.");
+      }
+      if (configuration.getTransport() == INVM
+            && configuration.isSSLEnabled())
+      {
+         throw new IllegalStateException(
+               "It is not allowed to enable SSL when the transport is set to invm.");
+      }
+      if (configuration.getPort() < 0)
+      {
+         throw new IllegalStateException("Remoting port can not be negative");
+      }
+
+      if (log.isDebugEnabled())
+         log.debug("configuration is valid.");
+   }
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java	2008-02-28 15:21:56 UTC (rev 3830)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaService.java	2008-02-29 10:34:38 UTC (rev 3831)
@@ -7,6 +7,7 @@
 package org.jboss.messaging.core.remoting.impl.mina;
 
 import static org.jboss.messaging.core.remoting.ConnectorRegistrySingleton.REGISTRY;
+import static org.jboss.messaging.core.remoting.impl.RemotingConfigurationValidator.validate;
 import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addCodecFilter;
 import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addExecutorFilter;
 import static org.jboss.messaging.core.remoting.impl.mina.FilterChainSupport.addKeepAliveFilter;
@@ -30,8 +31,8 @@
 import org.jboss.messaging.core.client.FailureListener;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.remoting.Interceptor;
 import org.jboss.messaging.core.remoting.PacketDispatcher;
-import org.jboss.messaging.core.remoting.Interceptor;
 import org.jboss.messaging.core.remoting.RemotingException;
 import org.jboss.messaging.core.remoting.RemotingService;
 import org.jboss.messaging.core.remoting.impl.PacketDispatcherImpl;
@@ -81,6 +82,8 @@
       assert remotingConfig != null;
       assert factory != null;
 
+      validate(remotingConfig);
+      
       this.remotingConfig = remotingConfig;
       this.factory = factory;
       this.dispatcher = new PacketDispatcherImpl(this.filters);
@@ -149,14 +152,14 @@
          acceptor.bind();
          acceptorListener = new MinaSessionListener();
          acceptor.addListener(acceptorListener);
-         
-         boolean disableInvm = remotingConfig.isInvmDisabled();
-         if (log.isDebugEnabled())
-            log.debug("invm optimization for remoting is " + (disableInvm ? "disabled" : "enabled"));
-         if (!disableInvm)
-            REGISTRY.register(remotingConfig, dispatcher);
       }
       
+      boolean disableInvm = remotingConfig.isInvmDisabled();
+      if (log.isDebugEnabled())
+         log.debug("invm optimization for remoting is " + (disableInvm ? "disabled" : "enabled"));
+      if (!disableInvm)
+         REGISTRY.register(remotingConfig, dispatcher);
+
       started = true;
    }
 
@@ -187,6 +190,10 @@
       return remotingConfig;
    }
    
+   /**
+    * This method must only be called by tests which requires 
+    * to insert Filters (e.g. to simulate network failures)
+    */
    public DefaultIoFilterChainBuilder getFilterChain() 
    {
       assert started == true;

Added: trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/RemotingConfigurationValidatorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/RemotingConfigurationValidatorTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/test/unit/RemotingConfigurationValidatorTest.java	2008-02-29 10:34:38 UTC (rev 3831)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.test.unit;
+
+import static org.jboss.messaging.core.remoting.TransportType.INVM;
+import static org.jboss.messaging.core.remoting.TransportType.TCP;
+import static org.jboss.messaging.core.remoting.impl.RemotingConfigurationValidator.validate;
+import junit.framework.TestCase;
+
+import org.jboss.messaging.core.remoting.impl.RemotingConfiguration;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class RemotingConfigurationValidatorTest extends TestCase
+{
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   public void testNegativePort()
+   {
+      RemotingConfiguration conf = new RemotingConfiguration(TCP, "localhost", -1);
+
+      try 
+      {
+         validate(conf);
+         fail("can not set a negative port");
+      } catch (Exception e)
+      {
+         
+      }
+   }
+   
+   public void test_DisableINVM_With_INVMTransport()
+   {
+      RemotingConfiguration conf = new RemotingConfiguration(INVM, "localhost", 9000);
+      conf.setInvmDisabled(true);
+      
+      try 
+      {
+         validate(conf);
+         fail("can not disable INVM when INVM transport is set");
+      } catch (Exception e)
+      {
+         
+      }
+   }
+   
+   public void test_EnableSSL_With_INVMTransport()
+   {
+      RemotingConfiguration conf = new RemotingConfiguration(INVM, "localhost", 9000);
+      conf.setSSLEnabled(true);
+      
+      try 
+      {
+         validate(conf);
+         fail("can not enable SSL when INVM transport is set");
+      } catch (Exception e)
+      {
+         
+      }
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}




More information about the jboss-cvs-commits mailing list