[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