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/15 23:34:30 UTC

svn commit: rev 9498 - in incubator/directory/snickers/branches/refactoring: . src src/docbook src/images xdocs xdocs/ber-codec xdocs/stub-compiler

Author: akarasulu
Date: Mon Mar 15 14:34:30 2004
New Revision: 9498

Added:
   incubator/directory/snickers/branches/refactoring/maven.xml
   incubator/directory/snickers/branches/refactoring/project.properties
   incubator/directory/snickers/branches/refactoring/src/
   incubator/directory/snickers/branches/refactoring/src/docbook/
   incubator/directory/snickers/branches/refactoring/src/images/
   incubator/directory/snickers/branches/refactoring/xdocs/
   incubator/directory/snickers/branches/refactoring/xdocs/ber-codec/
   incubator/directory/snickers/branches/refactoring/xdocs/index.xml
   incubator/directory/snickers/branches/refactoring/xdocs/navigation.xml
   incubator/directory/snickers/branches/refactoring/xdocs/stub-compiler/
Modified:
   incubator/directory/snickers/branches/refactoring/project.xml
Log:
o Basically broke down the BERDecoder into separate stateful decoders which
  are used by the BERDecoder when it switches its state from reading a tag,
  length and on to a value.  The code is much easier to handle and several
  old bugs are no longer present.  The decoder overall works like a champion.

o Clover shows green all over and the code has been cleaned up along with
  internal documentation - javadocs.  

o Added equals comparison functionality to TLV TupleNodes.

We're ready to merge back this code now to the main trunk.




Added: incubator/directory/snickers/branches/refactoring/maven.xml
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/branches/refactoring/maven.xml	Mon Mar 15 14:34:30 2004
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="ISO-8859-1"?> 
+  
+<project 
+  default="buildall" 
+  xmlns:j="jelly:core" 
+  xmlns:u="jelly:util" 
+  xmlns:ant="jelly:ant" 
+  xmlns:maven="jelly:maven" 
+  xmlns:m="maven" 
+  xmlns:deploy="deploy"
+  >
+  
+  <preGoal name="site">
+    <attainGoal name="docbook:transform"/>
+  </preGoal>
+  
+  <postGoal name="site">
+    <attainGoal name="server:copy-images"/>
+    <attainGoal name="subproject:collectdocs"/>
+  </postGoal>
+
+  <goal name="subproject:collectdocs">
+    <ant:copy 
+      toDir="../../sitedocs/trunk/sitedocs/target/docs/subprojects/snickers">
+      
+      <ant:fileSet dir="${basedir}/target/docs">
+        <ant:include name="**"/>
+      </ant:fileSet>
+    </ant:copy>
+  </goal>
+
+  <goal name="server:copy-images">
+    <copy toDir="target/docs/images">
+      <fileSet dir="${basedir}/src/images">
+        <include name="*.gif"/>
+      </fileSet>
+    </copy>
+  </goal>
+  
+  <goal name="buildall" description="Build All Jar Files And Intall">
+    <ant:delete dir="${basedir}/target/classes"/>
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="**/project.xml" excludes="./project.xml" goals="jar:install" 
+      banner="Building" ignoreFailures="false"/>
+  </goal>
+  
+  <goal name="deployall" description="Deploy All Jar Files And Intall">
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="**/project.xml" excludes="./project.xml" goals="jar:deploy" 
+      banner="Deploying" ignoreFailures="false"/>
+  </goal>
+  
+  <goal name="sitedocs" description="Builds the entire site documentation">
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="**/project.xml" excludes="./project.xml" goals="site" 
+      banner="site" ignoreFailures="false"/>
+  </goal>
+  
+  <goal name="clean-all" description="Clean all sandbox projects">
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="**/project.xml" excludes="./project.xml" goals="cleanall" 
+      banner="Clean All" 
+      ignoreFailures="true"/>
+    <attainGoal name="clean"/>
+    <delete dir="home"/>
+  </goal>
+  
+  <goal name="eclipseall" 
+    description="Generate eclipse descriptors for all projects">
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="*/project.xml" goals="clean" banner="Clean All" 
+      ignoreFailures="true"/>
+  </goal>
+  
+  <goal name="eclipse-all" description="Create all eclipse projects">
+    <maven:reactor basedir="${basedir}" postProcessing="true" 
+      includes="*/project.xml" goals="eclipse" banner="Eclipse Project" 
+      ignoreFailures="true"/>
+  </goal>
+  
+  <!-- ========================================================================
+    Experimentation section starts here!
+    ======================================================================= -->
+  
+  <goal name="components">
+    <j:import inherit="true" uri="components.xml"/>  
+  </goal>
+    
+</project>

Added: incubator/directory/snickers/branches/refactoring/project.properties
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/branches/refactoring/project.properties	Mon Mar 15 14:34:30 2004
@@ -0,0 +1,23 @@
+maven.javadoc.private=true
+maven.javadoc.customtags=tag1 tag2
+
+tag1.name=todo
+tag1.description=To Do:
+tag1.enabled=true
+tag1.scope=all
+
+tag2.name=task
+tag2.description=Task:
+tag2.enabled=false
+tag2.scope=all
+
+maven.license.licenseFile=../../../LICENSE.txt
+#maven.clover.instrument.tests=true
+maven.junit.fork=true
+maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory
+maven.license.licenseFile=../../../LICENSE.txt
+maven.xdoc.date=left
+maven.ui.banner.background=#FFFFFF
+maven.xdoc.includeProjectDocumentation=no
+maven.xdoc.poweredby.image=
+maven.xdoc.jsl = file:/${basedir}/../../../sitedocs/trunk/sitedocs/src/etc/site.jsl

Modified: incubator/directory/snickers/branches/refactoring/project.xml
==============================================================================
--- incubator/directory/snickers/branches/refactoring/project.xml	(original)
+++ incubator/directory/snickers/branches/refactoring/project.xml	Mon Mar 15 14:34:30 2004
@@ -1,17 +1,26 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
 <project>
-    <groupId>directory</groupId>
-    <id>snickers</id>
+    <groupId>incubator-directory</groupId>
     <name>Snickers ASN.1 Tools</name>
     <package>org.apache.snickers</package>
 
+    <organization>
+      <name>The Apache Incubator</name>
+      <url>http://incubator.apache.org</url>
+      <logo>/images/apache-incubator-logo.png</logo>
+    </organization>
+
     <inceptionYear>2003</inceptionYear>
-    <url>http://directory.apache.org/snickers</url>
+    <package>org.apache.eve</package>
+    
+    <logo>/images/apache-directory-logo.png</logo>
+    <url>http://incubator.apache.org/directory</url>
+
     <issueTrackingUrl>
-      http://nagoya.apache.org/scarab/servlet/scarab
+      http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400
     </issueTrackingUrl>
-    <siteAddress>directory.apache.org</siteAddress>
+    <siteAddress>incubator.apache.org</siteAddress>
     <siteDirectory>/home/akarasulu/public_html</siteDirectory>
     <distributionDirectory>
       /home/akarasulu/public_html/dist
@@ -19,15 +28,15 @@
 
     <repository>
       <connection>
-          scm:svn:http://cvs.apache.org/repos/asf/incubator/directory/snickers/trunk
+          scm:svn:http://cvs.apache.org/repos/asf/incubator/directory/snickers/trunk/${module.path}
       </connection>
 
       <url>
-        http://cvs.apache.org/viewcvs.cgi/incubator/directory/snickers/trunk?root=Apache-SVN
+        http://cvs.apache.org/viewcvs.cgi/incubator/directory/snickers/trunk/${module.path}/?root=Apache-SVN
       </url>
       
       <developerConnection>
-        http://cvs.apache.org/repos/asf/incubator/directory/snickers/trunk
+        http://cvs.apache.org/repos/asf/incubator/directory/snickers/trunk/${module.path}
       </developerConnection>
     </repository>
   
@@ -119,9 +128,9 @@
 
     <licenses>
       <license>
-        <name>Apache 1.1 License</name>
+        <name>Apache 2.0 License</name>
         <url>
-http://cvs.apache.org/viewcvs.cgi/incubator/directory/LICENSE.txt?rev=1369&amp;root=Apache-SVN&amp;view=markup
+          http://cvs.apache.org/viewcvs.cgi/incubator/directory/LICENSE.txt?rev=1369&amp;root=Apache-SVN&amp;view=markup
         </url>
         <distribution>repo</distribution>
       </license>

Added: incubator/directory/snickers/branches/refactoring/xdocs/index.xml
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/branches/refactoring/xdocs/index.xml	Mon Mar 15 14:34:30 2004
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document>
+  <properties>
+    <author email="akarasulu@apache.org">Alex Karasulu</author>
+    <title>Snickers Subproject</title>
+  </properties> 
+
+  <body>
+    <section name="Introduction">
+      <p>
+        While writing a SEDA based LDAP server in Java using NIO selectable 
+        channels it occurred to us that blocking until a full message is 
+        decoded was a big waste.  It undermines the benefits of using selectors,
+        uses extra threads and requires much more memory.  Actually if we have
+        to collect all of a message before we can decode it with a blocking 
+        decoder then we're in trouble.  A little over twice the memory footprint
+        of each message must be used to decode BER encoded PDUs.  Similar yet 
+        different inefficiencies exist with the other direction as well.
+      </p>
+      
+      <p>
+        Looking at the ASN.1 landscape there really aren't that many free open
+        source ASN.1 BER codecs out there written for Java.  Actually there are
+        none with our performance requirements.  So we started to build one 
+        while weaning ourselves off of Snacc4J which was mysteriously removed 
+        from the Open Source world by IBM.
+      </p>
+      
+      <p>
+        Snickers hence is a high performance replacement optimized for use with
+        selectable channels and non blocking IO.  It is composed of several 
+        runtime APIs and will eventually provide tools to generate Java stubs
+        for various ASN.1 type definitions.  In a sense Snickers is a Snacc4J
+        replacement with a lot more to keep ASN.1 based server implementors 
+        satisfied.
+      </p>
+    </section>
+    
+    <section name="Overview">
+      <p>
+        There are a few sub subprojects associated with snickers.  Some have 
+        yet to begin and others may exist in a form that satisfies up until now
+        the needs of the Eve directory server.  As time passes these holes will
+        be filled in.
+      </p>
+      
+      <table>
+        <tr><th>Subproject</th><th>Description</th></tr>
+        
+        <tr>
+          <td><a href="ber-codec/index.html">BER Codec</a></td>
+          <td>
+            ASN.1 data structures are encoded onto and decoded off of the wire
+            using these codecs.  They deal with simple Tag Value Length or TLV 
+            tuples which is the lowest means to interpret BER encoded data.  
+            Other more complex codec implementations are also present within 
+            this project.  They build on top of the simple BER/TLV codecs to
+            decode and populate Java ASN.1 stubs or encode and serialize them 
+            onto BER streams.
+          </td>
+        </tr>
+        
+        <tr>
+          <td><a href="stub-compiler/index.html">Java Stub Compiler</a></td>
+          <td>
+            Java interfaces and implementations are generated to represent 
+            complex ASN.1 data types according to an ASN.1 specification for 
+            the datatype.  Factory classes for each data type are also generated
+            as peer classes to encode and decode entire interfaces.  The 
+            Snickers BER Codec runtime uses these factories, and interfaces to 
+            encode and decode protocol data types on the wire.  As a matter of 
+            fact these factories really are designed as higher level Stateful 
+            decoder's and encoders.
+          </td>
+        </tr>
+      </table>
+    </section>
+  </body>
+</document>

Added: incubator/directory/snickers/branches/refactoring/xdocs/navigation.xml
==============================================================================
--- (empty file)
+++ incubator/directory/snickers/branches/refactoring/xdocs/navigation.xml	Mon Mar 15 14:34:30 2004
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project>
+
+ <title>Apache Directory Project</title>
+
+ <body>
+
+    <links>
+      <item name="Apache" href="http://apache.org/"/>
+      <item name="Directory" href="/index.html"/>
+      <item name="Eve" href="/subprojects/eve/index.html"/>
+      <item name="LDAP" href="/subprojects/ldap/index.html"/>
+      <item name="Naming" href="/subprojects/naming/index.html"/>
+      <item name="Janus" href="/subprojects/janus/index.html"/>
+      <item name="Snickers" href="/subprojects/snickers/index.html"/>
+      <item name="Sitedocs" href="/subprojects/sitedocs/index.html"/>
+    </links>
+
+    <menu name="About Directory">
+      <item name="Overview" href="/index.html"/>
+      <item name="Community" href="/community/index.html"/>
+      <item name="Latest News" href="/news.html"/>
+      <item name="Subprojects" href="/subprojects/index.html">
+        <item name="Eve" href="/subprojects/eve/index.html"/>
+        <item name="LDAP" href="/subprojects/ldap/index.html"/>
+        <item name="Janus" href="/subprojects/janus/index.html"/>
+        <item name="Naming" href="/subprojects/naming/index.html"/>
+        <item name="Snickers" href="/subprojects/snickers/index.html"/>
+        <item name="Sitedocs" href="/subprojects/sitedocs/index.html"/>
+      </item>
+      <item name="Documentation" href="/doc/index.html"/>
+    </menu>
+
+    <menu name="Resources">
+      <item name="IRC" href="/irc.html"/>
+      <item name="Jira" href=
+        "http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10400"/>
+      <item name="Wiki" href="http://wiki.apache.org/directory"/>
+      <item name="Lists" href="/mailing-lists.html"/>
+      <item name="License" href="/license.html"/>
+      <item name="Sandbox" href="/sandbox/index.html"/>
+      <item name="Downloads" href="/download.cgi"/>
+      <item name="Subversion" href="/svn.html"/>
+      <item name="Related Projects" href="/related/index.html"/>
+    </menu>
+ </body>
+
+</project>