Add tons of logging and remove System.outs
diff --git a/logging.properties b/logging.properties
index 499b7cd..4dc3633 100644
--- a/logging.properties
+++ b/logging.properties
@@ -1,5 +1,6 @@
handlers = java.util.logging.ConsoleHandler
-.level = FINE
+.level = INFO
+com.google.enterprise.adaptor.sharepoint.SharePointAdaptor.level = FINER
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = com.google.enterprise.adaptor.CustomFormatter
# Uncomment if your terminal can't handle colors and the auto-detection
diff --git a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
index d49ebdb..b89a36a 100644
--- a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
+++ b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
@@ -46,6 +46,7 @@
import java.nio.charset.Charset;
import java.util.*;
import java.util.concurrent.*;
+import java.util.logging.*;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
@@ -67,6 +68,9 @@
private static final QName OWS_CONTENTTYPE_ATTRIBUTE
= new QName("ows_ContentType");
+ private static final Logger log
+ = Logger.getLogger(SharePointAdaptor.class.getName());
+
private final ConcurrentMap<String, SiteDataClient> clients
= new ConcurrentSkipListMap<String, SiteDataClient>();
private final XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
@@ -92,6 +96,11 @@
String password = config.getValue("sharepoint.password");
String domain = config.getValue("sharepoint.domain");
+ log.log(Level.CONFIG, "VirtualServer: {0}", virtualServer);
+ log.log(Level.CONFIG, "Username: {0}", username);
+ log.log(Level.CONFIG, "Password: {0}", password);
+ log.log(Level.CONFIG, "Domain: {0}", domain);
+
Credentials creds = new NTCredentials(username, password,
config.getServerHostname(), domain);
httpClient.getState().setCredentials(AuthScope.ANY, creds);
@@ -100,6 +109,8 @@
@Override
public void getDocContent(Request request, Response response)
throws IOException {
+ log.entering("SharePointAdaptor", "getDocContent",
+ new Object[] {request, response});
try {
DocId id = request.getDocId();
SiteDataClient virtualServerClient = getSiteDataClient(virtualServer);
@@ -109,23 +120,32 @@
SiteDataClient client
= virtualServerClient.getClientForUrl(id.getUniqueId());
if (client == null) {
+ log.log(Level.FINE, "responding not found");
response.respondNotFound();
+ log.exiting("SharePointAdaptor", "getDocContent");
return;
}
client.getDocContent(request, response);
}
} catch (RuntimeException ex) {
+ log.throwing("SharePointAdaptor", "getDocContent", ex);
throw ex;
} catch (IOException ex) {
+ log.throwing("SharePointAdaptor", "getDocContent", ex);
throw ex;
} catch (Exception ex) {
- throw new IOException(ex);
+ IOException ioe = new IOException(ex);
+ log.throwing("SharePointAdaptor", "getDocContent", ex);
+ throw ioe;
}
+ log.exiting("SharePointAdaptor", "getDocContent");
}
@Override
public void getDocIds(DocIdPusher pusher) throws InterruptedException {
+ log.entering("SharePointAdaptor", "getDocIds", pusher);
pusher.pushDocIds(Arrays.asList(virtualServerDocId));
+ log.exiting("SharePointAdaptor", "getDocIds");
}
private SiteDataClient getSiteDataClient(String site) throws AxisFault {
@@ -139,18 +159,10 @@
}
public static void main(String[] args) throws Exception {
- if (false) {
- final String logPackage = "org.apache.commons.logging.";
- System.setProperty(logPackage + "Log", logPackage + "impl.SimpleLog");
- System.setProperty(logPackage + "simplelog.log.httpclient.wire", "debug");
- System.setProperty(
- logPackage + "simplelog.log.org.apache.commons.httpclient", "debug");
- }
AbstractAdaptor.main(new SharePointAdaptor(), args);
}
private class SiteDataClient {
- private static final boolean DEBUG = false;
private static final String XMLNS
= "http://schemas.microsoft.com/sharepoint/soap/";
@@ -158,6 +170,8 @@
private final String siteUrl;
public SiteDataClient(String site) throws AxisFault {
+ log.entering("SiteDataClient", "SiteDataClient",
+ new Object[] {site});
if (!site.endsWith("/")) {
// Always end with a '/' for a cannonical form.
site = site + "/";
@@ -166,26 +180,27 @@
this.stub = new SiteDataStub(site + "_vti_bin/SiteData.asmx");
Options options = stub._getServiceClient().getOptions();
options.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
+ log.exiting("SiteDataClient", "SiteDataClient");
}
private void getDocContent(Request request, Response response)
throws Exception {
+ log.entering("SiteDataClient", "getDocContent",
+ new Object[] {request, response});
SiteDataStub.GetURLSegments urlRequest
= new SiteDataStub.GetURLSegments();
urlRequest.setStrURL(request.getDocId().getUniqueId());
SiteDataStub.GetURLSegmentsResponse urlResponse
= stub.getURLSegments(urlRequest);
- if (DEBUG) {
- System.out.println("getURLSegmentsResponse");
- System.out.println("Result: "
- + urlResponse.getGetURLSegmentsResult());
- System.out.println("webid: " + urlResponse.getStrWebID());
- System.out.println("itemid: " + urlResponse.getStrItemID());
- System.out.println("listid: " + urlResponse.getStrListID());
- System.out.println("bucketid: " + urlResponse.getStrBucketID());
- }
+ log.log(Level.FINE, "GetURLSegments: Result={0}, StrWebID={1}, "
+ + "StrItemID={2}, StrListID={3}, StrBucketID={4}",
+ new Object[] {urlResponse.getGetURLSegmentsResult(),
+ urlResponse.getStrWebID(), urlResponse.getStrListID(),
+ urlResponse.getStrItemID(), urlResponse.getStrBucketID()});
if (!urlResponse.getGetURLSegmentsResult()) {
+ log.log(Level.FINE, "responding not found");
response.respondNotFound();
+ log.exiting("SiteDataClient", "getDocContent");
return;
}
if (urlResponse.getStrWebID() != null) {
@@ -196,15 +211,17 @@
} else if (urlResponse.getStrListID() != null) {
getListDocContent(request, response, urlResponse.getStrListID());
} else if (urlResponse.getStrBucketID() != null) {
+ log.log(Level.FINE, "responding not found");
response.respondNotFound();
} else {
// Assume it is a top-level site.
getSiteDocContent(request, response, urlResponse.getStrWebID());
}
+ log.exiting("SiteDataClient", "getDocContent");
}
public void callChangesContentDatabase() throws Exception {
- System.out.println(" ContentDatabase Changes");
+ log.entering("SiteDataClient", "callChangesContentDatabase");
SiteDataStub.GetChanges request = new SiteDataStub.GetChanges();
request.setObjectType(SiteDataStub.ObjectType.ContentDatabase);
request.setContentDatabaseId("{4fb7dea1-2912-4927-9eda-1ea2f0977cf8}");
@@ -213,13 +230,15 @@
//request.setCurrentChangeId("");
request.setTimeout(2);
SiteDataStub.GetChangesResponse response = stub.getChanges(request);
- System.out.println(response.getMoreChanges());
- System.out.println(response.getCurrentChangeId());
- System.out.println(response.getLastChangeId());
- System.out.println(response.getGetChangesResult());
+ log.log(Level.FINE, "GetChanges: Result={0}, MoreChanges={1}, "
+ + "CurrentChangeId={2}, LastChangeId={3}", new Object[] {
+ response.getGetChangesResult(), response.getMoreChanges(),
+ response.getCurrentChangeId(), response.getLastChangeId()});
+ log.exiting("SiteDataClient", "callChangesContentDatabase");
}
private DocId encodeDocId(String url) {
+ log.entering("SiteDataClient", "encodeDocId", url);
if (url.toLowerCase().startsWith("https://")
|| url.toLowerCase().startsWith("http://")) {
// Leave as-is.
@@ -231,12 +250,17 @@
String[] parts = siteUrl.split("/", 4);
url = parts[0] + "//" + parts[2] + url;
}
- return new DocId(url);
+ DocId docId = new DocId(url);
+ log.exiting("SiteDataClient", "encodeDocId", docId);
+ return docId;
}
private String encodeUrl(String url) {
+ log.entering("SiteDataClient", "encodeUrl", url);
URI uri = context.getDocIdEncoder().encodeDocId(encodeDocId(url));
- return uri.toASCIIString();
+ String encoded = uri.toASCIIString();
+ log.exiting("SiteDataClient", "encodeUrl", encoded);
+ return encoded;
}
private String liUrl(String url) {
@@ -246,6 +270,8 @@
private void getVirtualServerDocContent(Request request, Response response)
throws Exception {
+ log.entering("SiteDataClient", "getVirtualServerDocContent",
+ new Object[] {request, response});
SiteDataStub.VirtualServer vs = getContentVirtualServer();
response.setContentType("text/html");
Writer writer
@@ -273,10 +299,13 @@
}
writer.write("</ul></body></html>");
writer.flush();
+ log.exiting("SiteDataClient", "getVirtualServerDocContent");
}
private void getSiteDocContent(Request request, Response response,
String id) throws Exception {
+ log.entering("SiteDataClient", "getSiteDocContent",
+ new Object[] {request, response, id});
SiteDataStub.Web w = getContentWeb(id);
response.setContentType("text/html");
Writer writer
@@ -331,16 +360,22 @@
}
writer.write("</body></html>");
writer.flush();
+ log.exiting("SiteDataClient", "getSiteDocContent");
}
private void getListDocContent(Request request, Response response,
String id) throws Exception {
+ log.entering("SiteDataClient", "getListDocContent",
+ new Object[] {request, response, id});
SiteDataStub.List l = getContentList(id);
processFolder(id, "", response);
+ log.exiting("SiteDataClient", "getListDocContent");
}
private void processFolder(String listGuid, String folderPath,
Response response) throws Exception {
+ log.entering("SiteDataClient", "processFolder",
+ new Object[] {listGuid, folderPath, response});
response.setContentType("text/html");
Writer writer
= new OutputStreamWriter(response.getOutputStream(), CHARSET);
@@ -366,6 +401,7 @@
writer.write("</body></html>");
writer.flush();
+ log.exiting("SiteDataClient", "processFolder");
}
private OMElement getFirstChildWithName(SiteDataStub.Xml xml, QName name) {
@@ -385,6 +421,8 @@
private void getListItemDocContent(Request request, Response response,
String listId, String itemId) throws Exception {
+ log.entering("SiteDataClient", "getListItemDocContent",
+ new Object[] {request, response, listId, itemId});
SiteDataStub.ItemData i = getContentItem(listId, itemId);
SiteDataStub.Xml xml = i.getXml();
@@ -404,13 +442,12 @@
SiteDataStub.List l = getContentList(listId);
String root
= encodeDocId(l.getMetadata().getRootFolder()).getUniqueId();
- System.out.println("serverUrl: " + serverUrl);
String folder = encodeDocId(serverUrl).getUniqueId();
if (!folder.startsWith(root)) {
throw new AssertionError();
}
- System.out.println("folder: " + folder);
processFolder(listId, folder.substring(root.length()), response);
+ log.exiting("SiteDataClient", "getListItemDocContent");
return;
}
String contentType = row.getAttributeValue(OWS_CONTENTTYPE_ATTRIBUTE);
@@ -424,7 +461,7 @@
GetMethod method = new GetMethod(url);
int statusCode = httpClient.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
- throw new RuntimeException("Got status code: " + statusCode);
+ throw new IOException("Got status code: " + statusCode);
}
InputStream is = method.getResponseBodyAsStream();
IOHelper.copyStream(is, response.getOutputStream());
@@ -435,107 +472,116 @@
// TODO(ejona): Handle this case.
writer.write("TODO: ListItem");
}
+ log.exiting("SiteDataClient", "getListItemDocContent");
}
private SiteDataStub.VirtualServer getContentVirtualServer()
throws Exception {
+ log.entering("SiteDataClient", "getContentVirtualServer");
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.VirtualServer);
request.setRetrieveChildItems(true);
request.setSecurityOnly(false);
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" VirtualServer");
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(VirtualServer): Result={0}, "
+ + "LastItemIdOnPage={1}", new Object[] {
+ response.getLastItemIdOnPage(), response.getGetContentResult()});
String xml = response.getGetContentResult();
xml = xml.replace("<VirtualServer>",
"<VirtualServer xmlns='" + XMLNS + "'>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.VirtualServer.Factory.parse(reader);
+ SiteDataStub.VirtualServer vs
+ = SiteDataStub.VirtualServer.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentVirtualServer", vs);
+ return vs;
}
private SiteDataClient getClientForUrl(String url) throws Exception {
+ log.entering("SiteDataClient", "getClientForUrl", url);
SiteDataStub.GetSiteAndWeb request = new SiteDataStub.GetSiteAndWeb();
request.setStrUrl(url);
SiteDataStub.GetSiteAndWebResponse response = stub.getSiteAndWeb(request);
- if (DEBUG) {
- System.out.println("GetSiteAndWeb");
- System.out.println("Result: " + response.getGetSiteAndWebResult());
- System.out.println("Site: " + response.getStrSite());
- System.out.println("Web: " + response.getStrWeb());
- }
+ log.log(Level.FINE, "GetSiteAndWeb: Result={0}, StrSite={1}, StrWeb={2}",
+ new Object[] {response.getGetSiteAndWebResult(),
+ response.getStrSite(), response.getStrWeb()});
if (response.getGetSiteAndWebResult().longValue() != 0) {
+ log.exiting("SiteDataClient", "getClientForUrl", null);
return null;
}
- return getSiteDataClient(response.getStrWeb());
+ SiteDataClient client = getSiteDataClient(response.getStrWeb());
+ log.exiting("SiteDataClient", "getClientForUrl", client);
+ return client;
}
private SiteDataStub.ContentDatabase getContentContentDatabase(String id)
throws Exception {
+ log.entering("SiteDataClient", "getContentContentDatabase", id);
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.ContentDatabase);
request.setRetrieveChildItems(true);
request.setSecurityOnly(false);
request.setObjectId(id);
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" ContentDatabase");
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(ContentDatabase): Result={0}, "
+ + "LastItemIdOnPage={1}", new Object[] {
+ response.getGetContentResult(), response.getLastItemIdOnPage()});
String xml = response.getGetContentResult();
xml = xml.replace("<ContentDatabase>",
"<ContentDatabase xmlns='" + XMLNS + "'>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.ContentDatabase.Factory.parse(reader);
+ SiteDataStub.ContentDatabase cd
+ = SiteDataStub.ContentDatabase.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentContentDatabase", cd);
+ return cd;
}
private SiteDataStub.Web getContentWeb(String id) throws Exception {
+ log.entering("SiteDataClient", "getContentWeb", id);
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.Site);
request.setRetrieveChildItems(true);
request.setSecurityOnly(false);
request.setObjectId(id);
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" Web");
- System.out.println(id);
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(Site): Result={0}, LastItemIdOnPage={1}",
+ new Object[] {response.getGetContentResult(),
+ response.getLastItemIdOnPage()});
stub.getContent(request);
String xml = response.getGetContentResult();
xml = xml.replace("<Web>", "<Web xmlns='" + XMLNS + "'>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.Web.Factory.parse(reader);
+ SiteDataStub.Web web = SiteDataStub.Web.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentWeb", web);
+ return web;
}
private SiteDataStub.List getContentList(String id) throws Exception {
+ log.entering("SiteDataClient", "getContentList", id);
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.List);
request.setRetrieveChildItems(false);
request.setSecurityOnly(false);
request.setObjectId(id);
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" List");
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(List): Result={0}, LastItemIdOnPage={1}",
+ new Object[] {response.getGetContentResult(),
+ response.getLastItemIdOnPage()});
String xml = response.getGetContentResult();
xml = xml.replace("<List>", "<List xmlns='" + XMLNS + "'>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.List.Factory.parse(reader);
+ SiteDataStub.List list = SiteDataStub.List.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentList", list);
+ return list;
}
private SiteDataStub.ItemData getContentItem(String listId, String itemId)
throws Exception {
+ log.entering("SiteDataClient", "getContentItem",
+ new Object[] {listId, itemId});
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.ListItem);
request.setRetrieveChildItems(true);
@@ -544,21 +590,23 @@
request.setFolderUrl("");
request.setItemId(itemId);
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" ListItem");
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(ListItem): Result={0}, "
+ + "LastItemIdOnPage={1}", new Object[] {
+ response.getGetContentResult(), response.getLastItemIdOnPage()});
String xml = response.getGetContentResult();
xml = xml.replace("<Item>", "<ItemData xmlns='" + XMLNS + "'>");
xml = xml.replace("</Item>", "</ItemData>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.ItemData.Factory.parse(reader);
+ SiteDataStub.ItemData data = SiteDataStub.ItemData.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentItem", data);
+ return data;
}
private SiteDataStub.Folder getContentFolder(String guid, String url)
throws Exception {
+ log.entering("SiteDataClient", "getContentFolder",
+ new Object[] {guid, url});
SiteDataStub.GetContent request = new SiteDataStub.GetContent();
request.setObjectType(SiteDataStub.ObjectType.Folder);
request.setRetrieveChildItems(true);
@@ -567,16 +615,16 @@
request.setObjectId(guid);
request.setLastItemIdOnPage("");
SiteDataStub.GetContentResponse response = stub.getContent(request);
- if (DEBUG) {
- System.out.println(" Folder (Specific)");
- System.out.println(response.getLastItemIdOnPage());
- System.out.println(response.getGetContentResult());
- }
+ log.log(Level.FINE, "GetContent(Folder): Result={0}, "
+ + "LastItemIdOnPage={1}", new Object[] {
+ response.getGetContentResult(), response.getLastItemIdOnPage()});
String xml = response.getGetContentResult();
xml = xml.replace("<Folder>", "<Folder xmlns='" + XMLNS + "'>");
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader(xml));
- return SiteDataStub.Folder.Factory.parse(reader);
+ SiteDataStub.Folder folder = SiteDataStub.Folder.Factory.parse(reader);
+ log.exiting("SiteDataClient", "getContentFolder", folder);
+ return folder;
}
}
}