[jboss-cvs] JBoss Messaging SVN: r2777 - in trunk: src/main/org/jboss/jms/server and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 13 06:56:05 EDT 2007
Author: sergeypk
Date: 2007-06-13 06:56:04 -0400 (Wed, 13 Jun 2007)
New Revision: 2777
Added:
trunk/tests/src/org/jboss/test/messaging/jms/server/ServerPeerConfigurationTest.java
Modified:
trunk/src/etc/xmdesc/ServerPeer-xmbean.xml
trunk/src/main/org/jboss/jms/server/ServerPeer.java
trunk/src/main/org/jboss/jms/server/ServerPeerMBean.java
trunk/tests/smoke/build.xml
trunk/tests/src/org/jboss/test/messaging/jms/clustering/ServerManagementTest.java
trunk/tests/src/org/jboss/test/messaging/tools/jboss/MBeanConfigurationElement.java
trunk/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java
trunk/tests/src/org/jboss/test/messaging/tools/jmx/rmi/LocalTestServer.java
Log:
http://jira.jboss.com/jira/browse/JBMESSAGING-981
Also changed the ServerPeer MBean attribute name from serverPeerID to ServerPeerID.
Modified: trunk/src/etc/xmdesc/ServerPeer-xmbean.xml
===================================================================
--- trunk/src/etc/xmdesc/ServerPeer-xmbean.xml 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/src/etc/xmdesc/ServerPeer-xmbean.xml 2007-06-13 10:56:04 UTC (rev 2777)
@@ -24,6 +24,10 @@
</parameter>
</constructor>
+ <constructor>
+ <name>ServerPeer</name>
+ </constructor>
+
<!-- Managed attributes -->
<!-- plugins ObjectNames -->
@@ -110,19 +114,19 @@
<type>int</type>
</attribute>
- <attribute access="read-only" getMethod="getServerPeerID">
+ <attribute access="read-write" getMethod="getServerPeerID" setMethod="setServerPeerID">
<description>The ID of the ServerPeer. Must be unique per JBoss instance</description>
- <name>serverPeerID</name>
+ <name>ServerPeerID</name>
<type>int</type>
</attribute>
- <attribute access="read-only" getMethod="getDefaultQueueJNDIContext">
+ <attribute access="read-write" getMethod="getDefaultQueueJNDIContext" setMethod="setDefaultQueueJNDIContext">
<description>The default JNDI context queues are bound under.</description>
<name>DefaultQueueJNDIContext</name>
<type>java.lang.String</type>
</attribute>
- <attribute access="read-only" getMethod="getDefaultTopicJNDIContext">
+ <attribute access="read-write" getMethod="getDefaultTopicJNDIContext" setMethod="setDefaultTopicJNDIContext">
<description>The default JNDI context topics are bound under.</description>
<name>DefaultTopicJNDIContext</name>
<type>java.lang.String</type>
Modified: trunk/src/main/org/jboss/jms/server/ServerPeer.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/ServerPeer.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/src/main/org/jboss/jms/server/ServerPeer.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -104,12 +104,12 @@
// Attributes -----------------------------------------------------------------------------------
- private int serverPeerID;
+ private int serverPeerID = -1;
private byte[] clientAOPStack;
private Version version;
- private String defaultQueueJNDIContext;
- private String defaultTopicJNDIContext;
+ private String defaultQueueJNDIContext = "";
+ private String defaultTopicJNDIContext = "";
private boolean started;
@@ -168,19 +168,34 @@
protected Queue defaultExpiryQueue;
// Constructors ---------------------------------------------------------------------------------
+ public ServerPeer() throws Exception
+ {
+ log.info(this + " creating server peer");
+ // Some wired components need to be started here
+ securityStore = new SecurityMetadataStore();
+
+ version = Version.instance();
+
+ failoverStatusLock = new Object();
+
+ sessions = new ConcurrentReaderHashMap();
+
+ started = false;
+ }
+
public ServerPeer(int serverPeerID,
String defaultQueueJNDIContext,
String defaultTopicJNDIContext) throws Exception
{
+ this();
+
if (serverPeerID < 0)
{
throw new IllegalArgumentException("ID cannot be negative");
}
- log.info(this + " creating server peer with ID " + serverPeerID);
-
- this.serverPeerID = serverPeerID;
+ setServerPeerID(serverPeerID);
this.defaultQueueJNDIContext = defaultQueueJNDIContext;
this.defaultTopicJNDIContext = defaultTopicJNDIContext;
@@ -208,6 +223,11 @@
{
return;
}
+
+ if (serverPeerID < 0)
+ {
+ throw new IllegalStateException(" ServerPeerID not set");
+ }
log.debug(this + " starting");
@@ -454,21 +474,6 @@
{
return version.getProviderMinorVersion();
}
-
- public int getServerPeerID()
- {
- return serverPeerID;
- }
-
- public String getDefaultQueueJNDIContext()
- {
- return defaultQueueJNDIContext;
- }
-
- public String getDefaultTopicJNDIContext()
- {
- return defaultTopicJNDIContext;
- }
//Read - write attributes
@@ -574,6 +579,50 @@
this.defaultMessageCounterHistoryDayLimit = limit;
}
+ public synchronized void setServerPeerID(int serverPeerID)
+ {
+ if (started)
+ {
+ throw new IllegalStateException("Cannot set ServerPeerID while the service is running");
+ }
+ this.serverPeerID = serverPeerID;
+ }
+
+ public int getServerPeerID()
+ {
+ return serverPeerID;
+ }
+
+ public String getDefaultQueueJNDIContext()
+ {
+ return defaultQueueJNDIContext;
+ }
+
+ public synchronized void setDefaultQueueJNDIContext(String defaultQueueJNDIContext)
+ {
+ if (started)
+ {
+ throw new IllegalStateException("Cannot set DefaultQueueJNDIContext while the service is running");
+ }
+
+ this.defaultQueueJNDIContext = defaultQueueJNDIContext;
+ }
+
+ public String getDefaultTopicJNDIContext()
+ {
+ return defaultTopicJNDIContext;
+ }
+
+ public void setDefaultTopicJNDIContext(String defaultTopicJNDIContext)
+ {
+ if (started)
+ {
+ throw new IllegalStateException("Cannot set DefaultTopicJNDIContext while the service is running");
+ }
+
+ this.defaultTopicJNDIContext = defaultTopicJNDIContext;
+ }
+
public void enableMessageCounters()
{
messageCounterManager.start();
Modified: trunk/src/main/org/jboss/jms/server/ServerPeerMBean.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/ServerPeerMBean.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/src/main/org/jboss/jms/server/ServerPeerMBean.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -43,6 +43,8 @@
int getServerPeerID();
+ void setServerPeerID(int serverPeerID);
+
String getJMSVersion();
int getJMSMajorVersion();
@@ -58,9 +60,13 @@
int getProviderMinorVersion();
String getDefaultQueueJNDIContext();
+
+ void setDefaultQueueJNDIContext(String defaultQueueJNDIContext);
String getDefaultTopicJNDIContext();
+ void setDefaultTopicJNDIContext(String defaultQueueJNDIContext);
+
void setSecurityDomain(String securityDomain) throws Exception;
String getSecurityDomain();
Modified: trunk/tests/smoke/build.xml
===================================================================
--- trunk/tests/smoke/build.xml 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/tests/smoke/build.xml 2007-06-13 10:56:04 UTC (rev 2777)
@@ -620,7 +620,7 @@
<java classname="org.jboss.console.twiddle.Twiddle" fork="yes" failonerror="yes"
dir="${jboss.home}/bin">
- <arg line="-s jnp://localhost:${jnpPort} get jboss.messaging:service=ServerPeer serverPeerID"/>
+ <arg line="-s jnp://localhost:${jnpPort} get jboss.messaging:service=ServerPeer ServerPeerID"/>
<classpath>
<path refid="twiddle.classpath"/>
</classpath>
Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/ServerManagementTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/ServerManagementTest.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/ServerManagementTest.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -60,7 +60,7 @@
ServerManagement.start(7, "all");
Integer index = (Integer)ServerManagement.
- getAttribute(7, new ObjectName("jboss.messaging:service=ServerPeer"), "serverPeerID");
+ getAttribute(7, new ObjectName("jboss.messaging:service=ServerPeer"), "ServerPeerID");
assertEquals(7, index.intValue());
@@ -101,7 +101,7 @@
ServerManagement.start(1, "all");
Integer index = (Integer)ServerManagement.
- getAttribute(1, new ObjectName("jboss.messaging:service=ServerPeer"), "serverPeerID");
+ getAttribute(1, new ObjectName("jboss.messaging:service=ServerPeer"), "ServerPeerID");
assertEquals(1, index.intValue());
Added: trunk/tests/src/org/jboss/test/messaging/jms/server/ServerPeerConfigurationTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/server/ServerPeerConfigurationTest.java (rev 0)
+++ trunk/tests/src/org/jboss/test/messaging/jms/server/ServerPeerConfigurationTest.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -0,0 +1,152 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.messaging.jms.server;
+
+import javax.management.ObjectName;
+import javax.management.RuntimeMBeanException;
+
+import org.jboss.test.messaging.MessagingTestCase;
+import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
+import org.jboss.test.messaging.tools.jmx.ServiceAttributeOverrides;
+import org.jboss.test.messaging.tools.jmx.ServiceContainer;
+import org.jboss.test.messaging.tools.jmx.rmi.LocalTestServer;
+
+/**
+ * Test ServerPeer configuration.
+ *
+ * @author <a href="sergey.koshcheyev at jboss.com">Sergey Koshcheyev</a>
+ * @version <tt>$Revision$</tt>
+ *
+ * $Id$
+ */
+public class ServerPeerConfigurationTest extends MessagingTestCase
+{
+ // Constants -----------------------------------------------------
+
+ // Static --------------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public ServerPeerConfigurationTest(String name)
+ {
+ super(name);
+ }
+
+ // Public --------------------------------------------------------
+
+ /**
+ * Test that the ServerPeer can be configured without using
+ * the <constructor> element, only through attributes.
+ */
+ public void testConstructorlessConfiguration() throws Exception
+ {
+ MyLocalTestServer server = new MyLocalTestServer();
+ server.start("all", false);
+ server.stop();
+ }
+
+ public void testServerPeerID() throws Exception
+ {
+ testConstructorArgumentAttribute("ServerPeerID", new Integer(5), new Integer(10));
+ }
+
+ public void testDefaultQueueJNDIContext() throws Exception
+ {
+ testConstructorArgumentAttribute("DefaultQueueJNDIContext", "/myqueues", "/otherqueues");
+ }
+
+ public void testDefaultTopicJNDIContext() throws Exception
+ {
+ testConstructorArgumentAttribute("DefaultTopicJNDIContext", "/mytopics", "/othertopics");
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ private void testConstructorArgumentAttribute(String attributeName,
+ Object initialAttributeValue, Object anotherAttributeValue) throws Exception
+ {
+ MyLocalTestServer server = new MyLocalTestServer();
+ ServiceAttributeOverrides overrides = new ServiceAttributeOverrides();
+ // Can't use server.getServerPeerObjectName() here since it's not known to the server yet.
+ overrides.put(ServiceContainer.SERVER_PEER_OBJECT_NAME, attributeName, initialAttributeValue.toString());
+
+ server.start("all", overrides, false, true);
+ try
+ {
+ ObjectName sp = server.getServerPeerObjectName();
+ Object actualValue = server.getServiceContainer()
+ .getAttribute(server.getServerPeerObjectName(), attributeName);
+
+ assertEquals(initialAttributeValue, actualValue);
+
+ try
+ {
+ server.getServiceContainer().setAttribute(sp, attributeName, anotherAttributeValue.toString());
+ fail("Should throw an exception when setting " + attributeName + " after startup");
+ }
+ catch (RuntimeMBeanException e)
+ {
+ assertTrue(e.getCause() instanceof IllegalStateException);
+ }
+ }
+ finally
+ {
+ server.stop();
+ }
+ }
+
+ // Inner classes -------------------------------------------------
+
+ /**
+ * Configures ServerPeer through attributes instead of constructor
+ * arguments.
+ */
+ private class MyLocalTestServer extends LocalTestServer
+ {
+ @Override
+ protected void overrideServerPeerConfiguration(MBeanConfigurationElement config,
+ int serverPeerID, String defaultQueueJNDIContext, String defaultTopicJNDIContext)
+ throws Exception
+ {
+ config.removeConstructors();
+
+ config.setAttribute("ServerPeerID", Integer.toString(serverPeerID));
+ config.setAttribute("DefaultQueueJNDIContext",
+ defaultQueueJNDIContext == null ? "/queue" : defaultQueueJNDIContext);
+ config.setAttribute("DefaultTopicJNDIContext",
+ defaultTopicJNDIContext == null? "/topic" : defaultTopicJNDIContext);
+ }
+
+ // Make public
+ @Override
+ public ServiceContainer getServiceContainer()
+ {
+ return super.getServiceContainer();
+ }
+ }
+}
Property changes on: trunk/tests/src/org/jboss/test/messaging/jms/server/ServerPeerConfigurationTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Modified: trunk/tests/src/org/jboss/test/messaging/tools/jboss/MBeanConfigurationElement.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/tools/jboss/MBeanConfigurationElement.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/tests/src/org/jboss/test/messaging/tools/jboss/MBeanConfigurationElement.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -8,6 +8,7 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -233,7 +234,25 @@
c.setArgValue(paramIndex, value);
}
+ /**
+ * Removes all <constructor> elements from the configuration.
+ */
+ public void removeConstructors()
+ {
+ if (constructors.isEmpty())
+ {
+ return;
+ }
+ for (Iterator iter = constructors.iterator(); iter.hasNext();)
+ {
+ ConstructorElement element = (ConstructorElement) iter.next();
+ element.node.getParentNode().removeChild(element.node);
+ }
+
+ constructors.clear();
+ }
+
public String toString()
{
return getMBeanClassName() + "[" + getObjectName() + "]";
Modified: trunk/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/tests/src/org/jboss/test/messaging/tools/jmx/ServiceContainer.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -133,6 +133,8 @@
// Used only on testcases where Socket and HTTP are deployed at the same time
public static ObjectName HTTP_REMOTING_OBJECT_NAME;
+
+ public static ObjectName SERVER_PEER_OBJECT_NAME;
public static String DATA_SOURCE_JNDI_NAME = "java:/DefaultDS";
public static String TRANSACTION_MANAGER_JNDI_NAME = "java:/TransactionManager";
@@ -181,6 +183,9 @@
HTTP_REMOTING_OBJECT_NAME =
new ObjectName("jboss.messaging:service=Connector,transport=http");
+
+ SERVER_PEER_OBJECT_NAME =
+ new ObjectName("jboss.messaging:service=ServerPeer");
}
catch(Exception e)
{
Modified: trunk/tests/src/org/jboss/test/messaging/tools/jmx/rmi/LocalTestServer.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/tools/jmx/rmi/LocalTestServer.java 2007-06-13 10:50:28 UTC (rev 2776)
+++ trunk/tests/src/org/jboss/test/messaging/tools/jmx/rmi/LocalTestServer.java 2007-06-13 10:56:04 UTC (rev 2777)
@@ -331,18 +331,9 @@
ServiceConfigHelper.getServiceConfiguration(mdd, "ServerPeer");
// overwrite the file configuration, if needed
- serverPeerConfig.setConstructorArgumentValue(0, 0, String.valueOf(serverPeerID));
+ overrideServerPeerConfiguration(serverPeerConfig, serverPeerID, defaultQueueJNDIContext,
+ defaultTopicJNDIContext);
- if (defaultQueueJNDIContext != null)
- {
- serverPeerConfig.setConstructorArgumentValue(0, 1, defaultQueueJNDIContext);
- }
-
- if (defaultTopicJNDIContext != null)
- {
- serverPeerConfig.setConstructorArgumentValue(0, 2, defaultTopicJNDIContext);
- }
-
serverPeerObjectName = sc.registerAndConfigureService(serverPeerConfig);
overrideAttributes(serverPeerObjectName, attrOverrides);
@@ -845,13 +836,31 @@
// Package protected ----------------------------------------------------------------------------
- ServiceContainer getServiceContainer()
+ // Protected ------------------------------------------------------------------------------------
+
+ protected ServiceContainer getServiceContainer()
{
return sc;
}
- // Protected ------------------------------------------------------------------------------------
+ protected void overrideServerPeerConfiguration(MBeanConfigurationElement config,
+ int serverPeerID, String defaultQueueJNDIContext, String defaultTopicJNDIContext)
+ throws Exception
+ {
+ // overwrite the file configuration, if needed
+ config.setConstructorArgumentValue(0, 0, String.valueOf(serverPeerID));
+ if (defaultQueueJNDIContext != null)
+ {
+ config.setConstructorArgumentValue(0, 1, defaultQueueJNDIContext);
+ }
+
+ if (defaultTopicJNDIContext != null)
+ {
+ config.setConstructorArgumentValue(0, 2, defaultTopicJNDIContext);
+ }
+ }
+
// Private --------------------------------------------------------------------------------------
private void overrideAttributes(ObjectName on, ServiceAttributeOverrides attrOverrides)
More information about the jboss-cvs-commits
mailing list