You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2010/04/09 16:16:42 UTC
svn commit: r932430 - in /qpid/trunk/qpid/java/broker/src:
main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java
main/java/org/apache/qpid/qmf/QMFService.java xsl/qmf.xsl
Author: robbie
Date: Fri Apr 9 14:16:42 2010
New Revision: 932430
URL: http://svn.apache.org/viewvc?rev=932430&view=rev
Log:
QPID-2379: add ability to respond to method requests with non-zero status codes, use to signal unimplemented methods.
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
qpid/trunk/qpid/java/broker/src/xsl/qmf.xsl
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java?rev=932430&r1=932429&r2=932430&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFMethodResponseCommand.java Fri Apr 9 14:16:42 2010
@@ -20,24 +20,57 @@
*/
package org.apache.qpid.qmf;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.transport.codec.BBEncoder;
public class QMFMethodResponseCommand extends QMFCommand
{
- public QMFMethodResponseCommand(final QMFMethodRequestCommand cmd)
+ private CompletionCode _status = null;
+ private String _msg = null;
+
+ public QMFMethodResponseCommand(final QMFMethodRequestCommand cmd,
+ CompletionCode status,
+ String msg)
{
super( new QMFCommandHeader(cmd.getHeader().getVersion(),
cmd.getHeader().getSeq(),
QMFOperation.METHOD_RESPONSE));
+
+ if(status == null)
+ {
+ _status = CompletionCode.OK;
+ }
+ else
+ {
+ _status = status;
+ }
+
+ _msg = msg;
+ }
+
+ public CompletionCode getStatus()
+ {
+ return _status;
+ }
+
+ public String getStatusText()
+ {
+ return _msg;
}
@Override
public void encode(final BBEncoder encoder)
{
super.encode(encoder);
- encoder.writeUint32(0);
- encoder.writeStr16("OK");
+
+ encoder.writeUint32(_status.ordinal());
+
+ if(_msg == null)
+ {
+ encoder.writeStr16(_status.toString());
+ }
+ else
+ {
+ encoder.writeStr16(_msg);
+ }
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java?rev=932430&r1=932429&r2=932430&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java Fri Apr 9 14:16:42 2010
@@ -679,8 +679,8 @@ public class QMFService implements Confi
final String destQueue,
final Long qty)
{
- // todo
- throw new UnsupportedOperationException();
+ // TODO
+ return factory.createResponseCommand(CompletionCode.NOT_IMPLEMENTED);
}
public UUID getId()
@@ -1056,7 +1056,7 @@ public class QMFService implements Confi
final String exchange)
{
//TODO
- return factory.createResponseCommand();
+ return factory.createResponseCommand(CompletionCode.NOT_IMPLEMENTED);
}
@@ -1319,20 +1319,20 @@ public class QMFService implements Confi
public BrokerSchema.SessionClass.SolicitAckMethodResponseCommand solicitAck(final BrokerSchema.SessionClass.SolicitAckMethodResponseCommandFactory factory)
{
- //todo
- throw new UnsupportedOperationException();
+ //TODO
+ return factory.createResponseCommand(CompletionCode.NOT_IMPLEMENTED);
}
public BrokerSchema.SessionClass.DetachMethodResponseCommand detach(final BrokerSchema.SessionClass.DetachMethodResponseCommandFactory factory)
{
- //todo
- throw new UnsupportedOperationException();
+ //TODO
+ return factory.createResponseCommand(CompletionCode.NOT_IMPLEMENTED);
}
public BrokerSchema.SessionClass.ResetLifespanMethodResponseCommand resetLifespan(final BrokerSchema.SessionClass.ResetLifespanMethodResponseCommandFactory factory)
{
- //todo
- throw new UnsupportedOperationException();
+ //TODO
+ return factory.createResponseCommand(CompletionCode.NOT_IMPLEMENTED);
}
public BrokerSchema.SessionClass.CloseMethodResponseCommand close(final BrokerSchema.SessionClass.CloseMethodResponseCommandFactory factory)
@@ -1343,8 +1343,7 @@ public class QMFService implements Confi
}
catch (AMQException e)
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ return factory.createResponseCommand(CompletionCode.EXCEPTION, e.getMessage());
}
return factory.createResponseCommand();
Modified: qpid/trunk/qpid/java/broker/src/xsl/qmf.xsl
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/xsl/qmf.xsl?rev=932430&r1=932429&r2=932430&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/xsl/qmf.xsl (original)
+++ qpid/trunk/qpid/java/broker/src/xsl/qmf.xsl Fri Apr 9 14:16:42 2010
@@ -540,6 +540,16 @@ public class <xsl:value-of select="$Clas
_requestCmd = cmd;
}
+ public <xsl:value-of select="$ClassName"/>ResponseCommand createResponseCommand(CompletionCode status)
+ {
+ return new <xsl:value-of select="$ClassName"/>ResponseCommand(_requestCmd, status, null);
+ }
+
+ public <xsl:value-of select="$ClassName"/>ResponseCommand createResponseCommand(CompletionCode status, String msg)
+ {
+ return new <xsl:value-of select="$ClassName"/>ResponseCommand(_requestCmd, status, msg);
+ }
+
public <xsl:value-of select="$ClassName"/>ResponseCommand createResponseCommand( <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodArgList"><xsl:with-param name="includeType">yes</xsl:with-param><xsl:with-param name="direction">O</xsl:with-param></xsl:apply-templates> )
{
return new <xsl:value-of select="$ClassName"/>ResponseCommand(_requestCmd<xsl:if test="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]">, <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodArgList"><xsl:with-param name="direction">O</xsl:with-param></xsl:apply-templates></xsl:if>);
@@ -551,17 +561,29 @@ public class <xsl:value-of select="$Clas
<xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodInputArgDecl"/>
private <xsl:value-of select="$ClassName"/>ResponseCommand(QMFMethodRequestCommand cmd<xsl:if test="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]">, <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodArgList"><xsl:with-param name="includeType">yes</xsl:with-param><xsl:with-param name="direction">O</xsl:with-param></xsl:apply-templates></xsl:if>)
{
- super(cmd);
+ super(cmd, CompletionCode.OK, "OK");
<xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodInputArgAssign"/>
}
+ private <xsl:value-of select="$ClassName"/>ResponseCommand(QMFMethodRequestCommand cmd, CompletionCode status, String msg)
+ {
+ super(cmd, status, msg);
+
+ <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="methodInputArgAssignNull"/>
+ }
+
@Override
public void encode(final BBEncoder encoder)
{
super.encode(encoder);
- <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="encodeArg"/>
+ <xsl:if test="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]">
+ if(getStatus().equals(CompletionCode.OK))
+ {
+ <xsl:apply-templates select="node()[name()='arg' and ( @dir='O' or @dir='IO' ) ]" mode="encodeArg"/>
+ }
+ </xsl:if>
}
}
@@ -600,6 +622,10 @@ public class <xsl:value-of select="$Clas
<xsl:template match="node()[name()='arg']" mode="methodInputArgAssign">
_<xsl:value-of select="@name"/> = <xsl:value-of select="@name"/>;
</xsl:template>
+ <xsl:template match="node()[name()='arg']" mode="methodInputArgAssignNull">
+ _<xsl:value-of select="@name"/> = null;
+ </xsl:template>
+
<xsl:template match="node()[name()='class']" mode="classList">_<xsl:call-template name="initLower"><xsl:with-param name="input" select="@name"/></xsl:call-template>Class<xsl:if test="following-sibling::node()[name()='class']">, </xsl:if></xsl:template>
<xsl:template match="node()[name()='event']" mode="eventList">_<xsl:call-template name="initLower"><xsl:with-param name="input" select="@name"/></xsl:call-template>EventClass<xsl:if test="following-sibling::node()[name()='event']">, </xsl:if></xsl:template>
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org