Author: kwright
Date: Wed Sep 12 13:28:00 2012
New Revision: 1383929
URL: http://svn.apache.org/viewvc?rev=1383929&view=rev
Log:
Fix login problem pointed out by Maciej
Modified:
manifoldcf/branches/CONNECTORS-518/connectors/wiki/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/wiki/WikiConnector.java
Modified:
manifoldcf/branches/CONNECTORS-518/connectors/wiki/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/wiki/WikiConnector.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-518/connectors/wiki/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/wiki/WikiConnector.java?rev=1383929&r1=1383928&r2=1383929&view=diff
==============================================================================
---
manifoldcf/branches/CONNECTORS-518/connectors/wiki/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/wiki/WikiConnector.java
(original)
+++
manifoldcf/branches/CONNECTORS-518/connectors/wiki/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/wiki/WikiConnector.java
Wed Sep 12 13:28:00 2012
@@ -172,11 +172,13 @@ public class WikiConnector extends org.a
if (serverDomain != null && !"".equals(serverDomain)) {
loginParams.put("lgdomain", serverDomain);
}
-
+
+ APILoginResult result = new APILoginResult();
+
HttpMethodBase method = getInitializedPostMethod(loginURL,loginParams);
try {
- ExecuteAPILoginThread t = new ExecuteAPILoginThread(client, method);
+ ExecuteAPILoginThread t = new ExecuteAPILoginThread(client, method,
result);
try {
t.start();
t.join();
@@ -213,8 +215,17 @@ public class WikiConnector extends org.a
throw e;
}
+ if (result.result)
+ return true;
+
// Grab the token from the first call
token = t.getToken();
+ if (token == null)
+ {
+ // We don't need a token, we just couldn't log in
+ Logging.connectors.debug("WIKI API login error: '" + result.reason +
"'");
+ throw new ManifoldCFException("WIKI API login error: " +
result.reason, null, ManifoldCFException.REPOSITORY_CONNECTION_ERROR);
+ }
} catch (InterruptedException e) {
// Drop the connection on the floor
@@ -246,14 +257,8 @@ public class WikiConnector extends org.a
}
}
- if (token == null) {
- throw new ManifoldCFException("WIKI API login returned a null token!");
- }
-
// First request is finished. Fire off the second one.
- APILoginResult result = new APILoginResult();
-
loginParams.put("lgtoken", token);
method = getInitializedPostMethod(loginURL,loginParams);
@@ -343,14 +348,16 @@ public class WikiConnector extends org.a
protected HttpClient client;
protected HttpMethodBase executeMethod;
+ protected APILoginResult result;
protected Throwable exception = null;
protected String token = null;
- public ExecuteAPILoginThread(HttpClient client, HttpMethodBase
executeMethod) {
+ public ExecuteAPILoginThread(HttpClient client, HttpMethodBase
executeMethod, APILoginResult result) {
super();
setDaemon(true);
this.client = client;
this.executeMethod = executeMethod;
+ this.result = result;
}
public void run() {
@@ -374,7 +381,7 @@ public class WikiConnector extends org.a
// />
//</api>
XMLStream x = new XMLStream();
- WikiLoginAPIContext c = new WikiLoginAPIContext(x);
+ WikiLoginAPIContext c = new WikiLoginAPIContext(x,result);
x.setContext(c);
try {
try {
@@ -416,14 +423,16 @@ public class WikiConnector extends org.a
*/
protected class WikiLoginAPIContext extends SingleLevelContext {
+ protected APILoginResult result;
protected String token = null;
- public WikiLoginAPIContext(XMLStream theStream) {
+ public WikiLoginAPIContext(XMLStream theStream, APILoginResult result) {
super(theStream, "api");
+ this.result = result;
}
protected BaseProcessingContext createChild(String namespaceURI, String
localName, String qName, Attributes atts) {
- return new WikiLoginAPIResultAPIContext(theStream, namespaceURI,
localName, qName, atts);
+ return new WikiLoginAPIResultAPIContext(theStream, namespaceURI,
localName, qName, atts, result);
}
protected void finishChild(BaseProcessingContext child)
@@ -443,10 +452,12 @@ public class WikiConnector extends org.a
*/
protected class WikiLoginAPIResultAPIContext extends BaseProcessingContext {
+ protected APILoginResult result;
protected String token = null;
- public WikiLoginAPIResultAPIContext(XMLStream theStream, String
namespaceURI, String localName, String qName, Attributes atts) {
+ public WikiLoginAPIResultAPIContext(XMLStream theStream, String
namespaceURI, String localName, String qName, Attributes atts, APILoginResult
result) {
super(theStream, namespaceURI, localName, qName, atts);
+ this.result = result;
}
protected XMLContext beginTag(String namespaceURI, String localName,
String qName, Attributes atts)
@@ -455,6 +466,10 @@ public class WikiConnector extends org.a
String loginResult = atts.getValue("result");
if ("NeedToken".equals(loginResult)) {
token = atts.getValue("token");
+ } else if ("Success".equals(loginResult)) {
+ result.result = true;
+ } else {
+ result.reason = loginResult;
}
}
return super.beginTag(namespaceURI, localName, qName, atts);