You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/08/08 17:27:45 UTC
svn commit: r1154989 -
/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/
Author: kwright
Date: Mon Aug 8 15:27:44 2011
New Revision: 1154989
URL: http://svn.apache.org/viewvc?rev=1154989&view=rev
Log:
Applied second patch
Modified:
incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnection.java
incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnector.java
incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerDelete.java
incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerIndex.java
incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerParam.java
Modified: incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnection.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnection.java?rev=1154989&r1=1154988&r2=1154989&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnection.java (original)
+++ incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnection.java Mon Aug 8 15:27:44 2011
@@ -1,14 +1,111 @@
package org.apache.manifoldcf.agents.output.opensearchserver;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.manifoldcf.agents.output.opensearchserver.OpenSearchServerParam.ParameterEnum;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
public class OpenSearchServerConnection {
+ private String serverLocation;
+
+ private String indexName;
+
+ private String userName;
+
+ private String apiKey;
+
+ private String resultCode;
+
+ private String resultDescription;
+
+ private String callUrlSnippet;
+
+ protected OpenSearchServerConnection(OpenSearchServerParam params) {
+ resultCode = null;
+ resultDescription = null;
+ callUrlSnippet = null;
+ serverLocation = params.get(ParameterEnum.SERVERLOCATION);
+ indexName = params.get(ParameterEnum.INDEXNAME);
+ userName = params.get(ParameterEnum.USERNAME);
+ apiKey = params.get(ParameterEnum.APIKEY);
+ }
+
+ protected final String urlEncode(String t) throws ManifoldCFException {
+ try {
+ return URLEncoder.encode(t, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new ManifoldCFException(e);
+ }
+ }
+
+ protected StringBuffer getApiUrl(String command) throws ManifoldCFException {
+ StringBuffer url = new StringBuffer(serverLocation);
+ if (!serverLocation.endsWith("/"))
+ url.append('/');
+ url.append(command);
+ url.append("?use=");
+ url.append(urlEncode(indexName));
+ callUrlSnippet = url.toString();
+ if (userName != null && apiKey != null && userName.length() > 0
+ && apiKey.length() > 0) {
+ url.append("&login=");
+ url.append(urlEncode(userName));
+ url.append("&key=");
+ url.append(apiKey);
+ }
+ return url;
+ }
+
+ protected void call(HttpMethod method) throws ManifoldCFException {
+ HttpClient hc = new HttpClient();
+ try {
+ hc.executeMethod(method);
+ } catch (HttpException e) {
+ throw new ManifoldCFException(e);
+ } catch (IOException e) {
+ throw new ManifoldCFException(e);
+ } finally {
+ if (method != null) {
+ setResultCode(method.getStatusCode());
+ setResultDescription(method.getStatusText());
+ method.releaseConnection();
+ }
+ }
+ }
+
+ private void setResultDescription(String desc) {
+ resultDescription = desc;
+ }
+
public String getResultDescription() {
- // TODO Auto-generated method stub
- return null;
+ return resultDescription;
+ }
+
+ private void setResultCode(int code) {
+ switch (code) {
+ case 0:
+ resultCode = null;
+ break;
+ case 200:
+ resultCode = "OK";
+ break;
+ default:
+ resultCode = "ERR (" + code + ")";
+ break;
+ }
}
public String getResultCode() {
- // TODO Auto-generated method stub
- return null;
+ return resultCode;
+ }
+
+ public String getCallUrlSnippet() {
+ return callUrlSnippet;
}
}
Modified: incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnector.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnector.java?rev=1154989&r1=1154988&r2=1154989&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnector.java (original)
+++ incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerConnector.java Mon Aug 8 15:27:44 2011
@@ -6,14 +6,15 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
-import java.util.Set;
import org.apache.commons.io.IOUtils;
import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
+import org.apache.manifoldcf.agents.interfaces.IOutputNotifyActivity;
import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
import org.apache.manifoldcf.agents.output.BaseOutputConnector;
+import org.apache.manifoldcf.agents.output.opensearchserver.OpenSearchServerAction.CommandEnum;
import org.apache.manifoldcf.core.interfaces.ConfigParams;
import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
import org.apache.manifoldcf.core.interfaces.IPostParameters;
@@ -23,11 +24,18 @@ import org.apache.manifoldcf.core.interf
public class OpenSearchServerConnector extends BaseOutputConnector {
private final static String OPENSEARCHSERVER_INDEXATION_ACTIVITY = "Indexation";
- private final static String OPENSEARCHSERVER_DELETION_ACTIVTY = "Deletion";
+ private final static String OPENSEARCHSERVER_DELETION_ACTIVITY = "Deletion";
+ private final static String OPENSEARCHSERVER_OPTIMIZE_ACTIVITY = "Optimize";
private final static String[] OPENSEARCHSERVER_ACTIVITIES = {
OPENSEARCHSERVER_INDEXATION_ACTIVITY,
- OPENSEARCHSERVER_DELETION_ACTIVTY };
+ OPENSEARCHSERVER_DELETION_ACTIVITY,
+ OPENSEARCHSERVER_OPTIMIZE_ACTIVITY };
+
+ private final static String OPENSEARCHSERVER_TAB_PARAMETER = "Parameters";
+
+ // private final static String OPENSEARCHSERVER_TAB_FIELDMAPPING =
+ // "Field mapping";
@Override
public String[] getActivitiesList() {
@@ -43,14 +51,14 @@ public class OpenSearchServerConnector e
* @throws ManifoldCFException
*/
private void outputResource(String resName, IHTTPOutput out,
- Set<OpenSearchServerParam> params) throws ManifoldCFException {
+ OpenSearchServerParam params) throws ManifoldCFException {
InputStream is = getClass().getResourceAsStream(resName);
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String line;
while ((line = br.readLine()) != null)
- out.println(OpenSearchServerParam.replace(line, params));
+ out.println(params.replace(line));
} catch (UnsupportedEncodingException e) {
throw new ManifoldCFException(e);
} catch (IOException e) {
@@ -69,7 +77,7 @@ public class OpenSearchServerConnector e
throws ManifoldCFException, IOException {
super.outputConfigurationHeader(threadContext, out, parameters,
tabsArray);
- tabsArray.add("Parameters");
+ tabsArray.add(OPENSEARCHSERVER_TAB_PARAMETER);
}
@Override
@@ -77,21 +85,51 @@ public class OpenSearchServerConnector e
IHTTPOutput out, ConfigParams parameters, String tabName)
throws ManifoldCFException, IOException {
super.outputConfigurationBody(threadContext, out, parameters, tabName);
- Set<OpenSearchServerParam> params = OpenSearchServerParam
- .getParameters(OpenSearchServerParam.CONFIGURATIONLIST,
- parameters);
- if ("Parameters".equals(tabName))
- outputResource("configuration.html", out, params);
+ if (OPENSEARCHSERVER_TAB_PARAMETER.equals(tabName)) {
+ outputResource("configuration.html", out, getParameters(parameters));
+ }
+ }
+
+ // @Override
+ // public void outputSpecificationHeader(IHTTPOutput out,
+ // OutputSpecification os, List<String> tabsArray)
+ // throws ManifoldCFException, IOException {
+ // super.outputSpecificationHeader(out, os, tabsArray);
+ // tabsArray.add(OPENSEARCHSERVER_TAB_FIELDMAPPING);
+ // }
+ //
+ // @Override
+ // public void outputSpecificationBody(IHTTPOutput out,
+ // OutputSpecification os, String tabName) throws ManifoldCFException,
+ // IOException {
+ // super.outputSpecificationBody(out, os, tabName);
+ // if (OPENSEARCHSERVER_TAB_FIELDMAPPING.equals(tabName)) {
+ // Set<OpenSearchServerParam> params = OpenSearchServerParam
+ // .getParameters(OpenSearchServerParam.SPECIFICATIONLIST, os);
+ // outputResource("fieldmapping.html", out, params);
+ // }
+ // }
+
+ /**
+ * Build a Set of OpenSearchServerParam. If configParams is null,
+ * getConfiguration() is used.
+ *
+ * @param configParams
+ * @return
+ */
+ final private OpenSearchServerParam getParameters(ConfigParams configParams) {
+ if (configParams == null)
+ configParams = getConfiguration();
+ OpenSearchServerParam parameters = new OpenSearchServerParam(
+ OpenSearchServerParam.CONFIGURATIONLIST, configParams);
+ return parameters;
}
@Override
public void viewConfiguration(IThreadContext threadContext,
IHTTPOutput out, ConfigParams parameters)
throws ManifoldCFException, IOException {
- Set<OpenSearchServerParam> params = OpenSearchServerParam
- .getParameters(OpenSearchServerParam.CONFIGURATIONLIST,
- parameters);
- outputResource("view.html", out, params);
+ outputResource("view.html", out, getParameters(parameters));
}
@Override
@@ -113,7 +151,7 @@ public class OpenSearchServerConnector e
try {
long startTime = System.currentTimeMillis();
OpenSearchServerIndex oi = new OpenSearchServerIndex(documentURI,
- inputStream);
+ inputStream, getParameters(null));
activities.recordActivity(startTime,
OPENSEARCHSERVER_INDEXATION_ACTIVITY,
document.getBinaryLength(), documentURI,
@@ -129,11 +167,24 @@ public class OpenSearchServerConnector e
IOutputRemoveActivity activities) throws ManifoldCFException,
ServiceInterruption {
long startTime = System.currentTimeMillis();
- OpenSearchServerDelete od = new OpenSearchServerDelete(documentURI);
- activities.recordActivity(startTime, OPENSEARCHSERVER_DELETION_ACTIVTY,
- null, documentURI, od.getResultCode(),
- od.getResultDescription());
- System.out.flush();
+ OpenSearchServerDelete od = new OpenSearchServerDelete(documentURI,
+ getParameters(null));
+ activities.recordActivity(startTime,
+ OPENSEARCHSERVER_DELETION_ACTIVITY, null, documentURI,
+ od.getResultCode(), od.getResultDescription());
+ }
+
+ @Override
+ public void noteJobComplete(IOutputNotifyActivity activities)
+ throws ManifoldCFException, ServiceInterruption {
+ long startTime = System.currentTimeMillis();
+ OpenSearchServerAction oo = new OpenSearchServerAction(
+ CommandEnum.optimize, getParameters(null));
+ activities.recordActivity(startTime,
+ OPENSEARCHSERVER_OPTIMIZE_ACTIVITY, null,
+ oo.getCallUrlSnippet(), oo.getResultCode(),
+ oo.getResultDescription());
+
}
}
Modified: incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerDelete.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerDelete.java?rev=1154989&r1=1154988&r2=1154989&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerDelete.java (original)
+++ incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerDelete.java Mon Aug 8 15:27:44 2011
@@ -1,9 +1,17 @@
package org.apache.manifoldcf.agents.output.opensearchserver;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
public class OpenSearchServerDelete extends OpenSearchServerConnection {
- public OpenSearchServerDelete(String documentURI) {
- // TODO Auto-generated constructor stub
+ public OpenSearchServerDelete(String documentURI,
+ OpenSearchServerParam params) throws ManifoldCFException {
+ super(params);
+ StringBuffer url = getApiUrl("delete");
+ url.append("&uniq=");
+ url.append(urlEncode(documentURI));
+ GetMethod method = new GetMethod(url.toString());
+ call(method);
}
-
}
Modified: incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerIndex.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerIndex.java?rev=1154989&r1=1154988&r2=1154989&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerIndex.java (original)
+++ incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerIndex.java Mon Aug 8 15:27:44 2011
@@ -1,10 +1,63 @@
package org.apache.manifoldcf.agents.output.opensearchserver;
+import java.io.IOException;
import java.io.InputStream;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.httpclient.methods.PutMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
public class OpenSearchServerIndex extends OpenSearchServerConnection {
- public OpenSearchServerIndex(String documentURI, InputStream inputStream) {
+ public OpenSearchServerIndex(String documentURI, InputStream inputStream,
+ OpenSearchServerParam params) throws ManifoldCFException {
+ super(params);
+ try {
+ StringBuffer url = getApiUrl("update");
+ PutMethod put = new PutMethod(url.toString());
+ RequestEntity entity = new StringRequestEntity(getXML(documentURI,
+ inputStream), "text/xml", "UTF-8");
+ put.setRequestEntity(entity);
+ call(put);
+ } catch (UnsupportedEncodingException e) {
+ throw new ManifoldCFException(e);
+ } catch (XMLStreamException e) {
+ throw new ManifoldCFException(e);
+ } catch (IOException e) {
+ throw new ManifoldCFException(e);
+ }
}
+ private String getXML(String documentURI, InputStream inputStream)
+ throws XMLStreamException, IOException {
+ String fileName = FilenameUtils.getName(documentURI);
+ XMLOutputFactory factory = XMLOutputFactory.newInstance();
+ StringWriter sw = new StringWriter();
+ XMLStreamWriter writer = factory.createXMLStreamWriter(sw);
+ writer.writeStartDocument("UTF-8", "1.0");
+ writer.writeStartElement("index");
+ writer.writeStartElement("document");
+ writer.writeStartElement("field");
+ writer.writeAttribute("name", "uri");
+ writer.writeStartElement("value");
+ writer.writeCData(documentURI);
+ writer.writeEndElement(); // ends value
+ writer.writeEndElement(); // ends field
+ writer.writeStartElement("binary");
+ writer.writeAttribute("fileName", fileName);
+ writer.writeCharacters(new String(Base64.encodeBase64(
+ IOUtils.toByteArray(inputStream), true)));
+ writer.writeEndDocument();
+ return sw.toString();
+ }
}
Modified: incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerParam.java
URL: http://svn.apache.org/viewvc/incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerParam.java?rev=1154989&r1=1154988&r2=1154989&view=diff
==============================================================================
--- incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerParam.java (original)
+++ incubator/lcf/branches/CONNECTORS-224/connectors/opensearchserver/connector/src/main/java/org/apache/manifoldcf/agents/output/opensearchserver/OpenSearchServerParam.java Mon Aug 8 15:27:44 2011
@@ -1,24 +1,27 @@
package org.apache.manifoldcf.agents.output.opensearchserver;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.manifoldcf.agents.output.opensearchserver.OpenSearchServerParam.ParameterEnum;
import org.apache.manifoldcf.core.interfaces.ConfigParams;
import org.apache.manifoldcf.core.interfaces.IPostParameters;
-public class OpenSearchServerParam {
+public class OpenSearchServerParam extends HashMap<ParameterEnum, String> {
/**
* Parameters constants
*/
- private enum ParameterEnum {
+ public enum ParameterEnum {
SERVERLOCATION("http://localhost:8080/"),
INDEXNAME("index"),
USERNAME(""),
- APIKEY("");
+ APIKEY(""),
+
+ FIELDLIST("");
final protected String defaultValue;
@@ -27,14 +30,6 @@ public class OpenSearchServerParam {
}
}
- final public ParameterEnum key;
- final public String value;
-
- protected OpenSearchServerParam(ParameterEnum key, String value) {
- this.key = key;
- this.value = value;
- }
-
/**
* Parameters used for the configuration
*/
@@ -42,36 +37,37 @@ public class OpenSearchServerParam {
ParameterEnum.SERVERLOCATION, ParameterEnum.INDEXNAME,
ParameterEnum.USERNAME, ParameterEnum.APIKEY };
+ final public static ParameterEnum[] SPECIFICATIONLIST = { ParameterEnum.FIELDLIST };
+
+ private static final long serialVersionUID = -1593234685772720029L;
+
/**
* Build a set of OpenSearchServerParameters by reading ConfigParams. If the
* value returned by ConfigParams.getParameter is null, the default value is
* set.
*
+ * @param paramList
* @param params
- * @return
*/
- final public static Set<OpenSearchServerParam> getParameters(
- ParameterEnum[] paramList, ConfigParams params) {
- Set<OpenSearchServerParam> ossParams = new HashSet<OpenSearchServerParam>();
+ public OpenSearchServerParam(ParameterEnum[] paramList, ConfigParams params) {
for (ParameterEnum param : paramList) {
String value = params.getParameter(param.name());
if (value == null)
value = param.defaultValue;
- ossParams.add(new OpenSearchServerParam(param, value));
+ put(param, value);
}
- return ossParams;
}
/**
* Replace the variables ${PARAMNAME} with the value contained in the set.
*
* @param text
- * @param params
+ * @return
*/
- final public static String replace(String text,
- Set<OpenSearchServerParam> params) {
- for (OpenSearchServerParam param : params)
- text = text.replace("${" + param.key.name() + "}", param.value);
+ final public String replace(String text) {
+ for (Map.Entry<ParameterEnum, String> entry : this.entrySet())
+ text = text.replace("${" + entry.getKey().name() + "}",
+ entry.getValue());
return text;
}
@@ -83,4 +79,5 @@ public class OpenSearchServerParam {
parameters.setParameter(param.name(), p);
}
}
+
}