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