You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2004/03/26 23:55:39 UTC
svn commit: rev 9763 - in incubator/directory/snickers/branches/chunking: ber ber/src/java/org/apache/snickers/asn ber/src/java/org/apache/snickers/ber ber/src/java/org/apache/snickers/ber/primitives ber/src/test/org/apache/snickers/ber codec-stateful
Author: akarasulu
Date: Fri Mar 26 14:55:37 2004
New Revision: 9763
Added:
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/
- copied from rev 9762, incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/asn/
Removed:
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/asn/
Modified:
incubator/directory/snickers/branches/chunking/ber/ (props changed)
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/AbstractDecoderTestCase.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoder.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoderMonitor.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/Tuple.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleNode.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleTreeDecoder.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/BERDecoderUtils.java
incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/Primitive.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderCallbackAdapterTest.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderTest.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/ConstructedTLVTests.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/DefaultMutableTupleNodeTest.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/EncodeDecodeTests.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/MultiByteTagTests.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SimplePrimitiveTLVTests.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SingleByteLengthTests.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTest.java
incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTreeDecoderTest.java
incubator/directory/snickers/branches/chunking/codec-stateful/ (props changed)
Log:
o Switched to using ByteBuffers instead of byte[] in all decoders and
within the tuple
o Introduced a partialValueDecoded(Tuple) method to the handler for emitting
chunks of the value
o Added value chunking code so any sized input can be handled for the value
o Cleaned up some code and made appropriate changes to the test cases
o Moved primitive package under ber package instead of within an asn package
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/AbstractDecoderTestCase.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/AbstractDecoderTestCase.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/AbstractDecoderTestCase.java Fri Mar 26 14:55:37 2004
@@ -59,7 +59,7 @@
protected void setUp() throws Exception
{
super.setUp() ;
- decoder = new BERDecoder( 1024 ) ;
+ decoder = new BERDecoder() ;
decoder.setCallback( this ) ;
decoder.setDecoderMonitor( this ) ;
}
@@ -292,7 +292,9 @@
*/
public Tuple decode( Tuple tlv, ByteBuffer value ) throws DecoderException
{
- ByteBuffer buf = tlv.toEncodedBuffer( value ) ;
+ ArrayList list = new ArrayList() ;
+ list.add( value ) ;
+ ByteBuffer buf = tlv.toEncodedBuffer( list ) ;
int lastSize = tlvList.size() ;
decoder.decode( buf ) ;
@@ -401,7 +403,7 @@
*/
public void partialValueDecoded( Tuple tlv )
{
- buf.put( tlv.value ) ;
+ buf.put( tlv.valueChunk ) ;
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoder.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoder.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoder.java Fri Mar 26 14:55:37 2004
@@ -97,10 +97,8 @@
/**
* Creates a stateful BER decoder which limits the tuple's value size.
- *
- * @param valueMax the maximum tuple value size handled by this decoder
*/
- public BERDecoder( int valueMax )
+ public BERDecoder()
{
tagDecoder.setCallback( this ) ;
lengthDecoder.setCallback( this ) ;
@@ -175,7 +173,7 @@
{
this.cb = ( BERDecoderCallback ) cb ;
}
-
+
/* (non-Javadoc)
* @see org.apache.commons.codec.stateful.StatefulDecoder#setDecoderMonitor(
@@ -197,7 +195,7 @@
*
* @param buf the byte byffer containing BER encoded data
*/
- private void decodeValue( ByteBuffer buf ) throws DecoderException
+ private void decodeValue( ByteBuffer buf )
{
int needToRead = Length.UNDEFINED ;
@@ -221,7 +219,7 @@
*/
if ( buf.remaining() >= needToRead )
{
- tlv.value = ( ByteBuffer ) buf.slice().limit( needToRead ) ;
+ tlv.valueChunk = ( ByteBuffer ) buf.slice().limit( needToRead ) ;
buf.position( buf.position() + needToRead ) ;
tlv.valueIndex = tlv.length ;
tlv.index += tlv.length ;
@@ -246,7 +244,7 @@
}
int remaining = buf.remaining() ;
- tlv.value = buf.slice() ;
+ tlv.valueChunk = buf.slice() ;
buf.position( buf.limit() ) ;
tlv.valueIndex += remaining ;
tlv.index +=remaining ;
@@ -320,7 +318,7 @@
else
{
state = BERDecoderState.VALUE ;
- tlv.value = EMPTY_BUFFER ;
+ tlv.valueChunk = EMPTY_BUFFER ;
cb.partialValueDecoded( tlv ) ;
fireDecodeOccurred( tlv ) ;
state = BERDecoderState.TAG ;
@@ -352,11 +350,11 @@
{
cb.tagDecoded( tlv ) ;
}
-
+
if ( monitor != null && monitor instanceof BERDecoderMonitor )
{
BERDecoderMonitor berMonitor = ( BERDecoderMonitor ) monitor ;
- //berMonitor.tagDecoded( tlv, tagDecoder.getOctets() ) ;
+ berMonitor.tagDecoded( tlv ) ;
}
}
@@ -379,7 +377,7 @@
if ( monitor != null && monitor instanceof BERDecoderMonitor )
{
BERDecoderMonitor berMonitor = ( BERDecoderMonitor ) monitor ;
- //berMonitor.lengthDecoded( tlv, lengthBuffer.toArray() ) ;
+ berMonitor.lengthDecoded( tlv ) ;
}
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoderMonitor.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoderMonitor.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/BERDecoderMonitor.java Fri Mar 26 14:55:37 2004
@@ -40,9 +40,8 @@
* </ul>
*
* @param tlv the TLV tuple
- * @param tagData the tag data collected
*/
- void tagDecoded( Tuple tlv, byte[] tagData ) ;
+ void tagDecoded( Tuple tlv ) ;
/**
* Method used to receive notification that a length was decoded. The
@@ -55,7 +54,6 @@
* </ul>
*
* @param tlv the TLV tuple
- * @param lengthData the length data collected
*/
- void lengthDecoded( Tuple tlv, byte[] lengthData ) ;
+ void lengthDecoded( Tuple tlv ) ;
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java Fri Mar 26 14:55:37 2004
@@ -19,14 +19,11 @@
import java.nio.ByteBuffer ;
+import java.util.List ;
import java.util.Iterator ;
import java.util.ArrayList ;
-import java.util.Enumeration ;
import java.util.Collections ;
-import javax.swing.tree.TreeNode ;
-import javax.swing.tree.MutableTreeNode ;
-
import org.apache.commons.lang.StringUtils ;
@@ -37,8 +34,7 @@
* Apache Directory Project</a>
* @version $Rev$
*/
-public class DefaultMutableTupleNode
- implements MutableTupleNode, MutableTreeNode
+public class DefaultMutableTupleNode implements MutableTupleNode
{
/** this node's tuple user object */
private Tuple tuple ;
@@ -46,8 +42,9 @@
private ArrayList children = new ArrayList() ;
/** this node's parent node */
private DefaultMutableTupleNode parent ;
- /** this node's value */
- private ByteBuffer value ;
+ /** this node's accumulated ByteBuffer value chunks */
+ private List valueChunks = new ArrayList( 2 ) ;
+
/**
* Creates a node without a parent and without a tuple.
@@ -62,10 +59,21 @@
*
* @param tuple the tuple to set for this node
*/
- public DefaultMutableTupleNode( Tuple tuple, ByteBuffer value )
+ public DefaultMutableTupleNode( Tuple tuple )
+ {
+ this.tuple = tuple ;
+ }
+
+
+ /**
+ * Creates a node without a parent.
+ *
+ * @param tuple the tuple to set for this node
+ */
+ public DefaultMutableTupleNode( Tuple tuple, List valueChunks )
{
this.tuple = tuple ;
- this.value = value ;
+ this.valueChunks.addAll( valueChunks ) ;
}
@@ -153,16 +161,6 @@
/* (non-Javadoc)
- * @see org.apache.snickers.ber.MutableTupleNode#setTuple(
- * org.apache.snickers.ber.Tuple)
- */
- public void setTuple( Tuple t )
- {
- tuple = t ;
- }
-
-
- /* (non-Javadoc)
* @see org.apache.snickers.ber.TupleNode#getParent()
*/
public TupleNode getParentTupleNode()
@@ -257,6 +255,51 @@
}
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#setTuple(
+ * org.apache.snickers.ber.Tuple)
+ */
+ public void setTuple( Tuple t )
+ {
+ tuple = t ;
+ valueChunks.clear() ;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#setTuple(
+ * org.apache.snickers.ber.Tuple, java.util.List)
+ */
+ public void setTuple( Tuple t, List valueChunks )
+ {
+ tuple = t ;
+ this.valueChunks.clear() ;
+ this.valueChunks.addAll( valueChunks ) ;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#getValueChunks()
+ */
+ public List getValueChunks()
+ {
+ return valueChunks ;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#addValueChunk(
+ * java.nio.ByteBuffer)
+ */
+ public void addValueChunk( ByteBuffer valueChunk )
+ {
+ valueChunks.add( valueChunk ) ;
+ }
+
+
/**
* Depth first generation of this tlv tuple node's encoded image.
*
@@ -264,7 +307,7 @@
*/
public void encode( ByteBuffer dest )
{
- dest.put( tuple.toEncodedBuffer( this.value ) ) ;
+ dest.put( tuple.toEncodedBuffer( this.valueChunks ) ) ;
if ( tuple.isPrimitive() )
{
@@ -308,7 +351,7 @@
buf.append( tuple.getId() ) ;
buf.append( ' ' ).append( tuple.typeClass ) ;
buf.append( '[' ).append( tuple.length ).append( ']' ) ;
- buf.append( '[' ).append( new String( tuple.getValue().array() ) ) ;
+ buf.append( '[' ).append( new String( tuple.getLastValueChunk().array() ) ) ;
buf.append( ']' ) ;
return buf.toString() ;
@@ -329,18 +372,6 @@
/**
- * Start analyzing the tree rooted at this node.
- */
- public void analyze()
- {
- /*
- TupleTreeAnalyzer analyzer = new TupleTreeAnalyzer( this ) ;
- analyzer.startup() ;
- */
- }
-
-
- /**
* Generates a depth first traversal of this node.
*
* @param buf the buffer to capture the traversal into
@@ -359,8 +390,6 @@
buf.append( levelTab ).append( tuple.getId() ) ;
buf.append( ' ' ).append( tuple.typeClass ) ;
buf.append( '[' ).append( tuple.length ).append( ']' ) ;
- buf.append( '[' ).append( new String( tuple.getValue().array() ) ) ;
- buf.append( ']' ) ;
for ( int ii = 0; ii < children.size(); ii++ )
{
child = ( DefaultMutableTupleNode ) children.get( ii ) ;
@@ -370,114 +399,6 @@
// ------------------------------------------------------------------------
- // MutableTreeNode implementations
- // ------------------------------------------------------------------------
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#children()
- */
- public Enumeration children()
- {
- return Collections.enumeration( children ) ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#getAllowsChildren()
- */
- public boolean getAllowsChildren()
- {
- return ! tuple.isPrimitive() ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#getChildAt(int)
- */
- public TreeNode getChildAt( int childIndex )
- {
- return ( TreeNode ) getChildTupleNodeAt( childIndex ) ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#getIndex(javax.swing.tree.TreeNode)
- */
- public int getIndex( TreeNode node )
- {
- return getIndex( ( TupleNode ) node ) ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#getParent()
- */
- public TreeNode getParent()
- {
- return parent ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.MutableTreeNode#insert(
- * javax.swing.tree.MutableTreeNode, int)
- */
- public void insert( MutableTreeNode child, int index )
- {
- insert( ( MutableTupleNode ) child, index ) ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.TreeNode#isLeaf()
- */
- public boolean isLeaf()
- {
- if ( tuple != null && tuple.isPrimitive() )
- {
- return true ;
- }
-
- if ( children.isEmpty() )
- {
- return true ;
- }
-
- return false ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.MutableTreeNode#remove(
- * javax.swing.tree.MutableTreeNode)
- */
- public void remove( MutableTreeNode node )
- {
- remove( ( MutableTupleNode ) node ) ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.MutableTreeNode#setParent(
- * javax.swing.tree.MutableTreeNode)
- */
- public void setParent( MutableTreeNode newParent )
- {
- parent = ( DefaultMutableTupleNode ) newParent ;
- }
-
-
- /* (non-Javadoc)
- * @see javax.swing.tree.MutableTreeNode#setUserObject(java.lang.Object)
- */
- public void setUserObject( Object object )
- {
- tuple = ( Tuple ) object ;
- }
-
-
- // ------------------------------------------------------------------------
// java.lang.Object overrides & overloads
// ------------------------------------------------------------------------
@@ -529,8 +450,10 @@
DefaultMutableTupleNode n2Child = null ;
for ( int ii = 0; ii < n1.getChildCount() ; ii++ )
{
- n1Child = ( DefaultMutableTupleNode ) n1.getChildAt( ii ) ;
- n2Child = ( DefaultMutableTupleNode ) n2.getChildAt( ii ) ;
+ n1Child = ( DefaultMutableTupleNode )
+ n1.getChildTupleNodeAt( ii ) ;
+ n2Child = ( DefaultMutableTupleNode )
+ n2.getChildTupleNodeAt( ii ) ;
if ( ! equals( n1Child, n2Child ) )
{
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java Fri Mar 26 14:55:37 2004
@@ -16,6 +16,9 @@
*/
package org.apache.snickers.ber ;
+import java.nio.ByteBuffer;
+import java.util.List;
+
/**
* A mutable TupleNode used for building TLV Tuple trees.
@@ -60,11 +63,27 @@
*/
void setParent( MutableTupleNode newParent ) ;
+ /**
+ * Resets the Tuple of the receiver object. Also clears the value chunk
+ * buffers accumulated for the previous tuple if any.
+ *
+ * @param t the tuple to set for this node
+ */
+ void setTuple( Tuple t ) ;
+
+ /**
+ * Resets the Tuple of the receiver object. Also clears the value chunk
+ * buffers accumulated for the previous tuple if any.
+ *
+ * @param t the tuple to set for this node
+ * @param valueChunks the list of value chunk buffers
+ */
+ void setTuple( Tuple t, List valueChunks ) ;
+
/**
- * Resets the Tuple of the receiver object.
- *
- * @param t the tuple to set for this node
+ * Adds a buffer containing the entire buffer or a chunked peice of it.
+ *
+ * @param valueChunk a chunk of the value as a byte buffer
*/
- void setTuple( Tuple t ) ;
-
+ void addValueChunk( ByteBuffer valueChunk ) ;
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/Tuple.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/Tuple.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/Tuple.java Fri Mar 26 14:55:37 2004
@@ -17,6 +17,8 @@
package org.apache.snickers.ber ;
+import java.util.List ;
+
import java.nio.ByteBuffer ;
import org.apache.commons.lang.ArrayUtils ;
@@ -33,6 +35,7 @@
*/
public class Tuple
{
+ /** empty buffer reused for handling null */
private static final ByteBuffer EMPTY_BUFFER =
ByteBuffer.wrap( ArrayUtils.EMPTY_BYTE_ARRAY ) ;
@@ -44,15 +47,15 @@
private static final int BIT_7 = 0x80 ;
/** precalculated left shift of 1 by 14 places */
- static final int BIT_13 = 1 << 14 ;
+ private static final int BIT_13 = 1 << 14 ;
/** precalculated left shift of 1 by 16 places */
- static final int BIT_15 = 1 << 16 ;
+ private static final int BIT_15 = 1 << 16 ;
/** precalculated left shift of 1 by 21 places */
- static final int BIT_20 = 1 << 21 ;
+ private static final int BIT_20 = 1 << 21 ;
/** precalculated left shift of 1 by 24 places */
- static final int BIT_23 = 1 << 24 ;
+ private static final int BIT_23 = 1 << 24 ;
/** precalculated left shift of 1 by 28 places */
- static final int BIT_27 = 1 << 28 ;
+ private static final int BIT_27 = 1 << 28 ;
/** the tag id for this TLV tuple */
int id = 0 ;
@@ -62,8 +65,8 @@
TypeClass typeClass = TypeClass.APPLICATION ;
/** the length for this TLV tuple */
int length = 0 ;
- /** the value for this TLV tuple */
- ByteBuffer value = EMPTY_BUFFER ;
+ /** the present value chunk buffer read for this TLV tuple */
+ ByteBuffer valueChunk = EMPTY_BUFFER ;
/** tlv byte index */
int index = Length.UNDEFINED ;
@@ -112,7 +115,7 @@
{
this.id = id ;
this.length = length ;
- value = EMPTY_BUFFER ;
+ valueChunk = EMPTY_BUFFER ;
isPrimitive = false ;
if ( typeClass != null )
@@ -136,7 +139,7 @@
{
this.id = id ;
this.length = length ;
- value = EMPTY_BUFFER ;
+ valueChunk = EMPTY_BUFFER ;
isPrimitive = false ;
if ( typeClass != null )
@@ -157,7 +160,7 @@
{
this.id = id ;
this.isPrimitive = false ;
- value = EMPTY_BUFFER ;
+ valueChunk = EMPTY_BUFFER ;
length = Length.INDEFINATE ;
if ( typeClass != null )
@@ -242,13 +245,13 @@
/**
- * Gets the value field (V-part) for this TLV Tuple.
+ * Gets the last chunk read for the value field (V-part) for this TLV Tuple.
*
- * @return the value field for this TLV Tuple
+ * @return the last valueChunk field for this TLV Tuple
*/
- public ByteBuffer getValue()
+ public ByteBuffer getLastValueChunk()
{
- return value ;
+ return valueChunk ;
}
@@ -287,7 +290,7 @@
this.isPrimitive = true ;
this.length = Length.UNDEFINED ;
this.typeClass = TypeClass.APPLICATION ;
- this.value = EMPTY_BUFFER ;
+ this.valueChunk = EMPTY_BUFFER ;
this.valueIndex = Length.UNDEFINED ;
}
@@ -297,7 +300,8 @@
* checking for equality. Technically if both are being constructed by
* the decoder then they should only be equal when these values are equal
* because the tag, length or value would not be correct. Plus since this
- * is a chunking tuple the value may only be a part of the final value.
+ * is a chunking tuple the valueChunk means nothing with respect to the
+ * final value.
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@@ -351,7 +355,13 @@
t.typeClass = typeClass ;
t.length = length ;
- ByteBuffer bb = ( ByteBuffer ) value ;
+ /* ------------------------------------------------------------------ +/
+ * @todo figure out if we should remove this section
+ *
+ * Do think we need this anymore since the last valueChunk does not
+ * factor into the result returned by the equals(Object) method?
+ * ------------------------------------------------------------------ */
+ ByteBuffer bb = ( ByteBuffer ) valueChunk ;
ByteBuffer cloned = ByteBuffer.allocate( bb.capacity() ) ;
int oldPos = bb.position() ;
bb.rewind() ;
@@ -359,7 +369,8 @@
cloned.limit( bb.limit() ) ;
bb.position( oldPos ) ;
cloned.rewind() ;
- t.value = cloned ;
+ t.valueChunk = cloned ;
+ /* ------------------------------------------------------------------ */
t.index = index ;
t.valueIndex = valueIndex ;
@@ -374,6 +385,11 @@
/**
+ * @todo this should produce chunking output and needs to be removed from
+ * here actually and made into a standalone encoder. You give it a buffer
+ * and it fills it as much as it can remembering where the encode stopped.
+ * Hence it is stateful as expected from the statemachine.
+ *
* If this is a primitive TLV then the valueBytes argument is used to
* produce an encoded image of this TLV. If it is constructed then
* only the TL part of the tuple is encoded leaving the value to be encoded
@@ -381,16 +397,16 @@
*
* @return partial encoded image if constructed or complete TLV if primitive
*/
- public ByteBuffer toEncodedBuffer( ByteBuffer valueBytes )
+ public ByteBuffer toEncodedBuffer( List valueChunks )
{
ByteBuffer octets = null ;
int tagLength = getTagLength() ;
int lengthLength = getLengthLength() ;
int total = tagLength + lengthLength ;
-
+
if ( isPrimitive )
{
- total += ( ( ByteBuffer ) valueBytes ).remaining() ;
+ total += length ;
}
octets = ByteBuffer.allocate( total ) ;
@@ -399,7 +415,10 @@
if ( isPrimitive )
{
- octets.put( valueBytes ) ;
+ for ( int ii = 0; ii < valueChunks.size(); ii++ )
+ {
+ octets.put( ( ByteBuffer ) valueChunks.get(ii) ) ;
+ }
}
return ( ByteBuffer ) octets.flip() ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleNode.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleNode.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleNode.java Fri Mar 26 14:55:37 2004
@@ -17,7 +17,9 @@
package org.apache.snickers.ber ;
+import java.util.List ;
import java.util.Iterator ;
+
import java.nio.ByteBuffer ;
@@ -58,6 +60,13 @@
TupleNode getChildTupleNodeAt( int index ) ;
/**
+ * Gets the chunked value buffer fragments collected within this node.
+ *
+ * @return the value buffer parts for this node
+ */
+ List getValueChunks() ;
+
+ /**
* Gets the index of a child if the child node if it exists. The analog
* within <code>TreeNode<code> takes a <code>TreeNode</code> instead of a
* <code>TupleNode</code>.
@@ -82,7 +91,6 @@
* @return the number of children
*/
int size() ;
-
/**
* Gets the Tuple this node represents. This is the analogous to <code>
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleTreeDecoder.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleTreeDecoder.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/TupleTreeDecoder.java Fri Mar 26 14:55:37 2004
@@ -17,6 +17,7 @@
package org.apache.snickers.ber ;
+import java.util.ArrayList;
import java.util.Stack ;
import java.nio.ByteBuffer ;
@@ -42,11 +43,13 @@
/** a stack of nested constructed tuples used to track state */
Stack stack = new Stack() ;
/** the underlying BER data stream to TLV stream decoder */
- BERDecoder decoder = new BERDecoder( 1024 ) ;
+ BERDecoder decoder = new BERDecoder() ;
/** the callback to use for this StatefulDecoder */
DecoderCallback cb = null ;
/** the monitor to use for this StatefulDecoder */
DecoderMonitor monitor = new DecoderMonitorAdapter() ;
+ /** the value chunks buffer collection */
+ ArrayList valueChunks = new ArrayList() ;
/**
@@ -58,7 +61,15 @@
{
public void tagDecoded( Tuple tlv ) { }
- public void partialValueDecoded( Tuple tlv ) { }
+ public void partialValueDecoded( Tuple tlv )
+ {
+ ByteBuffer copy = ByteBuffer.allocate(
+ tlv.getLastValueChunk().remaining() ) ;
+ copy.put( tlv.getLastValueChunk() ) ;
+ tlv.getLastValueChunk().rewind() ;
+ copy.rewind() ;
+ valueChunks.add( copy ) ;
+ }
public void lengthDecoded( Tuple tlv )
{
@@ -107,7 +118,9 @@
if ( t.isPrimitive )
{
- node = new DefaultMutableTupleNode( ( Tuple ) t.clone() ) ;
+ node = new DefaultMutableTupleNode( ( Tuple ) t.clone(),
+ valueChunks ) ;
+ valueChunks.clear() ;
if ( ! stack.isEmpty() )
{
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/BERDecoderUtils.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/asn/BERDecoderUtils.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/BERDecoderUtils.java Fri Mar 26 14:55:37 2004
@@ -14,7 +14,7 @@
* limitations under the License.
*
*/
-package org.apache.snickers.asn;
+package org.apache.snickers.ber.primitives;
Modified: incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/Primitive.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/asn/Primitive.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/java/org/apache/snickers/ber/primitives/Primitive.java Fri Mar 26 14:55:37 2004
@@ -1,64 +1,32 @@
/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed 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.snickers.ber.primitives;
- ============================================================================
- The Apache Software License, Version 1.1
- ============================================================================
-
- Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modifica-
- tion, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. The end-user documentation included with the redistribution, if any, must
- include the following acknowledgment: "This product includes software
- developed by the Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself, if
- and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Eve Directory Server", "Apache Directory Project", "Apache Eve"
- and "Apache Software Foundation" must not be used to endorse or promote
- products derived from this software without prior written
- permission. For written permission, please contact apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache", nor may
- "Apache" appear in their name, without prior written permission of the
- Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many individuals
- on behalf of the Apache Software Foundation. For more information on the
- Apache Software Foundation, please see <http://www.apache.org/>.
-
-*/
-
-package org.apache.snickers.asn;
/**
* Tag values for primitives
*
- * @author Wes McKean
- * @author $Author: akarasulu $
+ * @author <a href="mailto:directory-dev@incubator.apache.org">
+ * Apache Directory Project</a>
* @version $Rev$
*/
-public interface Primitive {
- public final int RESERVED0 = 1 ;
+public interface Primitive
+{
+ public final int RESERVED0 = 0 ;
public final int BOOLEAN = 1 ;
public final int INTEGER = 2 ;
public final int BITSTRING = 3 ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderCallbackAdapterTest.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderCallbackAdapterTest.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderCallbackAdapterTest.java Fri Mar 26 14:55:37 2004
@@ -74,6 +74,11 @@
adapter.lengthDecoded( null ) ;
}
+ public void testPartialValueDecoded()
+ {
+ adapter.partialValueDecoded( null ) ;
+ }
+
public void testDecodeOccurred()
{
adapter.decodeOccurred( null, null ) ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderTest.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderTest.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/BERDecoderTest.java Fri Mar 26 14:55:37 2004
@@ -18,13 +18,14 @@
import java.nio.ByteBuffer ;
+import java.util.ArrayList ;
import org.apache.commons.lang.ArrayUtils ;
import org.apache.commons.lang.RandomStringUtils ;
-import org.apache.commons.codec.stateful.DecoderCallback;
+import org.apache.commons.codec.stateful.DecoderCallback ;
+import org.apache.commons.codec.stateful.StatefulDecoder ;
import org.apache.commons.codec.stateful.DecoderMonitorAdapter ;
-import org.apache.commons.codec.stateful.StatefulDecoder;
/**
@@ -37,7 +38,10 @@
*/
public class BERDecoderTest extends AbstractDecoderTestCase
{
- private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.wrap( ArrayUtils.EMPTY_BYTE_ARRAY );
+ private static final ByteBuffer EMPTY_BUFFER =
+ ByteBuffer.wrap( ArrayUtils.EMPTY_BYTE_ARRAY ) ;
+
+
public BERDecoderTest()
{
super( BERDecoderTest.class.getName() ) ;
@@ -54,7 +58,6 @@
public void testPrimitives() throws Exception
{
- byte[] bites = null ;
Tuple decoded = null ;
Tuple t = new Tuple( 45, 0, true, TypeClass.APPLICATION ) ;
assertTrue( decode( t, EMPTY_BUFFER ).equals( t ) ) ;
@@ -63,13 +66,13 @@
TypeClass.APPLICATION ) ;
decoded = decode( t, ByteBuffer.wrap( "Hello world!".getBytes() ) ) ;
assertTrue( decoded.equals( t ) ) ;
- assertEquals( "Hello world!", toString( decoded.getValue() ) ) ;
+ assertEquals( "Hello world!", toString( decoded.getLastValueChunk() ) ) ;
String mesg = RandomStringUtils.randomAlphanumeric(1000) ;
t = new Tuple( 1234233, mesg.length(), true, TypeClass.APPLICATION ) ;
decoded = decode( t, ByteBuffer.wrap( mesg.getBytes() ) ) ;
assertTrue( decoded.equals( t ) ) ;
- assertEquals( mesg, toString( decoded.getValue() ) ) ;
+ assertEquals( mesg, toString( decoded.getLastValueChunk() ) ) ;
}
@@ -94,11 +97,11 @@
Tuple decoded = decode( t0, ByteBuffer.wrap( "Hello".getBytes() ) ) ;
assertTrue( decoded.equals( t0 ) ) ;
- assertEquals( "Hello", toString( decoded.getValue() ) ) ;
+ assertEquals( "Hello", toString( decoded.getLastValueChunk() ) ) ;
decoded = decode( t1, ByteBuffer.wrap( "World".getBytes() ) ) ;
assertTrue( decoded.equals( t1 ) ) ;
- assertEquals( "World", toString( decoded.getValue() ) ) ;
+ assertEquals( "World", toString( decoded.getLastValueChunk() ) ) ;
decoded = decode( terminator, EMPTY_BUFFER ) ;
assertTrue( decoded.equals( top ) ) ;
@@ -116,7 +119,7 @@
Tuple decoded = decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
assertTrue( decoded.equals( t0 ) ) ;
- assertEquals( str0, toString( decoded.getValue() ) ) ;
+ assertEquals( str0, toString( decoded.getLastValueChunk() ) ) ;
// automatically set to top because after t1 is delivered top is
decoded = decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
@@ -135,7 +138,7 @@
Tuple decoded = decode( t0, ByteBuffer.wrap( "Hello".getBytes() ) ) ;
assertTrue( decoded.equals( t0 ) ) ;
- assertEquals( "Hello", toString( decoded.getValue() ) ) ;
+ assertEquals( "Hello", toString( decoded.getLastValueChunk() ) ) ;
// automatically set to top because after t1 is delivered top is
decoded = decode( t1, ByteBuffer.wrap( "World".getBytes() ) ) ;
@@ -152,8 +155,9 @@
Tuple top = new Tuple( 1, t0.size() + t1.size() ) ;
assertTrue( decode( top, EMPTY_BUFFER ).equals( top ) ) ;
- ByteBuffer all =
- t0.toEncodedBuffer( ByteBuffer.wrap( str0.getBytes() ) ) ;
+ ArrayList list = new ArrayList() ;
+ list.add( ByteBuffer.wrap( str0.getBytes() ) ) ;
+ ByteBuffer all = t0.toEncodedBuffer( list ) ;
ByteBuffer[] fragments = fragment( all, 10 ) ;
Tuple decoded = null ;
@@ -200,6 +204,16 @@
decoded = decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
assertTrue( decode( top, EMPTY_BUFFER ).equals( top ) ) ;
+
+ decoder.setDecoderMonitor(null) ;
+ decoded = decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
+ assertTrue( decoded.equals( t0 ) ) ;
+
+ tlvList.clear() ;
+ decoder.setDecoderMonitor(null) ;
+ decoder.setCallback(null) ;
+ decoded = decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
+ assertTrue(tlvList.isEmpty()) ;
}
@@ -229,10 +243,10 @@
String str1 = RandomStringUtils.randomAlphanumeric(20) ;
Tuple t1 = new Tuple( 3, str1.length() ) ;
Tuple top = new Tuple( 1, t0.size() + t1.size() ) ;
- Tuple decoded = decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
+ decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
// automatically set to top because after t1 is delivered top is
- decoded = decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
+ decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
assertTrue( decode( top, EMPTY_BUFFER ).equals( top ) ) ;
}
@@ -246,10 +260,10 @@
String str1 = RandomStringUtils.randomAlphanumeric(20) ;
Tuple t1 = new Tuple( 3, str1.length() ) ;
Tuple top = new Tuple( 1, t0.size() + t1.size() ) ;
- Tuple decoded = decode( t0, ByteBuffer.wrap( str0.getBytes() ) ) ;
+ decode( t0, ByteBuffer.wrap( str0.getBytes() ) );
// automatically set to top because after t1 is delivered top is
- decoded = decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
+ decode( t1, ByteBuffer.wrap( str1.getBytes() ) ) ;
assertTrue( decode( top, EMPTY_BUFFER ).equals( top ) ) ;
}
@@ -266,10 +280,10 @@
public void fatalError(StatefulDecoder decoder, Exception exception){}
- public void lengthDecoded(Tuple tlv, byte[] lengthData) { }
+ public void lengthDecoded( Tuple tlv ) { }
- public void tagDecoded(Tuple tlv, byte[] tagData) { }
+ public void tagDecoded( Tuple tlv ) { }
- public void warning(StatefulDecoder decoder, Exception exception) { }
+ public void warning( StatefulDecoder decoder, Exception exception ) { }
}
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/ConstructedTLVTests.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/ConstructedTLVTests.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/ConstructedTLVTests.java Fri Mar 26 14:55:37 2004
@@ -108,8 +108,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 1, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
// --------------------------------------------------------------------
@@ -132,8 +132,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 2, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
// --------------------------------------------------------------------
@@ -156,8 +156,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 3, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
decode( "00000000" ) ;
decode( "00000000" ) ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/DefaultMutableTupleNodeTest.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/DefaultMutableTupleNodeTest.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/DefaultMutableTupleNodeTest.java Fri Mar 26 14:55:37 2004
@@ -17,16 +17,10 @@
package org.apache.snickers.ber ;
-import java.nio.ByteBuffer ;
-import java.util.ArrayList ;
-import java.util.Enumeration ;
-
-import javax.swing.tree.MutableTreeNode ;
+import java.util.Collections;
+import java.util.Iterator ;
-import org.apache.commons.codec.stateful.DecoderCallback ;
-import org.apache.commons.codec.stateful.StatefulDecoder ;
-
-import org.apache.commons.lang.ArrayUtils ;
+import java.nio.ByteBuffer ;
/**
@@ -45,22 +39,6 @@
/*
- * Class to test for void DefaultMutableTupleNode()
- */
- public void testDefaultMutableTupleNode()
- {
- DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
- assertNotNull( node ) ;
- }
-
- /*
- * Class to test for void DefaultMutableTupleNode(Tuple)
- */
- public void testDefaultMutableTupleNodeTuple()
- {
- }
-
- /*
* Class to test for void insert(MutableTupleNode, int)
*/
public void testInsertMutableTupleNodeint()
@@ -92,9 +70,9 @@
parent.remove( (MutableTupleNode) node ) ;
assertEquals(0,parent.getChildCount()) ;
- parent.insert( (MutableTreeNode) node, 0 ) ;
+ parent.insert( node, 0 ) ;
assertEquals(1,parent.getChildCount()) ;
- parent.remove( (MutableTreeNode) node ) ;
+ parent.remove( node ) ;
assertEquals(0,parent.getChildCount()) ;
}
@@ -119,9 +97,9 @@
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
- assertEquals(parent, node.getParent()) ;
+ assertEquals(parent, node.getParentTupleNode()) ;
node.setParent((MutableTupleNode)new DefaultMutableTupleNode()) ;
- assertNotSame(parent, node.getParent()) ;
+ assertNotSame(parent, node.getParentTupleNode()) ;
}
/*
@@ -131,11 +109,11 @@
{
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
- parent.insert( (MutableTreeNode) node, 0 ) ;
- node.setParent( (MutableTreeNode) parent) ;
- assertEquals(parent, node.getParent()) ;
- node.setParent((MutableTreeNode)new DefaultMutableTupleNode()) ;
- assertNotSame(parent, node.getParent()) ;
+ parent.insert( node, 0 ) ;
+ node.setParent( parent) ;
+ assertEquals(parent, node.getParentTupleNode()) ;
+ node.setParent( new DefaultMutableTupleNode()) ;
+ assertNotSame( parent, node.getParentTupleNode() ) ;
}
public void testSetTuple()
@@ -153,7 +131,7 @@
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
assertSame(parent, node.getParentTupleNode()) ;
- assertSame(parent, node.getParent()) ;
+ assertSame(parent, node.getParentTupleNode()) ;
}
public void testGetChildren()
@@ -181,7 +159,7 @@
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
assertEquals( 0, parent.getIndex((MutableTupleNode)node));
- assertEquals( 0, parent.getIndex((MutableTreeNode)node));
+ assertEquals( 0, parent.getIndex(node));
}
public void testGetChildCount()
@@ -195,7 +173,7 @@
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
@@ -212,7 +190,7 @@
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
@@ -234,12 +212,12 @@
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
parent.setTuple( constructed ) ;
-
assertEquals(4, parent.size()) ;
-
ByteBuffer buf = ByteBuffer.allocate( 4 ) ;
parent.encode( buf ) ;
+
+ /*
final ArrayList list = new ArrayList() ;
TupleTreeDecoder decoder = new TupleTreeDecoder() ;
decoder.setCallback( new DecoderCallback(){
@@ -252,6 +230,7 @@
DefaultMutableTupleNode decoded = ( DefaultMutableTupleNode )
list.get(0);
assertEquals( decoded.getTuple(), parent.getTuple()) ;
+ */
}
public void testGetTuple()
@@ -266,15 +245,16 @@
{
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
+
DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
parent.insert( (MutableTupleNode) end, 0 ) ;
end.setParent( (MutableTupleNode) parent) ;
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
terminator.typeClass = TypeClass.UNIVERSAL ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
@@ -285,6 +265,7 @@
ByteBuffer buf = ByteBuffer.allocate( 9 ) ;
parent.encode( buf ) ;
+ /**
final ArrayList list = new ArrayList() ;
TupleTreeDecoder decoder = new TupleTreeDecoder() ;
decoder.setCallback( new DecoderCallback(){
@@ -297,6 +278,7 @@
DefaultMutableTupleNode decoded = ( DefaultMutableTupleNode )
list.get(0);
assertEquals( decoded.getTuple(), parent.getTuple()) ;
+ */
}
public void testEncode1() throws Exception
@@ -306,7 +288,7 @@
parent.insert( (MutableTupleNode) node, 0 ) ;
node.setParent( (MutableTupleNode) parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
@@ -317,6 +299,7 @@
ByteBuffer buf = ByteBuffer.allocate( 9 ) ;
parent.encode( buf ) ;
+ /*
final ArrayList list = new ArrayList() ;
TupleTreeDecoder decoder = new TupleTreeDecoder() ;
decoder.setCallback( new DecoderCallback(){
@@ -329,6 +312,7 @@
DefaultMutableTupleNode decoded = ( DefaultMutableTupleNode )
list.get(0);
assertEquals( decoded.getTuple(), parent.getTuple()) ;
+ */
}
public void testEncode2() throws Exception
@@ -343,7 +327,7 @@
Tuple middleTuple = new Tuple( 1, 3, TypeClass.APPLICATION ) ;
Tuple topTuple = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
- Tuple bottomTuple = new Tuple( 3, new byte[1]) ;
+ Tuple bottomTuple = new Tuple( 3, 1, true, TypeClass.APPLICATION ) ;
bottomTuple.typeClass = TypeClass.UNIVERSAL ;
top.setTuple( topTuple ) ;
@@ -355,6 +339,7 @@
ByteBuffer buf = ByteBuffer.allocate( 7 ) ;
top.encode( buf ) ;
+ /*
final ArrayList list = new ArrayList() ;
TupleTreeDecoder decoder = new TupleTreeDecoder() ;
decoder.setCallback( new DecoderCallback(){
@@ -367,6 +352,7 @@
DefaultMutableTupleNode decoded = ( DefaultMutableTupleNode )
list.get(0);
assertEquals( decoded.getTuple(), top.getTuple()) ;
+ */
}
@@ -382,7 +368,7 @@
Tuple middleTuple = new Tuple( 1, 3, TypeClass.APPLICATION ) ;
Tuple topTuple = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
- Tuple bottomTuple = new Tuple( 3, new byte[1]) ;
+ Tuple bottomTuple = new Tuple( 3, 1, true, TypeClass.APPLICATION ) ;
bottomTuple.typeClass = TypeClass.UNIVERSAL ;
top.setTuple( topTuple ) ;
@@ -409,7 +395,7 @@
Tuple middleTupleClone = new Tuple( 1, 3, TypeClass.APPLICATION ) ;
Tuple topTupleClone = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
- Tuple bottomTupleClone= new Tuple( 3, new byte[1]) ;
+ Tuple bottomTupleClone= new Tuple( 3, 1, true, TypeClass.APPLICATION ) ;
bottomTupleClone.typeClass = TypeClass.UNIVERSAL ;
topClone.setTuple( topTupleClone ) ;
@@ -434,7 +420,7 @@
Tuple middleTuple = new Tuple( 1, 3, TypeClass.APPLICATION ) ;
Tuple topTuple = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
- Tuple bottomTuple = new Tuple( 3, new byte[1]) ;
+ Tuple bottomTuple = new Tuple( 3, 1, true, TypeClass.APPLICATION ) ;
bottomTuple.typeClass = TypeClass.UNIVERSAL ;
top.setTuple( topTuple ) ;
@@ -463,7 +449,7 @@
Tuple middleTupleClone = new Tuple( 1, 3, TypeClass.APPLICATION ) ;
Tuple topTupleClone = new Tuple ( 2, 5, TypeClass.APPLICATION ) ;
- Tuple bottomTupleClone= new Tuple( 3, new byte[1]) ;
+ Tuple bottomTupleClone= new Tuple( 3, 1, true, TypeClass.APPLICATION ) ;
bottomTupleClone.typeClass = TypeClass.UNIVERSAL ;
topClone.setTuple( topTupleClone ) ;
@@ -483,11 +469,48 @@
*/
public void testToString()
{
+ DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
+ DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
+ DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
+ parent.insert( end, 0 ) ;
+ end.setParent( parent) ;
+ parent.insert( node, 0 ) ;
+ node.setParent( parent) ;
+
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
+ Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
+ terminator.typeClass = TypeClass.UNIVERSAL ;
+ parent.setTuple( constructed ) ;
+ node.setTuple( primitive ) ;
+ end.setTuple( terminator ) ;
+
+ assertNotNull( parent.toString() ) ;
}
- public void testPrintDepthFirst()
+ public void testSetTupleTupleList()
{
+ DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
+ DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
+ DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
+ parent.insert( end, 0 ) ;
+ end.setParent( parent) ;
+ parent.insert( node, 0 ) ;
+ node.setParent( parent) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
+ Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
+ terminator.typeClass = TypeClass.UNIVERSAL ;
+ parent.setTuple( constructed ) ;
+ node.setTuple( primitive, Collections.EMPTY_LIST ) ;
+ end.setTuple( terminator ) ;
+
+ assertTrue( node.getValueChunks().isEmpty() ) ;
+
+
+ node.addValueChunk( ByteBuffer.allocate( 3 ) ) ;
+ assertFalse( node.getValueChunks().isEmpty() ) ;
}
public void testChildren()
@@ -495,27 +518,27 @@
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
- parent.insert( (MutableTupleNode) end, 0 ) ;
- end.setParent( (MutableTupleNode) parent) ;
- parent.insert( (MutableTupleNode) node, 0 ) ;
- node.setParent( (MutableTupleNode) parent) ;
+ parent.insert( end, 0 ) ;
+ end.setParent( parent) ;
+ parent.insert( node, 0 ) ;
+ node.setParent( parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
terminator.typeClass = TypeClass.UNIVERSAL ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
- end.setTuple(terminator) ;
+ end.setTuple( terminator ) ;
- Enumeration list = parent.children() ;
+ Iterator list = parent.getChildren() ;
- assertEquals( node, list.nextElement() ) ;
- assertEquals( end, list.nextElement() ) ;
+ assertEquals( node, list.next() ) ;
+ assertEquals( end, list.next() ) ;
try
{
- list.nextElement() ;
+ list.next() ;
fail( "should never get here due to thrown exception" ) ;
}
catch( Throwable t )
@@ -529,115 +552,38 @@
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
- parent.insert( (MutableTupleNode) end, 0 ) ;
- end.setParent( (MutableTupleNode) parent) ;
- parent.insert( (MutableTupleNode) node, 0 ) ;
- node.setParent( (MutableTupleNode) parent) ;
+ parent.insert( end, 0 ) ;
+ end.setParent( parent) ;
+ parent.insert( node, 0 ) ;
+ node.setParent( parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
terminator.typeClass = TypeClass.UNIVERSAL ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
- end.setTuple(terminator) ;
-
- assertFalse( end.getAllowsChildren() ) ;
- assertFalse( node.getAllowsChildren() ) ;
- assertTrue( parent.getAllowsChildren() ) ;
- }
-
- public void testGetChildAt()
- {
+ end.setTuple( terminator ) ;
}
- /*
- * Class to test for int getIndex(TreeNode)
- */
- public void testGetIndexTreeNode()
- {
- }
-
- public void testGetParent()
- {
- }
-
- /*
- * Class to test for void insert(MutableTreeNode, int)
- */
- public void testInsertMutableTreeNodeint()
- {
- }
-
- public void testIsLeaf0()
- {
- DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
- assertTrue( parent.isLeaf() ) ;
- }
-
- public void testIsLeaf1()
- {
- DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
- parent.setTuple(new Tuple()) ;
- assertTrue( parent.isLeaf() ) ;
- }
-
- public void testIsLeaf2()
- {
- DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
- DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
- DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
- parent.insert( (MutableTupleNode) end, 0 ) ;
- end.setParent( (MutableTupleNode) parent) ;
- parent.insert( (MutableTupleNode) node, 0 ) ;
- node.setParent( (MutableTupleNode) parent) ;
-
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
- Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
- terminator.typeClass = TypeClass.UNIVERSAL ;
- parent.setTuple( constructed ) ;
- node.setTuple( primitive ) ;
- end.setTuple(terminator) ;
-
- assertFalse( parent.isLeaf() ) ;
- }
-
- /*
- * Class to test for void remove(MutableTreeNode)
- */
- public void testRemoveMutableTreeNode()
- {
- }
-
- public void testSetUserObject()
- {
- DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
- node.setUserObject( new Tuple() ) ;
- }
-
-
public void testAddFirst()
{
DefaultMutableTupleNode parent = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode node = new DefaultMutableTupleNode() ;
DefaultMutableTupleNode end = new DefaultMutableTupleNode() ;
parent.addFront( end ) ;
- end.setParent( (MutableTupleNode) parent) ;
+ end.setParent( parent) ;
parent.addFront( node ) ;
- node.setParent( (MutableTupleNode) parent) ;
+ node.setParent( parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
terminator.typeClass = TypeClass.UNIVERSAL ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
- end.setTuple(terminator) ;
-
+ end.setTuple( terminator ) ;
parent.toDepthFirstString() ;
- parent.analyze() ;
- assertFalse( parent.isLeaf() ) ;
}
@@ -651,14 +597,12 @@
parent.addLast( end ) ;
end.setParent( (MutableTupleNode) parent) ;
- Tuple primitive = new Tuple( 1, new byte[3] ) ;
+ Tuple primitive = new Tuple( 1, 3, true, TypeClass.APPLICATION ) ;
Tuple constructed = new Tuple ( 2, TypeClass.APPLICATION ) ;
- Tuple terminator = new Tuple( 0, true, ArrayUtils.EMPTY_BYTE_ARRAY) ;
+ Tuple terminator = new Tuple( 0, 0, true, TypeClass.UNIVERSAL ) ;
terminator.typeClass = TypeClass.UNIVERSAL ;
parent.setTuple( constructed ) ;
node.setTuple( primitive ) ;
end.setTuple(terminator) ;
-
- assertFalse( parent.isLeaf() ) ;
}
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/EncodeDecodeTests.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/EncodeDecodeTests.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/EncodeDecodeTests.java Fri Mar 26 14:55:37 2004
@@ -61,7 +61,6 @@
root = ( DefaultMutableTupleNode )
TupleTreeDecoder.treeDecode( ByteBuffer.wrap( snaccBytes ) ) ;
- //root.analyze() ;
if ( root == null )
{
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/MultiByteTagTests.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/MultiByteTagTests.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/MultiByteTagTests.java Fri Mar 26 14:55:37 2004
@@ -27,6 +27,17 @@
*/
public class MultiByteTagTests extends AbstractDecoderTestCase
{
+ /** precalculated left shift of 1 by 14 places */
+ private static final int BIT_13 = 1 << 14 ;
+ /** precalculated left shift of 1 by 16 places */
+ private static final int BIT_15 = 1 << 16 ;
+ /** precalculated left shift of 1 by 21 places */
+ private static final int BIT_20 = 1 << 21 ;
+ /** precalculated left shift of 1 by 24 places */
+ private static final int BIT_23 = 1 << 24 ;
+ /** precalculated left shift of 1 by 28 places */
+ private static final int BIT_27 = 1 << 28 ;
+
/**
* @param arg0
@@ -140,7 +151,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_13, tlv.id ) ;
+ assertEquals( BIT_13, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -159,7 +170,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "01111111" ) ;
- assertEquals( Tuple.BIT_13 - 1, tlv.id ) ;
+ assertEquals( BIT_13 - 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -182,7 +193,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_13 + 1, tlv.id ) ;
+ assertEquals( BIT_13 + 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -209,7 +220,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_20, tlv.id ) ;
+ assertEquals( BIT_20, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -232,7 +243,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "01111111" ) ;
- assertEquals( Tuple.BIT_20 - 1, tlv.id ) ;
+ assertEquals( BIT_20 - 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -259,7 +270,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_20 + 1, tlv.id ) ;
+ assertEquals( BIT_20 + 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -290,7 +301,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_27, tlv.id ) ;
+ assertEquals( BIT_27, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -317,7 +328,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "01111111" ) ;
- assertEquals( Tuple.BIT_27 - 1, tlv.id ) ;
+ assertEquals( BIT_27 - 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
@@ -348,7 +359,7 @@
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
tlv = decode( "00000001" ) ;
- assertEquals( Tuple.BIT_27 + 1, tlv.id ) ;
+ assertEquals( BIT_27 + 1, tlv.id ) ;
assertEquals( BERDecoderState.LENGTH, decoder.getState() ) ;
}
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SimplePrimitiveTLVTests.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SimplePrimitiveTLVTests.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SimplePrimitiveTLVTests.java Fri Mar 26 14:55:37 2004
@@ -57,8 +57,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 1, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
}
@@ -81,8 +81,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 1, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
// decode tag
@@ -102,8 +102,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 2, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
// decode tag
@@ -123,8 +123,8 @@
tlv = decode( "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 3, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 0x0055, 0x00ff & tlv.value.get( 0 ) ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 0x0055, 0x00ff & tlv.valueChunk.get( 0 ) ) ;
}
@@ -152,10 +152,10 @@
+ "01010101" + "01010101" + "01010101" ) ;
assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 1, tlvList.size() ) ;
- assertNotNull( tlv.value ) ;
- assertEquals( 7, tlv.value.capacity() ) ;
+ assertNotNull( tlv.valueChunk ) ;
+ assertEquals( 7, tlv.valueChunk.capacity() ) ;
- ByteBuffer value = tlv.value.duplicate() ;
+ ByteBuffer value = tlv.valueChunk.duplicate() ;
for ( int ii = 0 ; ii < 7; ii++ )
{
assertEquals( 0x0055, 0x00ff & value.get( ii ) ) ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SingleByteLengthTests.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SingleByteLengthTests.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/SingleByteLengthTests.java Fri Mar 26 14:55:37 2004
@@ -41,10 +41,10 @@
{
Tuple tlv = decode( "00000000" + "01000001" ) ;
assertEquals( 1, tlv.id ) ;
- assertEquals( 0, tlvList.size() ) ;
+ assertEquals( 1, tlvList.size() ) ;
assertEquals( true, tlv.isPrimitive ) ;
assertEquals( TypeClass.APPLICATION, tlv.typeClass ) ;
- assertEquals( BERDecoderState.VALUE, decoder.getState() ) ;
+ assertEquals( BERDecoderState.TAG, decoder.getState() ) ;
assertEquals( 0, tlv.length ) ;
}
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTest.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTest.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTest.java Fri Mar 26 14:55:37 2004
@@ -18,6 +18,8 @@
import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Collections;
import org.apache.commons.lang.ArrayUtils ;
import org.apache.commons.codec.binary.Binary ;
@@ -34,6 +36,18 @@
*/
public class TupleTest extends TestCase
{
+ /** precalculated left shift of 1 by 14 places */
+ private static final int BIT_13 = 1 << 14 ;
+ /** precalculated left shift of 1 by 16 places */
+ private static final int BIT_15 = 1 << 16 ;
+ /** precalculated left shift of 1 by 21 places */
+ private static final int BIT_20 = 1 << 21 ;
+ /** precalculated left shift of 1 by 24 places */
+ private static final int BIT_23 = 1 << 24 ;
+ /** precalculated left shift of 1 by 28 places */
+ private static final int BIT_27 = 1 << 28 ;
+
+ /** for convenience in handling nulls */
private static final ByteBuffer EMPTY_BUFFER =
ByteBuffer.wrap( ArrayUtils.EMPTY_BYTE_ARRAY ) ;
@@ -127,14 +141,14 @@
assertEquals( TypeClass.PRIVATE, t.getTypeClass() ) ;
assertEquals( false, t.isPrimitive() ) ;
assertEquals( Length.INDEFINATE, t.getLength() ) ;
- assertEquals( EMPTY_BUFFER, t.getValue() ) ;
+ assertEquals( EMPTY_BUFFER, t.getLastValueChunk() ) ;
t = new Tuple( 2, (TypeClass) null ) ;
assertEquals( 2, t.getId() ) ;
assertEquals( TypeClass.APPLICATION, t.getTypeClass() ) ;
assertEquals( false, t.isPrimitive() ) ;
assertEquals( Length.INDEFINATE, t.getLength() ) ;
- assertEquals( EMPTY_BUFFER, t.getValue() ) ;
+ assertEquals( EMPTY_BUFFER, t.getLastValueChunk() ) ;
}
public void testGetId()
@@ -226,13 +240,13 @@
public void testGetValue()
{
Tuple t = new Tuple() ;
- assertEquals( EMPTY_BUFFER, t.getValue() ) ;
+ assertEquals( EMPTY_BUFFER, t.getLastValueChunk() ) ;
byte[] bites = {1, 2, 3, 45} ;
- t.value = ByteBuffer.wrap( bites ) ;
- assertEquals( ByteBuffer.wrap( bites ), t.getValue() ) ;
+ t.valueChunk = ByteBuffer.wrap( bites ) ;
+ assertEquals( ByteBuffer.wrap( bites ), t.getLastValueChunk() ) ;
byte[] bites2 = {1, 2, 3, 45} ;
t.clear() ;
- assertEquals( EMPTY_BUFFER, t.getValue() ) ;
+ assertEquals( EMPTY_BUFFER, t.getLastValueChunk() ) ;
}
public void testClear()
@@ -263,10 +277,10 @@
t.clear() ;
assertEquals( TypeClass.APPLICATION, t.typeClass ) ;
- t.value = ByteBuffer.allocate( 3 ) ;
- assertNotNull( t.value ) ;
+ t.valueChunk = ByteBuffer.allocate( 3 ) ;
+ assertNotNull( t.valueChunk ) ;
t.clear() ;
- assertEquals( EMPTY_BUFFER, t.value ) ;
+ assertEquals( EMPTY_BUFFER, t.valueChunk ) ;
t.valueIndex = 12 ;
assertEquals( 12, t.valueIndex ) ;
@@ -281,9 +295,9 @@
public void testEqualsObject()
{
Tuple tnull0 = new Tuple() ;
- tnull0.value = null ;
+ tnull0.valueChunk = null ;
Tuple tnull1 = new Tuple() ;
- tnull1.value = null ;
+ tnull1.valueChunk = null ;
tnull0.equals( tnull1 ) ;
tnull1.equals( tnull1 ) ;
@@ -329,8 +343,8 @@
t1 = ( Tuple ) t0.clone() ;
assertTrue( t0.equals( t1 ) ) ;
- t0.value = ByteBuffer.allocate( 4 ) ;
- t1.value = null ;
+ t0.valueChunk = ByteBuffer.allocate( 4 ) ;
+ t1.valueChunk = null ;
// The buffer does not factor into equality
assertTrue( t0.equals( t1 ) ) ;
@@ -357,7 +371,7 @@
String binary ;
t = new Tuple( 0, 0 ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -365,7 +379,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 2, 0 ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -373,7 +387,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 30, 0 ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -381,7 +395,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 31, 0 ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -390,7 +404,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 0 ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -400,7 +414,9 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 127 ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.allocate( 127 ) ) ;
+ ArrayList list = new ArrayList() ;
+ list.add( ByteBuffer.allocate( 127 ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"01111111" +
@@ -410,7 +426,9 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 128 ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.allocate( 128 ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.allocate( 128 ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"10000000" +
@@ -421,7 +439,9 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 255 ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.allocate( 255 ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.allocate( 255 ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"11111111" +
@@ -432,7 +452,9 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 256 ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.allocate( 256 ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.allocate( 256 ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000001" +
@@ -452,7 +474,7 @@
String binary ;
t = new Tuple( 0, 0, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -460,7 +482,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 2, 0, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -468,7 +490,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 30, 0, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -476,7 +498,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 31, 0, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -485,7 +507,7 @@
, toAsciiString( encoded ) ) ;
t = new Tuple( 128, 0, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( EMPTY_BUFFER ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -496,7 +518,9 @@
data = new byte[1] ;
t = new Tuple( 128, 1, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.wrap( data ) ) ;
+ ArrayList list = new ArrayList() ;
+ list.add( ByteBuffer.wrap( data ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals(
"00000000" +
@@ -508,7 +532,9 @@
data = new byte[127] ;
t = new Tuple( 128, 127, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.wrap( data ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.wrap( data ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals( Binary.toAsciiString( data ) +
"01111111" +
@@ -519,7 +545,9 @@
data = new byte[128] ;
t = new Tuple( 128, 128, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.wrap( data ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.wrap( data ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals( Binary.toAsciiString( data ) +
"10000000" +
@@ -531,7 +559,9 @@
data = new byte[255] ;
t = new Tuple( 128, 255, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.wrap( data ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.wrap( data ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals( Binary.toAsciiString( data ) +
"11111111" +
@@ -543,7 +573,9 @@
data = new byte[256] ;
t = new Tuple( 128, 256, true, TypeClass.APPLICATION ) ;
- encoded = t.toEncodedBuffer( ByteBuffer.wrap( data ) ) ;
+ list.clear() ;
+ list.add( ByteBuffer.wrap( data ) ) ;
+ encoded = t.toEncodedBuffer( list ) ;
binary = toAsciiString( encoded ) ;
assertEquals( Binary.toAsciiString( data ) +
"00000001" +
@@ -602,7 +634,7 @@
assertEquals( "00000001" + "10000000" + "01111111", binary ) ;
bites = ByteBuffer.allocate( 3 ) ;
- t = new Tuple( Tuple.BIT_13 - 1, 0 ) ;
+ t = new Tuple( BIT_13 - 1, 0 ) ;
t.setTag( bites, 3 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -610,7 +642,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_13, 0 ) ;
+ t = new Tuple( BIT_13, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -619,7 +651,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_13 + 1, 0 ) ;
+ t = new Tuple( BIT_13 + 1, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -628,7 +660,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_20 - 1, 0 ) ;
+ t = new Tuple( BIT_20 - 1, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -637,7 +669,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_20, 0 ) ;
+ t = new Tuple( BIT_20, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -647,7 +679,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_20 + 1, 0 ) ;
+ t = new Tuple( BIT_20 + 1, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -657,7 +689,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_27 - 1, 0 ) ;
+ t = new Tuple( BIT_27 - 1, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -667,7 +699,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 6 ) ;
- t = new Tuple( Tuple.BIT_27, 0 ) ;
+ t = new Tuple( BIT_27, 0 ) ;
try
{
@@ -720,7 +752,7 @@
assertEquals( "00000001" + "10000000" + "01111111", binary ) ;
bites = ByteBuffer.allocate( 3 ) ;
- t = new Tuple( Tuple.BIT_13 - 1, 0 ) ;
+ t = new Tuple( BIT_13 - 1, 0 ) ;
t.setTag( bites, 3 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -728,7 +760,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_13, 0 ) ;
+ t = new Tuple( BIT_13, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -737,7 +769,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_13 + 1, 0 ) ;
+ t = new Tuple( BIT_13 + 1, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -746,7 +778,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( Tuple.BIT_20 - 1, 0 ) ;
+ t = new Tuple( BIT_20 - 1, 0 ) ;
t.setTag( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -755,7 +787,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_20, 0 ) ;
+ t = new Tuple( BIT_20, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -765,7 +797,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_20 + 1, 0 ) ;
+ t = new Tuple( BIT_20 + 1, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -775,7 +807,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( Tuple.BIT_27 - 1, 0 ) ;
+ t = new Tuple( BIT_27 - 1, 0 ) ;
t.setTag( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "01111111" +
@@ -785,7 +817,7 @@
"01111111", binary ) ;
bites = ByteBuffer.allocate( 6 ) ;
- t = new Tuple( Tuple.BIT_27, 0 ) ;
+ t = new Tuple( BIT_27, 0 ) ;
try
{
@@ -841,7 +873,7 @@
"10000010", binary ) ;
bites = ByteBuffer.allocate( 3 ) ;
- t = new Tuple( 30, Tuple.BIT_15 - 1 ) ;
+ t = new Tuple( 30, BIT_15 - 1 ) ;
t.setLength( bites, 3 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "11111111" +
@@ -849,7 +881,7 @@
"10000010", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_15 ) ;
+ t = new Tuple( 30, BIT_15 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -858,7 +890,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_15 + 1 ) ;
+ t = new Tuple( 30, BIT_15 + 1 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -867,7 +899,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_23 - 1 ) ;
+ t = new Tuple( 30, BIT_23 - 1 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "11111111" +
@@ -876,7 +908,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( 30, Tuple.BIT_23 ) ;
+ t = new Tuple( 30, BIT_23 ) ;
t.setLength( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -886,7 +918,7 @@
"10000100", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( 30, Tuple.BIT_23 + 1 ) ;
+ t = new Tuple( 30, BIT_23 + 1 ) ;
t.setLength( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -960,7 +992,7 @@
"10000010", binary ) ;
bites = ByteBuffer.allocate( 3 ) ;
- t = new Tuple( 30, Tuple.BIT_15 - 1 ) ;
+ t = new Tuple( 30, BIT_15 - 1 ) ;
t.setLength( bites, 3 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "11111111" +
@@ -968,7 +1000,7 @@
"10000010", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_15 ) ;
+ t = new Tuple( 30, BIT_15 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -977,7 +1009,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_15 + 1 ) ;
+ t = new Tuple( 30, BIT_15 + 1 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -986,7 +1018,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 4 ) ;
- t = new Tuple( 30, Tuple.BIT_23 - 1 ) ;
+ t = new Tuple( 30, BIT_23 - 1 ) ;
t.setLength( bites, 4 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "11111111" +
@@ -995,7 +1027,7 @@
"10000011", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( 30, Tuple.BIT_23 ) ;
+ t = new Tuple( 30, BIT_23 ) ;
t.setLength( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -1005,7 +1037,7 @@
"10000100", binary ) ;
bites = ByteBuffer.allocate( 5 ) ;
- t = new Tuple( 30, Tuple.BIT_23 + 1 ) ;
+ t = new Tuple( 30, BIT_23 + 1 ) ;
t.setLength( bites, 5 ) ;
binary = toAsciiString( bites ) ;
assertEquals( "00000001" +
@@ -1053,24 +1085,24 @@
t.id = 129 ;
assertEquals( 3, t.getTagLength() ) ;
- t.id = Tuple.BIT_13 - 1 ;
+ t.id = BIT_13 - 1 ;
assertEquals( 3, t.getTagLength() ) ;
- t.id = Tuple.BIT_13 ;
+ t.id = BIT_13 ;
assertEquals( 4, t.getTagLength() ) ;
- t.id = Tuple.BIT_13 + 100 ;
+ t.id = BIT_13 + 100 ;
assertEquals( 4, t.getTagLength() ) ;
- t.id = Tuple.BIT_20 - 1 ;
+ t.id = BIT_20 - 1 ;
assertEquals( 4, t.getTagLength() ) ;
- t.id = Tuple.BIT_20 ;
+ t.id = BIT_20 ;
assertEquals( 5, t.getTagLength() ) ;
- t.id = Tuple.BIT_20 + 100 ;
+ t.id = BIT_20 + 100 ;
assertEquals( 5, t.getTagLength() ) ;
- t.id = Tuple.BIT_27 - 1 ;
+ t.id = BIT_27 - 1 ;
assertEquals( 5, t.getTagLength() ) ;
- t.id = Tuple.BIT_27 ;
+ t.id = BIT_27 ;
try
{
@@ -1096,18 +1128,18 @@
t.length = 256 ;
assertEquals( 3, t.getLengthLength() ) ;
- t.length = Tuple.BIT_15 - 1 ;
+ t.length = BIT_15 - 1 ;
assertEquals( 3, t.getLengthLength() ) ;
- t.length = Tuple.BIT_15 ;
+ t.length = BIT_15 ;
assertEquals( 4, t.getLengthLength() ) ;
- t.length = Tuple.BIT_15 + 100 ;
+ t.length = BIT_15 + 100 ;
assertEquals( 4, t.getLengthLength() ) ;
- t.length = Tuple.BIT_23 - 1 ;
+ t.length = BIT_23 - 1 ;
assertEquals( 4, t.getLengthLength() ) ;
- t.length = Tuple.BIT_23 ;
+ t.length = BIT_23 ;
assertEquals( 5, t.getLengthLength() ) ;
- t.length = Tuple.BIT_23 + 100 ;
+ t.length = BIT_23 + 100 ;
assertEquals( 5, t.getLengthLength() ) ;
t.length = Integer.MAX_VALUE ;
Modified: incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTreeDecoderTest.java
==============================================================================
--- incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTreeDecoderTest.java (original)
+++ incubator/directory/snickers/branches/chunking/ber/src/test/org/apache/snickers/ber/TupleTreeDecoderTest.java Fri Mar 26 14:55:37 2004
@@ -20,6 +20,7 @@
import java.io.ByteArrayOutputStream ;
import java.nio.ByteBuffer ;
+import java.util.Collections ;
import org.apache.commons.codec.stateful.DecoderCallback ;
import org.apache.commons.codec.stateful.StatefulDecoder ;
@@ -59,24 +60,32 @@
decoder.setDecoderMonitor( new DecoderMonitorAdapter() ) ;
}
+
+ /** empty byte buffer used for convenience */
+ private static final ByteBuffer EMPTY_BUFFER =
+ ByteBuffer.wrap( ArrayUtils.EMPTY_BYTE_ARRAY ) ;
public void testTTD2() throws Exception
{
TupleTreeDecoder decoder = new TupleTreeDecoder() ;
- decoder.decode(ByteBuffer.wrap(
- new Tuple( 1, ArrayUtils.EMPTY_BYTE_ARRAY ).toEncodedArray())) ;
- decoder.decode( ByteBuffer.wrap( new Tuple( 1,
- ArrayUtils.EMPTY_BYTE_ARRAY ).toEncodedArray() ) ) ;
+ Tuple t = new Tuple( 1, 0, true, TypeClass.APPLICATION ) ;
+ ByteBuffer encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
+ decoder.decode( encoded ) ;
+
+ t = new Tuple( 1, 0, true, TypeClass.APPLICATION ) ;
+ encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
+ decoder.decode( encoded ) ;
}
public void testTTD4() throws Exception
{
- byte[] bites = new Tuple( 1, ArrayUtils.EMPTY_BYTE_ARRAY ).toEncodedArray() ;
- byte[] shorter = new byte[bites.length-1] ;
- System.arraycopy( bites, 0, shorter, 0, shorter.length ) ;
-
- assertNull( TupleTreeDecoder.treeDecode( ByteBuffer.wrap( shorter ) ) );
+ Tuple t = new Tuple( 1, 0, true, TypeClass.APPLICATION ) ;
+ ByteBuffer encoded = t.toEncodedBuffer( Collections.EMPTY_LIST ) ;
+
+ ByteBuffer shorter = ByteBuffer.allocate( encoded.capacity() - 1 ) ;
+ shorter.put( ( ByteBuffer ) encoded.limit( shorter.limit() - 1 ) ) ;
+ assertNull( TupleTreeDecoder.treeDecode( shorter ) ) ;
}
@@ -106,8 +115,6 @@
StringBuffer buf = new StringBuffer() ;
root.printDepthFirst( buf, 0 ) ;
System.out.println( "tuple tlv tree =\n" + buf.toString() ) ;
- TupleTreeAnalyzer analyzer = new TupleTreeAnalyzer( root ) ;
- analyzer.startup() ;
}