summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/Protocol.java2
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java8
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java19
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java21
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java4
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java33
-rw-r--r--java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java4
7 files changed, 73 insertions, 18 deletions
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java b/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java
index a37332f1f0..5b41785b11 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java
@@ -40,6 +40,8 @@ public interface Protocol
char EVENT_CONTENT_RESPONSE_OPCDE = 'e';
char INSTR_AND_CONFIG_CONTENT_RESPONSE_OPCODE = 'g';
+ char HEARTBEAT_INDICATION_RESPONSE_OPCODE = 'h';
+
int CLASS = 1;
int EVENT = 2;
}
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java b/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
index defedf0a8d..6952d0ca4c 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
@@ -30,6 +30,7 @@ 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.EventContentMessageHandler;
+import org.apache.qpid.management.domain.handler.impl.HeartBeatIndicationMessageHandler;
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;
@@ -144,7 +145,12 @@ public class Configurator extends DefaultHandler
Configuration.getInstance().addMethodReplyMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.SCHEMA_RESPONSE_OPCODE,
- SchemaResponseMessageHandler.class.getName()));
+ SchemaResponseMessageHandler.class.getName()));
+
+ Configuration.getInstance().addMethodReplyMessageHandlerMapping(
+ new MessageHandlerMapping(
+ Protocol.HEARTBEAT_INDICATION_RESPONSE_OPCODE,
+ HeartBeatIndicationMessageHandler.class.getName()));
}
/**
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java
new file mode 100644
index 0000000000..7bc5c71a39
--- /dev/null
+++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java
@@ -0,0 +1,19 @@
+package org.apache.qpid.management.domain.handler.impl;
+
+import org.apache.qpid.management.domain.handler.base.BaseMessageHandler;
+import org.apache.qpid.transport.codec.ManagementDecoder;
+
+/**
+ * This is the handler responsible for processing the heartbeat indication response messages.
+ * At the moment it simply updates the last refresh update timestamp of the domain model.
+ *
+ * @author Andrea Gazzarini.
+ */
+public class HeartBeatIndicationMessageHandler extends BaseMessageHandler
+{
+ @Override
+ public void process(ManagementDecoder decoder, int sequenceNumber)
+ {
+ _domainModel.updateLastRefreshDate();
+ }
+}
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java
index 6bd9d22014..5a0ebaf1f7 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.management.domain.model;
+import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,6 +43,8 @@ public class DomainModel
/** Here the known packages of the remote broker are stored. */
Map<String,QpidPackage> _packages = new HashMap<String, QpidPackage>();
+ private Date _lastRefreshDate = new Date();
+
private IMethodInvocationListener _methodInvocationListener;
/**
@@ -88,6 +91,24 @@ public class DomainModel
}
/**
+ * Updates the last refresh date.
+ */
+ public void updateLastRefreshDate()
+ {
+ this._lastRefreshDate = new Date();
+ }
+
+ /**
+ * Returns the last refresh date.
+ *
+ * @return the last refresh date.
+ */
+ public Date getLastRefreshDate()
+ {
+ return _lastRefreshDate;
+ }
+
+ /**
* Adds the specified schema to this domain model.
*
* @param packageName the package name.
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java
index fa62e32d5e..dc49695934 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java
@@ -39,6 +39,6 @@ public class Uint32 extends Type
@Override
public void encode (Object value, AmqpCoDec encoder)
{
- encoder.pack32((Integer)value);
+ encoder.pack32(((Number)value).intValue());
}
-} \ No newline at end of file
+}
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
index b6264a73de..81434c14fb 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
@@ -55,8 +55,6 @@ public class QMan
LOGGER.info(Messages.QMAN_000001_STARTING_QMAN);
LOGGER.info(Messages.QMAN_000002_READING_CONFIGURATION);
- addShutDownHook();
-
Configurator configurator = new Configurator();
try
{
@@ -95,22 +93,30 @@ public class QMan
@Override
public void run ()
{
- LOGGER.info(Messages.QMAN_000020_SHUTTING_DOWN_QMAN);
- try
- {
- for (ManagementClient client : managementClients)
- {
- client.shutdown();
- }
- } catch(Exception exception)
- {
- }
- LOGGER.info(Messages.QMAN_000021_SHUT_DOWN);
+ QMan.this.stop();
}
});
}
/**
+ * Stop Qman
+ */
+ public void stop()
+ {
+ LOGGER.info(Messages.QMAN_000020_SHUTTING_DOWN_QMAN);
+ try
+ {
+ for (ManagementClient client : managementClients)
+ {
+ client.shutdown();
+ }
+ } catch(Exception exception)
+ {
+ }
+ LOGGER.info(Messages.QMAN_000021_SHUT_DOWN);
+ }
+
+ /**
* Main method used for starting Q-Man.
*
* @param args the command line arguments.
@@ -124,6 +130,7 @@ public class QMan
}
QMan qman = new QMan();
+ qman.addShutDownHook();
try
{
qman.start();
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java b/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java
index 8c69545f07..f0d663701b 100644
--- a/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java
+++ b/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java
@@ -61,6 +61,6 @@ public class QManServlet extends HttpServlet {
@Override
public void destroy()
{
- // qman.stop();
+ qman.stop();
}
-} \ No newline at end of file
+}