summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFraser Adams <fadams@apache.org>2014-01-11 14:23:05 +0000
committerFraser Adams <fadams@apache.org>2014-01-11 14:23:05 +0000
commit779f500156ed6ec8a3654bdf10e5e2f64d7e93ac (patch)
treedbc1d540827f84f9b27abfdbb4ab5be801a3e03b
parent1e79cf41b85c08c8106edd8be410e3cc6cebf328 (diff)
downloadqpid-python-779f500156ed6ec8a3654bdf10e5e2f64d7e93ac.tar.gz
QPID-5470: Improve QMF README documentation and update JavaDocs to reflect new location of QMF2 API docs
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1557407 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/tools/src/java/README.txt163
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/AgentExternal.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/MethodCallWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/QueryWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/ResubscribeRequestWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/SubscribeRequestWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/UnsubscribeRequestWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/QmfQuery.java4
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaEventClass.java4
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaMethod.java6
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaObjectClass.java6
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaProperty.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/WorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentAddedWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentDeletedWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentHeartbeatWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentRestartedWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/EventReceivedWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/MethodResponseWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/ObjectUpdateWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscribeResponseWorkItem.java2
-rw-r--r--qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscriptionIndicationWorkItem.java2
22 files changed, 182 insertions, 35 deletions
diff --git a/qpid/tools/src/java/README.txt b/qpid/tools/src/java/README.txt
index 0755dcd885..28e6176c9a 100644
--- a/qpid/tools/src/java/README.txt
+++ b/qpid/tools/src/java/README.txt
@@ -19,12 +19,163 @@
*
*/
-This is a Java JMS implementation of the QMF2 API specified at
-https://cwiki.apache.org/qpid/qmfv2-api-proposal.html
+********************************************** Introduction ***********************************************
+
+This directory provides a set of Java and JavaScript based tools that allow interaction with the Qpid brokers.
+The tools are based on QMF2 (Qpid Management Framework v2) and work with the C++ broker by default. In order
+to enable QMF2 support in the Java Broker you must compile the QMF plugin (see README-Java-Broker.txt)
+
+The main prerequisite is that The Qpid Java jar needs to be on your classpath - I tend to use qpid-all.jar but
+client only jars should be OK too, it's pretty much built on pure JMS.
+
+In order to build the Java QMF2 API, the tools and the Java Broker QMF2 plugin simply do:
+
+ant all
+
+If you don't want the QMF2 plugin for the Java Broker simply do:
+
+ant
+
+
+N.B. At the moment the QMF2 API and tools use the "traditional" Qpid AMQP 0.10 JMS API. The intention is that
+over time this will migrate to AMQP 1.0 and move from being QMF2 based to using the AMQP 1.0 Management Spec.
+However there is no concrete schedule for this migration at this time.
+
+************************************************* The API *************************************************
+
+The tools are build on a Java JMS implementation of the QMF2 API specified at
+https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal
+
+When successfully build via "ant all" there is fairly comprehensive JavaDoc available in:
+qpid/tools/src/java/docs/api/index.html
+
+Though looking at the source code for the tools (see "The Tools" below) might be a quicker way to get started.
+
+
+The source code for the Java QMF2 API can be found under:
+qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console
+qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent
+qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common
+
+console: contains the classes for the QMF2 "console", which is what most of the tools make use of
+agent: contains the classes for the QMF2 "agent", which it what exposes management services, this is
+ what the Java Broker plugin uses to "externalise" its management model as QMF.
+common: contains classes common to both the console and the agent.
+
+************************************************ The Tools ************************************************
+
+There are executable shell scripts that should allow the Java based tools to be run fairly easily in:
+qpid/qpid-trunk/qpid/tools/src/java/bin
+
+The source code for the Java QMF2 API can be found under:
+qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/tools
+
+The available tools are:
+QpidConfig: Is a Java port of the standard Python based qpid-config tool. This exercises most of the QMF2 API
+ and is probably a good bet to see how things work if you want to use the API in your own projects.
+QpidCtrl: Is a Java port of the qpid-ctrl tool found in qpid/cpp/src/tests. This is a little known, but useful
+ little tool that lets one send low-level QMF constructs from the command line. The JavaDoc is the
+ best place to look for example usage.
+QpidPrintEvents: Is a Java port of the Python qpid-printevents and illustrates the asynchronous delivery
+ of QMF2 notification events.
+QpidQueueStats: Is a Java port of the Python qpid-queue-stats. This was written mainly to illustrate the use
+ of the QMF2 "QuerySubscription" API that lets one specify how to be asynchronously notified
+ of changes to QMF Management Objects matching a specified set of criteria.
+ConnectionAudit: Is a tool that allows one to audit connections to one or more Qpid brokers. It uses QMF
+ Events to identify when connections have been made to a broker and if so it logs information
+ about the connection. A whitelist can be specified to flag connections that you don't
+ want to have logged (e.g. ones that you like).
+ConnectionLogger: Is similar to ConnectionAudit but a bit simpler this tool just logs connections being made
+ the tool is mainly there to illustrate how to dereference the associations between the
+ various QMF Management Objects (Connection, Session, Subscription, Queue, Binding Exchange etc.)
+QueueFuse: Is a tool that monitors QMF Events looking for a QueueThresholdExceeded, which occurs when a queue
+ gets more than 80% full. When this Event occurs the tool sends a QMF method to "purge" 10% of the
+ messages off the offending queue, i.e. it acts rather like a fuse. It's mainly a bit of a toy, but
+ it's a pretty good illustration of how to trigger QMF method invocation from QMF Events. It would
+ be pretty easy to modify this to redirect messages to a different queue if a particular queue fills.
+QpidRestAPI: This is a Web Service that exposes QMF2 via a REST API see "The GUI" section below.
+
+************************************************* The GUI *************************************************
+
+There is a fairly comprehensive Web based GUI available for Qpid that works with the C++ Broker and also the
+Java Broker if the QMF plugin has been installed (see README-Java-Broker.txt).
+
+The GUI is in the form of a pure client side "single page" Web App written in JavaScript that uses the
+QpidRestAPI to proxy the QMF API. QpidRestAPI also serves up the GUI.
+
+There is comprehensive JavaDoc for the QpidRestAPI, the most useful classes to look at are:
+QpidRestAPI: This describes the various command line options available.
+QpidServer: This provides documentation for the actual REST API itself, in effect the REST mapping for QMF
+
+QpidRestAPI provides a fairly complete REST mapping for QMF, it was primarily written as the back-end to
+the GUI, but there's no reason why it couldn't be used in its own right.
+
+
+To get started, the simplest and probably most common use case can be kicked of simply by firing up the
+REST API via:
+./QpidRestAPI
+
+This will bind the HTTP port to 8080 on the "wildcard" address (0.0.0.0). The QMF connection will default to
+the host that QpidRestAPI is running on and use the default AMQP port 5672.
+
+If you point a Browser to <host>:8080 the GUI should start up asking for a User Name and Password, the
+defaults for those are the rather "traditional" admin admin.
+
+
+If you have a non-trivial broker set-up you'll probably see "Failed to Connect", which is most likely due
+to having authentication enabled (you can check this by firing up the C++ broker using qpidd --auth no)
+
+
+There are a few ways to configure the Brokers that you can control via the GUI:
+The first way is to specify the -a (or --broker-addr) command line option e.g.
+./QpidRestAPI -a guest/guest@localhost
+
+This option accepts the Broker Address syntax used by the standard Python tools and it also accepts the
+Java ConnectionURL syntax specified here (though to be honest the syntax used by the Python tools is simpler)
+http://qpid.apache.org/releases/qpid-0.24/programming/book/QpidJNDI.html#section-jms-connection-url
+
+
+This way of specifying the AMQP address of the default broker that you want to manage is probably the best
+approach, but it is possible to add as many QMF Console Connections as you like by clicking
+"Add QMF Console Connection" on the GUI Settings page. The popup lets you specify the Address URL such as
+"guest/guest@host:5672" - again it also accepts the JMS Connection URLs, though I only use them if I'm
+doing a copy/paste of an existing Connection URL.
+The Name is simply a "friendly name" that you want to use to identify a particular Broker.
+
+
+Clearly if you want to be able to manage a number of brokers you'd probably prefer not to have to enter
+them every time you fire up the GUI - particularly because the list gets wiped if you hit refresh :-)
+
+The good news is that the initial set of Console Connections is configurable via the file:
+qpid/tools/src/java/bin/qpid-web/web/ui/config.js
+
+
+This is a simple JSON file and it contains example Console Connection configuration including a fairly complex one
+
+If you use this mechanism to configure the GUI you can quickly switch between however many Brokers
+you'd like to be able to control.
+
+
+As mentioned above the default User Name and Password are admin and admin, these are set in the file
+qpid/tools/src/java/bin/qpid-web/authentication/account.properties
+
+
+It's worth pointing out that at the moment authentication is limited to basic uthentication. This is mainly
+due to lack of time/energy/motivation to do anything fancier (I only tend to use it on a private network)
+I also had a need to minimise dependencies, so the Web Server is actually based on the Java 1.6
+com.sun.net.httpserver Web Server.
+
+
+In practice though basic authentication shouldn't be as much of a restriction as it might sound especially
+if you're only managing a single Broker.
+
+When one fires up QpidRestAPI with the -a option the Broker connection information does not pass between the
+GUI and the QpidRestAPI so it's ultimately no less secure than using say qpid-config in this case though
+note that if one configures multiple Brokers via config.js the contents of that file get served to the GUI
+when it gets loaded so you probably want to restrict use of the GUI to the same network you'd be happy to
+run qpid-config from.
-The Qpid Java jar needs to be on your classpath - I tend to use qpid-all.jar but client only jars should be OK too.
-QMF2 support is now available for the Qpid Java Broker see README-Java-Broker.txt for details.
@@ -87,7 +238,3 @@ to put the patched AMQMessageDelegate_0_10 ahead of the unpatched one. This is a
call the various test and tool classes.
-
-
-
-
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/AgentExternal.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/AgentExternal.java
index 2fff3fd41f..25b2db3d69 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/AgentExternal.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/AgentExternal.java
@@ -35,7 +35,7 @@ import org.apache.qpid.qmf2.common.QmfException;
/**
* The AgentExternal class must be used by those applications that implement the external store model described in
- * <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>.
+ * <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>.
* <p>
* The AgentExternal class extends the Agent class by adding interfaces that notify the application when it needs to
* service a request for management operations from the agent.
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/MethodCallWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/MethodCallWorkItem.java
index b83262d550..cde10902e6 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/MethodCallWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/MethodCallWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* METHOD_CALL: The METHOD_CALL WorkItem describes a method call that must be serviced by the application on
* behalf of this Agent.
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/QueryWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/QueryWorkItem.java
index c714720bc5..d617307c20 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/QueryWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/QueryWorkItem.java
@@ -28,7 +28,7 @@ import org.apache.qpid.qmf2.common.QmfQuery;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* QUERY: The QUERY WorkItem describes a query that the application must service. The application should call the
* queryResponse() method for each object that satisfies the query. When complete, the application must call the
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/ResubscribeRequestWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/ResubscribeRequestWorkItem.java
index 298e499c1c..2ec9ed2c9c 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/ResubscribeRequestWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/ResubscribeRequestWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* RESUBSCRIBE_REQUEST: The RESUBSCRIBE_REQUEST is sent by a Console to renew an existing subscription. The Console may
* request a new duration for the subscription, otherwise the previous lifetime interval is repeated.
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/SubscribeRequestWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/SubscribeRequestWorkItem.java
index a28faa8812..a9c4816aba 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/SubscribeRequestWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/SubscribeRequestWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* SUBSCRIBE_REQUEST: The SUBSCRIBE_REQUEST WorkItem provides a query that the agent application must periodically
* publish until the subscription is cancelled or expires. On receipt of this WorkItem, the
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/UnsubscribeRequestWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/UnsubscribeRequestWorkItem.java
index fc8d973356..45f316b1b4 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/UnsubscribeRequestWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/agent/UnsubscribeRequestWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* UNSUBSCRIBE_REQUEST: The UNSUBSCRIBE_REQUEST is sent by a Console to terminate an existing subscription. The Agent
* application should terminate the given subscription if it exists, and cancel sending any further
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/QmfQuery.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/QmfQuery.java
index 2ec69c9607..c0555cc91f 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/QmfQuery.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/QmfQuery.java
@@ -42,7 +42,7 @@ import org.apache.qpid.messaging.util.AddressParser;
* instances accepted by the filter will be returned in response to the query.
* <p>
* N.B. There appear to be a number of differences in the description of the map encoding of a Query between the
- * QMF2 API specified at <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a> and the
+ * QMF2 API specified at <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a> and the
* QMF2 protocol that is specified at <a href=https://cwiki.apache.org/qpid/qmf-map-message-protocol.html>QMF Map
* Message Protocol</a> in particular the use of the underscore to specify key names e.g. "_what", "_where",
* "_object_id", "_schema_id".
@@ -211,7 +211,7 @@ public final class QmfQuery extends QmfData
/**
* Undefined by QMF2 API.
* <p>
- * According to <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Specification</a>
+ * According to <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Specification</a>
* "The value of the <target name string> map entry is ignored for now, its use is TBD."
* so this method returns a null Map.
*/
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaEventClass.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaEventClass.java
index 229f988dc7..336a540565 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaEventClass.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaEventClass.java
@@ -35,7 +35,7 @@ import java.util.Map;
* time. However, once the Schema is made public, it must be considered immutable, as the hash value
* must be constant once the Schema is in use.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that the
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that the
* properties are represented by an unordered map of SchemaProperty entries indexed by property name, however
* these are actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY elements that describe the
* schema event's properties.
@@ -141,7 +141,7 @@ public final class SchemaEventClass extends SchemaClass
/**
* Return Schema Object's properties.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the properties are represented by an unordered map of SchemaProperty indexed by property name however it
* is actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY elements that describe the
* schema objects's properties. In this implementation getProperties() returns a List<SchemaProperty>
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaMethod.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaMethod.java
index d4568dcb6e..a9f8080fca 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaMethod.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaMethod.java
@@ -30,7 +30,7 @@ import java.util.Map;
/**
* The SchemaMethod class describes a method call's parameter list.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the parameter list is represented by an unordered map of SchemaProperty entries indexed by parameter name,
* however is is actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY elements that describe
* the method's arguments".
@@ -95,7 +95,7 @@ public final class SchemaMethod extends QmfData
* Construct a SchemaMethod from a map of "name":<SchemaProperty> entries and description.
*
* Note this Constructor is the one given in the QMF2 API specification at
- * <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a>Note too that this method does not
+ * <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a>Note too that this method does not
* set a name so setName() needs to be called explicitly by clients after construction.
*
* @param args a Map of "name":<SchemaProperty> entries.
@@ -153,7 +153,7 @@ public final class SchemaMethod extends QmfData
/**
* Return the Method's arguments.
*<p>
- * <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the parameter list is represented by an unordered map of SchemaProperty entries indexed by parameter name,
* however is is actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY elements that describe
* the method's arguments". In this implementation getArguments() returns a List<SchemaProperty> reflecting the
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaObjectClass.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaObjectClass.java
index 54812fab71..42c5fbda9a 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaObjectClass.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaObjectClass.java
@@ -37,7 +37,7 @@ import java.util.Map;
* at run time. However, once the Schema is made public, it must be considered immutable, as the hash value
* must be constant once the Schema is in use.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the properties and methods are represented by an unordered map of SchemaProperty or SchemaMethod entries indexed by
* property or method name, however these are actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY
* and "List of SCHEMA_METHOD" elements that describe the schema objects's properties and methods". In this
@@ -148,7 +148,7 @@ public final class SchemaObjectClass extends SchemaClass
/**
* Return Schema Object's properties.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the properties are represented by an unordered map of SchemaProperty indexed by property name, however it
* is actually represented in the QMF2 protocol as a "List of SCHEMA_PROPERTY elements that describe the
* schema objects's properties. In this implementation getProperties() returns a List<SchemaProperty>
@@ -200,7 +200,7 @@ public final class SchemaObjectClass extends SchemaClass
/**
* Return Schema Object's methods.
* <p>
- * Note that <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API</a> suggests that
+ * Note that <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API</a> suggests that
* the methods are represented by an unordered map of SchemaMethod indexed by method name, however it
* is actually represented in the QMF2 protocol as a "List of SCHEMA_METHOD elements that describe the
* schema objects's methods. In this implementation getMethods() returns a List<SchemaMethod>
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaProperty.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaProperty.java
index 2aca9ef1d3..80c6e3ebd0 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaProperty.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/SchemaProperty.java
@@ -39,7 +39,7 @@ import org.apache.qpid.messaging.util.AddressParser;
* Once instantiated, the SchemaProperty is immutable.
* <p>
* Note that there appear to be some differences between the fields mentioned in
- * <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API propsal</a> and
+ * <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API propsal</a> and
* <a href=https://cwiki.apache.org/qpid/qmf-map-message-protocol.html>QMF2 Map Message protocol</a>.
* I've gone with what's stated in the protocol documentation as this seems more accurate, at least for Qpid 0.10
*
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/WorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/WorkItem.java
index 750c4a2e45..570d464f22 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/WorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/common/WorkItem.java
@@ -27,7 +27,7 @@ import java.util.Map;
import org.apache.qpid.qmf2.console.Agent;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <p>
* A WorkItem describes an event that has arrived for the application to process.
* <p>
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentAddedWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentAddedWorkItem.java
index 0470b34e58..6f7b1812c6 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentAddedWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentAddedWorkItem.java
@@ -21,7 +21,7 @@
package org.apache.qpid.qmf2.console;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* AGENT_ADDED: When the QMF Console receives the first heartbeat from an Agent, an AGENT_ADDED WorkItem
* is pushed onto the work-queue. The WorkItem's getParam() call returns a map which contains
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentDeletedWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentDeletedWorkItem.java
index ef31b8105a..9644d205a7 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentDeletedWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentDeletedWorkItem.java
@@ -21,7 +21,7 @@
package org.apache.qpid.qmf2.console;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* AGENT_DELETED: When a known Agent stops sending heartbeat messages, the Console will time out that Agent.
* On Agent timeout, an AGENT_DELETED WorkItem is pushed onto the work-queue. The WorkItem's
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentHeartbeatWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentHeartbeatWorkItem.java
index bec432d8c2..4406d96567 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentHeartbeatWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentHeartbeatWorkItem.java
@@ -21,7 +21,7 @@
package org.apache.qpid.qmf2.console;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* AGENT_HEARTBEAT: When the QMF Console receives heartbeats from an Agent, an AGENT_HEARTBEAT WorkItem
* is pushed onto the work-queue. The WorkItem's getParam() call returns a map which contains
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentRestartedWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentRestartedWorkItem.java
index 45bf67f034..25bd03654a 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentRestartedWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/AgentRestartedWorkItem.java
@@ -21,7 +21,7 @@
package org.apache.qpid.qmf2.console;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* AGENT_RESTARTED: Sent when the QMF Console detects an Agent was restarted, an AGENT_RESTARTED WorkItem
* is pushed onto the work-queue. The WorkItem's getParam() call returns a map which contains
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/EventReceivedWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/EventReceivedWorkItem.java
index d392871cb6..311acf3dbb 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/EventReceivedWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/EventReceivedWorkItem.java
@@ -26,7 +26,7 @@ import java.util.Map;
import org.apache.qpid.qmf2.common.QmfEvent;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* EVENT_RECEIVED: When an Agent generates a QmfEvent an EVENT_RECEIVED WorkItem is pushed onto the work-queue.
* The WorkItem's getParam() call returns a map which contains a reference to the Console Agent
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/MethodResponseWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/MethodResponseWorkItem.java
index 936af286c2..01dde0b6b6 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/MethodResponseWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/MethodResponseWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* METHOD_RESPONSE: The METHOD_RESPONSE WorkItem is generated in response to an asynchronous invokeMethod made
* by a QmfConsoleData object.
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/ObjectUpdateWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/ObjectUpdateWorkItem.java
index 6b2bfc799e..13a197b121 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/ObjectUpdateWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/ObjectUpdateWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* OBJECT_UPDATE: The OBJECT_UPDATE WorkItem is generated in response to an asynchronous refresh made by
* a QmfConsoleData object.
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscribeResponseWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscribeResponseWorkItem.java
index 2f84dfcfdd..968ef0a6a2 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscribeResponseWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscribeResponseWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* SUBSCRIBE_RESPONSE: The SUBSCRIBE_RESPONSE WorkItem returns the result of a subscription request made by
* this Console. This WorkItem is generated when the Console's createSubscription() is
diff --git a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscriptionIndicationWorkItem.java b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscriptionIndicationWorkItem.java
index 6d1e77595a..d9123e9a2c 100644
--- a/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscriptionIndicationWorkItem.java
+++ b/qpid/tools/src/java/src/main/java/org/apache/qpid/qmf2/console/SubscriptionIndicationWorkItem.java
@@ -27,7 +27,7 @@ import org.apache.qpid.qmf2.common.Handle;
import org.apache.qpid.qmf2.common.WorkItem;
/**
- * Descriptions below are taken from <a href=https://cwiki.apache.org/qpid/qmfv2-api-proposal.html>QMF2 API Proposal</a>
+ * Descriptions below are taken from <a href=https://cwiki.apache.org/confluence/display/qpid/QMFv2+API+Proposal>QMF2 API Proposal</a>
* <pre>
* SUBSCRIPTION_INDICATION: The SUBSCRIPTION_INDICATION WorkItem signals the arrival of an update to subscribed
* data from the Agent.