Added basic model search service which is used in case no index based
search service in contributed for a given meta model.
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/plugin.xml b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/plugin.xml
index fca4f14..32838ff 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/plugin.xml
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/plugin.xml
@@ -23,13 +23,22 @@
       <applicableFor metaModelDescriptorIdPattern="org.eclipse.sphinx.examples.hummingbird20"/>
     </service>
   </extension>
+  <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" point="org.eclipse.incquery.runtime.queryspecification">
+    <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel"/>
+  </extension>
+  <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" point="org.eclipse.incquery.runtime.queryspecification">
+    <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel"/>
+  </extension>
+  <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common" point="org.eclipse.incquery.runtime.queryspecification">
+    <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common" id="org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common"/>
+  </extension>
   <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common" point="org.eclipse.incquery.runtime.queryspecification">
     <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common" id="org.eclipse.sphinx.examples.hummingbird20.incquery.common.Common"/>
   </extension>
   <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel" point="org.eclipse.incquery.runtime.queryspecification">
     <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel" id="org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel"/>
   </extension>
-  <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" point="org.eclipse.incquery.runtime.queryspecification">
-    <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel" id="org.eclipse.sphinx.examples.hummingbird20.incquery.typemodel.Typemodel"/>
+  <extension id="org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel" point="org.eclipse.incquery.runtime.queryspecification">
+    <group group="org.eclipse.incquery.runtime.extensibility.SingletonExtensionFactory:org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel" id="org.eclipse.sphinx.examples.hummingbird20.incquery.instancemodel.Instancemodel"/>
   </extension>
 </plugin>
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/instancemodel/util/ConnectionsByNameQuerySpecification.java b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/instancemodel/util/ConnectionsByNameQuerySpecification.java
index 96beb42..7244ef8 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/instancemodel/util/ConnectionsByNameQuerySpecification.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/instancemodel/util/ConnectionsByNameQuerySpecification.java
@@ -78,8 +78,8 @@
         new ExportedParameter(body, var_name, "name")
       ));
       
-      
       new TypeUnary(body, var_connection, getClassifierLiteral("http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/instancemodel", "Connection"), "http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/instancemodel/Connection");
+      
       new TypeBinary(body, CONTEXT, var_connection, var_name, getFeatureLiteral("http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/common", "Identifiable", "name"), "http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/common/Identifiable.name");
       bodies.add(body);
     }
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/typemodel/util/InterfacesByNameQuerySpecification.java b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/typemodel/util/InterfacesByNameQuerySpecification.java
index 10ca031..a7644ea 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/typemodel/util/InterfacesByNameQuerySpecification.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src-gen/org/eclipse/sphinx/examples/hummingbird20/incquery/typemodel/util/InterfacesByNameQuerySpecification.java
@@ -78,8 +78,8 @@
         new ExportedParameter(body, var_name, "name")
       ));
       
-      
       new TypeUnary(body, var_interface, getClassifierLiteral("http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/typemodel", "Interface"), "http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/typemodel/Interface");
+      
       new TypeBinary(body, CONTEXT, var_interface, var_name, getFeatureLiteral("http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/common", "Identifiable", "name"), "http://www.eclipse.org/sphinx/examples/hummingbird/2.0.1/common/Identifiable.name");
       bodies.add(body);
     }
diff --git a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src/org/eclipse/sphinx/examples/hummingbird20/incquery/service/Hummingbird20ModelSearchQuery.java b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src/org/eclipse/sphinx/examples/hummingbird20/incquery/service/Hummingbird20ModelSearchQuery.java
index 223edff..ae8f368 100644
--- a/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src/org/eclipse/sphinx/examples/hummingbird20/incquery/service/Hummingbird20ModelSearchQuery.java
+++ b/examples/org.eclipse.sphinx.examples.hummingbird20.incquery/src/org/eclipse/sphinx/examples/hummingbird20/incquery/service/Hummingbird20ModelSearchQuery.java
@@ -8,13 +8,13 @@
 import org.eclipse.incquery.runtime.exception.IncQueryException;
 import org.eclipse.sphinx.emf.search.ui.ModelSearchMatch;
 import org.eclipse.sphinx.emf.search.ui.QuerySpecification;
-import org.eclipse.sphinx.emf.search.ui.incquery.services.AbstractModelSearchService;
+import org.eclipse.sphinx.emf.search.ui.incquery.services.AbstractIncQueryModelSearchService;
 import org.eclipse.sphinx.examples.hummingbird20.common.Identifiable;
 import org.eclipse.sphinx.examples.hummingbird20.incquery.common.IdentifiablesByNameMatcher;
 import org.eclipse.sphinx.examples.hummingbird20.incquery.internal.Activator;
 import org.eclipse.sphinx.platform.util.PlatformLogUtil;
 
-public class Hummingbird20ModelSearchQuery extends AbstractModelSearchService {
+public class Hummingbird20ModelSearchQuery extends AbstractIncQueryModelSearchService {
 
 	@Override
 	protected List<ModelSearchMatch> getMatches(IncQueryEngine engine, QuerySpecification querySpec) {
diff --git a/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractModelSearchService.java b/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractIncQueryModelSearchService.java
similarity index 95%
rename from plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractModelSearchService.java
rename to plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractIncQueryModelSearchService.java
index 65fb74e..1f5fcdf 100644
--- a/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractModelSearchService.java
+++ b/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/AbstractIncQueryModelSearchService.java
@@ -29,7 +29,7 @@
 import org.eclipse.sphinx.emf.search.ui.services.IModelSearchService;
 import org.eclipse.sphinx.platform.util.PlatformLogUtil;
 
-public abstract class AbstractModelSearchService implements IModelSearchService {
+public abstract class AbstractIncQueryModelSearchService implements IModelSearchService {
 
 	protected abstract List<ModelSearchMatch> getMatches(IncQueryEngine engine, QuerySpecification querySpec);
 
diff --git a/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/GenericModelSearchService.java b/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/GenericModelSearchService.java
index fd73970..4d31855 100644
--- a/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/GenericModelSearchService.java
+++ b/plugins/org.eclipse.sphinx.emf.search.ui.incquery/src/org/eclipse/sphinx/emf/search/ui/incquery/services/GenericModelSearchService.java
@@ -29,7 +29,7 @@
 import org.eclipse.sphinx.emf.search.ui.ModelSearchMatch;
 import org.eclipse.sphinx.emf.search.ui.QuerySpecification;
 
-public class GenericModelSearchService extends AbstractModelSearchService {
+public class GenericModelSearchService extends AbstractIncQueryModelSearchService {
 
 	private Map<IncQueryEngine, Set<EStructuralFeature>> engineToFeaturesMap = new HashMap<IncQueryEngine, Set<EStructuralFeature>>();
 
diff --git a/plugins/org.eclipse.sphinx.emf.search.ui/plugin.xml b/plugins/org.eclipse.sphinx.emf.search.ui/plugin.xml
index 31d8567..d5f7ecb 100644
--- a/plugins/org.eclipse.sphinx.emf.search.ui/plugin.xml
+++ b/plugins/org.eclipse.sphinx.emf.search.ui/plugin.xml
@@ -69,4 +69,15 @@
          </propertySection>

       </propertySections>

    </extension>

+   <extension

+         point="org.eclipse.sphinx.emf.metaModelServices">

+      <service

+            class="org.eclipse.sphinx.emf.search.ui.services.BasicModelSearchService"

+            id="org.eclipse.sphinx.emf.search.ui.basicModelSearch"

+            type="org.eclipse.sphinx.emf.search.ui.services.IModelSearchService">

+         <applicableFor

+               metaModelDescriptorIdPattern=".*">

+         </applicableFor>

+      </service>

+   </extension>

 </plugin>

diff --git a/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/ModelSearchQuery.java b/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/ModelSearchQuery.java
index 8762191..5f85734 100644
--- a/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/ModelSearchQuery.java
+++ b/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/ModelSearchQuery.java
@@ -28,6 +28,7 @@
 import org.eclipse.search.ui.ISearchQuery;
 import org.eclipse.search.ui.ISearchResult;
 import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
+import org.eclipse.sphinx.emf.metamodel.MetaModelDescriptorRegistry;
 import org.eclipse.sphinx.emf.metamodel.services.DefaultMetaModelServiceProvider;
 import org.eclipse.sphinx.emf.model.IModelDescriptor;
 import org.eclipse.sphinx.emf.model.ModelDescriptorRegistry;
@@ -94,10 +95,14 @@
 	}
 
 	protected IModelSearchService getModelSearchService(IMetaModelDescriptor descriptor) {
+		IModelSearchService modelSearchService = null;
 		if (descriptor != null) {
-			return new DefaultMetaModelServiceProvider().getService(descriptor, IModelSearchService.class);
+			modelSearchService = new DefaultMetaModelServiceProvider().getService(descriptor, IModelSearchService.class);
 		}
-		return null;
+		if (modelSearchService == null) {
+			modelSearchService = new DefaultMetaModelServiceProvider().getService(MetaModelDescriptorRegistry.ANY_MM, IModelSearchService.class);
+		}
+		return modelSearchService;
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/services/BasicModelSearchService.java b/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/services/BasicModelSearchService.java
new file mode 100644
index 0000000..cbc37b1
--- /dev/null
+++ b/plugins/org.eclipse.sphinx.emf.search.ui/src/org/eclipse/sphinx/emf/search/ui/services/BasicModelSearchService.java
@@ -0,0 +1,52 @@
+package org.eclipse.sphinx.emf.search.ui.services;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.sphinx.emf.model.IModelDescriptor;
+import org.eclipse.sphinx.emf.search.ui.ModelSearchMatch;
+import org.eclipse.sphinx.emf.search.ui.QuerySpecification;
+import org.eclipse.sphinx.emf.ui.util.RetrieveNameAttributeHelper;
+
+public class BasicModelSearchService implements IModelSearchService {
+
+	private RetrieveNameAttributeHelper helper = new RetrieveNameAttributeHelper();
+
+	@Override
+	public List<ModelSearchMatch> getMatches(IModelDescriptor modelDescriptor, QuerySpecification spec) {
+		return getMatches(modelDescriptor.getLoadedResources(true), spec);
+	}
+
+	@Override
+	public List<ModelSearchMatch> getMatches(Collection<Resource> resources, QuerySpecification spec) {
+		List<ModelSearchMatch> result = new ArrayList<ModelSearchMatch>();
+		for (Resource resource : resources) {
+			TreeIterator<EObject> allContents = resource.getAllContents();
+			while (allContents.hasNext()) {
+				EObject eObject = allContents.next();
+				EAttribute nameAttribute = helper.getNameAttribute(eObject);
+				if (nameAttribute != null) {
+					Object nameObj = eObject.eGet(nameAttribute);
+					if (spec.isCaseSensitive()) {
+						if (nameObj.toString().equals(spec.getPattern())) {
+							result.add(createModelSearchMatch(eObject));
+						}
+					} else if (nameObj.toString().equalsIgnoreCase(spec.getPattern())) {
+						result.add(createModelSearchMatch(eObject));
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	private ModelSearchMatch createModelSearchMatch(EObject eObject) {
+		ModelSearchMatch match = new ModelSearchMatch(eObject);
+		return match;
+	}
+}