You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rw...@apache.org on 2009/02/05 01:41:32 UTC

svn commit: r740957 - in /commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp: ThreadContainer.java Threader.java

Author: rwinston
Date: Thu Feb  5 00:41:31 2009
New Revision: 740957

URL: http://svn.apache.org/viewvc?rev=740957&view=rev
Log:
NET-251 Make Threader top-level

Added:
    commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/ThreadContainer.java
Modified:
    commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/Threader.java

Added: commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/ThreadContainer.java
URL: http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/ThreadContainer.java?rev=740957&view=auto
==============================================================================
--- commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/ThreadContainer.java (added)
+++ commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/ThreadContainer.java Thu Feb  5 00:41:31 2009
@@ -0,0 +1,80 @@
+package org.apache.commons.net.nntp;
+
+/**
+ * A placeholder utility class, used for constructing a tree of Threadables
+ * Original implementation by Jamie Zawinski. 
+ * See the Grendel source for more details <a href="http://lxr.mozilla.org/mozilla/source/grendel/sources/grendel/view/Threader.java#511">here</a>
+ * Threadable objects
+ * @author Rory Winston <rw...@apache.org>
+ */
+class ThreadContainer {
+    Threadable threadable;
+    ThreadContainer parent;
+    ThreadContainer prev;
+    ThreadContainer next;
+    ThreadContainer child;
+
+    /**
+     * 
+     * @param container
+     * @return true if child is under self's tree. Detects circular references
+     */
+    boolean findChild(ThreadContainer target) {
+        if (child == null)
+            return false;
+
+        else if (child == target)
+            return true;
+        else
+            return child.findChild(target);
+    }
+
+    // Copy the ThreadContainer tree structure down into the underlying Threadable objects
+    // (Make the Threadable tree look like the ThreadContainer tree)
+    void flush() {
+        if (parent != null && threadable == null)
+            throw new RuntimeException("no threadable in " + this.toString());
+
+        parent = null;
+
+        if (threadable != null)
+            threadable.setChild(child == null ? null : child.threadable);
+
+        if (child != null) {
+            child.flush();
+            child = null;
+        }
+
+        if (threadable != null)
+            threadable.setNext(next == null ? null : next.threadable);
+
+        if (next != null) {
+            next.flush();
+            next = null;
+        }
+
+        threadable = null;
+    }
+
+    /**
+     * Reverse the entire set of children
+     *
+     */
+    void reverseChildren() {
+        if (child != null) {
+            ThreadContainer kid, prev, rest;
+            for (prev = null, kid = child, rest = kid.next;
+                kid != null;
+                prev = kid,
+                    kid = rest,
+                    rest = (rest == null ? null : rest.next))
+                kid.next = prev;
+
+            child = prev;
+
+            // Do it for the kids 
+            for (kid = child; kid != null; kid = kid.next)
+                kid.reverseChildren();
+        }
+    }
+}

Modified: commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/Threader.java
URL: http://svn.apache.org/viewvc/commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/Threader.java?rev=740957&r1=740956&r2=740957&view=diff
==============================================================================
--- commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/Threader.java (original)
+++ commons/proper/net/branches/NET_2_0/src/main/java/org/apache/commons/net/nntp/Threader.java Thu Feb  5 00:41:31 2009
@@ -400,82 +400,3 @@
 
     }
 }
-
-/**
- * A placeholder utility class, used for constructing a tree of Threadables
- * Originall implementation by Jamie Zawinski. 
- * See the Grendel source for more details <a href="http://lxr.mozilla.org/mozilla/source/grendel/sources/grendel/view/Threader.java#511">here</a>
- * Threadable objects
- * @author Rory Winston <rw...@checkfree.com>
- */
-class ThreadContainer {
-    Threadable threadable;
-    ThreadContainer parent;
-    ThreadContainer prev;
-    ThreadContainer next;
-    ThreadContainer child;
-
-    /**
-     * 
-     * @param container
-     * @return true if child is under self's tree. Detects circular references
-     */
-    boolean findChild(ThreadContainer target) {
-        if (child == null)
-            return false;
-
-        else if (child == target)
-            return true;
-        else
-            return child.findChild(target);
-    }
-
-    // Copy the ThreadContainer tree structure down into the underlying Threadable objects
-    // (Make the Threadable tree look like the ThreadContainer tree)
-    void flush() {
-        if (parent != null && threadable == null)
-            throw new RuntimeException("no threadable in " + this.toString());
-
-        parent = null;
-
-        if (threadable != null)
-            threadable.setChild(child == null ? null : child.threadable);
-
-        if (child != null) {
-            child.flush();
-            child = null;
-        }
-
-        if (threadable != null)
-            threadable.setNext(next == null ? null : next.threadable);
-
-        if (next != null) {
-            next.flush();
-            next = null;
-        }
-
-        threadable = null;
-    }
-
-    /**
-     * Reverse the entire set of children
-     *
-     */
-    void reverseChildren() {
-        if (child != null) {
-            ThreadContainer kid, prev, rest;
-            for (prev = null, kid = child, rest = kid.next;
-                kid != null;
-                prev = kid,
-                    kid = rest,
-                    rest = (rest == null ? null : rest.next))
-                kid.next = prev;
-
-            child = prev;
-
-            // Do it for the kids 
-            for (kid = child; kid != null; kid = kid.next)
-                kid.reverseChildren();
-        }
-    }
-}