<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/com/jbidwatcher/util/xml/XMLInterface.java</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -99,8 +99,6 @@ and close to the end of the auction).
     THIS ALSO CAN BE VERY, VERY EXPENSIVE!
 
 ----------------------------------------------------------------------
-* After payment, dutch auctions subtract out from the 'available' list, and the user seems to no longer have won the listing.
-
 * Add to watch list:
   http://cgi1.ebay.com/ws/eBayISAPI.dll?ViewItemMakeTrack&amp;item=6047388445
   http://cgi1.ebay.com/ws/eBayISAPI.dll?ViewItemMakeTrack&amp;item=5104953681</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -68,7 +68,6 @@ your.user.id.or.password.is.incorrect=(?ms).*Your user ID or password is incorre
 view.original.listing=View the original listing
 
 ebayServer.bidHost=offer.ebay.co.uk
-ebayServer.dutchRequestHost=offer.ebay.co.uk
 ebayServer.signInPage=https://signin.ebay.co.uk/ws2/eBayISAPI.dll?SignIn
 ebayServer.bidderNamesHost=cgi6.ebay.co.uk
 ebayServer.buyRequest=http://offer.ebay.co.uk/ws/eBayISAPI.dll?MfcISAPICommand=BinConfirm&amp;fb=1&amp;co_partnerid=</diff>
      <filename>ebay_co_uk.properties</filename>
    </modified>
    <modified>
      <diff>@@ -57,7 +57,6 @@ ebayServer.timePrequel2=At the tone, the time will be...
 ebayServer.warningPage=(?i)(Buying.Reminder|Safe.Trading.Tips)
 ebayServer.feedback=Feedback:
 ebayServer.viewHost=cgi.ebay.com
-ebayServer.detectionHost=^(cgi\\.ebay\\.|cgi\\.tw\\.ebay\\.|cgi\\.es\\.ebay\\.).*$
 your.information.has.been.verified=(?ms).*Your information has been verified.*
 mature.audiences.accepted=(?ms).*You may now view these pages.*
 mature.audiences.disallowed.outside.the.us=(?ms).*not to allow access to the Mature Audiences category outside the US.*
@@ -70,7 +69,6 @@ your.user.id.or.password.is.incorrect=(?ms).*Your user ID or password is incorre
 view.original.listing=View the original listing
 
 ebayServer.bidHost=offer.ebay.com
-ebayServer.dutchRequestHost=offer.ebay.com
 ebayServer.signInPage=https://signin.ebay.com/ws2/eBayISAPI.dll?SignIn
 ebayServer.bidderNamesHost=cgi6.ebay.com
 ebayServer.buyRequest=http://offer.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=BinConfirm&amp;fb=1&amp;co_partnerid=</diff>
      <filename>ebay_com.properties</filename>
    </modified>
    <modified>
      <diff>@@ -2,10 +2,8 @@ ebayServer.browseHost=cgi.
 ebayServer.protocol=http://
 ebayServer.file=/ws/eBayISAPI.dll
 ebayServer.V3file=/ws/eBayISAPI.dll
-ebayServer.V3WS3File=/ws3/eBayISAPI.dll
 ebayServer.viewCmd=ViewItem&amp;
 ebayServer.viewCGI=item=
-ebayServer.viewDutch=?ViewBidsDutchHighBidder&amp;item=
 ebayServer.searchURL2=&amp;srchdesc=y&amp;category0=&amp;ebaytag1=ebayctry&amp;ebaytag1code=0&amp;SortProperty=MetaEndSort&amp;SortOrder=%5Ba%5D&amp;st=0&amp;maxRecordsPerPage=100
 ebayServer.searchURLNoDesc=&amp;srchdesc=n&amp;category0=&amp;ebaytag1=ebayctry&amp;ebaytag1code=0&amp;SortProperty=MetaEndSort&amp;SortOrder=%5Ba%5D&amp;st=0&amp;maxRecordsPerPage=100
 ebayServer.bidCmd=MfcISAPICommand=MakeBid</diff>
      <filename>jbidwatcher.properties</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,7 @@ import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.xml.XMLParseException;
 import com.jbidwatcher.util.xml.XMLElement;
 import com.jbidwatcher.util.xml.XMLSerializeSimple;
+import com.jbidwatcher.util.xml.XMLInterface;
 import com.jbidwatcher.ui.util.OptionUI;
 import com.jbidwatcher.util.http.Http;
 import com.jbidwatcher.util.Constants;
@@ -24,12 +25,7 @@ public class UpdaterEntry extends XMLSerializeSimple {
   protected String _description = &quot;&quot;; //  Optional
   protected String _url = &quot;&quot;;
   protected boolean _valid;
-  protected boolean _hasConfigChanges;
-  protected ArrayList&lt;XMLElement&gt; configChanges;
-
-  //  For creating, then filling in later, especially when loading from a
-  //  file, instead of remotely.
-  public UpdaterEntry() { }
+  protected ArrayList&lt;XMLInterface&gt; mConfigChanges;
 
   public UpdaterEntry(String packageName, String updateFrom) {
     StringBuffer loadedUpdate;
@@ -98,14 +94,14 @@ public class UpdaterEntry extends XMLSerializeSimple {
         if(valid) {
           String strStamp = curElement.getProperty(&quot;STAMP&quot;);
           if(strStamp == null) {
-            if(configChanges == null) configChanges = new ArrayList&lt;XMLElement&gt;(5);
-            configChanges.add(curElement);
+            if(mConfigChanges == null) mConfigChanges = new ArrayList&lt;XMLInterface&gt;(5);
+            mConfigChanges.add(curElement);
           } else {
             long stamp = Long.parseLong(strStamp);
             long last = Long.parseLong(JConfig.queryConfiguration(&quot;updates.lastConfig&quot;, &quot;0&quot;));
             if(stamp &gt; last) {
-              if(configChanges == null) configChanges = new ArrayList&lt;XMLElement&gt;(5);
-              configChanges.add(curElement);
+              if(mConfigChanges == null) mConfigChanges = new ArrayList&lt;XMLInterface&gt;(5);
+              mConfigChanges.add(curElement);
             }
           }
         }
@@ -136,7 +132,7 @@ public class UpdaterEntry extends XMLSerializeSimple {
   }
 
   public boolean hasConfigurationUpdates() {
-    return configChanges != null;
+    return mConfigChanges != null;
   }
 
   public void applyConfigurationUpdates() {
@@ -144,7 +140,7 @@ public class UpdaterEntry extends XMLSerializeSimple {
     boolean cfgChanged = false;
     long lastStamp = Long.parseLong(JConfig.queryConfiguration(&quot;updates.lastConfig&quot;, &quot;0&quot;));
 
-    for (XMLElement cfg : configChanges) {
+    for (XMLInterface cfg : mConfigChanges) {
       String type = cfg.getProperty(&quot;TYPE&quot;, &quot;config&quot;);
       if (type.equals(&quot;message&quot;)) {
         if (alert == null) {</diff>
      <filename>src/com/jbidwatcher/UpdaterEntry.java</filename>
    </modified>
    <modified>
      <diff>@@ -57,7 +57,7 @@ public class Upgrader {
     return schemaInfo.getDB();
   }
 
-  private static boolean tableExists(Database db, Statement s, String tableName) throws SQLException {
+  private static boolean tableExists(Statement s, String tableName) throws SQLException {
     ResultSet rs = s.getConnection().getMetaData().getTables(null, null, tableName, null);
     boolean result = rs.next();
     rs.close();
@@ -72,8 +72,8 @@ public class Upgrader {
        */
       Statement mS = db.getStatement();
 
-      boolean schema_info_exists = tableExists(db, mS, &quot;schema_info&quot;);
-      if(!schema_info_exists) schema_info_exists = tableExists(db, mS, &quot;SCHEMA_INFO&quot;);
+      boolean schema_info_exists = tableExists(mS, &quot;schema_info&quot;);
+      if(!schema_info_exists) schema_info_exists = tableExists(mS, &quot;SCHEMA_INFO&quot;);
 
       if(!schema_info_exists) {
         runFile(db, mS, &quot;/jbidwatcher.sql&quot;);</diff>
      <filename>src/com/jbidwatcher/Upgrader.java</filename>
    </modified>
    <modified>
      <diff>@@ -42,7 +42,7 @@ import java.util.*;
 
 /**
  * @file   JBidWatch.java
- * @author Morgan Schweers &lt;cyberfox@users.sourceforge.net&gt;
+ * @author Morgan Schweers &lt;cyberfox@jbidwatcher.com&gt;
  * @date   Fri Oct 11 17:54:21 2002
  *
  * @brief The startup class, that prepares the UI, and starts all the</diff>
      <filename>src/com/jbidwatcher/app/JBidWatch.java</filename>
    </modified>
    <modified>
      <diff>@@ -37,14 +37,12 @@ class MacFriendlyFrame extends JFrame implements com.apple.mrj.MRJQuitHandler, c
   /**
    * @brief Constructs a new window frame, with all the sorted tables,
    * scroll bars, drag and drop targets, menu &amp; header bar, and status
-   * line.
+   * line.  Returns a completed frame, suitable for displaying as the primary UI of the program.
    *
    * @param title - The frame title.
    * @param myFrameAdapter - The adapter to listen to mouse events.
    * @param iconURL - The URL of the icon to associate with the frame.
    * @param tabManager - The Tab Manager to display within the frame.
-   * 
-   * @return A completed frame, suitable for displaying as the primary UI of the program.
    */
   public MacFriendlyFrame(String title, JMouseAdapter myFrameAdapter, URL iconURL, JTabManager tabManager) {
     super(title);</diff>
      <filename>src/com/jbidwatcher/app/MacFriendlyFrame.java</filename>
    </modified>
    <modified>
      <diff>@@ -65,7 +65,6 @@ public abstract class AuctionActionImpl implements AuctionAction {
   public int getResult() { return mResult; }
   public boolean isSuccessful() {
     return (mResult == AuctionServerInterface.BID_WINNING ||
-            mResult == AuctionServerInterface.BID_DUTCH_CONFIRMED ||
             mResult == AuctionServerInterface.BID_SELFWIN);
   }
 
@@ -82,10 +81,6 @@ public abstract class AuctionActionImpl implements AuctionAction {
         bidResultString = &quot;Bidding apparently failed, as the auction cannot be bid on anymore (probably ended)!&quot;;
         JConfig.increment(&quot;stats.bid.too_late&quot;);
         break;
-      case com.jbidwatcher.auction.AuctionServerInterface.BID_DUTCH_CONFIRMED:
-        bidResultString = &quot;Your dutch bid was confirmed, and you are in the list of high bidders!&quot;;
-        JConfig.increment(&quot;stats.bid.success&quot;);
-        break;
       case AuctionServerInterface.BID_ERROR_BANNED:
         bidResultString = &quot;Your bid failed, as you are disallowed from bidding on this seller's items.&quot;;
         JConfig.increment(&quot;stats.bid.banned&quot;);</diff>
      <filename>src/com/jbidwatcher/auction/AuctionActionImpl.java</filename>
    </modified>
    <modified>
      <diff>@@ -15,8 +15,8 @@ import com.jbidwatcher.util.queue.MQFactory;
 import com.jbidwatcher.util.db.ActiveRecord;
 import com.jbidwatcher.util.db.Table;
 import com.jbidwatcher.util.xml.XMLElement;
+import com.jbidwatcher.util.xml.XMLInterface;
 
-import java.io.FileNotFoundException;
 import java.io.File;
 import java.text.MessageFormat;
 import java.util.*;
@@ -84,27 +84,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
     return mSnipe;
   }
 
-  public static class AuctionComparator implements Comparator&lt;AuctionEntry&gt;
-  {
-    /**
-     * @param o1 - The first auction entry.
-     * @param o2 - The second auction entry.
-     * @return -1 if o1 &lt; o2, 0 if o1 == o2, 1 if o1 &gt; o2.
-     * @brief Compare two auction objects for ordering by end-date.
-     */
-    public int compare(AuctionEntry o1, AuctionEntry o2) {
-      if (o1 == null &amp;&amp; o2 == null) return 0;
-      if (o1 == null) return -1;
-      if (o2 == null) return 1;
-
-      int result = o1.getEndDate().compareTo(o2.getEndDate());
-      if (result == 0) {
-        result = o1.compareTo(o2);
-      }
-      return result;
-    }
-  }
-
   /** All the auction-independant information like high bidder's name,
    * seller's name, etc...  This is directly queried when this object
    * is queried about any of those fields.
@@ -161,11 +140,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   private Currency mCancelSnipeBid = null;
 
   /**
-   * How many items are to be sniped on, but were cancelled?
-   */
-  private int mCancelSnipeQuant =1;
-
-  /**
    * What AuctionServer is responsible for handling this
    * AuctionEntry's actions?
    */
@@ -607,18 +581,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   }
 
   /**
-   * @brief Determine how long before the auction-end is the default
-   * snipe set to fire?
-   *
-   * @return The number of milliseconds prior to auction end that a
-   * snipe should fire.
-   */
-  public static long getDefaultSnipeTime() {
-    sDefaultSnipeAt = getGlobalSnipeTime();
-    return sDefaultSnipeAt;
-  }
-
-  /**
    * @brief Set how long before auctions are complete to fire snipes
    * for any auction using the default snipe timer.
    *
@@ -662,7 +624,7 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   public void updateHighBid() {
     int numBidders = getNumBidders();
 
-    if (numBidders &gt; 0 /* &amp;&amp; isOutbid() */) {
+    if (numBidders &gt; 0 || isFixed()) {
       getServer().updateHighBid(this);
     }
   }
@@ -701,14 +663,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   }
 
   /**
-   * @brief Determine if we're a high bidder on a multi-item ('dutch')
-   * auction.
-   */
-  public void checkDutchHighBidder() {
-    setWinning(getServer().isHighDutch(this));
-  }
-
-  /**
    * @brief Set the flags if the current user is the seller in this auction.
    */
   private void checkSeller() {
@@ -1017,7 +971,7 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
    *
    * @param inXML - The XMLElement that contains the items to load.
    */
-  public void fromXML(XMLElement inXML) {
+  public void fromXML(XMLInterface inXML) {
     String inID = inXML.getProperty(&quot;ID&quot;, null);
     if(inID != null) {
       mAuction = new AuctionInfo();
@@ -1082,14 +1036,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   public Currency getCancelledSnipe() { return mCancelSnipeBid; }
 
   /**
-   * @brief Return the quantity that the snipe bid was for, before it
-   * was cancelled.
-   *
-   * @return - A number of items (for dutch only) that were to be bid on.
-   */
-  public int getCancelledSnipeQuantity() { return mCancelSnipeQuant; }
-
-  /**
    * Cancel the snipe and clear the multisnipe setting.  This is used for
    * user-driven snipe cancellations, and errors like the listing going away.
    *
@@ -1107,7 +1053,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
       setLastStatus(&quot;Cancelling snipe.&quot;);
       if(after_end) {
         mCancelSnipeBid = getSnipe().getAmount();
-        mCancelSnipeQuant = getSnipe().getQuantity();
       }
     }
   }
@@ -1154,7 +1099,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
     try {
       updateHighBid();
       checkHighBidder();
-      if(isDutch()) checkDutchHighBidder();
     } catch(Exception e) {
       JConfig.log().handleException(&quot;Unexpected exception during high bidder check.&quot;, e);
     }
@@ -1232,18 +1176,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
     getServer().setSnipe(this);
   }
 
-  /** @brief Actually bid on a single item for a given price.
-   *
-   * Also called by the snipe() function, to actually bid.
-   *
-   * @param bid - The amount of money to bid on 1 of this item.
-   *
-   * @return The result of the bid attempt.
-   */
-  public int bid(Currency bid) {
-    return( bid(bid, 1) );
-  }
-
   /**
    * @brief Bid a given price on an arbitrary number of a particular item.
    *
@@ -1633,7 +1565,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
 
   public String getSeller() { return getAuction().getSellerName(); }
   public String getHighBidder() { return getAuction().getHighBidder(); }
-  public String getHighBidderEmail() { return getAuction().getHighBidderEmail(); }
   public String getTitle() { return getAuction().getTitle(); }
 
   public Date getStartDate() {
@@ -1660,7 +1591,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   public boolean isReserveMet() { return getAuction().isReserveMet(); }
   public boolean isPrivate() { return getAuction().isPrivate(); }
   public boolean isFixed() { return getAuction().isFixedPrice(); }
-  public boolean isOutbid() { return getAuction().isOutbid(); }
 
   public StringBuffer getContent() { return getAuction().getContent(); }
   public File getContentFile() { return getAuction().getContentFile(); }
@@ -1697,14 +1627,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
     return ship != null &amp;&amp; !ship.isNull();
   }
 
-  public String getURL() {
-    return getServer().getStringURLFromItem(getAuction().getIdentifier());
-  }
-
-  public StringBuffer getBody() throws FileNotFoundException {
-    return getServer().getAuction(StringTools.getURLFromString(getURL()));
-  }
-
   /**
    * Is the auction deleted on the server?
    *
@@ -1934,13 +1856,13 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   public static final String newCol = &quot;&lt;/td&gt;&lt;td&gt;&quot;;
   public static final String endRow = &quot;&lt;/td&gt;&lt;/tr&gt;&quot;;
 
+  // TODO -- Extract this crap out to a EntryHTMLBuilder class, which gets instantiated with an AuctionEntry object.
   public String buildInfoHTML() {
-    return buildInfoHTML(false, false);
+    return buildInfoHTML(false);
   }
 
-  public String buildInfoHTML(boolean finalize, boolean forRSS) {
+  public String buildInfoHTML(boolean forRSS) {
     String prompt = &quot;&quot;;
-    if(finalize) prompt = &quot;&lt;html&gt;&lt;body&gt;&quot;;
 
     if(forRSS) {
       prompt += &quot;&lt;b&gt;&quot; + StringTools.stripHigh(getTitle()) + &quot;&lt;/b&gt; (&quot; + getIdentifier() + &quot;)&lt;br&gt;&quot;;
@@ -1953,7 +1875,7 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
       if (forRSS) {
         try {
           InetAddress thisIp = InetAddress.getLocalHost();
-          prompt += newRow + &quot;&lt;img src=\&quot;http://&quot; + thisIp.getHostAddress() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, &quot;9099&quot;) + &quot;/&quot; + getIdentifier() + &quot;.jpg\&quot;&gt;&quot; + newCol + &quot;&lt;table&gt;&quot;;
+          prompt += newRow + &quot;&lt;img src=\&quot;http://&quot; + thisIp.getHostAddress() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, Constants.DEFAULT_SERVER_PORT_STRING) + &quot;/&quot; + getIdentifier() + &quot;.jpg\&quot;&gt;&quot; + newCol + &quot;&lt;table&gt;&quot;;
           addedThumbnail = true;
         } catch (UnknownHostException e) {
           //  Couldn't find THIS host?!?  Perhaps that means we're not online?
@@ -1966,9 +1888,6 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
     }
     prompt = buildInfoBody(prompt, addedThumbnail);
 
-    if(finalize) {
-      prompt += &quot;&lt;/html&gt;&quot;;
-    }
   	return(prompt);
   }
 
@@ -2071,8 +1990,7 @@ public class AuctionEntry extends ActiveRecord implements Comparable&lt;AuctionEntr
   public static XMLElement retrieveAuctionXML(String identifier) {
     AuctionEntry ae = AuctionEntry.construct(identifier);
     if (ae != null) {
-      if (ae.isDutch()) ae.checkDutchHighBidder();
-      return ae.toXML();
+      return ae.toXML(); //  TODO -- Check high bidder (a separate request).
     }
 
     return null;</diff>
      <filename>src/com/jbidwatcher/auction/AuctionEntry.java</filename>
    </modified>
    <modified>
      <diff>@@ -73,9 +73,6 @@ public class AuctionInfo extends ActiveRecord
   }
 
   protected Seller mSeller;
-
-  protected static final sun.misc.BASE64Decoder b64dec = new sun.misc.BASE64Decoder();
-  protected static final sun.misc.BASE64Encoder b64enc = new sun.misc.BASE64Encoder();
   protected GZip mLoadedPage = null;
 
   /**
@@ -86,36 +83,6 @@ public class AuctionInfo extends ActiveRecord
     setTranslationTable(mKeys);
   }
 
-  /** 
-   * @brief Construct a somewhat complete AuctionInfo object with all
-   * the important values set.
-   * 
-   * @param auctionTitle - The title of the auction.
-   * @param auctionSeller - The seller's username for the auction.
-   * @param auctionHighBidder - The current high bidder, if any.
-   * @param auctionCurBid - The current/lowest/starting bid.
-   * @param auctionStart - The start time for the auction (if available).
-   * @param auctionEnd - The end time for the auction.
-   * @param auctionBidCount - The number of bids that have been placed so far.
-   */
-  protected AuctionInfo(String auctionTitle, String auctionSeller, String auctionHighBidder,
-                     Currency auctionCurBid, Date auctionStart, Date auctionEnd, int auctionBidCount) {
-    setTranslationTable(mKeys);
-    setTitle(auctionTitle.trim());
-    setHighBidder(auctionHighBidder.trim());
-    setSellerName(auctionSeller.trim());
-
-    setStart(auctionStart);
-    setEnd(auctionEnd);
-
-    setCurBid(auctionCurBid);
-    setNumBids(auctionBidCount);
-  }
-
-  public Record getMap() {
-    return getBacking();
-  }
-
   protected String[] infoTags = { &quot;title&quot;, &quot;seller&quot;, &quot;highbidder&quot;, &quot;bidcount&quot;, &quot;start&quot;, &quot;end&quot;,
                                 &quot;currently&quot;, &quot;dutch&quot;, &quot;reserve&quot;, &quot;private&quot;, &quot;content&quot;,
                                 &quot;shipping&quot;, &quot;insurance&quot;, &quot;buynow&quot;, &quot;usprice&quot;, &quot;fixed&quot;, &quot;minimum&quot;,
@@ -407,7 +374,7 @@ public class AuctionInfo extends ActiveRecord
   public String getIdentifier() { return getString(&quot;identifier&quot;); }
   public String getTitle() { return getString(&quot;title&quot;); }
   public String getHighBidder() { return getString(&quot;highBidder&quot;); }
-  public String getHighBidderEmail() { return getString(&quot;highBidderEmail&quot;); }
+//  public String getHighBidderEmail() { return getString(&quot;highBidderEmail&quot;); }
   public String getItemLocation() { return getString(&quot;itemLocation&quot;, &quot;&quot;); }
 
   public Currency getCurBid() { return getMonetary(&quot;curBid&quot;); }
@@ -435,7 +402,6 @@ public class AuctionInfo extends ActiveRecord
   protected boolean isPrivate() { return getBoolean(&quot;isPrivate&quot;); }
   protected boolean isFixedPrice() { return getBoolean(&quot;fixed_price&quot;); }
   boolean isReserveMet() { return getBoolean(&quot;reserveMet&quot;); }
-  boolean isOutbid() { return getBoolean(&quot;outbid&quot;); }
   protected boolean hasPaypal() { return getBoolean(&quot;paypal&quot;); }
   boolean hasThumb() { return getBoolean(&quot;has_thumbnail&quot;); }
   boolean isInsuranceOptional() { return getBoolean(&quot;insurance_optional&quot;, true); }
@@ -457,6 +423,7 @@ public class AuctionInfo extends ActiveRecord
     refreshSeller();
     return mSeller;
   }
+
   public String getPositiveFeedbackPercentage() {
     refreshSeller();
     if (mSeller != null) return mSeller.getPositivePercentage();
@@ -493,7 +460,7 @@ public class AuctionInfo extends ActiveRecord
   public void setIdentifier(String id) { setString(&quot;identifier&quot;, id); }
   public void setHighBidder(String highBidder) { setString(&quot;highBidder&quot;, highBidder); }
   protected void setTitle(String title) { setString(&quot;title&quot;, title); }
-  protected void setHighBidderEmail(String highBidderEmail) { setString(&quot;highBidderEmail&quot;, highBidderEmail); }
+//  protected void setHighBidderEmail(String highBidderEmail) { setString(&quot;highBidderEmail&quot;, highBidderEmail); }
   protected void setItemLocation(String itemLocation) { setString(&quot;itemLocation&quot;, itemLocation); }
 
   protected void setInsuranceOptional(boolean insuranceOptional) { setBoolean(&quot;insuranceOptional&quot;, insuranceOptional); }
@@ -514,7 +481,6 @@ public class AuctionInfo extends ActiveRecord
   protected void setQuantity(int quantity) { setInteger(&quot;quantity&quot;, quantity); }
   protected void setNumBids(int numBids) { setInteger(&quot;numBids&quot;, numBids); }
 
-  protected void setDutch(boolean dutch) { setBoolean(&quot;isDutch&quot;, dutch); }
   protected void setReserve(boolean isReserve) { setBoolean(&quot;isReserve&quot;, isReserve); }
   protected void setPrivate(boolean isPrivate) { setBoolean(&quot;private&quot;, isPrivate); }
   protected void setReserveMet(boolean reserveMet) { setBoolean(&quot;reserveMet&quot;, reserveMet); }</diff>
      <filename>src/com/jbidwatcher/auction/AuctionInfo.java</filename>
    </modified>
    <modified>
      <diff>@@ -19,7 +19,7 @@ public interface AuctionServerInterface {
   int BID_ERROR_OUTBID=3;
   int BID_WINNING=4;
   int BID_SELFWIN=5;
-  int BID_DUTCH_CONFIRMED=6;
+//  int BID_DUTCH_CONFIRMED=6;  --  This is obsolete.
   int BID_ERROR_MULTI=7;
   int BID_ERROR_TOO_LOW=8;
   int BID_ERROR_ENDED=9;
@@ -113,8 +113,6 @@ public interface AuctionServerInterface {
 
   boolean isCurrentUser(String checkUser);
 
-  boolean isHighDutch(EntryInterface entry);
-
   void updateHighBid(AuctionEntry eEntry);
 
   String stripId(String source);</diff>
      <filename>src/com/jbidwatcher/auction/AuctionServerInterface.java</filename>
    </modified>
    <modified>
      <diff>@@ -60,10 +60,6 @@ public class AuctionSnipe extends ActiveRecord
     return snipe;
   }
 
-  public String saveDB() {
-    return super.saveDB();
-  }
-
   private static Table sDB = null;
   protected static String getTableName() { return &quot;snipes&quot;; }
 </diff>
      <filename>src/com/jbidwatcher/auction/AuctionSnipe.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ import com.jbidwatcher.util.queue.TimerHandler;
 import com.jbidwatcher.util.Comparison;
 import com.jbidwatcher.util.UpdateBlocker;
 import com.jbidwatcher.util.Task;
-import com.jbidwatcher.util.xml.XMLElement;
+import com.jbidwatcher.util.xml.XMLInterface;
 
 /**
  *  This class shouldn't have a 'TableSorter', it should defer to some
@@ -25,7 +25,6 @@ import com.jbidwatcher.util.xml.XMLElement;
  *  class could build it's own atm and tablesorter.  --  BUGBUG
  */
 public class Auctions implements TimerHandler.WakeupProcess {
-  boolean _selling = false;
   boolean _complete = false;
 //  private volatile TableSorter _tSort;
   private AuctionList mList;
@@ -43,33 +42,10 @@ public class Auctions implements TimerHandler.WakeupProcess {
     return _name;
   }
 
-  public void setSelling() { _selling = true; }
-  public boolean isSelling() { return _selling; }
   public void setComplete() { _complete = true; }
   public boolean isCompleted() { return _complete; }
 
   /**
-   * Search for an AuctionEntry in our tables, given it's identifier.
-   * 
-   * @param whatIdentifier - The identifier to search for.
-   * 
-   * @return - The AuctionEntry, if it's found, or null if none was found.
-   */
-  public EntryInterface getEntry(final String whatIdentifier) {
-    return mList.find(new Comparison() {
-      public boolean match(Object o) {
-        if (o instanceof EntryInterface) {
-          EntryInterface ae = (EntryInterface) o;
-          if (whatIdentifier.equals(ae.getIdentifier())) {
-            return true;
-          }
-        }
-        return false;
-      }
-    });
-  }
-
-  /**
    * Add an AuctionEntry that has already been created, denying
    * previously deleted items.
    * 
@@ -81,34 +57,6 @@ public class Auctions implements TimerHandler.WakeupProcess {
     return aeNew != null &amp;&amp; !DeletedEntry.exists(aeNew.getIdentifier());
   }
 
-  /**
-   * Verify that the auction provided exists.
-   * 
-   * @param auctionId - The auction ID to search for.
-   * 
-   * @return - true if the auction is in the list, false otherwise.
-   */
-  public boolean verifyEntry(String auctionId) {
-    EntryInterface ae = getEntry(auctionId);
-
-    return (ae != null);
-  }
-
-  /** 
-   * Verify that the auction provided exists.
-   * 
-   * @param ae - The auction entry to search for.
-   * 
-   * @return - true if the auction is in the list, false otherwise.
-   */
-  public boolean verifyEntry(final EntryInterface ae) {
-    Object result = mList.find(new Comparison() {
-      public boolean match(Object o) { //noinspection ObjectEquality
-        return o == ae; }
-    });
-    return result != null;
-  }
-
   /** 
    * For display during updates, we want the title and potentially the
    * comment, to display all that in the status bar while we're
@@ -135,9 +83,8 @@ public class Auctions implements TimerHandler.WakeupProcess {
    * completed), and then let the user know we finished.
    * 
    * @param ae - The auction to update.
-   * @return - true if the auction was moved to another category, false otherwise.
    */
-  private boolean doUpdate(AuctionEntry ae) {
+  private void doUpdate(AuctionEntry ae) {
     String titleWithComment = getTitleAndComment(ae);
 
     if(!ae.isComplete() || ae.isUpdateForced()) {
@@ -145,9 +92,9 @@ public class Auctions implements TimerHandler.WakeupProcess {
       ae.setUpdating();
       MQFactory.getConcrete(&quot;redraw&quot;).enqueue(ae.getIdentifier());
       Thread.yield();
-      XMLElement before = ae.toXML();
+      XMLInterface before = ae.toXML();
       ae.update();
-      XMLElement after = ae.toXML();
+      XMLInterface after = ae.toXML();
       ae.clearUpdating();
       if (!(after.toString().equals(before.toString()))) {
         MQFactory.getConcrete(&quot;upload&quot;).enqueue(ae.getIdentifier());
@@ -157,7 +104,6 @@ public class Auctions implements TimerHandler.WakeupProcess {
       MQFactory.getConcrete(&quot;redraw&quot;).enqueue(ae.getIdentifier());
       MQFactory.getConcrete(&quot;Swing&quot;).enqueue(&quot;Done updating &quot; + Auctions.getTitleAndComment(ae));
     }
-    return false;
   }
 
   /** 
@@ -171,12 +117,13 @@ public class Auctions implements TimerHandler.WakeupProcess {
    */
   private boolean doNextUpdate() {
     AuctionEntry result = mList.find(new Comparison() {
-      public boolean match(Object o) { if(o == null) return false; return ((AuctionEntry) o).checkUpdate(); }
+      public boolean match(Object o) { return o != null &amp;&amp; ((AuctionEntry) o).checkUpdate();  }
     });
     if (result != null) {
       boolean forcedUpdate = result.isUpdateForced();
 
-      if(doUpdate(result) || forcedUpdate) {
+      doUpdate(result);
+      if(forcedUpdate) {
         MQFactory.getConcrete(&quot;redraw&quot;).enqueue(getName());
       }
     }</diff>
      <filename>src/com/jbidwatcher/auction/Auctions.java</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,6 @@ package com.jbidwatcher.auction;
 import com.jbidwatcher.util.html.JHTML;
 import com.jbidwatcher.util.http.CookieJar;
 import com.jbidwatcher.util.Currency;
-import com.jbidwatcher.auction.AuctionEntry;
 
 /**
  * Created by IntelliJ IDEA.
@@ -14,7 +13,7 @@ import com.jbidwatcher.auction.AuctionEntry;
  * Abstraction of the bidding interface, so it can be replaced with other bidding code, if desired.
  */
 public interface Bidder {
-  JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr, int inQuant) throws com.jbidwatcher.auction.BadBidException;
+  JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr) throws com.jbidwatcher.auction.BadBidException;
 
   int buy(AuctionEntry ae, int quantity);
 </diff>
      <filename>src/com/jbidwatcher/auction/Bidder.java</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ package com.jbidwatcher.auction;
  * User: Morgan
  * Date: Jan 14, 2009
  * Time: 4:10:53 AM
- * To change this template use File | Settings | File Templates.
+ * All 'entry' objects have 'getIdentifier' as a method.
  */
 public interface EntryInterface extends Snipeable {
   /**</diff>
      <filename>src/com/jbidwatcher/auction/EntryInterface.java</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,12 @@
 package com.jbidwatcher.auction;
 
-import com.jbidwatcher.auction.server.AuctionServer;
-
 /**
  * Created by IntelliJ IDEA.
  * User: Morgan
  * Date: Jun 29, 2008
  * Time: 11:59:12 PM
- * To change this template use File | Settings | File Templates.
+ *
+ * The resolver really exists to abstract the AuctionServerManager's key function: getting the default server.
  */
 public interface Resolver {
   AuctionServerInterface getServer();</diff>
      <filename>src/com/jbidwatcher/auction/Resolver.java</filename>
    </modified>
    <modified>
      <diff>@@ -98,7 +98,7 @@ public class Snipe {
     //  Get Bid Key/Form
     try {
       JConfig.increment(&quot;stats.presniped&quot;);
-      mBidForm = mBidder.getBidForm(mCJ, mEntry, mEntry.getSnipeAmount(), mEntry.getSnipeQuantity());
+      mBidForm = mBidder.getBidForm(mCJ, mEntry, mEntry.getSnipeAmount());
     } catch (BadBidException bbe) {
       String result = getSnipeResult(bbe.getResult(), mEntry.getTitle(), mEntry);
       mEntry.setLastStatus(result);
@@ -116,9 +116,6 @@ public class Snipe {
     if(snipeResult == AuctionServerInterface.BID_WINNING || snipeResult == AuctionServerInterface.BID_SELFWIN) {
       snipeOutput = &quot;Successfully sniped a high bid on &quot; + aucTitle + '!';
       JConfig.increment(&quot;stats.sniped.success&quot;);
-    } else if(snipeResult == AuctionServerInterface.BID_DUTCH_CONFIRMED) {
-      snipeOutput = &quot;Successfully sniped a high dutch bid on &quot; + aucTitle + '!';
-      JConfig.increment(&quot;stats.sniped.success&quot;);
     } else {
       switch(snipeResult) {
         case AuctionServerInterface.BID_ERROR_UNKNOWN:</diff>
      <filename>src/com/jbidwatcher/auction/Snipe.java</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,6 @@ public abstract class SpecificAuction extends AuctionInfo implements CleanupHand
     NOT_ADULT,
     BAD_TITLE,
     SELLER_AWAY,
-    ERROR,
     CAPTCHA,
     DELETED,
     WRONG_SITE</diff>
      <filename>src/com/jbidwatcher/auction/SpecificAuction.java</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,7 @@ import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.xml.XMLElement;
 import com.jbidwatcher.util.xml.XMLParseException;
 import com.jbidwatcher.util.xml.XMLSerialize;
+import com.jbidwatcher.util.xml.XMLInterface;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -51,20 +52,20 @@ public class EventLogger implements XMLSerialize {
    * 
    * @param curElement - The current element to load the events from.
    */
-  public void fromXML(XMLElement curElement) {
-    Iterator&lt;XMLElement&gt; logStep = curElement.getChildren();
+  public void fromXML(XMLInterface curElement) {
+    Iterator&lt;XMLInterface&gt; logStep = curElement.getChildren();
 
     while(logStep.hasNext()) {
-      XMLElement curEntry = logStep.next();
+      XMLElement curEntry = (XMLElement)logStep.next();
 
       if(curEntry.getTagName().equals(&quot;entry&quot;)) {
         long msgtime = System.currentTimeMillis();
         String msg = &quot;Nothing has happened.&quot;;
         int curCount = Integer.parseInt(curEntry.getProperty(&quot;COUNT&quot;));
 
-        Iterator&lt;XMLElement&gt; entryStep = curEntry.getChildren();
+        Iterator&lt;XMLInterface&gt; entryStep = curEntry.getChildren();
         while(entryStep.hasNext()) {
-          XMLElement entryField = entryStep.next();
+          XMLElement entryField = (XMLElement)entryStep.next();
           if(entryField.getTagName().equals(&quot;message&quot;)) msg = entryField.getContents();
           if(entryField.getTagName().equals(&quot;date&quot;)) msgtime = Long.parseLong(entryField.getContents());
         }</diff>
      <filename>src/com/jbidwatcher/auction/event/EventLogger.java</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ package com.jbidwatcher.auction.server;
 
 /*
  * @file   AuctionServer.java
- * @author Morgan Schweers &lt;cyberfox@users.sourceforge.net&gt;
+ * @author Morgan Schweers &lt;cyberfox@jbidwatcher.com&gt;
  * @date   Wed Oct  9 13:49:02 2002
  * @note   Library GPL'ed.
  * @brief  This is an interface description for the general auction Servers
@@ -56,7 +56,6 @@ public abstract class AuctionServer implements com.jbidwatcher.auction.AuctionSe
   public abstract void addSearches(SearchManagerInterface searchManager);
 
   //  Exposed to AuctionEntry for checking high bidder status.
-  public abstract boolean isHighDutch(EntryInterface inAE);
   public abstract void updateHighBid(AuctionEntry ae);
 
   public abstract void setSnipe(AuctionEntry snipeOn);
@@ -358,10 +357,6 @@ public abstract class AuctionServer implements com.jbidwatcher.auction.AuctionSe
     }
   }
 
-  public int getCount() {
-    return AuctionEntry.count();
-  }
-
   protected abstract String getUserId();
 
   /**</diff>
      <filename>src/com/jbidwatcher/auction/server/AuctionServer.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,6 +11,7 @@ import com.jbidwatcher.search.SearchManager;
 import com.jbidwatcher.util.xml.XMLElement;
 import com.jbidwatcher.util.xml.XMLParseException;
 import com.jbidwatcher.util.xml.XMLSerialize;
+import com.jbidwatcher.util.xml.XMLInterface;
 import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.StringTools;
 import com.jbidwatcher.auction.*;
@@ -48,11 +49,11 @@ public class AuctionServerManager implements XMLSerialize, MessageQueue.Listener
    * @param inXML - The XML source to load from.
    * @noinspection ThrowInsideCatchBlockWhichIgnoresCaughtException,StringContatenationInLoop
    */
-  public void fromXML(XMLElement inXML) {
-    Iterator&lt;XMLElement&gt; serversStep = inXML.getChildren();
+  public void fromXML(XMLInterface inXML) {
+    Iterator&lt;XMLInterface&gt; serversStep = inXML.getChildren();
 
     while(serversStep.hasNext()) {
-      XMLElement perServer = serversStep.next();
+      XMLInterface perServer = serversStep.next();
       //  Only process the 'server' entries.
       if(perServer.getTagName().equals(&quot;server&quot;)) {
         AuctionServer newServer = null;
@@ -251,12 +252,12 @@ public class AuctionServerManager implements XMLSerialize, MessageQueue.Listener
     }
   }
 
-  private void getServerAuctionEntries(AuctionServer newServer, XMLElement perServer) {
+  private void getServerAuctionEntries(AuctionServer newServer, XMLInterface perServer) {
     try {
-      Iterator&lt;XMLElement&gt; entryStep = perServer.getChildren();
+      Iterator&lt;XMLInterface&gt; entryStep = perServer.getChildren();
       int count = 0;
       while (entryStep.hasNext()) {
-        XMLElement perEntry = entryStep.next();
+        XMLInterface perEntry = entryStep.next();
         AuctionEntry ae = new AuctionEntry();
 
         ae.setServer(newServer);</diff>
      <filename>src/com/jbidwatcher/auction/server/AuctionServerManager.java</filename>
    </modified>
    <modified>
      <diff>@@ -798,7 +798,6 @@ class ebayAuction extends SpecificAuction {
 
   private void checkHighBidder() {
     String bidder = null;
-    String email = null;
 
     if(mDocument.grep(&quot;This is a private listing.*&quot;) != null) {
       bidder = &quot;(private)&quot;;
@@ -809,7 +808,6 @@ class ebayAuction extends SpecificAuction {
         if (bidder != null) {
           setNumBids(1);
           bidder = bidder.trim();
-          email = findHighBidderEmail(bidder);
         }
       } else {
         if (getQuantity() &gt; 1) {
@@ -819,7 +817,6 @@ class ebayAuction extends SpecificAuction {
             bidder = mDocument.getNextContentAfterRegex(T.s(&quot;ebayServer.highBidder&quot;));
             if (bidder != null) {
               bidder = bidder.trim();
-              email = findHighBidderEmail(bidder);
             } else {
               bidder = &quot;(unknown)&quot;; //  ...but present.
             }
@@ -829,24 +826,6 @@ class ebayAuction extends SpecificAuction {
     }
 
     setHighBidder(bidder == null ? &quot;&quot; : bidder);
-    setHighBidderEmail(email == null ? &quot;(unknown)&quot; : email);
-  }
-
-  private String findHighBidderEmail(String bidder) {
-    String email = null;
-
-    if(bidder != null) {
-      email = mDocument.getNextContentAfterContent(bidder, true, false);
-      if (email != null) {
-        email = email.trim();
-        if (email.charAt(0) == '(' &amp;&amp; email.charAt(email.length() - 1) == ')' &amp;&amp; email.indexOf('@') != -1) {
-          email = (email.substring(1, email.length() - 1));
-        }
-        if (email.equals(&quot;(&quot;)) email = null;
-      }
-    }
-
-    return email;
   }
 
   private int getBidCount(JHTML doc, int quantity) {</diff>
      <filename>src/com/jbidwatcher/auction/server/ebay/ebayAuction.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ import com.jbidwatcher.util.http.Http;
 import com.jbidwatcher.util.*;
 import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.queue.MQFactory;
-import com.jbidwatcher.my.MyJBidwatcher;
+//import com.jbidwatcher.my.MyJBidwatcher;
 
 import java.net.URLConnection;
 import java.io.IOException;
@@ -53,9 +53,6 @@ public class ebayBidder implements com.jbidwatcher.auction.Bidder {
       mResultHash.put(&quot;your bid must be at least &quot;, AuctionServer.BID_ERROR_TOO_LOW); /*?*/
       mResultHash.put(&quot;you('ve| have) been outbid by another bidder&quot;, AuctionServer.BID_ERROR_OUTBID);
       mResultHash.put(&quot;you('ve| have) just been outbid&quot;, ebayServer.BID_ERROR_OUTBID);
-      mResultHash.put(&quot;your bid is confirmed!&quot;, AuctionServer.BID_DUTCH_CONFIRMED);
-      mResultHash.put(&quot;you('re| are) bidding on this multiple item auction&quot;, AuctionServer.BID_DUTCH_CONFIRMED);
-      mResultHash.put(&quot;you('re| are) the high bidder on all items you bid on&quot;, AuctionServer.BID_DUTCH_CONFIRMED);
       mResultHash.put(&quot;you('re| are) the current high bidder&quot;, AuctionServer.BID_WINNING);
       mResultHash.put(&quot;you('re| are) the first bidder&quot;, AuctionServer.BID_WINNING);
       mResultHash.put(&quot;you('re| are) the high bidder and currently in the lead&quot;, AuctionServer.BID_WINNING);
@@ -98,15 +95,13 @@ public class ebayBidder implements com.jbidwatcher.auction.Bidder {
    * @param cj - The cookies for the current session.
    * @param inEntry - The auction being bid on.
    * @param inCurr - The amount to bid.
-   * @param inQuant - The quantity to bid on (if it's a dutch auction, 1 otherwise).
-   *
    * @return - A Form object containing all the input fields from the bid-confirmation page's form.
    *
    * @throws BadBidException - If there's some kind of an error on the bid confirmation page.
    */
-  public JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr, int inQuant) throws BadBidException {
+  public JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr) throws BadBidException {
     String bidRequest = Externalized.getString(&quot;ebayServer.protocol&quot;) + T.s(&quot;ebayServer.bidHost&quot;) + Externalized.getString(&quot;ebayServer.V3file&quot;);
-    String bidInfo = getBidInfoURL(inEntry, inCurr, inQuant);
+    String bidInfo = getBidInfoURL(inEntry, inCurr);
     BidFormReturn rval = null;
 
     try {
@@ -135,22 +130,22 @@ public class ebayBidder implements com.jbidwatcher.auction.Bidder {
       checkSignOn(rval.getDocument());
       checkBidErrors(rval);
     }
-
-    if(JConfig.queryConfiguration(&quot;my.jbidwatcher.enabled&quot;, &quot;false&quot;).equals(&quot;true&quot;) &amp;&amp;
-       JConfig.queryConfiguration(&quot;my.jbidwatcher.id&quot;) != null) {
-      String recognize = MyJBidwatcher.getInstance().recognizeBidpage(inEntry.getIdentifier(), rval.getBuffer());
-      Integer remote_result = null;
-      try {
-        remote_result = Integer.parseInt(recognize);
-      } catch(NumberFormatException nfe) {
-        //  Ignore it for now...
-        JConfig.log().logDebug(recognize);
-      }
-
-      if(remote_result != null &amp;&amp; remote_result != AuctionServer.BID_ERROR_UNKNOWN) {
-        throw new BadBidException(&quot;Remote-checked result&quot;, remote_result);
-      }
-    }
+//    TODO -- Move this to a registered 'alternative parsing' class, which iterates over objects calling recognizeBidPage until getting a positive result, or running out.
+//    if(JConfig.queryConfiguration(&quot;my.jbidwatcher.enabled&quot;, &quot;false&quot;).equals(&quot;true&quot;) &amp;&amp;
+//       JConfig.queryConfiguration(&quot;my.jbidwatcher.id&quot;) != null) {
+//      String recognize = MyJBidwatcher.getInstance().recognizeBidpage(inEntry.getIdentifier(), rval.getBuffer());
+//      Integer remote_result = null;
+//      try {
+//        remote_result = Integer.parseInt(recognize);
+//      } catch(NumberFormatException nfe) {
+//        //  Ignore it for now...
+//        JConfig.log().logDebug(recognize);
+//      }
+//
+//      if(remote_result != null &amp;&amp; remote_result != AuctionServer.BID_ERROR_UNKNOWN) {
+//        throw new BadBidException(&quot;Remote-checked result&quot;, remote_result);
+//      }
+//    }
 
     if(JConfig.debugging) inEntry.setLastStatus(&quot;Failed to bid. 'Show Last Error' from context menu to see the failure page from the bid attempt.&quot;);
     JConfig.log().dump2File(&quot;unknown-&quot; + inEntry.getIdentifier() + &quot;.html&quot;, rval.getBuffer());
@@ -174,11 +169,8 @@ public class ebayBidder implements com.jbidwatcher.auction.Bidder {
     return pageName;
   }
 
-  private String getBidInfoURL(AuctionEntry inEntry, Currency inCurr, int inQuant) {
+  private String getBidInfoURL(AuctionEntry inEntry, Currency inCurr) {
     String bidInfo = Externalized.getString(&quot;ebayServer.bidCmd&quot;) + &quot;&amp;co_partnerid=&quot; + Externalized.getString(&quot;ebayServer.itemCGI&quot;) + inEntry.getIdentifier() + &quot;&amp;fb=2&quot;;
-    if(inEntry.isDutch()) {
-      bidInfo += Externalized.getString(&quot;ebayServer.quantCGI&quot;) + inQuant;
-    }
     bidInfo += Externalized.getString(&quot;ebayServer.bidCGI&quot;) + inCurr.getValue();
     return bidInfo;
   }
@@ -311,7 +303,7 @@ public class ebayBidder implements com.jbidwatcher.auction.Bidder {
     JHTML.Form bidForm;
 
     try {
-      bidForm = getBidForm(cj, inEntry, inBid, inQuantity);
+      bidForm = getBidForm(cj, inEntry, inBid);
     } catch(BadBidException bbe) {
       UpdateBlocker.endBlocking();
       return bbe.getResult();</diff>
      <filename>src/com/jbidwatcher/auction/server/ebay/ebayBidder.java</filename>
    </modified>
    <modified>
      <diff>@@ -303,7 +303,7 @@ public class ebayLoginManager implements LoginManager {
     }
   }
 
-  private boolean checkSecurityConfirmation(JHTML doc) throws IOException, CaptchaException {
+  private boolean checkSecurityConfirmation(JHTML doc) throws CaptchaException {
     if(doc.grep(T.s(&quot;security.measure&quot;)) != null ||
        doc.grep(T.s(&quot;enter.verification.code&quot;)) != null ||
        doc.grep(T.s(&quot;enter.a.verification.code.to.continue&quot;)) != null ||</diff>
      <filename>src/com/jbidwatcher/auction/server/ebay/ebayLoginManager.java</filename>
    </modified>
    <modified>
      <diff>@@ -93,38 +93,12 @@ public final class ebayServer extends AuctionServer implements MessageQueue.List
    *
    */
   public ServerMenu establishMenu() {
-    ebayServerMenu esm = new ebayServerMenu(this, Constants.EBAY_DISPLAY_NAME, 'b');
+    ServerMenu esm = new ebayServerMenu(this, Constants.EBAY_DISPLAY_NAME, 'b');
     esm.initialize();
 
     return esm;
   }
 
-  /**
-   * @brief Very simplistic check to see if the current user is the
-   * high bidder on a Dutch item.
-   *
-   * This only works, really, on closed items, I believe.  It shows
-   * you as a 'winner' always, otherwise.
-   *
-   * @param inAE - The auction entry to check.
-   *
-   * @return - true if the user is one of the high bidders on a dutch item, false otherwise.
-   */
-  public boolean isHighDutch(EntryInterface inAE) {
-    String dutchWinners = Externalized.getString(&quot;ebayServer.protocol&quot;) + T.s(&quot;ebayServer.dutchRequestHost&quot;) + Externalized.getString(&quot;ebayServer.V3WS3File&quot;) + Externalized.getString(&quot;ebayServer.viewDutch&quot;) + inAE.getIdentifier();
-    CookieJar cj = mLogin.getNecessaryCookie(false);
-    String userCookie = null;
-    if (cj != null) userCookie = cj.toString();
-
-    JHTML htmlDocument = new JHTML(dutchWinners, userCookie, mCleaner);
-    String matchedName = null;
-    if(htmlDocument.isLoaded()) {
-      matchedName = htmlDocument.getNextContentAfterContent(mLogin.getUserId());
-    }
-
-    return matchedName != null;
-  }
-
   public void updateHighBid(AuctionEntry ae) {
     String bidHistory = Externalized.getString(&quot;ebayServer.protocol&quot;) + T.s(&quot;ebayServer.bidHost&quot;) + Externalized.getString(&quot;ebayServer.V3file&quot;) + Externalized.getString(&quot;ebayServer.viewBidsCGI&quot;) + ae.getIdentifier();
     CookieJar cj = mLogin.getNecessaryCookie(false);
@@ -359,7 +333,7 @@ public final class ebayServer extends AuctionServer implements MessageQueue.List
         }
 
         //  These two are called by sniping.
-        public JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr, int inQuant) throws BadBidException {
+        public JHTML.Form getBidForm(CookieJar cj, AuctionEntry inEntry, Currency inCurr) throws BadBidException {
           return new JHTML.Form(&quot;&lt;form action=\&quot;http://example.com\&quot;&gt;&quot;);
         }
 
@@ -461,17 +435,6 @@ public final class ebayServer extends AuctionServer implements MessageQueue.List
     return new ebayAuction(T);
   }
 
-  /**
-   * @brief Returns the amount of time it takes to retrieve a page
-   * from the auction server.
-   *
-   * @return The amount of milliseconds it takes to get a simple page
-   * from the auction server.
-   */
-  private long getSnipePadding() {
-    return 1;
-  }
-
   public StringBuffer getAuction(String id) throws FileNotFoundException {
     long pre = System.currentTimeMillis();
     StringBuffer sb = getAuction(getURLFromItem(id));
@@ -534,48 +497,6 @@ public final class ebayServer extends AuctionServer implements MessageQueue.List
     if(s == null) searchManager.addSearch(&quot;My Items&quot;, &quot;My eBay&quot;, &quot;&quot;, Constants.EBAY_SERVER_NAME, -1, 1);
   }
 
-  /**
-   * @brief Get the list of bidders on an item.
-   *
-   * This is primarily useful for networks-of-interest searching.
-   *
-   * @param ae - The item you are interested in.
-   *
-   * @return - A list containing strings with the names of each
-   * user who was interested in the item enough to bid.
-   */
-  public List&lt;String&gt; getBidderNames(EntryInterface ae) {
-    CookieJar cj = mLogin.getNecessaryCookie(false);
-    String userCookie = null;
-    if (cj != null) userCookie = cj.toString();
-    JHTML htmlDocument = new JHTML(Externalized.getString(&quot;ebayServer.protocol&quot;) + T.s(&quot;ebayServer.bidderNamesHost&quot;) + Externalized.getString(&quot;ebayServer.file&quot;) + Externalized.getString(&quot;ebayServer.viewBidsCGI&quot;) + ae.getIdentifier(), userCookie, mCleaner);
-
-    String curName = htmlDocument.getNextContentAfterContent(T.s(&quot;ebayServer.bidListPrequel&quot;));
-
-    if(curName == null) {
-      JConfig.log().logMessage(&quot;Problem with loaded page when getting bidder names for auction &quot; + ae.getIdentifier());
-      return null;
-    }
-
-    List&lt;String&gt; outNames = new ArrayList&lt;String&gt;();
-
-    do {
-      if(!outNames.contains(curName)) {
-        outNames.add(curName);
-      }
-      curName = htmlDocument.getNextContent();
-      while(curName != null &amp;&amp; ! (curName.endsWith(&quot;PDT&quot;) || curName.endsWith(&quot;PST&quot;))) {
-        curName = htmlDocument.getNextContent();
-      }
-      if(curName != null) curName = htmlDocument.getNextContent();
-      if(curName != null) {
-        if(curName.indexOf(T.s(&quot;ebayServer.earlierCheck&quot;)) != -1) curName = null;
-      }
-    } while(curName != null);
-
-    return outNames;
-  }
-
   private void doMyEbaySynchronize(String label) {
     MQFactory.getConcrete(&quot;Swing&quot;).enqueue(&quot;Synchronizing with My eBay...&quot;);
     mSearcher.getMyEbayItems(mLogin.getUserId(), label);
@@ -689,7 +610,7 @@ public final class ebayServer extends AuctionServer implements MessageQueue.List
   }
 
   public long getAdjustedTime() {
-    return System.currentTimeMillis() + getServerTimeDelta() + getPageRequestTime() + getSnipePadding();
+    return System.currentTimeMillis() + getServerTimeDelta() + getPageRequestTime();
   }
 
   public long getServerTimeDelta() {</diff>
      <filename>src/com/jbidwatcher/auction/server/ebay/ebayServer.java</filename>
    </modified>
    <modified>
      <diff>@@ -12,6 +12,7 @@ import com.jbidwatcher.util.queue.MessageQueue;
 import com.jbidwatcher.util.queue.SuperQueue;
 import com.jbidwatcher.util.xml.XMLSerialize;
 import com.jbidwatcher.util.xml.XMLElement;
+import com.jbidwatcher.util.xml.XMLInterface;
 import com.jbidwatcher.util.http.Http;
 import com.jbidwatcher.util.http.ClientHttpRequest;
 import com.jbidwatcher.auction.AuctionEntry;
@@ -250,16 +251,16 @@ public class MyJBidwatcher {
     if(sb == null) return false;
     XMLElement xml = new XMLElement();
     xml.parseString(sb.toString());
-    XMLElement sync = xml.getChild(&quot;syncq&quot;);
-    XMLElement expires = xml.getChild(&quot;expiry&quot;);
-    XMLElement listingsRemaining = xml.getChild(&quot;listings&quot;);
-    XMLElement categoriesRemaining = xml.getChild(&quot;categories&quot;);
-    XMLElement reporting = xml.getChild(&quot;reportq&quot;);
-    XMLElement snipesListen = xml.getChild(&quot;snipes&quot;);
-    XMLElement ssl = xml.getChild(&quot;ssl&quot;);
-    XMLElement uploadHTML = xml.getChild(&quot;uploadhtml&quot;);
-    XMLElement serverParser = xml.getChild(&quot;parser&quot;);
-    XMLElement gixen = xml.getChild(&quot;gixen&quot;);
+    XMLInterface sync = xml.getChild(&quot;syncq&quot;);
+    XMLInterface expires = xml.getChild(&quot;expiry&quot;);
+    XMLInterface listingsRemaining = xml.getChild(&quot;listings&quot;);
+    XMLInterface categoriesRemaining = xml.getChild(&quot;categories&quot;);
+    XMLInterface reporting = xml.getChild(&quot;reportq&quot;);
+    XMLInterface snipesListen = xml.getChild(&quot;snipes&quot;);
+    XMLInterface ssl = xml.getChild(&quot;ssl&quot;);
+    XMLInterface uploadHTML = xml.getChild(&quot;uploadhtml&quot;);
+    XMLInterface serverParser = xml.getChild(&quot;parser&quot;);
+    XMLInterface gixen = xml.getChild(&quot;gixen&quot;);
 
     if(expires != null) {
       String date = expires.getContents();
@@ -291,7 +292,7 @@ public class MyJBidwatcher {
     return mSyncQueueURL != null &amp;&amp; mReportQueueURL != null;
   }
 
-  private boolean getBoolean(XMLElement x) {
+  private boolean getBoolean(XMLInterface x) {
     boolean rval = false;
     if(x != null) {
       String contents = x.getContents();</diff>
      <filename>src/com/jbidwatcher/my/MyJBidwatcher.java</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,6 @@ package com.jbidwatcher.ui;
 
 import com.jbidwatcher.auction.Auctions;
 
-import javax.swing.*;
 import java.awt.Color;
 import java.awt.event.ActionListener;
 
@@ -26,23 +25,18 @@ class AuctionListHolder {
     return mDeletable;
   }
 
-  public void setDeletable(boolean deletable) {
-    mDeletable = deletable;
-  }
-
   AuctionListHolder(String name) {
-    this(name, false, false, true);
+    this(name, false, true);
   }
 
   AuctionListHolder(String name, Color presetBackground) {
-    this(name, false, false, true);
+    this(name, false, true);
     mAuctionUI.setBackground(presetBackground);
   }
 
-  AuctionListHolder(String name, boolean _completed, boolean _selling, boolean deletable) {
+  AuctionListHolder(String name, boolean _completed, boolean deletable) {
     mAuctionList = new Auctions(name);
     if(_completed) mAuctionList.setComplete();
-    if(_selling) mAuctionList.setSelling();
     mAuctionUI = new AuctionsUIModel(mAuctionList, sTableContext, sFrameContext, sCornerButtonListener);
     mDeletable = deletable;
     JTabManager.getInstance().add(name, mAuctionUI.getPanel(), mAuctionUI.getTableSorter());</diff>
      <filename>src/com/jbidwatcher/ui/AuctionListHolder.java</filename>
    </modified>
    <modified>
      <diff>@@ -156,14 +156,6 @@ public class AuctionsManager implements TimerHandler.WakeupProcess, EntryManager
     return FilterManager.getInstance().getAuctionIterator();
   }
 
-  public void loadAuctionsFromDB() {
-    int auctionTotal = AuctionServerManager.getInstance().getServer().getCount();
-    MQFactory.getConcrete(&quot;splash&quot;).enqueue(&quot;SET 0&quot;);
-    MQFactory.getConcrete(&quot;splash&quot;).enqueue(&quot;WIDTH &quot; + auctionTotal);
-
-    MQFactory.getConcrete(&quot;splash&quot;).enqueue(&quot;SET 100&quot;);
-  }
-
   /**
    * @brief Load auctions from a save file, with a pretty splash
    * screen and everything, if necessary.
@@ -304,7 +296,7 @@ public class AuctionsManager implements TimerHandler.WakeupProcess, EntryManager
       if(newSaveFile.exists()) newSaveFile.delete();
     }
 
-    StringBuffer buf = buildSaveBuffer(auctionsData, null);
+    StringBuffer buf = buildSaveBuffer(auctionsData);
     boolean saveDone = true;
 
     //  Dump the save file out!
@@ -344,7 +336,7 @@ public class AuctionsManager implements TimerHandler.WakeupProcess, EntryManager
     if(!saveParent.exists()) saveParent.mkdirs(); //  This can fail, but we don't mind.
   }
 
-  public static StringBuffer buildSaveBuffer(XMLElement auctionsData, XMLElement deletedData) {
+  public static StringBuffer buildSaveBuffer(XMLElement auctionsData) {
     synchronized(_saveBuf) {
       _saveBuf.setLength(0);
       _saveBuf.append(&quot;&lt;?xml version=\&quot;1.0\&quot;?&gt;\n\n&quot;);
@@ -352,9 +344,6 @@ public class AuctionsManager implements TimerHandler.WakeupProcess, EntryManager
       _saveBuf.append('\n');
       _saveBuf.append(&quot;&lt;jbidwatcher format=\&quot;0101\&quot;&gt;\n&quot;);
       auctionsData.toStringBuffer(_saveBuf, 1);
-      if(deletedData != null) {
-        deletedData.toStringBuffer(_saveBuf, 1);
-      }
       _saveBuf.append(&quot;&lt;/jbidwatcher&gt;&quot;);
     }
     return _saveBuf;</diff>
      <filename>src/com/jbidwatcher/ui/AuctionsManager.java</filename>
    </modified>
    <modified>
      <diff>@@ -353,7 +353,6 @@ public class AuctionsUIModel {
    * information that is not the same.
    *
    * @param aeNew - The new auction entry to add to the tables.
-   * @return - true if the auction was added, false if not.
    */
   public void addEntry(EntryInterface aeNew) {
     if (aeNew != null) {
@@ -415,18 +414,6 @@ public class AuctionsUIModel {
     return _export.export(fname);
   }
 
-  /*!@class JComponentCellRenderer
-   *
-   * @brief Allows components themselves to be added to a JTable, and
-   * allows them to offer themselves as renderers.
-   */
-  static class JComponentCellRenderer implements TableCellRenderer {
-    public Component getTableCellRendererComponent(JTable table, Object value,
-                                                   boolean isSelected, boolean hasFocus, int row, int column) {
-      return (Component) value;
-    }
-  }
-
   /**
    * @brief Print this table.
    *</diff>
      <filename>src/com/jbidwatcher/ui/AuctionsUIModel.java</filename>
    </modified>
    <modified>
      <diff>@@ -44,9 +44,9 @@ public class FilterManager implements MessageQueue.Listener {
   }
 
   public void loadFilters() {
-    mMainTab = mList.add(new AuctionListHolder(&quot;current&quot;, false, false, false));
-    mDefaultCompleteTab = mList.add(new AuctionListHolder(&quot;complete&quot;, true, false, false));
-    mDefaultSellingTab = mList.add(new AuctionListHolder(&quot;selling&quot;, false, true, false));
+    mMainTab = mList.add(new AuctionListHolder(&quot;current&quot;, false, false));
+    mDefaultCompleteTab = mList.add(new AuctionListHolder(&quot;complete&quot;, true, false));
+    mDefaultSellingTab = mList.add(new AuctionListHolder(&quot;selling&quot;, false, false));
 
     String tabName;
     int i = 2;</diff>
      <filename>src/com/jbidwatcher/ui/FilterManager.java</filename>
    </modified>
    <modified>
      <diff>@@ -24,7 +24,6 @@ import java.util.HashMap;
  */
 public class JBidMenuBar extends JMenuBar {
   protected static JBidMenuBar _instance = null;
-  protected JMenuBar _menuBar;
   protected JMenu _fileMenu;
   protected JMenu _editMenu;
   protected JMenu _debugMenu = null;</diff>
      <filename>src/com/jbidwatcher/ui/JBidMenuBar.java</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,7 @@ import com.jbidwatcher.ui.config.JConfigTab;
 import com.jbidwatcher.ui.util.*;
 import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.browser.BrowserLauncher;
+import com.jbidwatcher.util.Constants;
 import com.jbidwatcher.auction.Category;
 
 import javax.swing.*;
@@ -64,7 +65,7 @@ public class RSSDialog extends BasicDialog {
   }
 
   public void fireFeed(String feedName) {
-    String url = &quot;feed://&quot; + getHost() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, &quot;9099&quot;) + &quot;/syndicate/&quot; + feedName + &quot;.xml&quot;;
+    String url = &quot;feed://&quot; + getHost() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, Constants.DEFAULT_SERVER_PORT_STRING) + &quot;/syndicate/&quot; + feedName + &quot;.xml&quot;;
     try {
       BrowserLauncher.openURL(url);
     } catch (IOException e) {
@@ -74,7 +75,7 @@ public class RSSDialog extends BasicDialog {
   }
 
   public void fireCopy(String feedName) {
-    String url = &quot;http://&quot; + getHost() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, &quot;9099&quot;) + &quot;/syndicate/&quot; + feedName + &quot;.xml&quot;;
+    String url = &quot;http://&quot; + getHost() + &quot;:&quot; + JConfig.queryConfiguration(&quot;server.port&quot;, Constants.DEFAULT_SERVER_PORT_STRING) + &quot;/syndicate/&quot; + feedName + &quot;.xml&quot;;
     Clipboard.setClipboardString(url);
     onOK();
   }</diff>
      <filename>src/com/jbidwatcher/ui/RSSDialog.java</filename>
    </modified>
    <modified>
      <diff>@@ -19,7 +19,6 @@ import javax.swing.*;
 import java.awt.*;
 
 public class SearchFrame implements ActionListener {
-  JPanel tablePanel;
   JFrame mainFrame;
   JComboBox newType;
   JTextField searchString;</diff>
      <filename>src/com/jbidwatcher/ui/SearchFrame.java</filename>
    </modified>
    <modified>
      <diff>@@ -19,7 +19,7 @@ public class SwingMessageQueue extends MessageQueue
   }
 
   public void run() {
-    Object data = dequeueObject();
+    Object data = dequeue();
     if(_listener != null) {
       try {
         _listener.messageAction(data);</diff>
      <filename>src/com/jbidwatcher/ui/SwingMessageQueue.java</filename>
    </modified>
    <modified>
      <diff>@@ -379,73 +379,6 @@ public class UserActions implements MessageQueue.Listener {
     DoCopySomething(src, ae, DO_COPY_DATA, &quot;No auctions selected to copy!&quot;, &quot;&quot;);
   }
 
-  /**
-   * @brief Pick and return a value from the entry that best describes
-   * how much COULD be spent on it by the buyer.
-   *
-   * For an item not bid on, it's the current bid price.  For an item
-   * the user has bid on, it's their maximum bid.  For an item the
-   * user has a snipe set for, it's the maximum of their snipe bid.
-   * If the item is closed, it's just the current bid price.
-   *
-   * @param checkEntry - The AuctionEntry to operate on.
-   *
-   * @return - A currency value containing either the current bid, the
-   * users high bid, or the users snipe bid.
-   */
-  Currency getBestBidValue(AuctionEntry checkEntry) {
-    return checkEntry.bestValue();
-  }
-
-  protected String sum(int rowList[]) {
-    boolean approx = false, i18n = true;
-    Currency accum = null;
-    Currency realAccum = null;
-
-    for (int aRowList : rowList) {
-      try {
-        AuctionEntry ae2 = (AuctionEntry) mTabs.getIndexedEntry(aRowList);
-        if (accum == null) {
-          accum = ae2.getUSCurBid();
-          realAccum = getBestBidValue(ae2);
-        } else {
-          Currency stepVal = ae2.getUSCurBid();
-          accum = accum.add(stepVal);
-
-          //  If we're still trying to do the internationalization
-          //  thing, then try to keep track of the 'real' total.
-          if (i18n) {
-            try {
-              realAccum = realAccum.add(getBestBidValue(ae2));
-            } catch (Currency.CurrencyTypeException cte) {
-              //  We can't handle multiple non-USD currency types, so
-              //  we stop trying to do the internationalization thing.
-              i18n = false;
-            }
-          }
-        }
-        if (ae2.getCurBid().getCurrencyType() != Currency.US_DOLLAR) approx = true;
-      } catch (Exception e) {
-        JConfig.log().handleException(&quot;Sum currency exception!&quot;, e);
-        return &quot;&lt;unknown&gt;&quot;;
-      }
-    }
-
-    if(accum == null) {
-      return &quot;&lt;unknown&gt;&quot;;
-    }
-
-    //  If we managed to do the i18n thing through it all, and we have
-    //  some real values, return it.
-    if(i18n &amp;&amp; realAccum != null) {
-      return realAccum.toString();
-    }
-
-    if(approx) return &quot;Approximately &quot; + accum.toString();
-
-    return accum.toString();
-  }
-
   private void DoAdd(Component src) {
     String prompt = &quot;Enter the auction number to add&quot;;
 
@@ -817,11 +750,7 @@ public class UserActions implements MessageQueue.Listener {
     SnipeDialog sd = new SnipeDialog(previous);
     sd.clear();
     sd.setPrompt(prompt);
-    if(ae.isDutch()) {
-      sd.useQuantity(true);
-    } else {
-      sd.useQuantity(false);
-    }
+    sd.useQuantity(false);
     sd.pack();
     Rectangle rec = OptionUI.findCenterBounds(sd.getPreferredSize());
     sd.setLocation(rec.x, rec.y);
@@ -940,19 +869,11 @@ public class UserActions implements MessageQueue.Listener {
 
     String[] endResult;
     if(minimumNextBid != null) {
-      if(ae.isDutch()) {
-        endResult = promptString(src, prompt, &quot;Bidding&quot;, Float.toString((float)minimumNextBid.getValue()), &quot;Quantity&quot;, &quot;1&quot;);
-      } else {
-        endResult = promptString(src, prompt, &quot;Bidding&quot;, Float.toString((float)minimumNextBid.getValue()), null, null);
-        if(endResult != null) endResult[1] = &quot;1&quot;;
-      }
+      endResult = promptString(src, prompt, &quot;Bidding&quot;, Float.toString((float) minimumNextBid.getValue()), null, null);
+      if (endResult != null) endResult[1] = &quot;1&quot;;
     } else {
-      if(ae.isDutch()) {
-        endResult = promptString(src, prompt, &quot;Bidding&quot;, null, &quot;Quantity&quot;, &quot;1&quot;);
-      } else {
-        endResult = promptString(src, prompt, &quot;Bidding&quot;, null, null, null);
-        if(endResult != null) endResult[1] = &quot;1&quot;;
-      }
+      endResult = promptString(src, prompt, &quot;Bidding&quot;, null, null, null);
+      if (endResult != null) endResult[1] = &quot;1&quot;;
     }
 
     //  They closed the window
@@ -1129,10 +1050,9 @@ public class UserActions implements MessageQueue.Listener {
     MQFactory.getConcrete(&quot;user&quot;).enqueue(GET_SERVER_TIME);
   }
 
-  private final static StringBuffer badHelpData = new StringBuffer(&quot;Error loading About text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox@users.sourceforge.net\&quot;&gt;me&lt;/a&gt;!&quot;);
-  private final static StringBuffer badAbout = new StringBuffer(&quot;Error loading About text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox@users.sourceforge.net\&quot;&gt;me&lt;/a&gt;!&quot;);
+  private final static StringBuffer badAbout = new StringBuffer(&quot;Error loading About text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox@jbidwatcher.com\&quot;&gt;me&lt;/a&gt;!&quot;);
   private final static StringBuffer badLicense = new StringBuffer(&quot;Error loading License text!  Please visit &lt;a href=\&quot;http://www.jbidwatcher.com/by-nc-sa-amended.shtml\&quot;&gt;http://http://www.jbidwatcher.com/by-nc-sa-amended.shtml&lt;/a&gt;!&quot;);
-  private final static StringBuffer badFAQ = new StringBuffer(&quot;Error loading FAQ text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox@users.sourceforge.net\&quot;&gt;me&lt;/a&gt;!&quot;);
+  private final static StringBuffer badFAQ = new StringBuffer(&quot;Error loading FAQ text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox@jbidwatcher.com\&quot;&gt;me&lt;/a&gt;!&quot;);
 
   static private JFrame aboutFrame = null;
   private void DoAbout() {
@@ -1374,13 +1294,13 @@ public class UserActions implements MessageQueue.Listener {
     JOptionPane.showMessageDialog(src,
                                   &quot;I'm very sorry, but help has not been implemented yet.\n&quot; +
                                   &quot;If you'd like to assist in getting help up, you could\n&quot; +
-                                  &quot;write me an email at cyberfox@users.sourceforge.net\n&quot; +
+                                  &quot;write me an email at cyberfox@jbidwatcher.com\n&quot; +
                                   &quot;describing how you use a particular part of JBidwatcher,\n&quot; +
                                   &quot;and I'll try to collect those into contextual help options.&quot;,
                                   &quot;Sorry, no help!&quot;, JOptionPane.INFORMATION_MESSAGE);
   }
 
-  private final static StringBuffer badColors = new StringBuffer(&quot;Error loading Color help text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox%40users.sourceforge.net\&quot;&gt;me&lt;/a&gt;!&quot;);
+  private final static StringBuffer badColors = new StringBuffer(&quot;Error loading Color help text!  (D'oh!)  Email &lt;a href=\&quot;mailto:cyberfox%40jbidwatcher.com\&quot;&gt;me&lt;/a&gt;!&quot;);
 
   private static JFrame helpFrame = null;
   private void DoHelpColors() {</diff>
      <filename>src/com/jbidwatcher/ui/UserActions.java</filename>
    </modified>
    <modified>
      <diff>@@ -202,13 +202,13 @@ public class JConfigEbayTab extends JConfigTab
     return tp;
   }
 
-  public JConfigEbayTab(String displayName, String[] choices) {
-    mDisplayName = displayName;
+  public JConfigEbayTab() {
+    mDisplayName = Constants.EBAY_DISPLAY_NAME;
     setLayout(new BorderLayout());
     JPanel jp = new JPanel();
     jp.setLayout(new BorderLayout());
     jp.add(panelPack(buildUsernamePanel()), BorderLayout.NORTH);
-    jp.add(panelPack(buildBrowseTargetPanel(choices)), BorderLayout.CENTER);
+    jp.add(panelPack(buildBrowseTargetPanel(Constants.SITE_CHOICES)), BorderLayout.CENTER);
     add(jp, BorderLayout.NORTH);
     add(panelPack(buildCheckboxPanel()), BorderLayout.CENTER);
   }</diff>
      <filename>src/com/jbidwatcher/ui/config/JConfigEbayTab.java</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,6 @@ import com.jbidwatcher.util.config.*;
 import com.jbidwatcher.util.Constants;
 import com.jbidwatcher.ui.util.JBidFrame;
 import com.jbidwatcher.ui.util.OptionUI;
-import com.jbidwatcher.auction.server.ebay.*;
 
 import java.awt.*;
 import java.awt.event.ActionEvent;
@@ -129,7 +128,7 @@ public class JConfigFrame implements ActionListener {
 
     //  Add all non-server-specific tabs here.
     allTabs.add(new JConfigGeneralTab());
-    allTabs.add(new JConfigEbayTab(Constants.EBAY_DISPLAY_NAME, Constants.SITE_CHOICES));
+    allTabs.add(new JConfigEbayTab());
 
     //  Stub the browser tab under MacOSX, so they don't try to use it.
     if(Platform.isMac()) {</diff>
      <filename>src/com/jbidwatcher/ui/config/JConfigFrame.java</filename>
    </modified>
    <modified>
      <diff>@@ -8,9 +8,6 @@ package com.jbidwatcher.ui.util;
 import javax.swing.*;
 
 public class JBEditorPane extends JEditorPane {
-  public void scrollToReference(String reference) {
-    super.scrollToReference(reference);
-  }
   public JBEditorPane(String mimetype, String data) {
     super(mimetype, data);
   }</diff>
      <filename>src/com/jbidwatcher/ui/util/JBEditorPane.java</filename>
    </modified>
    <modified>
      <diff>@@ -53,7 +53,7 @@ public class Constants {
   public static final int DEFAULT_SERVER_PORT = 9099;
 /** String version of what port to listen on by default.
  */
-  public static final String DEFAULT_SERVER_PORT_STRING = &quot;9099&quot;;
+  public static final String DEFAULT_SERVER_PORT_STRING = Integer.toString(Constants.DEFAULT_SERVER_PORT);
 /** What browser to pretend to be, when talking to the auction servers.
  */
   public static final String FAKE_BROWSER = &quot;Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.2) Gecko/2008091620 Firefox/3.0.2&quot;;</diff>
      <filename>src/com/jbidwatcher/util/Constants.java</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@ package com.jbidwatcher.util;
 
 import com.jbidwatcher.util.xml.XMLElement;
 import com.jbidwatcher.util.xml.XMLSerializeSimple;
+import com.jbidwatcher.util.xml.XMLInterface;
 
 import java.util.Date;
 import java.util.Map;
@@ -36,12 +37,6 @@ public class HashBacked extends XMLSerializeSimple {
     else mDefaultCurrency = get(&quot;currency&quot;);
   }
 
-  protected static String formatDate(Date input) {
-    SimpleDateFormat fmt = new SimpleDateFormat(DB_DATE_FORMAT);
-    fmt.setTimeZone(TimeZone.getDefault());
-    return fmt.format(input);
-  }
-
   public void setTranslationTable(Map&lt;String, String&gt; table) { if(mTranslationTable == null) mTranslationTable = table; }
 
   public boolean isDirty() { return mDirty; }
@@ -191,7 +186,7 @@ public class HashBacked extends XMLSerializeSimple {
     return addCurrencyChild(parent, name, value);
   }
 
-  protected XMLElement addCurrencyChild(XMLElement parent, String name, int currencyType) {
+  protected XMLInterface addCurrencyChild(XMLElement parent, String name, int currencyType) {
     Currency value = getMonetary(name, currencyType);
     return addCurrencyChild(parent, name, value);
   }
@@ -209,7 +204,7 @@ public class HashBacked extends XMLSerializeSimple {
     return xadd;
   }
 
-  protected XMLElement addStringChild(XMLElement parent, String name) {
+  protected XMLInterface addStringChild(XMLElement parent, String name) {
     String value = getString(name);
     XMLElement xadd = null;
     if (value != null &amp;&amp; value.length() != 0) {</diff>
      <filename>src/com/jbidwatcher/util/HashBacked.java</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,8 @@ package com.jbidwatcher.util;
  * User: Morgan
  * Date: Dec 20, 2008
  * Time: 2:48:38 PM
- * To change this template use File | Settings | File Templates.
+ *
+ * Tool interface for use by the MiniServer.
  */
 public interface ToolInterface {
   void done();</diff>
      <filename>src/com/jbidwatcher/util/ToolInterface.java</filename>
    </modified>
    <modified>
      <diff>@@ -123,12 +123,6 @@ public class BrowserLauncher {
     /** The kAnyTransactionID AppleEvent code */
     private static Integer kAnyTransactionID;
 
-    /** The linkage object required for JDirect 3 on Mac OS X. */
-    //    private static Object linkage;
-    
-    /** The framework to reference on Mac OS X (unused) */
-    protected static final String JDirect_MacOSX = &quot;/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox&quot;;
-
     /** JVM constant for MRJ 2.0 */
     private static final int MRJ_2_0 = 0;
     </diff>
      <filename>src/com/jbidwatcher/util/browser/BrowserLauncher.java</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ import java.io.*;
  * to support a separate way to determine the default browser if
  * running under Windows.
  * &lt;o&gt;
- * This code is Copyright 2001-2004 by Morgan Schweers (cyberfox@users.sourceforge.net) and may be
+ * This code is Copyright 2001-2004 by Morgan Schweers (cyberfox@jbidwatcher.com) and may be
  * redistributed or modified in any form without restrictions as long as the portion of this
  * comment from this paragraph through the end of the comment is not removed.  The author
  * requests that he be notified of any application, applet, or other binary that makes use of
@@ -26,7 +26,7 @@ import java.io.*;
  *         http://browserlauncher.sourceforge.net
  * under Windows, so I owe a great deal to Eric Albert
  *
- * @author Morgan Schweers (&lt;a href=&quot;mailto:cyberfox@users.sourceforge.net&quot;&gt;cyberfox@users.sourceforge.net&lt;/a&gt;)
+ * @author Morgan Schweers (&lt;a href=&quot;mailto:cyberfox@jbidwatcher.com&quot;&gt;cyberfox@jbidwatcher.com&lt;/a&gt;)
  * @version 1.0 (Released January 30, 2004)
  */
 public class WindowsBrowserLauncher {</diff>
      <filename>src/com/jbidwatcher/util/browser/WindowsBrowserLauncher.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,6 @@ public class JConfig {
   protected static Properties displayProperty = null;
   protected static Properties mAuxProps = null;
   protected static Properties mTempProps = null;
-  protected static Runtime curRuntime = Runtime.getRuntime();
 
   protected static String _configFileName = null;
 </diff>
      <filename>src/com/jbidwatcher/util/config/JConfig.java</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,8 @@ import java.io.File;
  * User: Morgan
  * Date: Dec 20, 2008
  * Time: 3:18:48 PM
- * To change this template use File | Settings | File Templates.
+ *
+ * A basic logging interface, so we can have a null and normal logger.
  */
 public interface LoggerInterface {
   void logMessage(String msg);</diff>
      <filename>src/com/jbidwatcher/util/config/LoggerInterface.java</filename>
    </modified>
    <modified>
      <diff>@@ -31,8 +31,6 @@ public class Database {
     }
   }
 
-  public boolean isNew() { return mNew; }
-
   public Database(String base) throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
     /* the default framework is embedded*/
     framework = JConfig.queryConfiguration(&quot;db.framework&quot;, &quot;embedded&quot;);
@@ -125,7 +123,7 @@ public class Database {
     }
   }
 
-  public boolean shutdown() {
+  public void shutdown() {
     try {
       mConn.close();
       JConfig.log().logDebug(&quot;Closed connection&quot;);
@@ -156,7 +154,6 @@ public class Database {
       handleSQLException(e);
     }
     sFirst = true;
-    return true;
   }
 
   private static void handleSQLException(Throwable e) {</diff>
      <filename>src/com/jbidwatcher/util/db/Database.java</filename>
    </modified>
    <modified>
      <diff>@@ -13,6 +13,7 @@ import java.util.regex.Matcher;
 
 import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.xml.XMLElement;
+import com.jbidwatcher.util.xml.XMLInterface;
 import com.jbidwatcher.util.http.Http;
 
 public class JHTML implements JHTMLListener {
@@ -69,7 +70,7 @@ public class JHTML implements JHTMLListener {
   }
 
   public static class Form {
-    private List&lt;XMLElement&gt; allInputs;
+    private List&lt;XMLInterface&gt; mAllInputs;
     private XMLElement formTag;
     private static final String FORM_VALUE = &quot;value&quot;;
     private static final String FORM_SUBMIT = &quot;submit&quot;;
@@ -82,7 +83,7 @@ public class JHTML implements JHTMLListener {
       formTag = new XMLElement();
       formTag.parseString('&lt;' + initialTag + &quot;/&gt;&quot;);
 
-      allInputs = new ArrayList&lt;XMLElement&gt;();
+      mAllInputs = new ArrayList&lt;XMLInterface&gt;();
 
       if (do_uber_debug) JConfig.log().logDebug(&quot;Name: &quot; + formTag.getProperty(&quot;name&quot;, &quot;(unnamed)&quot;));
     }
@@ -90,7 +91,7 @@ public class JHTML implements JHTMLListener {
     public String getName() { return formTag.getProperty(&quot;name&quot;); }
     public boolean hasInput(String srchFor) { return hasInput(srchFor, null); }
     public boolean hasInput(String srchFor, String value) {
-      for (XMLElement curInput : allInputs) {
+      for (XMLInterface curInput : mAllInputs) {
         String name = curInput.getProperty(&quot;name&quot;);
         if (name != null) {
           if (srchFor.equalsIgnoreCase(name) &amp;&amp; (value == null || curInput.getProperty(&quot;value&quot;).equalsIgnoreCase(value))) {
@@ -102,9 +103,9 @@ public class JHTML implements JHTMLListener {
     }
 
     public boolean delInput(String srchFor) {
-      Iterator&lt;XMLElement&gt; it = allInputs.iterator();
+      Iterator&lt;XMLInterface&gt; it = mAllInputs.iterator();
       while (it.hasNext()) {
-        XMLElement curInput = it.next();
+        XMLInterface curInput = it.next();
         String name=curInput.getProperty(&quot;name&quot;);
         if(name != null) {
           if(srchFor.equalsIgnoreCase(name)) {
@@ -131,11 +132,11 @@ public class JHTML implements JHTMLListener {
     }
 
     public String getFormData() throws UnsupportedEncodingException {
-      Iterator&lt;XMLElement&gt; it = allInputs.iterator();
+      Iterator&lt;XMLInterface&gt; it = mAllInputs.iterator();
       StringBuffer rval = new StringBuffer(&quot;&quot;);
       String seperator = &quot;&quot;;
       while(it.hasNext()) {
-        XMLElement curInput = it.next();
+        XMLElement curInput = (XMLElement)it.next();
 
         if(do_uber_debug) JConfig.log().logDebug(&quot;Type == &quot; + curInput.getProperty(&quot;type&quot;, &quot;text&quot;));
         if (rval.length() != 0) {
@@ -169,7 +170,7 @@ public class JHTML implements JHTMLListener {
       return formTag.getProperty(JHTMLDialog.FORM_ACTION);
     }
 
-    private String createProperty(String property, XMLElement tag, String defValue) {
+    private String createProperty(String property, XMLInterface tag, String defValue) {
       String value = tag.getProperty(property);
       if(value != null) {
         return property + &quot;=\&quot;&quot; + value + &quot;\&quot; &quot;;
@@ -225,12 +226,12 @@ public class JHTML implements JHTMLListener {
       }
 
       if(!isError) {
-        allInputs.add(inputTag);
+        mAllInputs.add(inputTag);
       }
     }
 
     public void setText(String key, String val) {
-      for (XMLElement curInput : allInputs) {
+      for (XMLInterface curInput : mAllInputs) {
         String name = curInput.getProperty(&quot;name&quot;);
 
         if (name != null) {
@@ -242,7 +243,7 @@ public class JHTML implements JHTMLListener {
     }
 
     public String getInputValue(String inputName) {
-      for(XMLElement input : allInputs) {
+      for(XMLInterface input : mAllInputs) {
         String name = input.getProperty(&quot;name&quot;);
         if(name != null &amp;&amp; name.equals(inputName)) {
           if (input.getProperty(&quot;value&quot;) != null) {
@@ -256,7 +257,7 @@ public class JHTML implements JHTMLListener {
 
     public Map&lt;String, Object&gt; getCGIMap() {
       LinkedHashMap&lt;String, Object&gt; rval = new LinkedHashMap&lt;String, Object&gt;();
-      for(XMLElement input : allInputs) {
+      for(XMLInterface input : mAllInputs) {
         String name = input.getProperty(&quot;name&quot;);
         String value = input.getProperty(&quot;value&quot;);
         rval.put(name, value);
@@ -365,11 +366,6 @@ public class JHTML implements JHTMLListener {
     return t == null ? null : t.getToken();
   }
 
-  public String getFirstContent() {
-    if(contentList.isEmpty()) return null;
-    return contentList.get(0);
-  }
-
   public String getNextContent() {
     if( (m_contentIndex+1) &gt;= contentList.size()) return null;
 
@@ -479,14 +475,6 @@ public class JHTML implements JHTMLListener {
     return contentFind(previousData, CHECK_CASE);
   }
 
-  public String getNextContentAfterContent(String previousData, boolean exactMatch, boolean ignoreCase) {
-    if (exactMatch) {
-      return contentLookup(previousData, ignoreCase);
-    } else {
-      return contentFind(previousData, ignoreCase);
-    }
-  }
-
   public String getContentBeforeContent(String followingData) {
     if (contentFind(followingData, CHECK_CASE) != null &amp;&amp; getPrevContent() != null &amp;&amp; getPrevContent() != null) return getPrevContent();
     return null;</diff>
      <filename>src/com/jbidwatcher/util/html/JHTML.java</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ package com.jbidwatcher.util.html;
  * Date: Jun 26, 2004
  * Time: 3:05:47 PM
  *
- * @class A storage class to keep track of token information.  Each htmlToken is a piece of the document,
+ * A storage class to keep track of token information.  Each htmlToken is a piece of the document,
  * a tag, endtag, singletag, content, or a single EOF at the end.
  */
 public class htmlToken {</diff>
      <filename>src/com/jbidwatcher/util/html/htmlToken.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,7 +52,7 @@ public class ClientHttpRequest {
    *
    * @param connection an already open URL connection
    */
-  public ClientHttpRequest(URLConnection connection) throws IOException {
+  public ClientHttpRequest(URLConnection connection) {
     mConnection = connection;
     ((HttpURLConnection)mConnection).setInstanceFollowRedirects(true);
     connection.setDoOutput(true);
@@ -90,36 +90,6 @@ public class ClientHttpRequest {
     }
   }
 
-  /**
-   * adds a cookie to the requst
-   *
-   * @param name  cookie name
-   * @param value cookie value
-   */
-  public void setCookie(String name, String value) { mCookies.put(name, value); }
-
-  /**
-   * adds cookies to the request
-   *
-   * @param cookies the cookie &quot;name-to-value&quot; map
-   */
-  public void setCookies(Map&lt;String,String&gt; cookies) {
-    if (cookies == null) return;
-    mCookies.putAll(cookies);
-  }
-
-  /**
-   * adds cookies to the request
-   *
-   * @param cookies array of cookie names and values (cookies[2*i] is a name, cookies[2*i + 1] is a value)
-   */
-  public void setCookies(String[] cookies) {
-    if (cookies == null) return;
-    for (int i = 0; i &lt; cookies.length - 1; i += 2) {
-      setCookie(cookies[i], cookies[i + 1]);
-    }
-  }
-
   private void writeName(String name) throws IOException {
     newline();
     write(&quot;Content-Disposition: form-data; name=\&quot;&quot;);
@@ -198,24 +168,12 @@ public class ClientHttpRequest {
    *
    * @param parameters &quot;name-to-value&quot; map of parameters; if a value is a file, the file is uploaded, otherwise it is stringified and sent in the request
    */
-  public void setParameters(Map&lt;String,Object&gt; parameters) throws IOException {
+  public void setParameters(Map&lt;String,Object&gt; parameters) {
     if (parameters == null) return;
     mParameters.putAll(parameters);
   }
 
   /**
-   * adds parameters to the request
-   *
-   * @param parameters array of parameter names and values (parameters[2*i] is a name, parameters[2*i + 1] is a value); if a value is a file, the file is uploaded, otherwise it is stringified and sent in the request
-   */
-  public void setParameters(Object[] parameters) throws IOException {
-    if (parameters == null) return;
-    for (int i = 0; i &lt; parameters.length - 1; i += 2) {
-      setParameter(parameters[i].toString(), parameters[i + 1]);
-    }
-  }
-
-  /**
    * posts the requests to the server, with all the cookies and parameters that were added
    *
    * @return input stream with the server response
@@ -233,100 +191,4 @@ public class ClientHttpRequest {
     mOutput.close();
     return (HttpURLConnection)mConnection;
   }
-
-  public InputStream postStream() throws IOException {
-    HttpURLConnection huc = post();
-
-    return Http.net().getStream(huc);
-  }
-
-  /**
-   * posts the requests to the server, with all the cookies and parameters that were added before (if any), and with parameters that are passed in the argument
-   *
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public InputStream post(Map&lt;String, Object&gt; parameters) throws IOException {
-    setParameters(parameters);
-    return postStream();
-  }
-
-  /**
-   * posts the requests to the server, with all the cookies and parameters that were added before (if any), and with parameters that are passed in the argument
-   *
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public InputStream post(Object[] parameters) throws IOException {
-    setParameters(parameters);
-    return postStream();
-  }
-
-  /**
-   * posts the requests to the server, with all the cookies and parameters that were added before (if any), and with cookies and parameters that are passed in the arguments
-   *
-   * @param cookies    request cookies
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public InputStream post(Map&lt;String,String&gt; cookies, Map&lt;String, Object&gt; parameters) throws IOException {
-    setCookies(cookies);
-    setParameters(parameters);
-    return postStream();
-  }
-
-  /**
-   * posts the requests to the server, with all the cookies and parameters that were added before (if any), and with cookies and parameters that are passed in the arguments
-   *
-   * @param cookies    request cookies
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public InputStream post(String[] cookies, Object[] parameters) throws IOException {
-    setCookies(cookies);
-    setParameters(parameters);
-    return postStream();
-  }
-
-  /**
-   * posts a new request to specified URL, with parameters that are passed in the argument
-   *
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public static InputStream post(URL url, Map&lt;String, Object&gt; parameters) throws IOException {
-    return new ClientHttpRequest(url).post(parameters);
-  }
-
-  /**
-   * posts a new request to specified URL, with parameters that are passed in the argument
-   *
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public static InputStream post(URL url, Object[] parameters) throws IOException {
-    return new ClientHttpRequest(url).post(parameters);
-  }
-
-  /**
-   * posts a new request to specified URL, with cookies and parameters that are passed in the argument
-   *
-   * @param cookies    request cookies
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public static InputStream post(URL url, Map&lt;String,String&gt; cookies, Map&lt;String, Object&gt; parameters) throws IOException {
-    return new ClientHttpRequest(url).post(cookies, parameters);
-  }
-
-  /**
-   * posts a new request to specified URL, with cookies and parameters that are passed in the argument
-   *
-   * @param cookies    request cookies
-   * @param parameters request parameters
-   * @return input stream with the server response
-   */
-  public static InputStream post(URL url, String[] cookies, Object[] parameters) throws IOException {
-    return new ClientHttpRequest(url).post(cookies, parameters);
-  }
 }
\ No newline at end of file</diff>
      <filename>src/com/jbidwatcher/util/http/ClientHttpRequest.java</filename>
    </modified>
    <modified>
      <diff>@@ -41,11 +41,6 @@ public abstract class MessageQueue implements Runnable {
     enqueue(fos.toString());
   }
 
-  public Object dequeueBean() {
-    String obj = dequeue();
-    return convertBean(obj);
-  }
-
   private Object convertBean(String obj) {
     ByteArrayInputStream fis = new ByteArrayInputStream(obj.getBytes());
     XMLDecoder xd = new XMLDecoder(fis);
@@ -54,15 +49,7 @@ public abstract class MessageQueue implements Runnable {
     return rval;
   }
 
-  public String dequeue() {
-    String outStr;
-    synchronized(_queue) {
-      outStr = (String) _queue.removeFirst();
-    }
-    return outStr;
-  }
-
-  public Object dequeueObject() {
+  public Object dequeue() {
     Object out;
     synchronized(_queue) {
       out = _queue.removeFirst();</diff>
      <filename>src/com/jbidwatcher/util/queue/MessageQueue.java</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ public final class PlainMessageQueue extends MessageQueue {
       try {
         synchronized(_queue) {
           if(_queue.isEmpty()) _queue.wait();
-          data = dequeueObject();
+          data = dequeue();
         }
       } catch(InterruptedException ignore) {
         //  Ignore the interrupted exception, it just wakes us up.
@@ -63,7 +63,7 @@ public final class PlainMessageQueue extends MessageQueue {
           }
           synchronized (_queue) {
             empty = _queue.isEmpty();
-            if(!empty) data = dequeueObject();
+            if(!empty) data = dequeue();
           }
         } while (!empty);
       }</diff>
      <filename>src/com/jbidwatcher/util/queue/PlainMessageQueue.java</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ import com.jbidwatcher.util.config.JConfig;
 
 /**
  * @file   TimerHandler.java
- * @author Morgan Schweers &lt;cyberfox@users.sourceforge.net&gt;
+ * @author Morgan Schweers &lt;cyberfox@jbidwatcher.com&gt;
  * @date   Sat Oct 12 18:42:10 2002
  * 
  * @brief  Several operations need 'regular wakeups', which is what this class provides.</diff>
      <filename>src/com/jbidwatcher/util/queue/TimerHandler.java</filename>
    </modified>
    <modified>
      <diff>@@ -66,7 +66,7 @@ import java.util.*;
  * @version 1.5
  */
 @SuppressWarnings({&quot;JavaDoc&quot;, &quot;ThrowableInstanceNeverThrown&quot;})
-public class XMLElement implements XMLSerialize {
+public class XMLElement implements XMLSerialize, XMLInterface {
   /**
    * Major version of NanoXML.
    */
@@ -95,7 +95,7 @@ public class XMLElement implements XMLSerialize {
    * Subobjects of the object. The subobjects are of class XMLElement
    * themselves.
    */
-  protected List&lt;XMLElement&gt; _children;
+  protected List&lt;XMLInterface&gt; mChildren;
 
 
   /**
@@ -244,7 +244,7 @@ public class XMLElement implements XMLSerialize {
     _tagName = null;
     _contents = null;
     _attributes = new HashMap&lt;String, String&gt;(10);
-    _children = new ArrayList&lt;XMLElement&gt;(10);
+    mChildren = new ArrayList&lt;XMLInterface&gt;(10);
     _conversionTable = conversionTable==null?new HashMap&lt;String, String&gt;(10):new HashMap&lt;String, String&gt;(conversionTable);
     _lineNr = 0;
 
@@ -270,7 +270,7 @@ public class XMLElement implements XMLSerialize {
    * @return - The number of children of this element.
    */
   public int countChildren() {
-    return _children.size();
+    return mChildren.size();
   }
 
 
@@ -287,8 +287,8 @@ public class XMLElement implements XMLSerialize {
    * Enumerates the subobjects of the object.
    * @return - An iterator over the children of this element.
    */
-  public Iterator&lt;XMLElement&gt; getChildren() {
-    return _children.iterator();
+  public Iterator&lt;XMLInterface&gt; getChildren() {
+    return mChildren.iterator();
   }
 
 
@@ -298,9 +298,9 @@ public class XMLElement implements XMLSerialize {
    * @return - The element identified by the named child tag.
    */
   public XMLElement getChild(String tagName) {
-    Iterator&lt;XMLElement&gt; step = getChildren();
+    Iterator&lt;XMLInterface&gt; step = getChildren();
     while(step.hasNext()) {
-      XMLElement child = step.next();
+      XMLElement child = (XMLElement) step.next();
 
       if(child.getTagName().equals(tagName)) {
         return child;
@@ -393,7 +393,7 @@ public class XMLElement implements XMLSerialize {
    * been added.
    */
   public void setContents(String newContents) {
-    if(_children.size() == 0) {
+    if(mChildren.size() == 0) {
       _contents = newContents;
     } else {
       throw new XMLParseException(_tagName, _lineNr, &quot;Cannot add contents to an XML element that already has children.&quot;);
@@ -404,9 +404,9 @@ public class XMLElement implements XMLSerialize {
    * Adds another XMLElement as a child of this one.  This can't be done if
    * contents is already set.
    */
-  public void addChild(XMLElement newChild) {
+  public void addChild(XMLInterface newChild) {
     if(_contents == null) {
-      _children.add(newChild);
+      mChildren.add(newChild);
     } else {
       throw new XMLParseException(_tagName, _lineNr, &quot;Cannot add children to an XML element that already has contents.&quot;);
     }
@@ -465,7 +465,7 @@ public class XMLElement implements XMLSerialize {
     } else {
       wholeXML.append('&gt;');
       if (_contents == null) {
-        Iterator&lt;XMLElement&gt; xmlStep = getChildren();
+        Iterator&lt;XMLInterface&gt; xmlStep = getChildren();
 
         wholeXML.append('\n');
         while (xmlStep.hasNext()) {
@@ -652,7 +652,7 @@ public class XMLElement implements XMLSerialize {
       scanChildren(input, contentOffset[0], contentSize[0], contentLineNr);
 
       //  If child-elements were found, then contents is set to null...
-      if (_children.size() &gt; 0) {
+      if (mChildren.size() &gt; 0) {
         _contents = null;
       } else {
         //  If there are no child elements, but there is data, then
@@ -790,7 +790,7 @@ public class XMLElement implements XMLSerialize {
 
       XMLElement child = new XMLElement(_conversionTable, _skipLeadingWhitespace, false);
       offset = child.parseCharArray(input, offset, end, lineNr);
-      _children.add(child);
+      mChildren.add(child);
     }
   }
 
@@ -1377,9 +1377,10 @@ public class XMLElement implements XMLSerialize {
     return this;
   }
 
-  public void fromXML(XMLElement inXML) {
+  public void fromXML(XMLInterface inXMLIFace) {
+    XMLElement inXML = (XMLElement) inXMLIFace;
     _attributes = inXML._attributes;
-    _children = inXML._children;
+    mChildren = inXML.mChildren;
     _tagName = inXML._tagName;
     _empty = inXML._empty;
     _contents = inXML._contents;</diff>
      <filename>src/com/jbidwatcher/util/xml/XMLElement.java</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ package com.jbidwatcher.util.xml;
 
 /**
  * @file   XMLSerialize.java
- * @author Morgan Schweers &lt;cyberfox@users.sourceforge.net&gt;
+ * @author Morgan Schweers &lt;cyberfox@jbidwatcher.com&gt;
  * @note   Library GPL'ed.
  * @date   Thu Oct 10 01:30:40 2002
  * 
@@ -31,7 +31,7 @@ public interface XMLSerialize {
    * @return - An XMLElement that is the 'root object' for the XML
    * tree built by serializing this class, and all subclasses.
    */
-  XMLElement toXML();
+  XMLInterface toXML();
 
   /** 
    * @brief Step through all the important variables that had been
@@ -39,5 +39,5 @@ public interface XMLSerialize {
    *
    * @param inXML - The XML element to start the deserialization process from.
    */
-  void fromXML(XMLElement inXML);
+  void fromXML(XMLInterface inXML);
 }</diff>
      <filename>src/com/jbidwatcher/util/xml/XMLSerialize.java</filename>
    </modified>
    <modified>
      <diff>@@ -11,12 +11,12 @@ public abstract class XMLSerializeSimple implements XMLSerialize {
   protected abstract void handleTag(int i, XMLElement curElement);
   protected abstract String[] getTags();
 
-  public void fromXML(XMLElement inXML) {
+  public void fromXML(XMLInterface inXML) {
     String[] infoTags = getTags();
-    Iterator&lt;XMLElement&gt; infoFields = inXML.getChildren();
+    Iterator&lt;XMLInterface&gt; infoFields = inXML.getChildren();
 
     while(infoFields.hasNext()) {
-      XMLElement fieldStep = infoFields.next();
+      XMLElement fieldStep = (XMLElement)infoFields.next();
       String curField = fieldStep.getTagName();
 
       for(int i=0; i&lt;infoTags.length; i++) {</diff>
      <filename>src/com/jbidwatcher/util/xml/XMLSerializeSimple.java</filename>
    </modified>
    <modified>
      <diff>@@ -20,7 +20,6 @@ public abstract class HTTPProxyClient extends ProxyClient {
   private String _serverName;
   protected boolean authorized = false;
   protected String requestedFile = null;
-  protected boolean firstBlank = true;
 
   protected HTTPProxyClient(Socket talkSock) {
     super(talkSock);</diff>
      <filename>src/com/jbidwatcher/webserver/HTTPProxyClient.java</filename>
    </modified>
    <modified>
      <diff>@@ -391,7 +391,7 @@ public class JBidProxy extends HTTPProxyClient {
       sb.append(&quot;&lt;/pubDate&gt;&quot;);
 
       sb.append(&quot;&lt;description&gt;&lt;![CDATA[&quot;);
-      sb.append(ae.buildInfoHTML(false, true));
+      sb.append(ae.buildInfoHTML(true));
       sb.append(&quot;]]&gt;&lt;/description&gt;\n&lt;/item&gt;\n&quot;);
     }
 </diff>
      <filename>src/com/jbidwatcher/webserver/JBidProxy.java</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,6 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 import junit.framework.TestCase;
 import com.jbidwatcher.util.Currency;
-import com.jbidwatcher.util.db.Database;
 import com.jbidwatcher.util.config.JConfig;
 import com.jbidwatcher.util.config.ErrorManagement;
 import com.jbidwatcher.util.queue.MQFactory;
@@ -130,10 +129,6 @@ public class AuctionEntryTest extends TestCase {
     assertNull(mAE.getCancelledSnipe());
   }
 
-  public void testGetCancelledSnipeQuantity() throws Exception {
-    assertEquals(1, mAE.getCancelledSnipeQuantity());
-  }
-
   public void testSetNeedsUpdate() throws Exception {
     MQFactory.getConcrete(&quot;redraw&quot;).registerListener(new MessageQueue.Listener() {
       public void messageAction(Object deQ) {
@@ -168,11 +163,11 @@ public class AuctionEntryTest extends TestCase {
   }
 
   private static final int NOT_FIXED_PRICE=1;
-  private static final int HIGH_BIDDER=2;
-  private static final int WILL_WIN=4;
+//  private static final int HIGH_BIDDER=2;
+//  private static final int WILL_WIN=4;
   private static final int HAS_BIN=8;
-  private static final int RESERVE_AND_MET=16;
-  private static final int RESERVE_NOT_MET=32;
+//  private static final int RESERVE_AND_MET=16;
+//  private static final int RESERVE_NOT_MET=32;
   private static final int HAS_PAYPAL=64;
 
   public void testGetFlags() throws Exception {
@@ -221,10 +216,6 @@ public class AuctionEntryTest extends TestCase {
     assertEquals(&quot;test-jbidwatcher-bids&quot;, mAE.getHighBidder());
   }
 
-  public void testGetHighBidderEmail() throws Exception {
-    assertNull(mAE.getHighBidderEmail());
-  }
-
   public void testGetTitle() throws Exception {
     assertEquals(&quot;A test auction.&quot;, mAE.getTitle());
   }</diff>
      <filename>test/com/jbidwatcher/auction/AuctionEntryTest.java</filename>
    </modified>
    <modified>
      <diff>@@ -35,10 +35,8 @@ class MockAuctionInfo extends AuctionInfo {
     mSeller.setPositivePercentage(String.valueOf(Double.parseDouble(&quot;99.6&quot;)));
     setHighBidder(&quot;test-jbidwatcher-bids&quot;);
     setTitle(&quot;A test auction.&quot;);
-    setHighBidderEmail(null);
     setQuantity(1);
     setNumBids(1);
-    setDutch(false);
     setReserve(false);
     setPrivate(false);
     setReserveMet(false);</diff>
      <filename>test/com/jbidwatcher/auction/MockAuctionInfo.java</filename>
    </modified>
    <modified>
      <diff>@@ -94,10 +94,6 @@ class MockAuctionServerInterface implements AuctionServerInterface {
     return false;
   }
 
-  public boolean isHighDutch(EntryInterface entry) {
-    return false;
-  }
-
   public void updateHighBid(AuctionEntry eEntry) { }
 
   public String stripId(String source) {</diff>
      <filename>test/com/jbidwatcher/auction/MockAuctionServerInterface.java</filename>
    </modified>
    <modified>
      <diff>@@ -134,10 +134,6 @@ class MockSpecificAuction extends SpecificAuction {
     return mAI.getHighBidder();
   }
 
-  public String getHighBidderEmail() {
-    return mAI.getHighBidderEmail();
-  }
-
   public String getTitle() {
     return mAI.getTitle();
   }
@@ -150,10 +146,6 @@ class MockSpecificAuction extends SpecificAuction {
     return mAI.getEndDate();
   }
 
-  public boolean isDutch() {
-    return mAI.isDutch();
-  }
-
   public boolean isReserve() {
     return mAI.isReserve();
   }
@@ -170,10 +162,6 @@ class MockSpecificAuction extends SpecificAuction {
     return mAI.isReserveMet();
   }
 
-  public boolean isOutbid() {
-    return mAI.isOutbid();
-  }
-
   public boolean hasPaypal() {
     return mAI.hasPaypal();
   }</diff>
      <filename>test/com/jbidwatcher/auction/MockSpecificAuction.java</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>src/com/jbidwatcher/util/db/DBTimeQueue.java</filename>
    </removed>
    <removed>
      <filename>src/com/jbidwatcher/util/queue/DBTimeQueueManager.java</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>493127deeaed1f9c22f9ea8dfcff5c3af58a3918</id>
    </parent>
  </parents>
  <author>
    <name>Morgan Schweers</name>
    <email>cyberfox@jbidwatcher.com</email>
  </author>
  <url>http://github.com/cyberfox/jbidwatcher/commit/c6b1d63d0cbf5d1ae8940e6743992284e63bcfff</url>
  <id>c6b1d63d0cbf5d1ae8940e6743992284e63bcfff</id>
  <committed-date>2009-08-06T02:21:18-07:00</committed-date>
  <authored-date>2009-08-06T02:21:18-07:00</authored-date>
  <message>Remove code that handled dutch items, old page formats, high bidder email, all bidder names (not available anymore), saving deleted listing ids in the XML file, large swaths of dead and/or obsolete code, and all the DB Time Queue code.

Abstracted the XMLElement code out to an interface, which XMLSerialize now uses, avoiding a circular dependency/tangle.

Made all my email addresses point to the same address, NOT at SourceForge anymore.


git-svn-id: svn://svn.jbidwatcher.com/jbidwatcher/trunk@1000 b1acfa68-eb39-11db-b167-a3a8cd6b847e</message>
  <tree>f3252b63d1391cfe8f8d01336d44de8a5425ba57</tree>
  <committer>
    <name>Morgan Schweers</name>
    <email>cyberfox@jbidwatcher.com</email>
  </committer>
</commit>
