You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2009/06/12 21:49:54 UTC

svn commit: r784252 - in /qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent: ./ annotations/ binding/

Author: tross
Date: Fri Jun 12 19:49:53 2009
New Revision: 784252

URL: http://svn.apache.org/viewvc?rev=784252&view=rev
Log:
QPID-1903 - Applied patch from Bryan Kearney

Modified:
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/Agent.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedEJB.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedObject.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedPOJO.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFEvent.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFHide.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFObject.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFProperty.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFSeeAlso.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFType.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/BindingContext.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/EnumBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ListBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MethodBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ParameterBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/PropertyBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/QMFTypeBinding.java
    qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/TypeBinding.java

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/Agent.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/Agent.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/Agent.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/Agent.java Fri Jun 12 19:49:53 2009
@@ -54,8 +54,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 
 /**
- * Agent
- * 
+ * The main class for interacting with the QMF bus. Objects which are
+ * to be managed can be registered with the agent, as can classes
+ * to be exposed via the schema.
  */
 public class Agent implements MessageListener
 {
@@ -96,6 +97,7 @@
                 systemId.toString()));
     }
 
+
     public void register(ManagedObject managedObject)
     {
         Class managedClass = managedObject.getObjectClass();
@@ -120,6 +122,10 @@
         }
     }
 
+    /**
+     * Starts up the agent. Many bean containers may call this by
+     * default which aids in deployment
+     */
     public void start()
     {
         log.debug(String.format("Agent with uid %s and name %s starting",
@@ -161,6 +167,9 @@
         }
     }
 
+    /**
+     * Send an event object to the bus
+     */
     public void raiseEvent(Object value, EventSeverity sev)
     {
         log.debug(String.format("Sending event of class %s with Severity %s",
@@ -201,7 +210,7 @@
             throw new AgentException(e);
         }
         byte[] magic = dec.readBytes(3);
-        if (magic[0] != 'A' || magic[1] != 'M' || magic[2] != '2')
+        if (magic[0] != 'A' || magic[1] != 'M' || magic[2] != '3')
         {
             throw new AgentException("bad magic: " + new String(magic));
         }
@@ -436,7 +445,7 @@
         enc.init();
         enc.writeUint8((short) 'A');
         enc.writeUint8((short) 'M');
-        enc.writeUint8((short) '2');
+        enc.writeUint8((short) '3');
         enc.writeUint8((short) opcode);
         enc.writeUint32(sequence);
         return enc;

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedEJB.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedEJB.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedEJB.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedEJB.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,11 @@
 import org.apache.qpid.agent.binding.MethodBinding;
 import org.apache.qpid.agent.binding.PropertyBinding;
 
+/**
+ * Wrapper classe for adding EJBS which are to be 
+ * managed by the QMF Agent. The jndi location and the
+ * public interface to exposed are used to generate the schema.
+ */
 public class ManagedEJB extends ManagedObjectBase
 {
     protected String className;

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedObject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedObject.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedObject.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedObject.java Fri Jun 12 19:49:53 2009
@@ -23,6 +23,9 @@
 import org.apache.qpid.agent.binding.MethodBinding;
 import org.apache.qpid.agent.binding.PropertyBinding;
 
+/**
+ * Objects which are to be managed and controlled by the QMF Agent.
+ */
 public interface ManagedObject
 {
     public abstract long getId();
@@ -46,4 +49,4 @@
     public void setManagedClassName(String aName);
 
     public void setManagedPackageName(String aName);
-}
\ No newline at end of file
+}

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedPOJO.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedPOJO.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedPOJO.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/ManagedPOJO.java Fri Jun 12 19:49:53 2009
@@ -26,6 +26,10 @@
 import org.apache.qpid.agent.binding.MethodBinding;
 import org.apache.qpid.agent.binding.PropertyBinding;
 
+/**
+ * Wrapper classe for adding POJOS which are to be 
+ * managed by the QMF Agent. 
+ */
 public class ManagedPOJO extends ManagedObjectBase implements ManagedObject
 {
     private Log log = LogFactory.getLog(ManagedPOJO.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFEvent.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFEvent.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFEvent.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFEvent.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,11 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Tells the QMF Agent that this object will be passed as a
+ * QMF event. This will cause only properties to be sent across
+ * the wire.
+ */
 @Target(TYPE)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFHide.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFHide.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFHide.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFHide.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,10 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Causes the property which is annotated to not be added to the
+ * QMF schema when it is built.
+ */
 @Target(ElementType.METHOD)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFObject.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFObject.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFObject.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFObject.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,11 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Tells the QMF Agent that this object will be a managed 
+ * object. This will allow users to query for it, as well as
+ * invoke methods on it.
+ */
 @Target(TYPE)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFProperty.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFProperty.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFProperty.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFProperty.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,9 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Controls the QMF schema which is generated for this property.
+ */
 @Target(ElementType.FIELD)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFSeeAlso.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFSeeAlso.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFSeeAlso.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFSeeAlso.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,10 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Augements the schema generation process to look for known
+ * subclasses of a type. Modeled after the JAXB @XMLSeeAlso.
+ */
 @Target(TYPE)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFType.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFType.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFType.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/annotations/QMFType.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,11 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 
+/**
+ * Tells the QMF Agent that this object will be a type only
+ * This will cause only properties to be sent across
+ * the wire.
+ */
 @Target(TYPE)
 @Retention(RUNTIME)
 @Documented

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/BindingContext.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/BindingContext.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/BindingContext.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/BindingContext.java Fri Jun 12 19:49:53 2009
@@ -32,6 +32,10 @@
 import org.apache.qpid.agent.annotations.QMFSeeAlso;
 import org.apache.qpid.agent.annotations.QMFType;
 
+/**
+ * Contains the mappings from java classes to QMF schema and back.
+ * There is one context per agent, and it contains all the metadata.
+ */
 public class BindingContext
 {
     private static Log log = LogFactory.getLog(BindingContext.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java Fri Jun 12 19:49:53 2009
@@ -37,6 +37,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Binding information from a custom java class to a QMF schema
+ */
 public class ClassBinding implements TypeBinding
 {
     private static Log log = LogFactory.getLog(ClassBinding.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/EnumBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/EnumBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/EnumBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/EnumBinding.java Fri Jun 12 19:49:53 2009
@@ -25,6 +25,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Binding information from a java enum to a QMF schema
+ */
 public class EnumBinding extends ClassBinding
 {
     private static Log log = LogFactory.getLog(EnumBinding.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ListBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ListBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ListBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ListBinding.java Fri Jun 12 19:49:53 2009
@@ -30,6 +30,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Binding information from a java list to a QMF schema.
+ */
 public class ListBinding implements TypeBinding
 {
     private static Log log = LogFactory.getLog(ListBinding.class);
@@ -46,12 +49,17 @@
     {
         List list = (List) value;
         BBEncoder newEncoder = new BBEncoder(10);
-        newEncoder.writeUint32(list.size());
-        for (Object obj : list)
-        {
-            TypeBinding type = bctx.getTypeBinding(obj.getClass());
-            newEncoder.writeUint8(type.getCode());
-            type.encode(newEncoder, obj);
+        if (list != null) {
+            newEncoder.writeUint32(list.size());
+            for (Object obj : list)
+            {
+                TypeBinding type = bctx.getTypeBinding(obj.getClass());
+                newEncoder.writeUint8(type.getCode());
+                type.encode(newEncoder, obj);
+            }
+        }
+        else {
+            newEncoder.writeUint32(0) ;
         }
         enc.writeVbin32(newEncoder.buffer().array());
     }

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java Fri Jun 12 19:49:53 2009
@@ -30,6 +30,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Binding information from a java Map to a QMF schema.
+ */
 public class MapBinding implements TypeBinding
 {
     private static Log log = LogFactory.getLog(MapBinding.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MethodBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MethodBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MethodBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/MethodBinding.java Fri Jun 12 19:49:53 2009
@@ -29,6 +29,9 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Metadata for mapping a method to a QMF schema
+ */
 public class MethodBinding
 {
     private final String name;

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ParameterBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ParameterBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ParameterBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/ParameterBinding.java Fri Jun 12 19:49:53 2009
@@ -25,6 +25,9 @@
 
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Metadata for mapping a method argument to a QMF schema
+ */
 public class ParameterBinding
 {
     private final String name;

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/PropertyBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/PropertyBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/PropertyBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/PropertyBinding.java Fri Jun 12 19:49:53 2009
@@ -27,6 +27,10 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.qpid.transport.codec.Encoder;
 
+
+/**
+ * Metadata for mapping a java property (getter/setter) to a QMF schema
+ */
 public class PropertyBinding
 {
     private static Log log = LogFactory.getLog(PropertyBinding.class);

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/QMFTypeBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/QMFTypeBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/QMFTypeBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/QMFTypeBinding.java Fri Jun 12 19:49:53 2009
@@ -28,6 +28,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Basic type mappings for QMF schema
+ */
 public abstract class QMFTypeBinding implements TypeBinding
 {
     private static final Map<Class<?>, QMFTypeBinding> TYPES = new HashMap<Class<?>, QMFTypeBinding>();

Modified: qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/TypeBinding.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/TypeBinding.java?rev=784252&r1=784251&r2=784252&view=diff
==============================================================================
--- qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/TypeBinding.java (original)
+++ qpid/trunk/qpid/java/agent/src/main/java/org/apache/qpid/agent/binding/TypeBinding.java Fri Jun 12 19:49:53 2009
@@ -23,6 +23,9 @@
 import org.apache.qpid.transport.codec.Decoder;
 import org.apache.qpid.transport.codec.Encoder;
 
+/**
+ * Binding between Java Type and QMF type
+ */
 public interface TypeBinding
 {
     public Object decode(Decoder dec);



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org