You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2012/07/03 15:26:00 UTC
svn commit: r1356718 - in
/qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec:
EncodingCodes.java ListType.java
Author: rgodfrey
Date: Tue Jul 3 13:25:59 2012
New Revision: 1356718
URL: http://svn.apache.org/viewvc?rev=1356718&view=rev
Log:
NO-JIRA : [proton-j] add empty list encoding
Modified:
qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/EncodingCodes.java
qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/ListType.java
Modified: qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/EncodingCodes.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/EncodingCodes.java?rev=1356718&r1=1356717&r2=1356718&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/EncodingCodes.java (original)
+++ qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/EncodingCodes.java Tue Jul 3 13:25:59 2012
@@ -77,6 +77,7 @@ interface EncodingCodes
public static final byte SYM8 = (byte) 0xa3;
public static final byte SYM32 = (byte) 0xb3;
+ public static final byte LIST0 = (byte) 0x45;
public static final byte LIST8 = (byte) 0xc0;
public static final byte LIST32 = (byte) 0xd0;
Modified: qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/ListType.java
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/ListType.java?rev=1356718&r1=1356717&r2=1356718&view=diff
==============================================================================
--- qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/ListType.java (original)
+++ qpid/proton/trunk/proton-j/src/org/apache/qpid/proton/codec/ListType.java Tue Jul 3 13:25:59 2012
@@ -23,12 +23,14 @@ package org.apache.qpid.proton.codec;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
public class ListType extends AbstractPrimitiveType<List>
{
private final ListEncoding _listEncoding;
private final ListEncoding _shortListEncoding;
+ private final ListEncoding _zeroListEncoding;
private EncoderImpl _encoder;
private static interface ListEncoding extends PrimitiveTypeEncoding<List>
@@ -41,6 +43,7 @@ public class ListType extends AbstractPr
_encoder = encoder;
_listEncoding = new AllListEncoding(encoder, decoder);
_shortListEncoding = new ShortListEncoding(encoder, decoder);
+ _zeroListEncoding = new ZeroListEncoding(encoder, decoder);
encoder.register(List.class, this);
decoder.register(this);
}
@@ -54,9 +57,11 @@ public class ListType extends AbstractPr
{
int calculatedSize = calculateSize(val, _encoder);
- ListEncoding encoding = (val.size() > 255 || calculatedSize >= 254)
- ? _listEncoding
- : _shortListEncoding;
+ ListEncoding encoding = val.isEmpty()
+ ? _zeroListEncoding
+ : (val.size() > 255 || calculatedSize >= 254)
+ ? _listEncoding
+ : _shortListEncoding;
encoding.setValue(val, calculatedSize);
return encoding;
@@ -84,7 +89,7 @@ public class ListType extends AbstractPr
public Collection<ListEncoding> getAllEncodings()
{
- return Arrays.asList(_shortListEncoding, _listEncoding);
+ return Arrays.asList(_zeroListEncoding, _shortListEncoding, _listEncoding);
}
private class AllListEncoding
@@ -232,4 +237,53 @@ public class ListType extends AbstractPr
_length = length;
}
}
+
+
+ private class ZeroListEncoding
+ extends FixedSizePrimitiveTypeEncoding<List>
+ implements ListEncoding
+ {
+ public ZeroListEncoding(final EncoderImpl encoder, final DecoderImpl decoder)
+ {
+ super(encoder, decoder);
+ }
+
+ @Override
+ public byte getEncodingCode()
+ {
+ return EncodingCodes.LIST0;
+ }
+
+ @Override
+ protected int getFixedSize()
+ {
+ return 0;
+ }
+
+
+ public ListType getType()
+ {
+ return ListType.this;
+ }
+
+ public void setValue(List value, int length)
+ {
+ }
+
+ public void writeValue(final List val)
+ {
+ }
+
+ public boolean encodesSuperset(final TypeEncoding<List> encoder)
+ {
+ return encoder == this;
+ }
+
+ public List readValue()
+ {
+ return Collections.EMPTY_LIST;
+ }
+
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org