From ac420ce1090e7db4770c32b4c7b5b3289ec9b44b Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sat, 28 Jun 2025 12:38:20 -0500 Subject: [PATCH] Use new extensible with new package name. --- gradle/libs.versions.toml | 2 + util/extensible/build.gradle | 26 ------- .../AbstractExtensionContainer.java | 68 ------------------- .../groowt/util/extensible/Extensible.java | 11 --- .../util/extensible/ExtensionAware.java | 12 ---- .../util/extensible/ExtensionContainer.java | 5 -- web-view-components-compiler/build.gradle | 2 +- .../ast/extension/NodeExtensionContainer.java | 2 +- .../SimpleNodeExtensionContainer.java | 2 +- .../view/component/web/ast/node/Node.java | 2 +- 10 files changed, 6 insertions(+), 126 deletions(-) delete mode 100644 util/extensible/build.gradle delete mode 100644 util/extensible/src/main/java/groowt/util/extensible/AbstractExtensionContainer.java delete mode 100644 util/extensible/src/main/java/groowt/util/extensible/Extensible.java delete mode 100644 util/extensible/src/main/java/groowt/util/extensible/ExtensionAware.java delete mode 100644 util/extensible/src/main/java/groowt/util/extensible/ExtensionContainer.java diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d459333..4d0f2f0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,6 +5,7 @@ antlr = '4.13.2' asm = '9.8' di = '0.1.0' +extensible = '0.1.0' groovy = '4.0.27' jakarta-inject = '2.0.1' jansi = '2.4.2' @@ -22,6 +23,7 @@ antlr = { module = 'org.antlr:antlr4', version.ref = 'antlr' } antlr-runtime = { module = 'org.antlr:antlr4-runtime', version.ref = 'antlr' } asm = { module = 'org.ow2.asm:asm', version.ref = 'asm' } di = { module = 'com.jessebrault.di:di', version.ref = 'di' } +extensible = { module = 'com.jessebrault.extensible:extensible', version.ref = 'extensible' } groovy = { module = 'org.apache.groovy:groovy', version.ref = 'groovy' } groovy-console = { module = 'org.apache.groovy:groovy-console', version.ref = 'groovy' } groovy-templates = { module = 'org.apache.groovy:groovy-templates', version.ref = 'groovy' } diff --git a/util/extensible/build.gradle b/util/extensible/build.gradle deleted file mode 100644 index eb2974f..0000000 --- a/util/extensible/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -plugins { - id 'groowt-conventions' - id 'groowt-publish' - id 'java-library' -} - -dependencies { - compileOnlyApi libs.jetbrains.anotations -} - -java { - withSourcesJar() -} - -jar { - archiveBaseName = 'groowt-util-extensible' -} - -publishing { - publications { - create('extensible', MavenPublication) { - artifactId = 'util-extensible' - from components.java - } - } -} diff --git a/util/extensible/src/main/java/groowt/util/extensible/AbstractExtensionContainer.java b/util/extensible/src/main/java/groowt/util/extensible/AbstractExtensionContainer.java deleted file mode 100644 index 14ed5a6..0000000 --- a/util/extensible/src/main/java/groowt/util/extensible/AbstractExtensionContainer.java +++ /dev/null @@ -1,68 +0,0 @@ -package groowt.util.extensible; - -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.function.Consumer; - -public abstract class AbstractExtensionContainer implements ExtensionContainer { - - private final F extensionFactory; - private final Collection extensions = new ArrayList<>(); - - public AbstractExtensionContainer(F extensionFactory) { - this.extensionFactory = extensionFactory; - } - - /** - * @return A copy of the registered extensions. - */ - protected Collection getRegisteredExtensions() { - return new ArrayList<>(this.extensions); - } - - protected void registerExtension(E extension) { - this.extensions.add(extension); - } - - @Override - public @Nullable T findExtension(Class extensionClass) { - return this.extensions.stream() - .filter(extensionClass::isInstance) - .findFirst() - .map(extensionClass::cast) - .orElse(null); - } - - /** - * @implNote While this {@link AbstractExtensionContainer} calls - * {@link #getExtension}, which will throw if there is no registered - * extension, this method may be overridden to not use {@link #getExtension} - * and instead implement custom handling logic to avoid throwing, etc. - */ - @Override - public void configureExtension(Class extensionClass, Consumer configure) { - configure.accept(this.getExtension(extensionClass)); - } - - @Override - public T getExtension(Class extensionClass) { - return this.extensions.stream() - .filter(extensionClass::isInstance) - .findFirst() - .map(extensionClass::cast) - .orElseThrow(() -> new IllegalArgumentException("There is no registered extension for " + extensionClass.getName())); - } - - @Override - public boolean hasExtension(Class extensionClass) { - return this.extensions.stream().anyMatch(extensionClass::isInstance); - } - - @Override - public F getExtensionFactory() { - return this.extensionFactory; - } - -} diff --git a/util/extensible/src/main/java/groowt/util/extensible/Extensible.java b/util/extensible/src/main/java/groowt/util/extensible/Extensible.java deleted file mode 100644 index 53eea32..0000000 --- a/util/extensible/src/main/java/groowt/util/extensible/Extensible.java +++ /dev/null @@ -1,11 +0,0 @@ -package groowt.util.extensible; - -import org.jetbrains.annotations.Nullable; - -import java.util.function.Consumer; - -// TODO: groovy methods to handle getting extensions via property accessors -public interface Extensible> extends ExtensionAware { - T createExtension(Class extensionClass, Object... constructorArgs); - C getExtensionContainer(); -} diff --git a/util/extensible/src/main/java/groowt/util/extensible/ExtensionAware.java b/util/extensible/src/main/java/groowt/util/extensible/ExtensionAware.java deleted file mode 100644 index 3a41106..0000000 --- a/util/extensible/src/main/java/groowt/util/extensible/ExtensionAware.java +++ /dev/null @@ -1,12 +0,0 @@ -package groowt.util.extensible; - -import org.jetbrains.annotations.Nullable; - -import java.util.function.Consumer; - -public interface ExtensionAware { - @Nullable T findExtension(Class extensionClass); - void configureExtension(Class extensionClass, Consumer configure); - T getExtension(Class extensionClass); - boolean hasExtension(Class extensionClass); -} diff --git a/util/extensible/src/main/java/groowt/util/extensible/ExtensionContainer.java b/util/extensible/src/main/java/groowt/util/extensible/ExtensionContainer.java deleted file mode 100644 index 1d85527..0000000 --- a/util/extensible/src/main/java/groowt/util/extensible/ExtensionContainer.java +++ /dev/null @@ -1,5 +0,0 @@ -package groowt.util.extensible; - -public interface ExtensionContainer extends ExtensionAware { - F getExtensionFactory(); -} diff --git a/web-view-components-compiler/build.gradle b/web-view-components-compiler/build.gradle index 3e87564..2fd3f46 100644 --- a/web-view-components-compiler/build.gradle +++ b/web-view-components-compiler/build.gradle @@ -63,7 +63,7 @@ dependencies { implementation libs.jansi implementation libs.asm implementation libs.di - implementation project(':extensible') + implementation libs.extensible groowtAntlr libs.antlr diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java index c023f98..6009a38 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/NodeExtensionContainer.java @@ -1,6 +1,6 @@ package groowt.view.component.web.ast.extension; -import groowt.util.extensible.ExtensionContainer; +import com.jessebrault.extensible.ExtensionContainer; import groowt.view.component.web.ast.node.Node; public interface NodeExtensionContainer extends ExtensionContainer { diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java index c8c50a4..ad0fa08 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/extension/SimpleNodeExtensionContainer.java @@ -1,6 +1,6 @@ package groowt.view.component.web.ast.extension; -import groowt.util.extensible.AbstractExtensionContainer; +import com.jessebrault.extensible.AbstractExtensionContainer; import groowt.view.component.web.ast.node.Node; public class SimpleNodeExtensionContainer extends AbstractExtensionContainer diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java index 219f025..97cda4c 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/ast/node/Node.java @@ -1,6 +1,6 @@ package groowt.view.component.web.ast.node; -import groowt.util.extensible.Extensible; +import com.jessebrault.extensible.Extensible; import groowt.view.component.web.antlr.TokenList; import groowt.view.component.web.ast.extension.NodeExtension; import groowt.view.component.web.ast.extension.NodeExtensionContainer;