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();
- }
- }
-}