Revert "Remove DocumentHandler.AsyncPusher interface"
This reverts commit 4adc1004c67d2be21639ad7a7473ff69f7677946.
This CL exoses a failure where Item was visible outside of
library package. Further thinking about this CL revelaed
that DocumentHandler.AsyncPusher had a purpose of hiding
the pushing of fragments (which are pushed because of GSA
limitations).
diff --git a/src/com/google/enterprise/adaptor/AsyncDocIdPusher.java b/src/com/google/enterprise/adaptor/AsyncDocIdPusher.java
index 5186cb8..8b310db 100644
--- a/src/com/google/enterprise/adaptor/AsyncDocIdPusher.java
+++ b/src/com/google/enterprise/adaptor/AsyncDocIdPusher.java
@@ -20,13 +20,6 @@
*/
public interface AsyncDocIdPusher {
/**
- * Push a {@code Item} asynchronously to the GSA. The {@code Item} is
- * enqueued and sent in the next batch to the GSA. If the queue is full,
- * then the item will be dropped and a warning will be logged.
- */
- public void pushItem(DocIdPusher.Item item);
-
- /**
* Push a {@code DocId} asynchronously to the GSA. The {@code DocId} is
* enqueued and sent in the next batch to the GSA. If the queue is full,
* then the item will be dropped and a warning will be logged.
diff --git a/src/com/google/enterprise/adaptor/AsyncDocIdSender.java b/src/com/google/enterprise/adaptor/AsyncDocIdSender.java
index 6f965e6..ce59de9 100644
--- a/src/com/google/enterprise/adaptor/AsyncDocIdSender.java
+++ b/src/com/google/enterprise/adaptor/AsyncDocIdSender.java
@@ -23,7 +23,8 @@
* Asynchronous sender of feed items. {@code worker()} must be started by client
* and running for items to be sent.
*/
-class AsyncDocIdSender implements AsyncDocIdPusher {
+class AsyncDocIdSender implements AsyncDocIdPusher,
+ DocumentHandler.AsyncPusher {
private static final Logger log
= Logger.getLogger(AsyncDocIdSender.class.getName());
@@ -56,8 +57,12 @@
this.queue = new ArrayBlockingQueue<DocIdPusher.Item>(queueCapacity);
}
+ /**
+ * Enqueue {@code item} to be sent by worker. If the queue is full, then the
+ * item will be dropped and a warning will be logged.
+ */
@Override
- public void pushItem(final DocIdPusher.Item item) {
+ public void asyncPushItem(final DocIdPusher.Item item) {
if (!queue.offer(item)) {
log.log(Level.WARNING, "Failed to queue item: {0}", item);
}
@@ -65,17 +70,17 @@
@Override
public void pushDocId(DocId docId) {
- pushItem(new DocIdPusher.Record.Builder(docId).build());
+ asyncPushItem(new DocIdPusher.Record.Builder(docId).build());
}
@Override
public void pushRecord(DocIdPusher.Record record) {
- pushItem(record);
+ asyncPushItem(record);
}
@Override
public void pushNamedResource(DocId docId, Acl acl) {
- pushItem(new DocIdSender.AclItem(docId, null, acl));
+ asyncPushItem(new DocIdSender.AclItem(docId, null, acl));
}
public Runnable worker() {
diff --git a/src/com/google/enterprise/adaptor/DocumentHandler.java b/src/com/google/enterprise/adaptor/DocumentHandler.java
index 6038426..b323d43 100644
--- a/src/com/google/enterprise/adaptor/DocumentHandler.java
+++ b/src/com/google/enterprise/adaptor/DocumentHandler.java
@@ -49,7 +49,7 @@
private final Adaptor adaptor;
private final AuthzAuthority authzAuthority;
private final Watchdog watchdog;
- private final AsyncDocIdPusher pusher;
+ private final AsyncPusher pusher;
/**
* List of Common Names of Subjects that are provided full access when in
* secure mode. All entries should be lower case.
@@ -79,7 +79,7 @@
SamlServiceProvider samlServiceProvider,
TransformPipeline transform, AclTransform aclTransform,
boolean useCompression,
- Watchdog watchdog, AsyncDocIdPusher pusher,
+ Watchdog watchdog, AsyncPusher pusher,
boolean sendDocControls, long headerTimeoutMillis,
long contentTimeoutMillis, String scoringType) {
if (docIdDecoder == null || docIdEncoder == null || journal == null
@@ -807,7 +807,7 @@
if (displayUrl != null || crawlOnce || lock) {
// Emulate these crawl-time values by sending them in feeds
// since they aren't supported at crawl-time on GSA 7.0.
- pusher.pushItem(new DocIdPusher.Record.Builder(docId)
+ pusher.asyncPushItem(new DocIdPusher.Record.Builder(docId)
.setResultLink(displayUrl).setCrawlOnce(crawlOnce).setLock(lock)
.build());
// TODO(ejona): figure out how to notice that a true went false
@@ -849,7 +849,7 @@
HttpExchanges.startResponse(
ex, HttpURLConnection.HTTP_OK, contentType, hasContent);
for (Map.Entry<String, Acl> fragment : fragments.entrySet()) {
- pusher.pushItem(new DocIdSender.AclItem(docId,
+ pusher.asyncPushItem(new DocIdSender.AclItem(docId,
fragment.getKey(), fragment.getValue()));
}
}
@@ -886,7 +886,7 @@
// CHILD_OVERRIDES and PARENT_OVERRIDES are fine as-is.
}
final String fragment = "generated";
- pusher.pushItem(
+ pusher.asyncPushItem(
new DocIdSender.AclItem(docId, fragment, namedResourceAcl.build()));
return new Acl.Builder()
.setInheritanceType(acl.getInheritanceType())
@@ -1024,4 +1024,8 @@
buffer.write(b, off, len);
}
}
+
+ interface AsyncPusher {
+ public void asyncPushItem(DocIdPusher.Item item);
+ }
}
diff --git a/test/com/google/enterprise/adaptor/AsyncDocIdSenderTest.java b/test/com/google/enterprise/adaptor/AsyncDocIdSenderTest.java
index 48b176b..445961d 100644
--- a/test/com/google/enterprise/adaptor/AsyncDocIdSenderTest.java
+++ b/test/com/google/enterprise/adaptor/AsyncDocIdSenderTest.java
@@ -64,11 +64,11 @@
new DocIdPusher.Record.Builder(new DocId("2")).build(),
new DocIdPusher.Record.Builder(new DocId("3")).build());
for (DocIdPusher.Record record : golden) {
- sender.pushItem(record);
+ sender.asyncPushItem(record);
}
// We shouldn't block while adding this item, even though the queue is full.
// Instead, it should simply be dropped.
- sender.pushItem(
+ sender.asyncPushItem(
new DocIdPusher.Record.Builder(new DocId("4")).build());
Thread workerThread = new Thread(sender.worker());
workerThread.start();
@@ -85,7 +85,7 @@
1, TimeUnit.SECONDS, 1 /* queueCapacity */);
final List<DocIdPusher.Record> golden = Arrays.asList(
new DocIdPusher.Record.Builder(new DocId("1")).build());
- sender.pushItem(golden.get(0));
+ sender.asyncPushItem(golden.get(0));
Thread workerThread = new Thread(sender.worker());
workerThread.start();
// We want to trigger the code that waits on maxLatency.
@@ -101,7 +101,7 @@
1, TimeUnit.SECONDS, 1 /* queueCapacity */);
final List<DocIdPusher.Record> golden = Arrays.asList(
new DocIdPusher.Record.Builder(new DocId("1")).build());
- sender.pushItem(golden.get(0));
+ sender.asyncPushItem(golden.get(0));
final Runnable worker = sender.worker();
Thread workerThread = new Thread(new Runnable() {
@Override
diff --git a/test/com/google/enterprise/adaptor/DocumentHandlerTest.java b/test/com/google/enterprise/adaptor/DocumentHandlerTest.java
index 31bd18e..def1a80 100644
--- a/test/com/google/enterprise/adaptor/DocumentHandlerTest.java
+++ b/test/com/google/enterprise/adaptor/DocumentHandlerTest.java
@@ -1163,9 +1163,9 @@
response.getOutputStream();
}
};
- AsyncDocIdPusher pusher = new MockPusher() {
+ DocumentHandler.AsyncPusher pusher = new DocumentHandler.AsyncPusher() {
@Override
- public void pushItem(DocIdPusher.Item item) {
+ public void asyncPushItem(DocIdPusher.Item item) {
assertTrue(item instanceof DocIdPusher.Record);
DocIdPusher.Record record = (DocIdPusher.Record) item;
assertEquals(URI.create("http://example.com"), record.getResultLink());
@@ -1203,9 +1203,9 @@
.setPermitUsers(Arrays.asList(
new UserPrincipal("user2"), new UserPrincipal("user", "ns")))
.build());
- handler = builder.setPusher(new MockPusher() {
+ handler = builder.setPusher(new DocumentHandler.AsyncPusher() {
@Override
- public void pushItem(DocIdPusher.Item item) {
+ public void asyncPushItem(DocIdPusher.Item item) {
assertTrue(item instanceof DocIdSender.AclItem);
DocIdSender.AclItem aclItem = (DocIdSender.AclItem) item;
assertEquals(defaultDocId, aclItem.getDocId());
@@ -1227,9 +1227,9 @@
.setDenyUsers(Arrays.asList(new UserPrincipal("user", "ns")))
.setInheritanceType(Acl.InheritanceType.PARENT_OVERRIDES)
.build());
- handler = builder.setPusher(new MockPusher() {
+ handler = builder.setPusher(new DocumentHandler.AsyncPusher() {
@Override
- public void pushItem(DocIdPusher.Item item) {
+ public void asyncPushItem(DocIdPusher.Item item) {
assertTrue(item instanceof DocIdSender.AclItem);
DocIdSender.AclItem aclItem = (DocIdSender.AclItem) item;
assertEquals(defaultDocId, aclItem.getDocId());
@@ -1250,9 +1250,9 @@
.setPermitGroups(Arrays.asList(new GroupPrincipal("group", "ns")))
.setInheritanceType(Acl.InheritanceType.CHILD_OVERRIDES)
.build());
- handler = builder.setPusher(new MockPusher() {
+ handler = builder.setPusher(new DocumentHandler.AsyncPusher() {
@Override
- public void pushItem(DocIdPusher.Item item) {
+ public void asyncPushItem(DocIdPusher.Item item) {
assertTrue(item instanceof DocIdSender.AclItem);
DocIdSender.AclItem aclItem = (DocIdSender.AclItem) item;
assertEquals(defaultDocId, aclItem.getDocId());
@@ -1273,9 +1273,9 @@
.setDenyGroups(Arrays.asList(new GroupPrincipal("group", "ns")))
.setInheritanceType(Acl.InheritanceType.CHILD_OVERRIDES)
.build());
- handler = builder.setPusher(new MockPusher() {
+ handler = builder.setPusher(new DocumentHandler.AsyncPusher() {
@Override
- public void pushItem(DocIdPusher.Item item) {
+ public void asyncPushItem(DocIdPusher.Item item) {
assertTrue(item instanceof DocIdSender.AclItem);
DocIdSender.AclItem aclItem = (DocIdSender.AclItem) item;
assertEquals(defaultDocId, aclItem.getDocId());
@@ -1312,7 +1312,12 @@
};
DocumentHandler handler = createHandlerBuilder()
.setAdaptor(adaptor)
- .setPusher(new MockPusher())
+ .setPusher(new DocumentHandler.AsyncPusher() {
+ @Override
+ public void asyncPushItem(DocIdPusher.Item item) {
+ fail("Should not have been called");
+ }
+ })
.setFullAccessHosts(new String[] {remoteIp})
.build();
ex = new MockHttpExchange("GET", defaultPath, new MockHttpContext("/"));
@@ -1348,21 +1353,9 @@
}
};
- private static class MockPusher implements AsyncDocIdPusher {
+ private static class MockPusher implements DocumentHandler.AsyncPusher {
@Override
- public void pushItem(DocIdPusher.Item item) {
- fail("Should not have been called");
- }
- @Override
- public void pushDocId(DocId docId) {
- fail("Should not have been called");
- }
- @Override
- public void pushRecord(DocIdPusher.Record record) {
- fail("Should not have been called");
- }
- @Override
- public void pushNamedResource(DocId docId, Acl acl) {
+ public void asyncPushItem(DocIdPusher.Item item) {
fail("Should not have been called");
}
}
@@ -1419,7 +1412,7 @@
private boolean transformRequired;
private boolean useCompression;
private Watchdog watchdog;
- private AsyncDocIdPusher pusher;
+ private DocumentHandler.AsyncPusher pusher;
private boolean sendDocControls;
private long headerTimeoutMillis = 30 * 1000;
private long contentTimeoutMillis = 180 * 1000;
@@ -1488,7 +1481,7 @@
}
public DocumentHandlerBuilder setPusher(
- AsyncDocIdPusher pusher) {
+ DocumentHandler.AsyncPusher pusher) {
this.pusher = pusher;
return this;
}