Require docid in DocIdPusher.Record.Builder
diff --git a/src/adaptorlib/AbstractDocIdPusher.java b/src/adaptorlib/AbstractDocIdPusher.java
index 7da06e3..341fbe6 100644
--- a/src/adaptorlib/AbstractDocIdPusher.java
+++ b/src/adaptorlib/AbstractDocIdPusher.java
@@ -38,9 +38,8 @@
                           PushErrorHandler handler)
       throws InterruptedException {
     List<Record> records = new ArrayList<Record>();
-    Record.Builder recordMaker = new Record.Builder();
     for (DocId docId : docIds) {
-      records.add(recordMaker.setDocId(docId).build());
+      records.add(new Record.Builder(docId).build());
     }
     Record record = pushRecords(records, handler);
     return record == null ? null : record.getDocId();
diff --git a/src/adaptorlib/CommandStreamParser.java b/src/adaptorlib/CommandStreamParser.java
index 7b75585..891e66c 100644
--- a/src/adaptorlib/CommandStreamParser.java
+++ b/src/adaptorlib/CommandStreamParser.java
@@ -328,9 +328,7 @@
         case ID:
           if (docId != null) {
             // TODO (johnfelton) add lister options when API is available
-            DocIdPusher.Record.Builder builder = new DocIdPusher.Record.Builder();
-            builder.setDocId(new DocId(docId));
-            result.add(builder.build());
+            result.add(new DocIdPusher.Record.Builder(new DocId(docId)).build());
           }
           docId = command.getArgument();
           lastModified = null;
@@ -360,9 +358,7 @@
       command = readCommand();
     }
     // TODO (johnfelton) add lister options when API is available
-    DocIdPusher.Record.Builder builder = new DocIdPusher.Record.Builder();
-    builder.setDocId(new DocId(docId));
-    result.add(builder.build());
+    result.add(new DocIdPusher.Record.Builder(new DocId(docId)).build());
 
     return result;
   }
diff --git a/src/adaptorlib/DocIdPusher.java b/src/adaptorlib/DocIdPusher.java
index 1286d50..e5a4fc9 100644
--- a/src/adaptorlib/DocIdPusher.java
+++ b/src/adaptorlib/DocIdPusher.java
@@ -92,9 +92,6 @@
   
     private Record(DocId docid, boolean delete, Date lastModified,
         URI link, boolean crawlImmediately, boolean crawlOnce, boolean lock) {
-      if (null == docid) {
-        throw new NullPointerException();
-      }
       this.id = docid;
       this.delete = delete;
       this.lastModified = lastModified;
@@ -191,7 +188,12 @@
       private boolean crawlOnce = false;
       private boolean lock = false;
   
-      public Builder() {}
+      public Builder(DocId id) {
+        if (null == id) {
+          throw new NullPointerException();
+        }
+        docid = id;
+      }
 
       /** Makes Builder that can duplicate a record. */
       public Builder(Record startPoint) {
@@ -205,6 +207,9 @@
       }
 
       public Builder setDocId(DocId id) {
+        if (null == id) {
+          throw new NullPointerException();
+        }
         this.docid = id;
         return this;
       }
diff --git a/test/adaptorlib/DocIdSenderTest.java b/test/adaptorlib/DocIdSenderTest.java
index b6d6a60..df12e33 100644
--- a/test/adaptorlib/DocIdSenderTest.java
+++ b/test/adaptorlib/DocIdSenderTest.java
@@ -50,7 +50,7 @@
     DocIdPusher.Record[] records = new DocIdPusher.Record[6];
     for (int i = 0; i < records.length; i++) {
       DocId id = new DocId("test" + i);
-      records[i] = new DocIdPusher.Record.Builder().setDocId(id).build();
+      records[i] = new DocIdPusher.Record.Builder(id).build();
     }
     List<DocIdPusher.Record> infos = new ArrayList<DocIdPusher.Record>();
     infos.add(records[0]);
diff --git a/test/adaptorlib/GsaFeedFileMakerTest.java b/test/adaptorlib/GsaFeedFileMakerTest.java
index e3e1083..760c043 100644
--- a/test/adaptorlib/GsaFeedFileMakerTest.java
+++ b/test/adaptorlib/GsaFeedFileMakerTest.java
@@ -75,10 +75,8 @@
         + "</group>\n"
         + "</gsafeed>\n";
     ArrayList<DocIdPusher.Record> ids = new ArrayList<DocIdPusher.Record>();
-    ids.add(new DocIdPusher.Record.Builder()
-        .setDocId(new DocId("E11")).build());
-    ids.add(new DocIdPusher.Record.Builder()
-        .setDocId(new DocId("elefenta")).build());
+    ids.add(new DocIdPusher.Record.Builder(new DocId("E11")).build());
+    ids.add(new DocIdPusher.Record.Builder(new DocId("elefenta")).build());
     String xml = meker.makeMetadataAndUrlXml("t3sT", ids);
     assertEquals(golden, xml);
   }
@@ -109,10 +107,9 @@
         + "</group>\n"
         + "</gsafeed>\n";
     ArrayList<DocIdPusher.Record> ids = new ArrayList<DocIdPusher.Record>();
-    DocIdPusher.Record.Builder attrBuilder = new DocIdPusher.Record.Builder();
+    DocIdPusher.Record.Builder attrBuilder = new DocIdPusher.Record.Builder(new DocId("E11"));
 
     attrBuilder.setResultLink(new URI("http://f000nkey.net"));
-    attrBuilder.setDocId(new DocId("E11"));
     ids.add(attrBuilder.build());
 
     attrBuilder.setResultLink(new URI("http://yankee.doodle.com"));    
diff --git a/test/adaptorlib/JournalTest.java b/test/adaptorlib/JournalTest.java
index 87e760e..1882e75 100644
--- a/test/adaptorlib/JournalTest.java
+++ b/test/adaptorlib/JournalTest.java
@@ -36,14 +36,14 @@
     DocId id3 = new DocId("id3");
     DocId id4 = new DocId("id4");
     ArrayList<DocIdPusher.Record> docs = new ArrayList<DocIdPusher.Record>();
-    docs.add(new DocIdPusher.Record.Builder().setDocId(id).build());
-    docs.add(new DocIdPusher.Record.Builder().setDocId(id2).build());
-    docs.add(new DocIdPusher.Record.Builder().setDocId(id3).build());
+    docs.add(new DocIdPusher.Record.Builder(id).build());
+    docs.add(new DocIdPusher.Record.Builder(id2).build());
+    docs.add(new DocIdPusher.Record.Builder(id3).build());
     journal.recordDocIdPush(docs);
     assertEquals(3, journal.getSnapshot().numUniqueDocIdsPushed);
     journal.recordDocIdPush(docs);
     assertEquals(3, journal.getSnapshot().numUniqueDocIdsPushed);
-    docs.add(new DocIdPusher.Record.Builder().setDocId(id4).build());
+    docs.add(new DocIdPusher.Record.Builder(id4).build());
     journal.recordDocIdPush(docs);
     assertEquals(4, journal.getSnapshot().numUniqueDocIdsPushed);
   }
diff --git a/test/adaptorlib/RecordTest.java b/test/adaptorlib/RecordTest.java
index bbacf3f..a2269aa 100644
--- a/test/adaptorlib/RecordTest.java
+++ b/test/adaptorlib/RecordTest.java
@@ -25,29 +25,24 @@
   public ExpectedException thrown = ExpectedException.none();
 
   @Test
-  public void testNoDocId() {
-    thrown.expect(NullPointerException.class);
-    new DocIdPusher.Record.Builder().build();
-  }
-
-  @Test
   public void testNullDocId() {
     thrown.expect(NullPointerException.class);
-    new DocIdPusher.Record.Builder().setDocId(null).build();
+    DocId nullId = null;
+    new DocIdPusher.Record.Builder(nullId).build();
   }
 
   @Test
   public void testEquals() {
-    DocIdPusher.Record info1 = new DocIdPusher.Record.Builder()
-       .setDocId(new DocId("test")).build();
-    DocIdPusher.Record info2 = new DocIdPusher.Record.Builder()
-        .setDocId(new DocId("test")).build();
-    DocIdPusher.Record info3 = new DocIdPusher.Record.Builder()
-       .setDocId(new DocId("test2")).build();
-    DocIdPusher.Record info4 = new DocIdPusher.Record.Builder()
-        .setDocId(new DocId("test")).setDeleteFromIndex(true).build();
-    DocIdPusher.Record info5 = new DocIdPusher.Record.Builder()
-        .setDocId(new DocId("test2")).setDeleteFromIndex(true).build();
+    DocIdPusher.Record info1 = new DocIdPusher.Record.Builder(
+        new DocId("test")).build();
+    DocIdPusher.Record info2 = new DocIdPusher.Record.Builder(
+        new DocId("test")).build();
+    DocIdPusher.Record info3 = new DocIdPusher.Record.Builder(
+        new DocId("test2")).build();
+    DocIdPusher.Record info4 = new DocIdPusher.Record.Builder(
+        new DocId("test")).setDeleteFromIndex(true).build();
+    DocIdPusher.Record info5 = new DocIdPusher.Record.Builder(
+        new DocId("test2")).setDeleteFromIndex(true).build();
     assertFalse(info1.equals(null));
     assertFalse(info1.equals(new Object()));
     assertEquals(info1, info2);
@@ -62,6 +57,6 @@
         + ",lastModified=null,resultLink=null,crawlImmediately=false"
         + ",crawlOnce=false,lock=false)";
     assertEquals(golden,
-        "" + new DocIdPusher.Record.Builder().setDocId(new DocId("a")).build());
+        "" + new DocIdPusher.Record.Builder(new DocId("a")).build());
   }
 }