Added resolution for plain EMF, all tests green
diff --git a/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/ElasticFinderTest.java b/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/ElasticFinderTest.java
index 2902440..142089b 100644
--- a/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/ElasticFinderTest.java
+++ b/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/ElasticFinderTest.java
@@ -55,7 +55,7 @@
 		ElasticClient client = ElasticClientImpl.on("localhost", 9200, "http")/*.delete("finder-test")*/.store(document);

 		

 		ElasticFinder finder = ElasticFinderImpl.onClient(client);

-		Set<Hit> hits = finder.search("finder-test", null, null);

+		Set<Hit> hits = finder.within("finder-test").search(null, null);

 		Assert.assertEquals(1, hits.size());

 		//

 		hits = finder.search("foobar", null);

diff --git a/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/HitResolutionTest.java b/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/HitResolutionTest.java
index 45f078f..d3d83ff 100644
--- a/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/HitResolutionTest.java
+++ b/org.eclipse.opencert.elastic.test/src/org/eclipse/opencert/elastic/HitResolutionTest.java
@@ -19,9 +19,12 @@
 import org.eclipse.emf.ecore.EObject;

 import org.eclipse.opencert.elastic.cdo.CDOObjectResolver;

 import org.eclipse.opencert.elastic.search.DummyObjectResolver;

+import org.eclipse.opencert.elastic.search.EMFObjectResolver;

+import org.eclipse.opencert.elastic.search.ElasticFinder;

 import org.eclipse.opencert.elastic.search.ElasticFinderImpl;

 import org.eclipse.opencert.elastic.search.Hit;

 import org.eclipse.opencert.elastic.search.HitResolution;

+import org.eclipse.opencert.elastic.search.ObjectResolver;

 import org.junit.Assert;

 import org.junit.Test;

 

@@ -29,14 +32,19 @@
 

 	@Test

 	public void testHitAndResolve() throws Exception {

+		testHitAndResolve(ElasticFinderImpl.onDummy(TestData.umlClasses()), new DummyObjectResolver());

+		testHitAndResolve(ElasticFinderImpl.onDefaultClient().within("uml"), new EMFObjectResolver());

+	}

+	

+	private void testHitAndResolve(ElasticFinder finder, ObjectResolver<? extends Object> resolver) throws Exception {

 		Map<String, Object> filters = new HashMap<>();

 		filters.put("abstract", Boolean.FALSE);

 		filters.put("interface", Boolean.FALSE);

-		Set<Hit> hits = ElasticFinderImpl.onDummy(TestData.uml()).search("Component", filters);

+		Set<Hit> hits = finder.search(".*Component.*", filters);

 		Assert.assertNotNull("set expected", hits);

 		Assert.assertEquals("2 hits expected", 2, hits.size());

 

-		HitResolution<Object> res = HitResolution.on(TestData.uml()).using(new DummyObjectResolver());

+		HitResolution<Object> res = HitResolution.on(TestData.uml()).using(resolver);

 		Set<Object> resolved = res.resolve(hits, 2);

 		Assert.assertNotNull("set expected", resolved);

 		Assert.assertEquals("2 hits expected", 2, resolved.size());

diff --git a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/EObjectToDocument.java b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/EObjectToDocument.java
index aee7a62..9212ec1 100644
--- a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/EObjectToDocument.java
+++ b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/EObjectToDocument.java
@@ -17,10 +17,8 @@
 import java.util.List;

 

 import org.apache.commons.codec.digest.DigestUtils;

-import org.eclipse.emf.ecore.EAnnotation;

 import org.eclipse.emf.ecore.EClass;

 import org.eclipse.emf.ecore.EObject;

-import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;

 import org.eclipse.emf.ecore.resource.Resource;

 

 import com.google.gson.JsonObject;

diff --git a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/EMFObjectResolver.java b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/EMFObjectResolver.java
new file mode 100644
index 0000000..e643dec
--- /dev/null
+++ b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/EMFObjectResolver.java
@@ -0,0 +1,63 @@
+/*******************************************************************************

+ * Copyright (C) 2018 ANSYS medini Technologies AG

+ * 

+ * This program and the accompanying materials are made

+ * available under the terms of the Eclipse Public License 2.0

+ * which is available at https://www.eclipse.org/legal/epl-2.0/

+ * 

+ * SPDX-License-Identifier: EPL-2.0

+ * 

+ * Contributors: 

+ * 	ANSYS medini Technologies AG - initial API and implementation

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

+package org.eclipse.opencert.elastic.search;

+

+import java.util.Iterator;

+

+import org.apache.commons.codec.digest.DigestUtils;

+import org.eclipse.emf.ecore.EObject;

+import org.eclipse.emf.ecore.resource.Resource;

+

+/**

+ * Generic {@link ObjectResolver} that tries to resolve against the object URI.

+ * 

+ * @author mauersberger

+ *

+ */

+public class EMFObjectResolver implements ObjectResolver<EObject> {

+

+	@Override

+	public EObject resolve(String objectId, Object context) {

+		if (context instanceof Resource) {

+			context = ((Resource) context).getAllContents();

+		}

+

+		if (context instanceof Iterator) {

+			@SuppressWarnings("unchecked")

+			Iterator<Object> it = (Iterator<Object>) context;

+			while (it.hasNext()) {

+				Object next = (Object) it.next();

+				if (next instanceof EObject) {

+					EObject object = (EObject) next;

+					Resource resource = object.eResource();

+					if (resource != null && objectId.equals(DigestUtils.md5Hex(resource.getURIFragment(object)))) {

+						return object;

+					}

+				}

+			}

+		} else if (context instanceof Iterable) {

+			for (Object next : (Iterable<?>) context) {

+				if (next instanceof EObject) {

+					EObject object = (EObject) next;

+					Resource resource = object.eResource();

+					if (resource != null && objectId.equals(DigestUtils.md5Hex(resource.getURIFragment(object)))) {

+						return object;

+					}

+				}

+			}

+		}

+

+		// TODO Auto-generated method stub

+		return null;

+	}

+}
\ No newline at end of file
diff --git a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinder.java b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinder.java
index a532ffb..ab49c42 100644
--- a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinder.java
+++ b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinder.java
@@ -36,16 +36,11 @@
 	Set<Hit> search(String query, Map<String, Object> filters);

 

 	/**

-	 * Search with the given query and additional attribute filters that must match.

+	 * Limit this finder to the given index.

 	 * 

 	 * @param index

 	 *            name of the index, or "_all" or <code>null</code> for all indexes

-	 * @param query

-	 *            string following the Elastic query syntax (see

-	 *            https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html)

-	 * @param filters

-	 *            a set of filters, might be empty or <code>null</code>

-	 * @return zero or more hits, never <code>null</code>

+	 * @return this

 	 */

-	Set<Hit> search(String index, String query, Map<String, Object> filters);

+	ElasticFinder within(String index);

 }

diff --git a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinderImpl.java b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinderImpl.java
index f9dfce9..2d27223 100644
--- a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinderImpl.java
+++ b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/ElasticFinderImpl.java
@@ -48,6 +48,8 @@
 

 	private RestClient client;

 	

+	private String index = "_all";

+	

 	@SuppressWarnings("unused")

 	private int lastStatus;

 	

@@ -89,12 +91,13 @@
 	}

 

 	@Override

-	public Set<Hit> search(String query, Map<String, Object> filters) {

-		return search("_all", query, filters);

+	public ElasticFinder within(String index) {

+		this.index = (index != null ? index : "_all");

+		return this;

 	}

 	

 	@Override

-	public Set<Hit> search(String index, String query, Map<String, Object> filters) {

+	public Set<Hit> search(String query, Map<String, Object> filters) {

 		if (dummyData != null) {

 			return searchInDummyData(query, filters);

 		}

@@ -142,7 +145,6 @@
 			for (String key : keys) {

 				Object value = filters.get(key);

 				TermQueryBuilder termQuery = QueryBuilders.termQuery(key, value);

-				// filterQueries.add(termQuery);

 				boolQuery.must(termQuery);

 			}

 			assert boolQuery.must().size() == 1 + filters.size();

@@ -155,7 +157,7 @@
 		

 		SearchResponse response = highLevel.search(searchRequest);

 		lastStatus = response.status().getStatus();

-		

+

 		Set<ElasticDocument> result = new HashSet<>();

 		SearchHits hits = response.getHits();

 		// Note: total hits might be much bigger 

diff --git a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/SampleApp.java b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/SampleApp.java
index 9331e16..f752d45 100644
--- a/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/SampleApp.java
+++ b/org.eclipse.opencert.elastic/src/org/eclipse/opencert/elastic/search/SampleApp.java
@@ -48,13 +48,4 @@
 		Set<EObject> resolved = resolution.resolve(hits, 2);

 		System.out.println(resolved);

 	}

-

-	class EMFObjectResolver implements ObjectResolver<EObject> {

-

-		@Override

-		public EObject resolve(String objectId, Object context) {

-			// TODO Auto-generated method stub

-			return null;

-		}

-	}

 }