Missed class added
diff --git a/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/.gitignore b/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/.gitignore
deleted file mode 100644
index 6571d27..0000000
--- a/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/OslcKmQueryCDOHandler.java
diff --git a/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/OslcKmQueryCDOHandler.java b/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/OslcKmQueryCDOHandler.java
new file mode 100644
index 0000000..91880be
--- /dev/null
+++ b/org.eclipse.opencert.evm.evidspec.editor/src/org/eclipse/opencert/evm/evidspec/evidence/search/OslcKmQueryCDOHandler.java
@@ -0,0 +1,229 @@
+/*******************************************************************************

+ * Copyright (c) 2017 The Reuse Company

+ * 

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v2.0

+ * which accompanies this distribution, and is available at

+ * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html

+ *

+ * SPDX-License-Identifier: EPL-2.0

+ *  

+ * Contributors:

+ *   Luís Alonso - initial API and implementation

+ *   Borja López - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.opencert.evm.evidspec.evidence.search;

+

+import java.io.BufferedReader;

+import java.io.DataInputStream;

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.Reader;

+import java.io.StringReader;

+import java.net.ConnectException;

+import java.net.HttpURLConnection;

+import java.net.MalformedURLException;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Scanner;

+

+import org.eclipse.emf.cdo.CDOObject;

+import org.eclipse.emf.cdo.common.id.CDOID;

+import org.eclipse.emf.cdo.common.id.CDOIDUtil;

+import org.eclipse.emf.cdo.dawn.util.connection.CDOConnectionUtil;

+import org.eclipse.emf.cdo.session.CDOSession;

+import org.eclipse.emf.cdo.view.CDOView;

+

+import com.google.gson.Gson;

+

+public class OslcKmQueryCDOHandler {

+

+	// Default Remote Uri configuration:

+	public static final String TrcAmassWebServiceUrl = "http://authoring.reusecompany.com:9999/OslcKmService.svc/IndexRequirement";

+	public static final String TrcAmassWebServiceUrl_Retrieval = "http://authoring.reusecompany.com:9999/OslcKmService.svc/RetrieveSimilarRequirements";

+

+	public static final String StringEmpty = "";

+	private static final String HttpPostProtocolName = "POST";

+	private static final String ContentTypeRequestProperty = "Content-Type";

+	private static final String JsonContentTypeRequestPropertyValue = "application/json";

+	private static final String ContentLengthRequestProperty = "Content-Length";

+	private static final String AsciiFormat = "ASCII";

+

+	private static final String ReqTextParam = "text";

+

+	// Json parts:

+	private static final String JsonStartWebRequest = "{\"";

+	private static final String JsonEndWebRequest = "\"}";

+	private static final String JsonAttributeValueSeparatorWebRequest = "\":\"";

+

+	// Answer headers / footers:

+	private static final String XMLResponseHeader = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">";

+	private static final String XMLResponseFooter = "</string>";

+	// Debug messages:

+	private static final String HttpWebRequestErrorMessage = "Failed : HTTP error code : ";

+

+	public static List<CDOObject> RunQuery(String query, CDOSession cdoSession) {

+		String queryResult = "";

+		try {

+			// Service invoke

+			queryResult = getSimilarRequirementsInOslcKmRepository(query);

+		} catch (ConnectException e) {

+			// TODO Auto-generated catch block

+			e.printStackTrace();

+		}

+		System.out.println("Results for query '" + query + "': " + queryResult);

+

+		CDOView viewCDO = CDOConnectionUtil.instance.openView(cdoSession);

+		List<CDOObject> cdoObjects = new ArrayList<CDOObject>();

+		List<String> idsFromJson = null;

+		if (queryResult != null && queryResult != "") {

+			idsFromJson = GetObjectsFromJson(queryResult);

+			if (idsFromJson != null && idsFromJson.size() > 0) {

+

+				CDOObject cdoObject = null;			

+				String cdoIdAsString = null;

+				for (int i = 0; i < idsFromJson.size(); i++) {

+					cdoIdAsString = idsFromJson.get(i);

+					if (cdoIdAsString != null) {

+						cdoObject = resolveCDOObject(cdoIdAsString, viewCDO);

+						if (cdoObject != null && !cdoObjects.contains(cdoObject)) {

+							cdoObjects.add(cdoObject);

+						}

+					}

+				}

+			}

+		}

+		return cdoObjects;

+	}

+

+	private static CDOObject resolveCDOObject(String objectId, Object context) {

+		// the only context we can handle at the moment is a CDOView

+		if (context instanceof CDOView) {

+			try {

+				CDOID id = CDOIDUtil.read(objectId);

+				CDOView view = (CDOView) context;

+				CDOObject object = view.getObject(id, true);

+				return object;

+			} catch (Exception e) {

+				// ignore

+				e.printStackTrace();

+			}

+		}

+

+		return null;

+	}

+

+	public static String getSimilarRequirementsInOslcKmRepository(String text) throws java.net.ConnectException {

+		String result = "";

+		HttpURLConnection conn;

+		conn = null;

+		DataInputStream doi;

+		doi = null;

+		InputStream inputStream;

+		inputStream = null;

+		Scanner s;

+		s = null;

+		try {

+			if (text != null && !text.equals(StringEmpty)) {

+

+				// Building POST parameters

+				StringBuilder postData = new StringBuilder();

+				postData.append(JsonStartWebRequest);

+				postData.append(ReqTextParam);

+				postData.append(JsonAttributeValueSeparatorWebRequest);

+				postData.append(text);

+				postData.append(JsonEndWebRequest);

+

+				byte[] postDataBytes = postData.toString().getBytes(AsciiFormat);

+

+				URL url = new URL(TrcAmassWebServiceUrl_Retrieval);

+

+				conn = (HttpURLConnection) url.openConnection();

+				conn.setRequestMethod(HttpPostProtocolName);

+				conn.setRequestProperty(ContentTypeRequestProperty, JsonContentTypeRequestPropertyValue);

+				conn.setRequestProperty(ContentLengthRequestProperty, String.valueOf(postDataBytes.length));

+				conn.setDoOutput(true);

+				conn.getOutputStream().write(postDataBytes);

+

+				if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {

+					System.out.println(HttpWebRequestErrorMessage + conn.getResponseCode());

+

+				} else {

+

+					inputStream = conn.getInputStream();

+					doi = new DataInputStream(inputStream);

+					result = doi.readLine();

+

+					if (result != null && !result.equals(StringEmpty)) {

+						result = result.replace(XMLResponseHeader, StringEmpty);

+						result = result.replace(XMLResponseFooter, StringEmpty);

+					}

+

+					// s = new Scanner(inputStream);

+					// s.useDelimiter(Delimiter);

+					// result = s.hasNextBoolean() ? s.nextBoolean() : false;

+				}

+			}

+		} catch (java.net.ConnectException e) {

+			String errorMessage;

+			errorMessage = e.getMessage() + " @ " + TrcAmassWebServiceUrl;

+			System.out.println(errorMessage);

+			throw e;

+		} catch (MalformedURLException e) {

+			e.printStackTrace();

+		} catch (IOException e) {

+			e.printStackTrace();

+		} finally {

+			if (s != null) {

+				s.close();

+				s = null;

+			}

+			if (inputStream != null) {

+				try {

+					inputStream.close();

+				} catch (Exception ex1) {

+

+				}

+				inputStream = null;

+			}

+			if (conn != null) {

+				conn.disconnect();

+				conn = null;

+			}

+		}

+		return result;

+	}

+

+	public static List<String> GetObjectsFromJson(String json) {

+		final Gson gson;

+		gson = new Gson();

+		List<String> result = null;

+		Reader inputString = null;

+		BufferedReader inFromUser = null;

+		try {

+			inputString = new StringReader(json);

+			inFromUser = new BufferedReader(inputString);

+			result = gson.fromJson(inFromUser, List.class);

+		} catch (Exception ex) {

+			System.out.println(ex.getMessage());

+			throw ex;

+		} finally {

+			if (inputString != null) {

+				try {

+					inputString.close();

+					inputString = null;

+				} catch (Exception ex) {

+				}

+			}

+			if (inFromUser != null) {

+				try {

+					inFromUser.close();

+					inFromUser = null;

+				} catch (Exception ex) {

+				}

+			}

+		}

+		return result;

+	}

+}