From 45d188d064d3eccb7c6c8612feae98e5ccc08d57 Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sun, 26 Jan 2025 15:34:45 -0600 Subject: [PATCH] Auto-imports working for both Groovyc configuration and independent API. --- .../CachingComponentTemplateCompiler.java | 35 +------------- .../ComponentTemplateCompileUnit.java | 9 +--- ...omponentTemplateCompilerConfiguration.java | 11 ----- ...omponentTemplateCompilerConfiguration.java | 48 ------------------- web-view-components-compiler/build.gradle | 1 - web-view-components-compiler/runGroovyc | 3 +- .../groovy/sketching/EchoNoPreamble.wvc | 1 + ...faultWebViewComponentTemplateCompiler.java | 32 ++----------- ...bViewComponentTemplateCompilerFactory.java | 4 +- ...gWebViewComponentTemplateParserPlugin.java | 6 +-- .../transpile/DefaultGroovyTranspiler.java | 20 ++++---- .../web/transpile/GroovyTranspiler.java | 2 - .../groovyc/groovycConfigurationScript.groovy | 13 ++++- .../web/transpiler/GroovyTranspilerTests.java | 2 - ...ltWebViewComponentTemplateCompileUnit.java | 6 +-- .../WebViewComponentTemplateCompiler.java | 4 +- ...omponentTemplateCompilerConfiguration.java | 17 +++++++ ...bViewComponentTemplateCompilerFactory.java | 4 +- 18 files changed, 54 insertions(+), 164 deletions(-) delete mode 100644 view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompilerConfiguration.java delete mode 100644 view-components/src/main/java/groowt/view/component/compiler/DefaultComponentTemplateCompilerConfiguration.java create mode 100644 web-view-components-compiler/sketching/groovy/sketching/EchoNoPreamble.wvc create mode 100644 web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerConfiguration.java diff --git a/view-components/src/main/java/groowt/view/component/compiler/CachingComponentTemplateCompiler.java b/view-components/src/main/java/groowt/view/component/compiler/CachingComponentTemplateCompiler.java index b59def4..a09ed4c 100644 --- a/view-components/src/main/java/groowt/view/component/compiler/CachingComponentTemplateCompiler.java +++ b/view-components/src/main/java/groowt/view/component/compiler/CachingComponentTemplateCompiler.java @@ -10,41 +10,8 @@ public abstract class CachingComponentTemplateCompiler, ComponentTemplateCompileResult> cache = new HashMap<>(); -// private ComponentTemplate instantiate( -// GroovyClassLoader groovyClassLoader, -// CompileResult compileResult -// ) { -// for (final var groovyClass : compileResult.otherClasses()) { -// // Try to find it. If we can't, we need to load it via the groovy loader -// try { -// Class.forName(groovyClass.getName(), true, groovyClassLoader); -// } catch (ClassNotFoundException ignored) { -// groovyClassLoader.defineClass(groovyClass.getName(), groovyClass.getBytes()); -// } catch (LinkageError ignored) { -// // no-op, because we already have it -// } -// } -// final GroovyClass templateGroovyClass = compileResult.templateClass(); -// Class templateClass; -// // Try to find it. If we can't, we need to load it via the groovy loader -// try { -// templateClass = Class.forName(templateGroovyClass.getName(), true, groovyClassLoader); -// } catch (ClassNotFoundException ignored) { -// templateClass = groovyClassLoader.defineClass( -// templateGroovyClass.getName(), -// templateGroovyClass.getBytes() -// ); -// } -// try { -// return (ComponentTemplate) templateClass.getConstructor().newInstance(); -// } catch (Exception e) { -// throw new RuntimeException("Unable to instantiate ComponentTemplate " + templateClass.getName(), e); -// } -// } - @Override - public final ComponentTemplateCompileResult compile(U compileUnit) - throws ComponentTemplateCompileException { + public final ComponentTemplateCompileResult compile(U compileUnit) throws ComponentTemplateCompileException { if (this.cache.containsKey(compileUnit.getForClass())) { return this.cache.get(compileUnit.getForClass()); } else { diff --git a/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompileUnit.java b/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompileUnit.java index 0d2595a..4cb68db 100644 --- a/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompileUnit.java +++ b/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompileUnit.java @@ -4,16 +4,9 @@ import groowt.view.component.ViewComponent; import groowt.view.component.compiler.source.ComponentTemplateSource; public interface ComponentTemplateCompileUnit { - String getDescriptiveName(); Class getForClass(); String getDefaultPackageName(); ComponentTemplateSource getSource(); - ComponentTemplateCompileResult compile(ComponentTemplateCompilerConfiguration configuration) - throws ComponentTemplateCompileException; - - default ComponentTemplateCompileResult compile() throws ComponentTemplateCompileException { - return this.compile(new DefaultComponentTemplateCompilerConfiguration()); - } - + ComponentTemplateCompileResult compile() throws ComponentTemplateCompileException; } diff --git a/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompilerConfiguration.java b/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompilerConfiguration.java deleted file mode 100644 index 0149a9a..0000000 --- a/view-components/src/main/java/groowt/view/component/compiler/ComponentTemplateCompilerConfiguration.java +++ /dev/null @@ -1,11 +0,0 @@ -package groowt.view.component.compiler; - -import groovy.lang.GroovyClassLoader; -import org.codehaus.groovy.control.CompilePhase; -import org.codehaus.groovy.control.CompilerConfiguration; - -public interface ComponentTemplateCompilerConfiguration { - GroovyClassLoader getGroovyClassLoader(); - CompilerConfiguration getGroovyCompilerConfiguration(); - CompilePhase getToCompilePhase(); -} diff --git a/view-components/src/main/java/groowt/view/component/compiler/DefaultComponentTemplateCompilerConfiguration.java b/view-components/src/main/java/groowt/view/component/compiler/DefaultComponentTemplateCompilerConfiguration.java deleted file mode 100644 index 2066262..0000000 --- a/view-components/src/main/java/groowt/view/component/compiler/DefaultComponentTemplateCompilerConfiguration.java +++ /dev/null @@ -1,48 +0,0 @@ -package groowt.view.component.compiler; - -import groovy.lang.GroovyClassLoader; -import org.codehaus.groovy.control.CompilePhase; -import org.codehaus.groovy.control.CompilerConfiguration; - -import static java.util.Objects.requireNonNull; - -public class DefaultComponentTemplateCompilerConfiguration implements ComponentTemplateCompilerConfiguration { - - private GroovyClassLoader groovyClassLoader; - private CompilerConfiguration groovyCompilerConfiguration; - private CompilePhase toCompilePhase; - - public DefaultComponentTemplateCompilerConfiguration() { - this.groovyClassLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader()); - this.groovyCompilerConfiguration = new CompilerConfiguration(); - this.toCompilePhase = CompilePhase.CLASS_GENERATION; - } - - @Override - public GroovyClassLoader getGroovyClassLoader() { - return this.groovyClassLoader; - } - - public void setGroovyClassLoader(GroovyClassLoader groovyClassLoader) { - this.groovyClassLoader = requireNonNull(groovyClassLoader); - } - - @Override - public CompilerConfiguration getGroovyCompilerConfiguration() { - return this.groovyCompilerConfiguration; - } - - public void setGroovyCompilerConfiguration(CompilerConfiguration groovyCompilerConfiguration) { - this.groovyCompilerConfiguration = requireNonNull(groovyCompilerConfiguration); - } - - @Override - public CompilePhase getToCompilePhase() { - return this.toCompilePhase; - } - - public void setToCompilePhase(CompilePhase toCompilePhase) { - this.toCompilePhase = requireNonNull(toCompilePhase); - } - -} diff --git a/web-view-components-compiler/build.gradle b/web-view-components-compiler/build.gradle index fd30f51..898c58c 100644 --- a/web-view-components-compiler/build.gradle +++ b/web-view-components-compiler/build.gradle @@ -201,7 +201,6 @@ tasks.register('uberJar', Jar) { from sourceSets.main.output from sourceSets.main.runtimeClasspath .filter(File.&exists) - .filter { !(it.name =~ /groovy.*.jar/) } .collect { it.isDirectory() ? it : zipTree(it) } duplicatesStrategy = DuplicatesStrategy.EXCLUDE } diff --git a/web-view-components-compiler/runGroovyc b/web-view-components-compiler/runGroovyc index 29deef6..c5f9489 100755 --- a/web-view-components-compiler/runGroovyc +++ b/web-view-components-compiler/runGroovyc @@ -11,7 +11,8 @@ if [ "$1" == "--debug" ]; then "$@" else gradle -q uberJar && \ - groovyc -cp build/libs/web-view-components-uber-0.1.2.jar \ + java -cp build/libs/web-view-components-uber-0.1.2.jar \ + org.codehaus.groovy.tools.FileSystemCompiler \ --configscript src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy \ -d groovyc-out \ "$@" diff --git a/web-view-components-compiler/sketching/groovy/sketching/EchoNoPreamble.wvc b/web-view-components-compiler/sketching/groovy/sketching/EchoNoPreamble.wvc new file mode 100644 index 0000000..00df1c3 --- /dev/null +++ b/web-view-components-compiler/sketching/groovy/sketching/EchoNoPreamble.wvc @@ -0,0 +1 @@ +Hello, World! \ No newline at end of file diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java index 739ad31..1f34859 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompiler.java @@ -4,7 +4,6 @@ import groowt.view.component.compiler.*; import groowt.view.component.web.WebViewComponentBugError; import groowt.view.component.web.ast.node.CompilationUnitNode; import groowt.view.component.web.transpile.DefaultGroovyTranspiler; -import org.antlr.v4.runtime.ParserRuleContext; import org.codehaus.groovy.control.CompilationFailedException; import org.codehaus.groovy.control.SourceUnit; import org.codehaus.groovy.tools.GroovyClass; @@ -16,25 +15,12 @@ public class DefaultWebViewComponentTemplateCompiler extends CachingComponentTemplateCompiler implements WebViewComponentTemplateCompiler { - private final ComponentTemplateCompilerConfiguration configuration; + private final WebViewComponentTemplateCompilerConfiguration configuration; - public DefaultWebViewComponentTemplateCompiler(ComponentTemplateCompilerConfiguration configuration) { + public DefaultWebViewComponentTemplateCompiler(WebViewComponentTemplateCompilerConfiguration configuration) { this.configuration = configuration; } - protected WebViewComponentTemplateCompileException getException( - WebViewComponentTemplateCompileUnit compileUnit, - ParserRuleContext parserRuleContext - ) { - final var exception = new WebViewComponentTemplateCompileException( - compileUnit, - "Parser error: " + parserRuleContext.exception.getMessage(), - parserRuleContext.exception - ); - exception.setParserRuleContext(parserRuleContext); - return exception; - } - @Override protected ComponentTemplateCompileResult doCompile(WebViewComponentTemplateCompileUnit compileUnit) throws ComponentTemplateCompileException { @@ -49,22 +35,12 @@ public class DefaultWebViewComponentTemplateCompiler : "AnonymousWebViewComponent" + System.nanoTime(); final var templateClassSimpleName = ownerComponentName + "Template"; - final SourceUnit sourceUnit = transpiler.transpile( - this.configuration, - compileUnit, - cuNode, - templateClassSimpleName - ); + final SourceUnit sourceUnit = transpiler.transpile(compileUnit, cuNode, templateClassSimpleName); compileUnit.getGroovyCompilationUnit().addSource(sourceUnit); - // set the groovy compile unit's class loader to the configuration's classloader. - compileUnit.getGroovyCompilationUnit().setClassLoader( - this.configuration.getGroovyClassLoader() - ); - // compile groovy try { - compileUnit.getGroovyCompilationUnit().compile(this.configuration.getToCompilePhase().getPhaseNumber()); + compileUnit.getGroovyCompilationUnit().compile(this.configuration.getCompilePhase().getPhaseNumber()); } catch (CompilationFailedException compilationFailedException) { throw new WebViewComponentTemplateCompileException( compileUnit, diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java index 6760f26..1c14b03 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompilerFactory.java @@ -1,11 +1,9 @@ package groowt.view.component.web.compiler; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; - public class DefaultWebViewComponentTemplateCompilerFactory implements WebViewComponentTemplateCompilerFactory { @Override - public WebViewComponentTemplateCompiler create(ComponentTemplateCompilerConfiguration configuration) { + public WebViewComponentTemplateCompiler create(WebViewComponentTemplateCompilerConfiguration configuration) { return new DefaultWebViewComponentTemplateCompiler(configuration); } diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWebViewComponentTemplateParserPlugin.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWebViewComponentTemplateParserPlugin.java index 1fdb469..30c1d0e 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWebViewComponentTemplateParserPlugin.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/groovyc/DelegatingWebViewComponentTemplateParserPlugin.java @@ -1,7 +1,6 @@ package groowt.view.component.web.groovyc; import groowt.view.component.compiler.ComponentTemplateCompileException; -import groowt.view.component.compiler.DefaultComponentTemplateCompilerConfiguration; import groowt.view.component.compiler.source.ComponentTemplateSource; import groowt.view.component.web.WebViewComponentBugError; import groowt.view.component.web.ast.node.CompilationUnitNode; @@ -80,13 +79,12 @@ public class DelegatingWebViewComponentTemplateParserPlugin implements ParserPlu } final var groovyTranspiler = new DefaultGroovyTranspiler(); - final String teplateClassSimpleName = sourceUnitFileName.substring(0, sourceUnitFileName.length() - 4); + final String templateClassName = sourceUnitFileName.substring(0, sourceUnitFileName.length() - 4); try { final SourceUnit transpiledSourceUnit = groovyTranspiler.transpile( - new DefaultComponentTemplateCompilerConfiguration(), compileUnit, cuNode, - teplateClassSimpleName + templateClassName ); return transpiledSourceUnit.getAST(); } catch (ComponentTemplateCompileException e) { diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java index 50583ae..0a72b9e 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/DefaultGroovyTranspiler.java @@ -2,7 +2,6 @@ package groowt.view.component.web.transpile; import groowt.view.component.compiler.ComponentTemplateCompileException; import groowt.view.component.compiler.ComponentTemplateCompileUnit; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; import groowt.view.component.web.ast.node.BodyNode; import groowt.view.component.web.ast.node.CompilationUnitNode; import groowt.view.component.web.ast.node.PreambleNode; @@ -49,18 +48,13 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { return moduleNode; } - protected ClassNode initMainClassNode( - ComponentTemplateCompileUnit compileUnit, - String templateClassName, - WebViewComponentModuleNode moduleNode - ) { + protected ClassNode initMainClassNode(ComponentTemplateCompileUnit compileUnit, String templateClassName) { final ClassNode mainClassNode = new ClassNode( compileUnit.getDefaultPackageName() + templateClassName, ACC_PUBLIC, ClassHelper.OBJECT_TYPE ); mainClassNode.addInterface(TranspilerUtil.COMPONENT_TEMPLATE); - moduleNode.addClass(mainClassNode); return mainClassNode; } @@ -202,7 +196,6 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { @Override public WebViewComponentSourceUnit transpile( - ComponentTemplateCompilerConfiguration compilerConfiguration, WebViewComponentTemplateCompileUnit compileUnit, CompilationUnitNode compilationUnitNode, String templateClassSimpleName @@ -212,13 +205,13 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { final PositionSetter positionSetter = transpilerConfiguration.getPositionSetter(); // prepare sourceUnit - final CompilerConfiguration groovyCompilerConfiguration = - compilerConfiguration.getGroovyCompilerConfiguration(); + final CompilerConfiguration groovyCompilerConfiguration = compileUnit.getGroovyCompilationUnit() + .getConfiguration(); final WebViewComponentSourceUnit sourceUnit = new WebViewComponentSourceUnit( compileUnit.getDescriptiveName(), compileUnit.getGroovyReaderSource(), groovyCompilerConfiguration, - compilerConfiguration.getGroovyClassLoader(), + compileUnit.getGroovyCompilationUnit().getClassLoader(), new ErrorCollector(groovyCompilerConfiguration) ); @@ -228,7 +221,7 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { ); // prepare mainClassNode - final ClassNode mainClassNode = this.initMainClassNode(compileUnit, templateClassSimpleName, moduleNode); + final ClassNode mainClassNode = this.initMainClassNode(compileUnit, templateClassSimpleName); // handle preamble final PreambleNode preambleNode = compilationUnitNode.getPreambleNode(); @@ -236,6 +229,9 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { this.handlePreamble(templateClassSimpleName, preambleNode, mainClassNode, moduleNode, positionSetter); } + // Moved here so that moduleNode#getMainClassName reflects fqn of mainClassName + moduleNode.addClass(mainClassNode); + // getRenderer method and render closure // first, getRenderer params final Parameter componentContextParam = new Parameter(COMPONENT_CONTEXT_TYPE, COMPONENT_CONTEXT_NAME); diff --git a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java index 6dce471..0dd7a5d 100644 --- a/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java +++ b/web-view-components-compiler/src/main/java/groowt/view/component/web/transpile/GroovyTranspiler.java @@ -1,14 +1,12 @@ package groowt.view.component.web.transpile; import groowt.view.component.compiler.ComponentTemplateCompileException; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; import groowt.view.component.web.ast.node.CompilationUnitNode; import groowt.view.component.web.compiler.WebViewComponentTemplateCompileUnit; public interface GroovyTranspiler { WebViewComponentSourceUnit transpile( - ComponentTemplateCompilerConfiguration compilerConfiguration, WebViewComponentTemplateCompileUnit compileUnit, CompilationUnitNode compilationUnitNode, String templateClassSimpleName diff --git a/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy b/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy index 5521402..0fb4c41 100644 --- a/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy +++ b/web-view-components-compiler/src/main/resources/groowt/view/component/web/groovyc/groovycConfigurationScript.groovy @@ -1,5 +1,16 @@ package groowt.view.component.web.groovyc import org.codehaus.groovy.control.CompilerConfiguration +import org.codehaus.groovy.control.customizers.ImportCustomizer + +(configuration as CompilerConfiguration).tap { + pluginFactory = new WebViewComponentParserPluginFactory() + addCompilationCustomizers(new ImportCustomizer().tap { + addStarImports( + "groowt.view.component.web.lib", + "groowt.view.component.web.runtime", + "groowt.view.component.runtime" + ) + }) +} -(configuration as CompilerConfiguration).pluginFactory = new WebViewComponentParserPluginFactory() diff --git a/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java index 6cd3b3c..32912b5 100644 --- a/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java +++ b/web-view-components-compiler/src/testFixtures/java/groowt/view/component/web/transpiler/GroovyTranspilerTests.java @@ -2,7 +2,6 @@ package groowt.view.component.web.transpiler; import groovy.lang.Tuple2; import groowt.view.component.compiler.ComponentTemplateCompileException; -import groowt.view.component.compiler.DefaultComponentTemplateCompilerConfiguration; import groowt.view.component.compiler.source.StringSource; import groowt.view.component.web.BaseWebViewComponent; import groowt.view.component.web.antlr.ParserUtil; @@ -55,7 +54,6 @@ public abstract class GroovyTranspilerTests { final var cuNode = astBuilder.buildCompilationUnit(parseResult.getCompilationUnitContext()); try { this.transpiler.transpile( - new DefaultComponentTemplateCompilerConfiguration(), new DefaultWebViewComponentTemplateCompileUnit( "", AnonymousWebViewComponent.class, diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java index f715a86..2fe88a1 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/DefaultWebViewComponentTemplateCompileUnit.java @@ -4,7 +4,6 @@ import groowt.view.component.ViewComponent; import groowt.view.component.compiler.AbstractComponentTemplateCompileUnit; import groowt.view.component.compiler.ComponentTemplateCompileException; import groowt.view.component.compiler.ComponentTemplateCompileResult; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; import groowt.view.component.compiler.source.ComponentTemplateSource; import groowt.view.component.compiler.source.FileSource; import groowt.view.component.compiler.source.URISource; @@ -68,9 +67,8 @@ public class DefaultWebViewComponentTemplateCompileUnit extends AbstractComponen } @Override - public ComponentTemplateCompileResult compile(ComponentTemplateCompilerConfiguration configuration) - throws ComponentTemplateCompileException { - final WebViewComponentTemplateCompiler compiler = WebViewComponentTemplateCompiler.get(configuration); + public ComponentTemplateCompileResult compile() throws ComponentTemplateCompileException { + final WebViewComponentTemplateCompiler compiler = WebViewComponentTemplateCompiler.get(); return compiler.compile(this); } diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java index d241b78..454d6bc 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompiler.java @@ -9,10 +9,10 @@ public interface WebViewComponentTemplateCompiler extends ComponentTemplateCompiler { static WebViewComponentTemplateCompiler get() { - return get(new DefaultComponentTemplateCompilerConfiguration()); + return get(new WebViewComponentTemplateCompilerConfiguration()); } - static WebViewComponentTemplateCompiler get(ComponentTemplateCompilerConfiguration configuration) { + static WebViewComponentTemplateCompiler get(WebViewComponentTemplateCompilerConfiguration configuration) { final ServiceLoader factoryServiceLoader = ServiceLoader.load(WebViewComponentTemplateCompilerFactory.class); final var factory = factoryServiceLoader.findFirst() diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerConfiguration.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerConfiguration.java new file mode 100644 index 0000000..c99d05e --- /dev/null +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerConfiguration.java @@ -0,0 +1,17 @@ +package groowt.view.component.web.compiler; + +import org.codehaus.groovy.control.CompilePhase; + +public class WebViewComponentTemplateCompilerConfiguration { + + private CompilePhase compilePhase = CompilePhase.CLASS_GENERATION; + + public CompilePhase getCompilePhase() { + return this.compilePhase; + } + + public void setCompilePhase(CompilePhase compilePhase) { + this.compilePhase = compilePhase; + } + +} diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java index 48e11a2..5a7a3c3 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/WebViewComponentTemplateCompilerFactory.java @@ -1,7 +1,5 @@ package groowt.view.component.web.compiler; -import groowt.view.component.compiler.ComponentTemplateCompilerConfiguration; - public interface WebViewComponentTemplateCompilerFactory { - WebViewComponentTemplateCompiler create(ComponentTemplateCompilerConfiguration configuration); + WebViewComponentTemplateCompiler create(WebViewComponentTemplateCompilerConfiguration configuration); }