From cc50bff96152821a183d4ce7692df36d7069e792 Mon Sep 17 00:00:00 2001
From: "Bernhard J. Berger" <bernhard.berger@uni-bremen.de>
Date: Fri, 10 Feb 2023 17:28:12 +0100
Subject: [PATCH] Added empty module builtin-provider.

---
 src/core/de.evoal.core.main/pom.xml             |  6 ++++++
 .../main/language/ModuleBuiltinProvider.java    | 17 +++++++++++++++++
 .../src/main/java/module-info.java              |  3 +++
 src/core/de.evoal.core.plugin/pom.xml           |  7 +++++++
 .../utils/builtin/BuiltinProviderFactory.java   | 10 +++++++++-
 5 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 src/core/de.evoal.core.main/src/main/java/de/evoal/core/main/language/ModuleBuiltinProvider.java

diff --git a/src/core/de.evoal.core.main/pom.xml b/src/core/de.evoal.core.main/pom.xml
index d9962933..20a852e0 100644
--- a/src/core/de.evoal.core.main/pom.xml
+++ b/src/core/de.evoal.core.main/pom.xml
@@ -218,6 +218,12 @@
 			<scope>runtime</scope>
 		</dependency>
 
+		<dependency>
+			<groupId>de.evoal.languages</groupId>
+			<artifactId>de.evoal.languages.model.utils</artifactId>
+			<version>${evoal.languages.version}</version>
+		</dependency>
+
 		<!-- Xtext -->
 		<dependency>
 			<groupId>org.eclipse.emf</groupId>
diff --git a/src/core/de.evoal.core.main/src/main/java/de/evoal/core/main/language/ModuleBuiltinProvider.java b/src/core/de.evoal.core.main/src/main/java/de/evoal/core/main/language/ModuleBuiltinProvider.java
new file mode 100644
index 00000000..698635a6
--- /dev/null
+++ b/src/core/de.evoal.core.main/src/main/java/de/evoal/core/main/language/ModuleBuiltinProvider.java
@@ -0,0 +1,17 @@
+package de.evoal.core.main.language;
+
+import de.evoal.languages.model.utils.builtin.BuiltinProvider;
+import lombok.extern.slf4j.Slf4j;
+
+import java.net.URI;
+import java.util.Collection;
+import java.util.Collections;
+
+@Slf4j
+public class ModuleBuiltinProvider implements BuiltinProvider {
+    @Override
+    public Collection<URI> findBuiltins(String name) {
+        System.err.println("Builtins");
+        return Collections.emptyList();
+    }
+}
diff --git a/src/core/de.evoal.core.main/src/main/java/module-info.java b/src/core/de.evoal.core.main/src/main/java/module-info.java
index 375e9181..bd1fbec6 100644
--- a/src/core/de.evoal.core.main/src/main/java/module-info.java
+++ b/src/core/de.evoal.core.main/src/main/java/module-info.java
@@ -39,6 +39,7 @@ module de.evoal.core.main {
     requires de.evoal.languages.model.el;
     requires de.evoal.languages.model.el.dsl;
     requires de.evoal.languages.model.instance;
+    requires de.evoal.languages.model.utils;
     requires com.google.guice;
 
     exports de.evoal.core.api.board;
@@ -100,4 +101,6 @@ module de.evoal.core.main {
     opens de.evoal.core.api.ea.constraints.strategies to weld.core.impl;
     opens de.evoal.core.main.properties to weld.core.impl;
     opens de.evoal.core.main.ea.search to weld.core.impl;
+
+    provides de.evoal.languages.model.utils.builtin.BuiltinProvider with de.evoal.core.main.language.ModuleBuiltinProvider;
 }
diff --git a/src/core/de.evoal.core.plugin/pom.xml b/src/core/de.evoal.core.plugin/pom.xml
index 1ed2b04c..f4b0fc43 100644
--- a/src/core/de.evoal.core.plugin/pom.xml
+++ b/src/core/de.evoal.core.plugin/pom.xml
@@ -167,6 +167,13 @@
 			<scope>provided</scope>
 		</dependency>
 
+		<dependency>
+			<groupId>de.evoal.languages</groupId>
+			<artifactId>de.evoal.languages.model.utils</artifactId>
+			<version>${evoal.languages.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
 		<!-- Dependency to EvoAl core -->
 		<dependency>
 			<groupId>de.evoal</groupId>
diff --git a/src/languages/de.evoal.languages.model.utils/src/de/evoal/languages/model/utils/builtin/BuiltinProviderFactory.java b/src/languages/de.evoal.languages.model.utils/src/de/evoal/languages/model/utils/builtin/BuiltinProviderFactory.java
index 1d960bcc..8f197727 100644
--- a/src/languages/de.evoal.languages.model.utils/src/de/evoal/languages/model/utils/builtin/BuiltinProviderFactory.java
+++ b/src/languages/de.evoal.languages.model.utils/src/de/evoal/languages/model/utils/builtin/BuiltinProviderFactory.java
@@ -3,6 +3,7 @@ package de.evoal.languages.model.utils.builtin;
 
 import java.util.Iterator;
 import java.util.ServiceLoader;
+import java.util.function.Supplier;
 
 public final class BuiltinProviderFactory {
 	public static BuiltinProvider create() {
@@ -12,6 +13,13 @@ public final class BuiltinProviderFactory {
 			return iterator.next();
 		}
 		
-		return new ExtensionPointLookup().get();
+		
+		try {
+			final Class<Supplier<BuiltinProvider>> clazz = (Class<Supplier<BuiltinProvider>>) Class.forName("de.evoal.languages.model.utils.builtin.ExtensionPointLookup");
+			return clazz.newInstance().get();
+		} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
+			e.printStackTrace();
+			throw new RuntimeException(e);
+		}
 	}
 }
-- 
GitLab