Fix NPE when restarting adaptor
The adaptor should be able to be restarted via destroy() and init(). We
accidentally were clearing out a variable during destroy() but not
creating it in init(), which prevented restarting from working.
diff --git a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
index d8ab6a6..65bfb90 100644
--- a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
+++ b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
@@ -254,8 +254,7 @@
private int feedMaxUrls;
private long maxIndexableSize;
- private ScheduledThreadPoolExecutor scheduledExecutor
- = new ScheduledThreadPoolExecutor(1);
+ private ScheduledThreadPoolExecutor scheduledExecutor;
private String defaultNamespace;
/** Authenticator instance that authenticates with SP. */
/**
@@ -365,6 +364,7 @@
Authenticator.setDefault(ntlmAuthenticator);
URL virtualServerUrl = new URL(virtualServer);
ntlmAuthenticator.addPermitForHost(virtualServerUrl);
+ scheduledExecutor = new ScheduledThreadPoolExecutor(1);
String authenticationEndPoint = spUrlToUri(
virtualServer + "/_vti_bin/Authentication.asmx").toString();
authenticationHandler = new FormsAuthenticationHandler(username,
diff --git a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
index c3bd6e5..8223d39 100644
--- a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
+++ b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
@@ -312,6 +312,17 @@
}
@Test
+ public void testInitDestroyInitDestroy() throws Exception {
+ adaptor = new SharePointAdaptor(initableSoapFactory,
+ new UnsupportedHttpClient(), executorFactory);
+ adaptor.init(new MockAdaptorContext(config, pusher));
+ adaptor.destroy();
+ adaptor.init(new MockAdaptorContext(config, pusher));
+ adaptor.destroy();
+ adaptor = null;
+ }
+
+ @Test
public void testTrailingSlashInit() throws Exception {
adaptor = new SharePointAdaptor(initableSoapFactory,
new UnsupportedHttpClient(), executorFactory);