You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2009/03/20 06:29:10 UTC
svn commit: r756328 - in /qpid/trunk/qpid/java:
client/src/main/java/org/apache/qpid/client/
client/src/main/java/org/apache/qpid/client/message/
client/src/test/java/org/apache/qpid/test/unit/client/message/
common/src/main/java/org/apache/qpid/transp...
Author: rhs
Date: Fri Mar 20 05:29:10 2009
New Revision: 756328
URL: http://svn.apache.org/viewvc?rev=756328&view=rev
Log:
Fix for QPID-1761 and QPID-1762: made BBEncoder.grow() flip the buffer before copying; added a BBEncoder test; made unrecognized mime types default to BytesMessage; added logging of exception root cause to AMQSession; fixed miscelaneous test failures
Added:
qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/
qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/BBEncoderTest.java
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/BytesMessageTest.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/codec/BBEncoder.java
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=756328&r1=756327&r2=756328&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Fri Mar 20 05:29:10 2009
@@ -1015,6 +1015,7 @@
}
catch (URISyntaxException urlse)
{
+ _logger.error("", urlse);
JMSException jmse = new JMSException(urlse.getReason());
jmse.setLinkedException(urlse);
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java?rev=756328&r1=756327&r2=756328&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java Fri Mar 20 05:29:10 2009
@@ -48,6 +48,7 @@
private final Map<String, MessageFactory> _mimeStringToFactoryMap = new HashMap<String, MessageFactory>();
private final Map<AMQShortString, MessageFactory> _mimeShortStringToFactoryMap =
new HashMap<AMQShortString, MessageFactory>();
+ private final MessageFactory _default = new JMSBytesMessageFactory();
/**
* Construct a new registry with the default message factories registered
@@ -63,7 +64,7 @@
mf.registerFactory(JMSBytesMessage.MIME_TYPE, new JMSBytesMessageFactory());
mf.registerFactory(JMSObjectMessage.MIME_TYPE, new JMSObjectMessageFactory());
mf.registerFactory(JMSStreamMessage.MIME_TYPE, new JMSStreamMessageFactory());
- mf.registerFactory(null, new JMSBytesMessageFactory());
+ mf.registerFactory(null, mf._default);
return mf;
}
@@ -113,12 +114,10 @@
MessageFactory mf = _mimeShortStringToFactoryMap.get(contentTypeShortString);
if (mf == null)
{
- throw new AMQException(null, "Unsupport MIME type of " + properties.getContentTypeAsString(), null);
- }
- else
- {
- return mf.createMessage(deliveryTag, redelivered, contentHeader, exchange, routingKey, bodies);
+ mf = _default;
}
+
+ return mf.createMessage(deliveryTag, redelivered, contentHeader, exchange, routingKey, bodies);
}
public AbstractJMSMessage createMessage(MessageTransfer transfer) throws AMQException, JMSException
@@ -138,22 +137,20 @@
MessageFactory mf = _mimeStringToFactoryMap.get(messageType);
if (mf == null)
{
- throw new AMQException(null, "Unsupport MIME type of " + messageType, null);
+ mf = _default;
}
- else
+
+ boolean redelivered = false;
+ DeliveryProperties deliverProps;
+ if((deliverProps = transfer.getHeader().get(DeliveryProperties.class)) != null)
{
- boolean redelivered = false;
- DeliveryProperties deliverProps;
- if((deliverProps = transfer.getHeader().get(DeliveryProperties.class)) != null)
- {
- redelivered = deliverProps.getRedelivered();
- }
- return mf.createMessage(transfer.getId(),
- redelivered,
- mprop == null? new MessageProperties():mprop,
- deliverProps == null? new DeliveryProperties():deliverProps,
- transfer.getBody());
+ redelivered = deliverProps.getRedelivered();
}
+ return mf.createMessage(transfer.getId(),
+ redelivered,
+ mprop == null? new MessageProperties():mprop,
+ deliverProps == null? new DeliveryProperties():deliverProps,
+ transfer.getBody());
}
@@ -167,11 +164,9 @@
MessageFactory mf = _mimeStringToFactoryMap.get(mimeType);
if (mf == null)
{
- throw new AMQException(null, "Unsupport MIME type of " + mimeType, null);
- }
- else
- {
- return mf.createMessage(delegateFactory);
+ mf = _default;
}
+
+ return mf.createMessage(delegateFactory);
}
}
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/BytesMessageTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/BytesMessageTest.java?rev=756328&r1=756327&r2=756328&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/BytesMessageTest.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/BytesMessageTest.java Fri Mar 20 05:29:10 2009
@@ -559,7 +559,7 @@
JMSBytesMessage bm = TestMessageHelper.newJMSBytesMessage();
bm.reset();
String result = bm.toBodyString();
- assertNull(result);
+ assertEquals("\"\"", result);
}
public static junit.framework.Test suite()
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java?rev=756328&r1=756327&r2=756328&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java Fri Mar 20 05:29:10 2009
@@ -435,7 +435,7 @@
JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
bm.reset();
String result = bm.toBodyString();
- assertNull(result);
+ assertEquals("\"\"", result);
}
private void checkConversionsFail(StreamMessage sm, int[] conversions) throws JMSException
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/codec/BBEncoder.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/codec/BBEncoder.java?rev=756328&r1=756327&r2=756328&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/codec/BBEncoder.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/codec/BBEncoder.java Fri Mar 20 05:29:10 2009
@@ -59,12 +59,23 @@
return slice;
}
+ public ByteBuffer buffer()
+ {
+ int pos = out.position();
+ out.position(segment);
+ ByteBuffer slice = out.slice();
+ slice.limit(pos - segment);
+ out.position(pos);
+ return slice;
+ }
+
private void grow(int size)
{
ByteBuffer old = out;
int capacity = old.capacity();
out = ByteBuffer.allocate(Math.max(capacity + size, 2*capacity));
out.order(ByteOrder.BIG_ENDIAN);
+ old.flip();
out.put(old);
}
Added: qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/BBEncoderTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/BBEncoderTest.java?rev=756328&view=auto
==============================================================================
--- qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/BBEncoderTest.java (added)
+++ qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/codec/BBEncoderTest.java Fri Mar 20 05:29:10 2009
@@ -0,0 +1,47 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.transport.codec;
+
+import junit.framework.TestCase;
+
+import java.nio.ByteBuffer;
+
+/**
+ * BBEncoderTest
+ *
+ */
+
+public class BBEncoderTest extends TestCase
+{
+
+ public void testGrow()
+ {
+ BBEncoder enc = new BBEncoder(4);
+ enc.writeInt32(0xDEADBEEF);
+ ByteBuffer buf = enc.buffer();
+ assertEquals(0xDEADBEEF, buf.getInt(0));
+ enc.writeInt32(0xBEEFDEAD);
+ buf = enc.buffer();
+ assertEquals(0xDEADBEEF, buf.getInt(0));
+ assertEquals(0xBEEFDEAD, buf.getInt(4));
+ }
+
+}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org