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/12 08:22:09 UTC
svn commit: rev 9382 - in incubator/directory/snickers/trunk/ber: . src/java/org/apache/snickers/ber
Author: akarasulu
Date: Thu Mar 11 23:22:08 2004
New Revision: 9382
Added:
incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java
incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java
incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TupleNode.java
Modified:
incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/Tuple.java
incubator/directory/snickers/trunk/ber/todo.txt
Log:
setting up for tlv tree generation
Added: incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/DefaultMutableTupleNode.java Thu Mar 11 23:22:08 2004
@@ -0,0 +1,190 @@
+/*
+ * 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 ;
+
+
+import java.util.Iterator ;
+import java.util.ArrayList ;
+import java.util.Collections ;
+
+import org.apache.commons.lang.NotImplementedException;
+
+
+/**
+ * The default mutable tuple node.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">
+ * Apache Directory Project</a>
+ * @version $Rev$
+ */
+public class DefaultMutableTupleNode implements MutableTupleNode
+{
+ private Tuple tuple ;
+ private ArrayList children ;
+ private MutableTupleNode parent ;
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#insert(
+ * org.apache.snickers.ber.MutableTupleNode, int)
+ */
+ public void insert( MutableTupleNode child, int index )
+ {
+ children.add( index, child ) ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#remove(int)
+ */
+ public void remove( int index )
+ {
+ children.remove( index ) ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#remove(
+ * org.apache.snickers.ber.MutableTupleNode)
+ */
+ public void remove( MutableTupleNode node )
+ {
+ children.remove( node ) ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#removeFromParent()
+ */
+ public void removeFromParent()
+ {
+ parent.remove( this ) ;
+ parent = null ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.MutableTupleNode#setParent(
+ * org.apache.snickers.ber.MutableTupleNode)
+ */
+ public void setParent( MutableTupleNode newParent )
+ {
+ parent.remove( this ) ;
+ newParent.insert( this, 0 ) ;
+ parent = newParent ;
+ }
+
+
+ /* (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 getParent()
+ {
+ return parent ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#children()
+ */
+ public Iterator children()
+ {
+ return Collections.unmodifiableList( children ).iterator() ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#getChildAt()
+ */
+ public TupleNode getChildAt( int index )
+ {
+ return ( TupleNode ) children.get( index ) ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#getIndex(
+ * org.apache.snickers.ber.TupleNode)
+ */
+ public int getIndex( TupleNode node )
+ {
+ return children.indexOf( node ) ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#getChildCount()
+ */
+ public int getChildCount()
+ {
+ return children.size() ;
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#size()
+ */
+ public int size()
+ {
+ if ( tuple.isPrimitive() )
+ {
+ return tuple.size() ;
+ }
+ else
+ {
+ int size = tuple.size() ;
+
+ for ( int ii = 0; ii < children.size(); ii++ )
+ {
+ TupleNode node = ( TupleNode ) children.get( ii ) ;
+ size += node.getTuple().size() ;
+ }
+
+ return size ;
+ }
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.apache.snickers.ber.TupleNode#getTuple()
+ */
+ public Tuple getTuple()
+ {
+ return tuple ;
+ }
+
+
+ /**
+ * Depth first generation of this tlv tuple node's encoded image.
+ *
+ * @see org.apache.snickers.ber.TupleNode#encode()
+ */
+ public byte[] encode()
+ {
+ throw new NotImplementedException( "STUB" ) ;
+ }
+}
Added: incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/MutableTupleNode.java Thu Mar 11 23:22:08 2004
@@ -0,0 +1,70 @@
+/*
+ * 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 ;
+
+
+/**
+ * A mutable TupleNode used for building TLV Tuple trees.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">
+ * Apache Directory Project</a>
+ * @version $Rev$
+ */
+public interface MutableTupleNode extends TupleNode
+{
+ /**
+ * Adds child to the receiver at index.
+ *
+ * @param child
+ * @param index
+ */
+ void insert( MutableTupleNode child, int index ) ;
+
+ /**
+ * Removes the child at index from the receiver.
+ *
+ * @param index
+ */
+ void remove( int index ) ;
+
+ /**
+ * Removes node from the receiver.
+ *
+ * @param node
+ */
+ void remove( MutableTupleNode node ) ;
+
+ /**
+ * Removes the receiver from its parent.
+ */
+ void removeFromParent() ;
+
+ /**
+ * Sets the parent of the receiver to newParent.
+ *
+ * @param newParent
+ */
+ void setParent( MutableTupleNode newParent ) ;
+
+ /**
+ * Resets the Tuple of the receiver object.
+ *
+ * @param t
+ */
+ void setTuple( Tuple t ) ;
+
+}
Modified: incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/Tuple.java
==============================================================================
--- incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/Tuple.java (original)
+++ incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/Tuple.java Thu Mar 11 23:22:08 2004
@@ -262,7 +262,14 @@
*/
public int size()
{
- return getTagLength() + getLengthLength() + length ;
+ if ( this.length == BERDecoder.INDEFINATE )
+ {
+ return getTagLength() + getLengthLength() ;
+ }
+ else
+ {
+ return getTagLength() + getLengthLength() + length ;
+ }
}
Added: incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TupleNode.java
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/trunk/ber/src/java/org/apache/snickers/ber/TupleNode.java Thu Mar 11 23:22:08 2004
@@ -0,0 +1,40 @@
+/*
+ * 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 ;
+
+
+import java.util.Iterator ;
+
+
+/**
+ * A TLV Tuple tree node.
+ *
+ * @author <a href="mailto:directory-dev@incubator.apache.org">
+ * Apache Directory Project</a>
+ * @version $Rev$
+ */
+public interface TupleNode
+{
+ TupleNode getParent() ;
+ Iterator children() ;
+ TupleNode getChildAt( int index ) ;
+ int getIndex( TupleNode node ) ;
+ int getChildCount() ;
+ int size() ;
+ Tuple getTuple() ;
+ byte[] encode() ;
+}
Modified: incubator/directory/snickers/trunk/ber/todo.txt
==============================================================================
--- incubator/directory/snickers/trunk/ber/todo.txt (original)
+++ incubator/directory/snickers/trunk/ber/todo.txt Thu Mar 11 23:22:08 2004
@@ -3,8 +3,6 @@
T O D O L I S T
=================
-* Create a TupleNode interface to nest TLV's to easily generate constructed
- TLV's.
* Write a TupleNode tree generator that implements the decoder callback. This
is where the DOM like functionality comes in. We want tuple node
@@ -43,7 +41,7 @@
* It will be worth while taking a good look at the way digester works to get
some ideas here.
-* Also we need to need the Sample Neufeld papper to make sure we're decoding
+* Also we need to read the Sample Neufeld papper to make sure we're decoding
appropriately.