You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ar...@apache.org on 2008/10/13 10:16:05 UTC
svn commit: r703961 [1/2] - in
/incubator/qpid/trunk/qpid/java/management/client/src:
main/java/org/apache/qpid/management/
main/java/org/apache/qpid/management/configuration/
main/java/org/apache/qpid/management/domain/handler/base/
main/java/org/apac...
Author: arnaudsimon
Date: Mon Oct 13 01:16:03 2008
New Revision: 703961
URL: http://svn.apache.org/viewvc?rev=703961&view=rev
Log:
qpid-1284: on behalf Adnrea (latest posted patch)
Modified:
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/config.xml
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/BrokerConnectionDataParser.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/QpidDatasource.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Tag.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandler.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/MethodResponseMessageHandler.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidMethod.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidPackage.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/AbsTime.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Boolean.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/DeltaTime.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/ObjectReference.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str16.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str8.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Type.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint16.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint64.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint8.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uuid.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/ManagementClient.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QpidService.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/configuration/ConfiguratorTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/configuration/MappingParsersTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/configuration/StubConfigurator.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandlerTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/DomainModelTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidMethodBuilderTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidNumberPropertyTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidPackageTest.java
incubator/qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidStringPropertyTest.java
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java Mon Oct 13 01:16:03 2008
@@ -29,13 +29,13 @@
{
/** Name of the qpid management exchange. */
String MANAGEMENT_EXCHANGE = "qpid.management";
- String MANAGEMENT_ROUTING_KEY = "console.#";
+ String MANAGEMENT_ROUTING_KEY = "mgmt.#";
String MANAGEMENT_QUEUE_PREFIX = "management.";
String METHOD_REPLY_QUEUE_PREFIX = "reply.";
String AMQ_DIRECT_QUEUE = "amq.direct";
- String AGENT_ROUTING_KEY = "agent.1.0";
+ String AGENT_ROUTING_KEY = "agent.0";
String BROKER_ROUTING_KEY = "broker";
@@ -49,4 +49,4 @@
String CONFIGURATION_FILE_NAME = "/org/apache/qpid/management/config.xml";
String ARG_COUNT_PARAM_NAME = "argCount";
-}
+}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java Mon Oct 13 01:16:03 2008
@@ -27,8 +27,15 @@
*/
public interface Protocol
{
- String MAGIC_NUMBER = "AM2";
+ String MAGIC_NUMBER = "AM1";
- byte [] METHOD_REQUEST_FIRST_FOUR_BYTES = (MAGIC_NUMBER+"M").getBytes();
- byte [] SCHEMA_REQUEST_FIRST_FOUR_BYTES = (MAGIC_NUMBER+"S").getBytes();
-}
+ char SCHEMA_REQUEST_OPCODE = 'S';
+ char SCHEMA_RESPONSE_OPCODE = Character.toLowerCase(SCHEMA_REQUEST_OPCODE);
+
+ char OPERATION_INVOCATION_REQUEST_OPCODE = 'M';
+ char OPERATION_INVOCATION_RESPONSE_OPCODE = Character.toLowerCase(OPERATION_INVOCATION_REQUEST_OPCODE);
+
+ char INSTRUMENTATION_CONTENT_RESPONSE_OPCODE = 'i';
+ char CONFIGURATION_CONTENT_RESPONSE_OPCDE = 'c';
+ char INSTR_AND_CONFIG_CONTENT_RESPONSE_OPCODE = 'g';
+}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/config.xml
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/config.xml?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/config.xml (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/config.xml Mon Oct 13 01:16:03 2008
@@ -1,26 +1,4 @@
<configuration>
- <message-handlers>
- <management-queue>
- <handler>
- <opcode>i</opcode>
- <class-name>org.apache.qpid.management.domain.handler.impl.InstrumentationMessageHandler</class-name>
- </handler>
- <handler>
- <opcode>c</opcode>
- <class-name>org.apache.qpid.management.domain.handler.impl.ConfigurationMessageHandler</class-name>
- </handler>
- </management-queue>
- <method-reply-queue>
- <handler>
- <opcode>m</opcode>
- <class-name>org.apache.qpid.management.domain.handler.impl.MethodResponseMessageHandler</class-name>
- </handler>
- <handler>
- <opcode>s</opcode>
- <class-name>org.apache.qpid.management.domain.handler.impl.SchemaResponseMessageHandler</class-name>
- </handler>
- </method-reply-queue>
- </message-handlers>
<type-mappings>
<mapping>
<code>1</code>
@@ -99,7 +77,7 @@
<user>guest</user>
<password>guest</password>
<max-pool-capacity>4</max-pool-capacity>
- <initial-pool-capacity>4</initial-pool-capacity>
+ <initial-pool-capacity>0</initial-pool-capacity>
<max-wait-timeout>-1</max-wait-timeout>
</broker>
</brokers>
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/BrokerConnectionDataParser.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/BrokerConnectionDataParser.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/BrokerConnectionDataParser.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/BrokerConnectionDataParser.java Mon Oct 13 01:16:03 2008
@@ -29,13 +29,16 @@
* For each access-mode-mappings/mapping element found in the configuration file, a new access mode mapping
* is built and injected into the bridge configuration.
*
- * <broker>
- <host>192.168.61.130</host>
- <port>5673</port>
- <virtual-host>test</virtual-host>
- <user>andrea</user>
- <password>andrea</password>
- </broker>
+ <broker>
+ <host>192.168.148.131</host>
+ <port>5672</port>
+ <virtual-host>test</virtual-host>
+ <user>guest</user>
+ <password>guest</password>
+ <max-pool-capacity>4</max-pool-capacity>
+ <initial-pool-capacity>4</initial-pool-capacity>
+ <max-wait-timeout>-1</max-wait-timeout>
+ </broker>
*
* @author Andrea Gazzarini
*/
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java Mon Oct 13 01:16:03 2008
@@ -25,9 +25,12 @@
import java.util.Set;
import java.util.UUID;
import java.util.Map.Entry;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.SynchronousQueue;
import org.apache.qpid.management.Names;
import org.apache.qpid.management.domain.handler.base.IMessageHandler;
+import org.apache.qpid.management.domain.handler.impl.InvocationResult;
import org.apache.qpid.management.domain.model.AccessMode;
import org.apache.qpid.management.domain.model.type.Type;
import org.apache.qpid.transport.DeliveryProperties;
@@ -60,6 +63,9 @@
private String _methodReplyQueueName;
private Header _headerForCommandMessages;
+ private DeliveryProperties _deliveryProperties = new DeliveryProperties();
+ private MessageProperties _messageProperties = new MessageProperties();
+ public BlockingQueue<InvocationResult> _resultExchangeChannel = new SynchronousQueue<InvocationResult>();
// Private constructor.
private Configuration()
@@ -236,6 +242,26 @@
}
/**
+ * Returns the command message properties.
+ *
+ * @return the command message properties.
+ */
+ public MessageProperties getCommandMessageProperties ()
+ {
+ return _messageProperties;
+ }
+
+ /**
+ * Returns the command message delivery properties.
+ *
+ * @return the command message delivery properties.
+ */
+ public DeliveryProperties getCommandDeliveryProperties ()
+ {
+ return _deliveryProperties;
+ }
+
+ /**
* Adds a new type mapping to this configuration.
*
* @param mapping the type mapping that will be added.
@@ -314,16 +340,11 @@
*/
private void createHeaderForCommandMessages ()
{
- MessageProperties messageProperties = new MessageProperties();
-
ReplyTo replyTo=new ReplyTo();
replyTo.setRoutingKey(_methodReplyQueueName);
- messageProperties.setReplyTo(replyTo);
-
- DeliveryProperties deliveryProperties = new DeliveryProperties();
- deliveryProperties.setRoutingKey(Names.AGENT_ROUTING_KEY);
-
- _headerForCommandMessages = new Header(deliveryProperties, messageProperties);
+ _messageProperties.setReplyTo(replyTo);
+ _deliveryProperties.setRoutingKey(Names.AGENT_ROUTING_KEY);
+ _headerForCommandMessages = new Header(_deliveryProperties, _messageProperties);
}
/**
@@ -339,5 +360,5 @@
LOGGER.debug("<QMAN-200021> : Management queue name : %s",_managementQueueName);
LOGGER.debug("<QMAN-000022> : Method-reply queue name : %s",_methodReplyQueueName);
- }
+ }
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java Mon Oct 13 01:16:03 2008
@@ -27,6 +27,11 @@
import javax.xml.parsers.SAXParserFactory;
import org.apache.qpid.management.Names;
+import org.apache.qpid.management.Protocol;
+import org.apache.qpid.management.domain.handler.impl.ConfigurationMessageHandler;
+import org.apache.qpid.management.domain.handler.impl.InstrumentationMessageHandler;
+import org.apache.qpid.management.domain.handler.impl.MethodResponseMessageHandler;
+import org.apache.qpid.management.domain.handler.impl.SchemaResponseMessageHandler;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -57,9 +62,6 @@
IParser _typeMappingParser = new TypeMappingParser();
IParser _accessModeMappingParser = new AccessModeMappingParser();
IParser _brokerConfigurationParser = new BrokerConnectionDataParser();
- IParser _managementQueueHandlerParser = new ManagementQueueMessageListenerParser();
- IParser _methodReplyQueueHandlerParser = new MethodReplyQueueMessageListenerParser();
-
IParser _currentParser = DEFAULT_PARSER;
/**
@@ -95,16 +97,6 @@
_currentParser = _brokerConfigurationParser;
break;
}
- case MANAGEMENT_QUEUE:
- {
- _currentParser = _managementQueueHandlerParser;
- break;
- }
- case METHOD_REPLY_QUEUE:
- {
- _currentParser = _methodReplyQueueHandlerParser;
- break;
- }
}
}
@@ -127,6 +119,11 @@
BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(getConfigurationFileName()),"UTF8"));
InputSource source = new InputSource(reader);
parser.parse(source, this);
+
+ // Hard-coded configuration for message handlers : we need that because those handler mustn't be configurable.
+ // QMan is not able to work without them!
+ addMandatoryManagementMessageHandlers();
+ addMandatoryMethodReplyMessageHandlers();
} catch (Exception exception)
{
throw new ConfigurationException(exception);
@@ -134,6 +131,38 @@
}
/**
+ * Configures the mandatory management message handlers.
+ */
+ private void addMandatoryMethodReplyMessageHandlers ()
+ {
+ Configuration.getInstance().addMethodReplyMessageHandlerMapping(
+ new MessageHandlerMapping(
+ Protocol.OPERATION_INVOCATION_RESPONSE_OPCODE,
+ MethodResponseMessageHandler.class.getName()));
+
+ Configuration.getInstance().addMethodReplyMessageHandlerMapping(
+ new MessageHandlerMapping(
+ Protocol.SCHEMA_RESPONSE_OPCODE,
+ SchemaResponseMessageHandler.class.getName()));
+ }
+
+ /**
+ * Configures the mandatory management message handlers.
+ */
+ private void addMandatoryManagementMessageHandlers ()
+ {
+ Configuration.getInstance().addManagementMessageHandlerMapping(
+ new MessageHandlerMapping(
+ Protocol.INSTRUMENTATION_CONTENT_RESPONSE_OPCODE,
+ InstrumentationMessageHandler.class.getName()));
+
+ Configuration.getInstance().addManagementMessageHandlerMapping(
+ new MessageHandlerMapping(
+ Protocol.CONFIGURATION_CONTENT_RESPONSE_OPCDE,
+ ConfigurationMessageHandler.class.getName()));
+ }
+
+ /**
* Returns the name of the configuration file.
*
* @return the name of the configuration file.
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java Mon Oct 13 01:16:03 2008
@@ -31,6 +31,24 @@
private String _handlerClass;
/**
+ * Builds an empty message handler mapping.
+ */
+ MessageHandlerMapping()
+ {
+ }
+
+ /**
+ * Builds a new mapping with the given opcode and handler class.
+ *
+ * @param opcode the opcode.
+ * @param handlerClass the handler class.
+ */
+ MessageHandlerMapping(Character opcode, String handlerClass) {
+ this._opcode = opcode;
+ this._handlerClass = handlerClass;
+ }
+
+ /**
* Returns the opcode of this mapping.
*
* @return the code of this mapping.
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/QpidDatasource.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/QpidDatasource.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/QpidDatasource.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/QpidDatasource.java Mon Oct 13 01:16:03 2008
@@ -28,95 +28,158 @@
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.commons.pool.impl.GenericObjectPoolFactory;
-import org.apache.qpid.transport.Connection;
-import org.apache.qpid.transport.ConnectionException;
+import org.apache.qpid.ErrorCode;
+import org.apache.qpid.QpidException;
+import org.apache.qpid.nclient.Client;
+import org.apache.qpid.nclient.ClosedListener;
+import org.apache.qpid.nclient.Connection;
+import org.apache.qpid.nclient.DtxSession;
+import org.apache.qpid.nclient.Session;
import org.apache.qpid.transport.util.Logger;
/**
* Qpid datasource.
- * Basically it is a connection pool manager used for optimizing broker connections usage.
- *
+ * Basically it is a connection pool manager used for optimizing broker connections usage.
+ *
* @author Andrea Gazzarini
*/
-public final class QpidDatasource
+public final class QpidDatasource
{
private final static Logger LOGGER = Logger.get(QpidDatasource.class);
-
+
/**
* A connection decorator used for adding pool interaction behaviour to an existing connection.
- *
+ *
* @author Andrea Gazzarini
*/
- class PooledConnection extends Connection
+ public class ConnectionDecorator implements Connection,ClosedListener
{
+ private final Connection _decoratee;
private final UUID _brokerId;
private boolean _valid;
-
+ private BrokerConnectionData _connectionData;
+
/**
* Builds a new decorator with the given connection.
- *
+ *
* @param brokerId the broker identifier.
* @param decoratee the underlying connection.
+ * @param connectionData connection details used for logging purposes.
*/
- private PooledConnection(UUID brokerId)
+ private ConnectionDecorator(UUID brokerId, Connection decoratee, BrokerConnectionData connectionData)
{
+ this._decoratee = decoratee;
this._brokerId = brokerId;
+ this._decoratee.setClosedListener(this);
+ this._connectionData = connectionData;
_valid = true;
+ LOGGER.debug("<QMAN-200045> : Connection %s for pool %s created.",this,_connectionData);
}
-
+
/**
* Returns true if the underlying connection is still valid and can be used.
- *
+ *
* @return true if the underlying connection is still valid and can be used.
*/
boolean isValid()
{
+ if (_valid)
+ {
+ LOGGER.debug("<QMAN-200013> : Pooled connection %s for %s seems to be valid.",this,_connectionData);
+ } else
+ {
+ LOGGER.debug("<QMAN-200013> : Pooled connection %s for %s has been marked as invalid.",this,_connectionData);
+ }
return _valid;
}
-
- void reallyClose()
- {
- super.close();
- }
-
+
/**
* Returns the connection to the pool. That is, marks this connections as available.
* After that, this connection will be available for further operations.
*/
- public void close()
+ public void close () throws QpidException
{
try
{
pools.get(_brokerId).returnObject(this);
- LOGGER.debug("<QMAN-200012> : Connection %s returned to the pool.", this);
- }
- catch (Exception e)
+ LOGGER.debug("<QMAN-200012> : <Connection for pool %s released.", _connectionData);
+ } catch (Exception exception)
{
- throw new ConnectionException(e);
- }
+ throw new QpidException("<QMAN-100203> : Error while releasing pooled connection.",ErrorCode.CONNECTION_ERROR,exception);
+ }
}
- public void exception(Throwable t)
+ /**
+ * Do nothing : underlying connection is already connected.
+ */
+ public void connect (String host, int port, String virtualHost, String username, String password)
+ throws QpidException
{
- super.exception(t);
- _valid = false;
+ // DO NOTHING : DECORATEE CONNECTION IS ALREADY CONNECTED.
+ }
+
+ /**
+ * Do nothing : underlying connection is already connected.
+ */
+ public void connect (String url) throws QpidException
+ {
+ // DO NOTHING : DECORATEE CONNECTION IS ALREADY CONNECTED.
+ }
+
+ /**
+ * @see Connection#createDTXSession(int)
+ */
+ public DtxSession createDTXSession (int expiryInSeconds)
+ {
+ return _decoratee.createDTXSession(expiryInSeconds);
}
- }
+ /**
+ * @see Connection#createSession(long)
+ */
+ public Session createSession (long expiryInSeconds)
+ {
+ return _decoratee.createSession(expiryInSeconds);
+ }
+
+ /**
+ * Do nothing : closed listener has been already injected.
+ */
+ public void setClosedListener (ClosedListener exceptionListner)
+ {
+ }
+
+ /**
+ * Callback method used for error notifications while underlying connection is closing.
+ */
+ public void onClosed (ErrorCode errorCode, String reason, Throwable throwable)
+ {
+ _valid = false;
+ LOGGER.error(
+ throwable,
+ "<QMAN-100012> : Error on closing connection. Reason is : %s, error code is %s. Connection %s to %s will be " +
+ "marked as invalid and therefore will be purged..",
+ reason,
+ errorCode.getCode(),
+ this,
+ _connectionData);
+ }
+ };
+
/**
- * This is the connection factory, that is, the factory used to manage the lifecycle (create, validate & destroy) of
+ * This is the connection factory, that is, the factory used to manage the lifecycle (create, validate & destroy) of
* the broker connection(s).
- *
+ *
* @author Andrea Gazzarini
*/
class QpidConnectionFactory extends BasePoolableObjectFactory
- {
+ {
private final BrokerConnectionData _connectionData;
private final UUID _brokerId;
-
+
/**
* Builds a new connection factory with the given parameters.
- *
+ *
* @param brokerId the broker identifier.
* @param connectionData the connecton data.
*/
@@ -125,67 +188,68 @@
this._connectionData = connectionData;
this._brokerId = brokerId;
}
-
+
/**
* Creates a new underlying connection.
*/
@Override
public Connection makeObject () throws Exception
{
- PooledConnection connection = new PooledConnection(_brokerId);
+ Connection connection = Client.createConnection();
connection.connect(
- _connectionData.getHost(),
- _connectionData.getPort(),
- _connectionData.getVirtualHost(),
- _connectionData.getUsername(),
+ _connectionData.getHost(),
+ _connectionData.getPort(),
+ _connectionData.getVirtualHost(),
+ _connectionData.getUsername(),
_connectionData.getPassword());
- return connection;
+ return new ConnectionDecorator(_brokerId,connection,_connectionData);
}
-
+
/**
* Validates the underlying connection.
*/
@Override
public boolean validateObject (Object obj)
{
- PooledConnection connection = (PooledConnection) obj;
- boolean isValid = connection.isValid();
- LOGGER.debug("<QMAN-200013> : Test connection on reserve. Is valid? %s",isValid);
- return isValid;
+ ConnectionDecorator connection = (ConnectionDecorator) obj;
+ return connection.isValid();
}
-
+
/**
* Closes the underlying connection.
*/
@Override
public void destroyObject (Object obj) throws Exception
{
+ ConnectionDecorator connection = (ConnectionDecorator) obj;
try
{
- PooledConnection connection = (PooledConnection) obj;
- connection.reallyClose();
- LOGGER.debug("<QMAN-200014> : Connection has been destroyed.");
- } catch (Exception e)
+ connection._decoratee.close();
+ LOGGER.debug("<QMAN-200014> : Connection for %s has been closed.",connection._connectionData);
+ } catch (Exception exception)
{
- LOGGER.debug(e, "<QMAN-200015> : Unable to destroy a connection object");
+ LOGGER.debug(
+ exception,
+ "<QMAN-200015> : Unable to close an underlying qpid connection (target address is %s) .",
+ connection._connectionData);
}
}
}
-
+
// Singleton instance.
private static QpidDatasource instance = new QpidDatasource();
// Each entry contains a connection pool for a specific broker.
private Map<UUID, ObjectPool> pools = new HashMap<UUID, ObjectPool>();
-
+
// Private constructor.
private QpidDatasource()
{
}
-
+
/**
* Gets an available connection from the pool of the given broker.
- *
+ *
* @param brokerId the broker identifier.
* @return a valid connection to the broker associated with the given identifier.
*/
@@ -193,20 +257,20 @@
{
return (Connection) pools.get(brokerId).borrowObject();
}
-
+
/**
* Entry point method for retrieving the singleton instance of this datasource.
- *
+ *
* @return the qpid datasource singleton instance.
*/
- public static QpidDatasource getInstance()
+ public static QpidDatasource getInstance()
{
return instance;
}
-
+
/**
* Adds a connection pool to this datasource.
- *
+ *
* @param brokerId the broker identifier that will be associated with the new connection pool.
* @param connectionData the broker connection data.
* @throws Exception when the pool cannot be created.
@@ -221,9 +285,20 @@
false);
ObjectPool pool = factory.createPool();
- for (int i = 0; i < connectionData.getInitialPoolCapacity(); i++)
+ // Open connections at startup according to initial capacity param value.
+ int howManyConnectionAtStartup = connectionData.getInitialPoolCapacity();
+ Object [] openStartupList = new Object[howManyConnectionAtStartup];
+
+ // Open...
+ for (int index = 0; index < howManyConnectionAtStartup; index++)
+ {
+ openStartupList[index] = pool.borrowObject();
+ }
+
+ // ...and immediately return them to pool. In this way the pooled connection has been opened.
+ for (int index = 0; index < howManyConnectionAtStartup; index++)
{
- pool.returnObject(pool.borrowObject());
+ pool.returnObject(openStartupList[index]);
}
pools.put(brokerId,pool);
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Tag.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Tag.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Tag.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Tag.java Mon Oct 13 01:16:03 2008
@@ -26,9 +26,7 @@
VIRTUAL_HOST { @Override public String toString() { return "virtual-host"; }},
USER { @Override public String toString() { return "user"; }},
PASSWORD { @Override public String toString() { return "password"; }},
- BROKERS { @Override public String toString() { return "brokers"; }},
- MANAGEMENT_QUEUE { @Override public String toString() { return "management-queue"; }},
- METHOD_REPLY_QUEUE { @Override public String toString() { return "method-reply-queue"; }};
+ BROKERS { @Override public String toString() { return "brokers"; }};
/**
* Returns the enum entry associated to the given tag name.
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandler.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/base/ContentIndicationMessageHandler.java Mon Oct 13 01:16:03 2008
@@ -46,8 +46,6 @@
long timeObjectWasCreated = decoder.readDatetime();
long timeObjectWasDeleted = decoder.readDatetime();
-
-
Binary objectId = new Binary(decoder.readBin128());
if (objectHasBeenRemoved(timeObjectWasDeleted, timeStampOfCurrentSample))
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/MethodResponseMessageHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/MethodResponseMessageHandler.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/MethodResponseMessageHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/MethodResponseMessageHandler.java Mon Oct 13 01:16:03 2008
@@ -20,22 +20,90 @@
*/
package org.apache.qpid.management.domain.handler.impl;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.BlockingQueue;
+
import org.apache.qpid.management.domain.handler.base.BaseMessageHandler;
+import org.apache.qpid.management.domain.model.DomainModel;
+import org.apache.qpid.management.domain.model.InvocationEvent;
import org.apache.qpid.transport.codec.ManagementDecoder;
import org.apache.qpid.transport.util.Logger;
+/**
+ * Message handler for method response messages.
+ * This handler is installed on domain model as a method invocation result listener.
+ * When a method is going to be invoked this listener is notified with the exchange channel that will be used between it and
+ * the event (method invocation) source object.
+ *
+ * @author Andrea Gazzarini
+ *
+ */
public class MethodResponseMessageHandler extends BaseMessageHandler
{
private final static Logger LOGGER = Logger.get(MethodResponseMessageHandler.class);
+
+ private Map<Integer, BlockingQueue<InvocationResult>> _exchangeChannels = new HashMap<Integer, BlockingQueue<InvocationResult>>();
- public void process (ManagementDecoder decoder, int sequenceNumber)
+ /**
+ * This is the listener installed on domain model for method invocations.
+ */
+ private final IMethodInvocationListener methodInvocationListener = new IMethodInvocationListener()
{
- LOGGER.debug("<QMAN-200009> : Incoming method response message.");
-
- long statusCode = decoder.readUint32();
- String statusText = decoder.readStr8();
-
- LOGGER.debug("<QMAN-200010> : Status code : %s", statusCode);
- LOGGER.debug("<QMAN-200011> : Status text : %s", statusText);
+ /**
+ * Event source callback.
+ * A method is going to be invoked and this method lets this listener take the exchange channel that will be used
+ * with the event source for synchronous communication.
+ *
+ * @param event the operation invocation event.
+ */
+ public void operationIsGoingToBeInvoked (InvocationEvent event)
+ {
+ _exchangeChannels.put(event.getSequenceNumber(), event.getExchangeChannel());
+ }
+ };
+
+ /**
+ * Processes the incoming message.
+ *
+ * @param decoder the decoder used for parsing incoming data.
+ * @param sequenceNumber the sequence number of the incoming message.
+ */
+ public void process (ManagementDecoder decoder, int sequenceNumber)
+ {
+ InvocationResult result = new InvocationResult(decoder.readUint32(), decoder.readStr8(),decoder.readReaminingBytes());
+ BlockingQueue<InvocationResult> exchangeChannel = _exchangeChannels.remove(sequenceNumber);
+ if (exchangeChannel != null)
+ {
+ try
+ {
+ exchangeChannel.put(result);
+ } catch (InterruptedException exception)
+ {
+ LOGGER.error(
+ exception,
+ "<QMAN-100044> : an exception occurred while storing the result of a method invocation. " +
+ "Sequence number was %s",
+ sequenceNumber);
+ }
+ } else
+ {
+ LOGGER.warn(
+ "Unable to deal with incoming message because it contains a unknown sequence number (%s).",
+ sequenceNumber);
+ }
}
+
+ /**
+ * Sets the domain model on this handler.
+ * In addiction, this handler registers a method invocation listener on the domain model.
+ *
+ * @param domainModel the managed broker domain model.
+ */
+ @Override
+ public void setDomainModel (DomainModel domainModel)
+ {
+ super.setDomainModel(domainModel);
+ domainModel.setMethodInvocationListener(methodInvocationListener);
+ }
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java Mon Oct 13 01:16:03 2008
@@ -49,10 +49,6 @@
{
try
{
- int classKind = decoder.readUint8();
- if (classKind != 1) {
- return;
- }
String packageName = decoder.readStr8();
String className = decoder.readStr8();
@@ -61,7 +57,7 @@
int howManyProperties = decoder.readUint16();
int howManyStatistics = decoder.readUint16();
int howManyMethods = decoder.readUint16();
- int howManyEvents = 0;
+ int howManyEvents = decoder.readUint16();
// FIXME : Divide between schema error and raw data conversion error!!!!
_domainModel.addSchema(
@@ -159,4 +155,4 @@
}
return result;
}
- }
+ }
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java Mon Oct 13 01:16:03 2008
@@ -25,6 +25,7 @@
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.management.domain.handler.impl.IMethodInvocationListener;
import org.apache.qpid.management.domain.handler.impl.MethodOrEventDataTransferObject;
import org.apache.qpid.management.domain.model.type.Binary;
@@ -40,6 +41,8 @@
/** Here the known packages of the remote broker are stored. */
Map<String,QpidPackage> _packages = new HashMap<String, QpidPackage>();
+
+ private IMethodInvocationListener _methodInvocationListener;
/**
* Builds a new domain model with the given broker identifier.
@@ -171,4 +174,14 @@
qpidPackage.releaseResources();
}
}
+
+ public void setMethodInvocationListener(IMethodInvocationListener listener)
+ {
+ this._methodInvocationListener = listener;
+ }
+
+ IMethodInvocationListener getMethodInvocationListener ()
+ {
+ return _methodInvocationListener;
+ }
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java Mon Oct 13 01:16:03 2008
@@ -20,7 +20,8 @@
*/
package org.apache.qpid.management.domain.model;
-import org.apache.qpid.transport.codec.ManagementEncoder;
+import org.apache.qpid.management.messages.AmqpCoDec;
+import org.apache.qpid.transport.codec.ManagementDecoder;
import org.apache.qpid.transport.util.Logger;
class QpidArgument extends QpidProperty
@@ -68,10 +69,14 @@
.toString();
}
- public void validateAndEncode (Object value,ManagementEncoder encoder) throws ValidationException
+ public void encode(Object value,AmqpCoDec encoder)
{
- validate(value);
_type.encode(value, encoder);
- LOGGER.debug("Encoded value %S for argument %s. Type is %s",value,_name,_type);
+ LOGGER.debug("<QMAN-200012> : Encoded value %S for argument %s. Type is %s",value,_name,_type);
+ }
+
+ public Object decode(ManagementDecoder decoder)
+ {
+ return _type.decode(decoder);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java Mon Oct 13 01:16:03 2008
@@ -27,6 +27,9 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.TimeUnit;
import javax.management.Attribute;
import javax.management.AttributeList;
@@ -43,12 +46,13 @@
import javax.management.ReflectionException;
import javax.management.RuntimeOperationsException;
-import org.apache.qpid.management.Protocol;
+import org.apache.qpid.management.domain.handler.impl.IMethodInvocationListener;
+import org.apache.qpid.management.domain.handler.impl.InvocationResult;
import org.apache.qpid.management.domain.handler.impl.MethodOrEventDataTransferObject;
import org.apache.qpid.management.domain.model.type.Binary;
import org.apache.qpid.management.domain.services.QpidService;
+import org.apache.qpid.management.domain.services.SequenceNumberGenerator;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
import org.apache.qpid.transport.util.Logger;
/**
@@ -124,10 +128,20 @@
*/
public synchronized void addConfigurationData (Binary objectId, byte[] rawData)
{
- schemaRequest();
- QpidManagedObject instance = getObjectInstance(objectId,false);
- instance._rawConfigurationData.add(rawData);
- _state = _schemaRequestedButNotYetInjected;
+ try
+ {
+ requestSchema();
+ _state = _schemaRequestedButNotYetInjected;
+ } catch (Exception e)
+ {
+ LOGGER.error(
+ "<QMAN-100012> : Unable to send a schema request schema for %s.%s",
+ _parent.getName(),
+ _name);
+ } finally {
+ QpidManagedObject instance = getObjectInstance(objectId,false);
+ instance._rawConfigurationData.add(rawData);
+ }
}
/**
@@ -139,10 +153,21 @@
*/
public synchronized void addInstrumentationData (Binary objectId, byte[] rawData)
{
- schemaRequest();
- QpidManagedObject instance = getObjectInstance(objectId,false);
- instance._rawConfigurationData.add(rawData);
- _state = _schemaRequestedButNotYetInjected;
+ try
+ {
+ requestSchema();
+ _state = _schemaRequestedButNotYetInjected;
+ } catch (Exception e)
+ {
+ LOGGER.error(
+ "<QMAN-100012> : Unable to send a schema request schema for %s.%s",
+ _parent.getName(),
+ _name);
+ } finally {
+ QpidManagedObject instance = getObjectInstance(objectId,false);
+ instance._rawConfigurationData.add(rawData);
+ _state = _schemaRequestedButNotYetInjected;
+ }
}
/**
@@ -394,9 +419,9 @@
{
try
{
- methodRequest(_objectId, method, params);
- return null;
- } catch (ValidationException exception)
+ method.validate(params);
+ return invokeMethod(_objectId, method, params);
+ } catch (Exception exception)
{
throw new MBeanException(exception);
}
@@ -495,10 +520,23 @@
private final QpidService _service;
private int _howManyPresenceBitMasks;
+ private BlockingQueue<InvocationResult> _exchangeChannelForMethodInvocations;
+ private final IMethodInvocationListener _methodInvocationListener;
Map<Binary, QpidManagedObject> _objectInstances = new HashMap<Binary, QpidManagedObject>();
State _state = _schemaNotRequested;;
+ private final static class Log
+ {
+ final static void logMethodInvocationResult(InvocationResult result)
+ {
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug(String.valueOf(result));
+ }
+ }
+ }
+
/**
* Builds a new class with the given name and package as parent.
*
@@ -512,6 +550,9 @@
this._parent = parentPackage;
this._hash = hash;
this._service = new QpidService(_parent.getOwnerId());
+ this._methodInvocationListener = _parent.getMethodInvocationListener();
+ this._exchangeChannelForMethodInvocations = new SynchronousQueue<InvocationResult>();
+
LOGGER.debug(
"<QMAN-200017> : Class definition has been built (without schema) for %s::%s.%s",
_parent.getOwnerId(),
@@ -688,29 +729,18 @@
}
}
- private void schemaRequest()
- {
- ByteBuffer buffer = ByteBuffer.allocate(100);
- ManagementEncoder encoder = new ManagementEncoder(buffer);
- buffer.put(Protocol.SCHEMA_REQUEST_FIRST_FOUR_BYTES);
-
- // TODO
- encoder.writeSequenceNo(1000);
- encoder.writeStr8(_parent.getName());
- encoder.writeStr8(_name);
- _hash.encode(encoder);
- buffer.rewind();
+ /**
+ * Internal method used to send a schema request for this class.
+ *
+ * @throws Exception when the request cannot be sent.
+ */
+ private void requestSchema() throws Exception
+ {
try
{
_service.connect();
- _service.sendCommandMessage(buffer);
+ _service.requestSchema(_parent.getName(), _name, _hash);
_service.sync();
- } catch (Exception exception)
- {
- exception.printStackTrace();
- // TODO
- // Log.logSchemaRequestNotSent(exception,
- // _parent.getOwnerId(),_parent.getName(), _name);
} finally
{
_service.close();
@@ -730,33 +760,30 @@
* @param objectId
* @param method
* @param parameters
- * @throws ValidationException
+ * @throws Exception
*/
- private void methodRequest(Binary objectId,QpidMethod method,Object [] parameters) throws ValidationException
+ private InvocationResult invokeMethod(Binary objectId,QpidMethod method,Object [] parameters) throws Exception
{
- ByteBuffer buffer = ByteBuffer.allocate(1000);
- ManagementEncoder encoder = new ManagementEncoder(buffer);
- buffer.put(Protocol.METHOD_REQUEST_FIRST_FOUR_BYTES);
- encoder.writeSequenceNo(0);
- objectId.encode(encoder);
- encoder.writeStr8(_parent.getName());
- encoder.writeStr8(_name);
- _hash.encode(encoder);
- encoder.writeStr8(method.getName());
- method.encodeParameters(parameters,encoder);
-
- buffer.rewind();
- try
+ try
{
_service.connect();
- _service.sendCommandMessage(buffer);
- //_service.sync();
- } catch (Exception exception)
- {
- exception.printStackTrace();
- // TODO
- // Log.logSchemaRequestNotSent(exception,
- // _parent.getOwnerId(),_parent.getName(), _name);
+
+ int sequenceNumber = SequenceNumberGenerator.getNextSequenceNumber();
+ _methodInvocationListener.operationIsGoingToBeInvoked(new InvocationEvent(this,sequenceNumber,_exchangeChannelForMethodInvocations));
+ _service.invoke(_parent.getName(), _name, _hash,objectId,parameters, method,sequenceNumber);
+
+ // TODO : Shoudl be configurable?
+ InvocationResult result = _exchangeChannelForMethodInvocations.poll(5000,TimeUnit.MILLISECONDS);
+ Map<String, Object> output = method.decodeParameters(result.getOutputAndBidirectionalArgumentValues());
+ result.setOutputSection(output);
+
+ Log.logMethodInvocationResult(result);
+
+ if (result.isException())
+ {
+ result.createAndThrowException();
+ }
+ return result;
} finally
{
_service.close();
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java Mon Oct 13 01:16:03 2008
@@ -60,7 +60,7 @@
*
* @return the name of the feature.
*/
- String getName ()
+ public String getName ()
{
return _name;
}
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidMethod.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidMethod.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidMethod.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidMethod.java Mon Oct 13 01:16:03 2008
@@ -20,10 +20,15 @@
*/
package org.apache.qpid.management.domain.model;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+
+import org.apache.qpid.management.messages.AmqpCoDec;
+import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
/**
* Qpid method definition.
@@ -31,7 +36,7 @@
*
* @author Andrea Gazzarini
*/
-class QpidMethod extends QpidFeature
+public class QpidMethod extends QpidFeature
{
/** Argument list */
List<QpidArgument> arguments = new LinkedList<QpidArgument>();
@@ -82,22 +87,61 @@
/**
* Encodes the given parameter values according to this method arguments definitions.
- * Also provide a validation of the given values according to the invariants defined for each argument.
- * Note that only Input/Output and Output parameters are encoded.
+ * Note that only Input/Output and Input parameters are encoded.
*
* @param parameters the parameters values.
* @param encoder the encoder used for encoding.
- * @throws ValidationException when one of the given values is violating an argument invariant.
*/
- void encodeParameters (Object[] parameters, ManagementEncoder encoder) throws ValidationException
+ public void encodeParameters (Object[] parameters, AmqpCoDec encoder)
{
int index = 0;
for (QpidArgument argument : arguments)
{
if (argument.getDirection() != Direction.O)
{
- argument.validateAndEncode(parameters[index++],encoder);
+ argument.encode(parameters[index++],encoder);
+ }
+ }
+ }
+
+ /**
+ * Decodes the given input raw according to this method arguments definitions.
+ * Note that only Input/Output and Output parameters are encoded.
+ *
+ * @param parameters the parameters values.
+ * @param encoder the encoder used for encoding.
+ */
+ public Map<String, Object> decodeParameters (byte [] values)
+ {
+ ManagementDecoder decoder = new ManagementDecoder();
+ decoder.init(ByteBuffer.wrap(values));
+ Map<String, Object> result = new HashMap<String, Object>();
+
+ for (QpidArgument argument : arguments)
+ {
+ if (argument.getDirection() != Direction.I)
+ {
+ result.put(argument.getName(),argument.decode(decoder));
}
}
+ return result;
+ }
+
+ /**
+ * Validates the given array of parameters against the constraint defined on this method's arguments.
+ *
+ * @param parameters the parameters (values) to be validated.
+ * @throws ValidationException when one of the supplied values is violating some constraint.
+ */
+ public void validate (Object[] parameters) throws ValidationException
+ {
+ int index = 0;
+ for (QpidArgument argument : arguments)
+ {
+ if (argument.getDirection() != Direction.O)
+ {
+ argument.validate(parameters[index++]);
+ }
+ }
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidPackage.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidPackage.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidPackage.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidPackage.java Mon Oct 13 01:16:03 2008
@@ -25,6 +25,7 @@
import java.util.Map;
import java.util.UUID;
+import org.apache.qpid.management.domain.handler.impl.IMethodInvocationListener;
import org.apache.qpid.management.domain.handler.impl.MethodOrEventDataTransferObject;
import org.apache.qpid.management.domain.model.type.Binary;
@@ -224,4 +225,14 @@
qpidClass.releaseResources();
}
}
+
+ /**
+ * Returns the method invocation listener of the corresponing parent domain model.
+ *
+ * @return the method invocation listener of the corresponing parent domain model.
+ */
+ IMethodInvocationListener getMethodInvocationListener ()
+ {
+ return _parent.getMethodInvocationListener();
+ }
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/AbsTime.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/AbsTime.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/AbsTime.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/AbsTime.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class AbsTime extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint64((Long)value);
+ encoder.pack64((Long)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java Mon Oct 13 01:16:03 2008
@@ -24,7 +24,8 @@
import java.util.Arrays;
import java.util.UUID;
-import org.apache.qpid.transport.codec.ManagementEncoder;
+import org.apache.qpid.management.messages.AmqpCoDec;
+
/**
* It is a simple wrapper for a byte array (for example a 128bin).
@@ -115,9 +116,9 @@
*
* @param encoder the encoder used to encode instance content.
*/
- public void encode(ManagementEncoder encoder)
+ public void encode(AmqpCoDec encoder)
{
- encoder.writeBin128(bytes);
+ encoder.pack(bytes);
}
// TODO
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Boolean.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Boolean.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Boolean.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Boolean.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Boolean extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint8( ((java.lang.Boolean)value) ? (short)1 : (short)0);
+ encoder.pack8( ((java.lang.Boolean)value) ? 1 : 0);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/DeltaTime.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/DeltaTime.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/DeltaTime.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/DeltaTime.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class DeltaTime extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint64((Long)value);
+ encoder.pack64((Long)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Map extends Type
{
@@ -37,8 +37,9 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeMap((java.util.Map<String, Object>)value);
+ throw new RuntimeException("encode not yet supported for AMQP Map type.");
+ //encoder.writeMap((java.util.Map<String, Object>)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/ObjectReference.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/ObjectReference.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/ObjectReference.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/ObjectReference.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class ObjectReference extends Type
{
@@ -37,7 +37,7 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
((Binary)value).encode(encoder);
}
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str16.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str16.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str16.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str16.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Str16 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeStr16((String)value);
+ encoder.packStr16((String)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str8.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str8.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str8.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Str8.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Str8 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeStr8((String)value);
+ encoder.packStr8((String)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Type.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Type.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Type.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Type.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
/**
* Layer supertype for all management "types".
@@ -91,5 +91,5 @@
return getClass().hashCode();
}
- public abstract void encode (Object value, ManagementEncoder encoder);
+ public abstract void encode (Object value, AmqpCoDec encoder);
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint16.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint16.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint16.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint16.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Uint16 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint16((Integer)value);
+ encoder.pack16((Integer)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Uint32 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint32((Integer)value);
+ encoder.pack32((Integer)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint64.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint64.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint64.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint64.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Uint64 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint64((Integer)value);
+ encoder.pack64((Long)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint8.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint8.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint8.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint8.java Mon Oct 13 01:16:03 2008
@@ -20,8 +20,8 @@
*/
package org.apache.qpid.management.domain.model.type;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Uint8 extends Type
{
@@ -37,8 +37,8 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUint8((Short)value);
+ encoder.pack8((Short)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uuid.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uuid.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uuid.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uuid.java Mon Oct 13 01:16:03 2008
@@ -22,8 +22,8 @@
import java.util.UUID;
+import org.apache.qpid.management.messages.AmqpCoDec;
import org.apache.qpid.transport.codec.ManagementDecoder;
-import org.apache.qpid.transport.codec.ManagementEncoder;
public class Uuid extends Type
{
@@ -39,8 +39,9 @@
}
@Override
- public void encode (Object value, ManagementEncoder encoder)
+ public void encode (Object value, AmqpCoDec encoder)
{
- encoder.writeUuid((UUID)value);
+ throw new RuntimeException("Not yet implemented encode for UUID type.");
+// encoder.writeUuid((UUID)value);
}
}
\ No newline at end of file
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/ManagementClient.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/ManagementClient.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/ManagementClient.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/ManagementClient.java Mon Oct 13 01:16:03 2008
@@ -129,7 +129,6 @@
BrokerMessageListener methodReplyChannelListener = new BrokerMessageListener(_domainModel);
methodReplyChannelListener.setHandlers(Configuration.getInstance().getMethodReplyQueueHandlers());
_service.createSubscription(_methodReplyQueueName, _methodReplyQueueName, methodReplyChannelListener);
-
LOGGER.info(
"<QMAN-000039> : Method-reply queue consumer has been successfully installed and bound on broker %s.",
_domainModel.getBrokerId());
Modified: incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java?rev=703961&r1=703960&r2=703961&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java (original)
+++ incubator/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java Mon Oct 13 01:16:03 2008
@@ -57,9 +57,15 @@
public void run ()
{
LOGGER.info("<QMAN-000006> : Shutting down Q-Man...");
- for (ManagementClient client : managementClients)
- {
- client.shutdown();
+ try
+ {
+ for (ManagementClient client : managementClients)
+ {
+ client.shutdown();
+ }
+ } catch(Exception exception)
+ {
+
}
LOGGER.info("<QMAN-000007> : Q-Man shut down.");
}
@@ -85,7 +91,7 @@
LOGGER.info("<QMAN-000004> : Management client for broker %s successfully connected.",brokerId);
} catch(StartupFailureException exception) {
- LOGGER.error(exception, "<QMAN-100001>: Cannot connect to broker %s on %s:%s",brokerId,data.getHost(),data.getPort());
+ LOGGER.error(exception, "<QMAN-100001>: Cannot connect to broker %s on %s",brokerId,data);
}
}
LOGGER.info("<QMAN-000004> : Q-Man open for e-business.");
@@ -96,7 +102,9 @@
while ( !"q".equals(reader.readLine()) ){
}
} catch(ConfigurationException exception) {
- LOGGER.error(exception, "<QMAN-100002> : Q-Man was unable to startup correctly : a configuration error occurred.");
+ LOGGER.error(
+ exception,
+ "<QMAN-100002> : Q-Man was unable to startup correctly : a configuration error occurred.");
System.exit(1);
}
}