Skip to content

Commit

Permalink
Load extensions with ServiceLoader CrissNamon#32 added
Browse files Browse the repository at this point in the history
  • Loading branch information
harsh-2O committed Apr 7, 2023
1 parent bb253b2 commit d20eb86
Showing 1 changed file with 5 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package tech.hiddenproject.compaj.lang.groovy;

import java.util.HashSet;
import java.util.Set;
import java.util.ServiceLoader;
import java.util.stream.Collectors;

import groovy.lang.Script;
import tech.hiddenproject.aide.optional.ThrowableOptional;
Expand All @@ -13,19 +11,10 @@
*/
public abstract class CompaJScriptBase extends Script {

private static final Set<Extension> extensions;

static {
extensions = new HashSet<>();
}

public CompaJScriptBase() {
extensions.forEach(e -> ThrowableOptional.sneaky(() -> e.extend(CompaJScriptBase.this),
ex -> new ExtensionException(e)));
}

public static void addExtension(Extension e) {
extensions.add(e);
ServiceLoader<Extension> extensionLoader = ServiceLoader.load(Extension.class);
extensionLoader.stream().map(ServiceLoader.Provider::get).collect(Collectors.toList())
.forEach(e -> ThrowableOptional.sneaky(() -> e.extend(CompaJScriptBase.this), ex -> new ExtensionException(e)));
}

public void help() {
Expand Down

0 comments on commit d20eb86

Please sign in to comment.