diff --git a/view-components/src/main/java/groowt/view/component/AbstractViewComponent.java b/view-components/src/main/java/groowt/view/component/AbstractViewComponent.java index 94889d4..aa62d20 100644 --- a/view-components/src/main/java/groowt/view/component/AbstractViewComponent.java +++ b/view-components/src/main/java/groowt/view/component/AbstractViewComponent.java @@ -21,19 +21,17 @@ public abstract class AbstractViewComponent implements ViewComponent { } } - private final ComponentTemplate template; + private ComponentTemplate componentTemplate; private ComponentContext context; - public AbstractViewComponent() { - this.template = null; - } + public AbstractViewComponent() {} - public AbstractViewComponent(ComponentTemplate template) { - this.template = template; + public AbstractViewComponent(ComponentTemplate componentTemplate) { + this.componentTemplate = componentTemplate; } public AbstractViewComponent(Class templateClass) { - this.template = instantiateTemplate(templateClass); + this.componentTemplate = instantiateTemplate(templateClass); } public AbstractViewComponent( @@ -46,7 +44,17 @@ public abstract class AbstractViewComponent implements ViewComponent { throw new RuntimeException(e); } final var templateClass = templateClassFactory.getTemplateClass(compileResult); - this.template = instantiateTemplate(templateClass); + this.componentTemplate = instantiateTemplate(templateClass); + } + + @Override + public ComponentTemplate getComponentTemplate() { + return this.componentTemplate; + } + + @Override + public void setComponentTemplate(ComponentTemplate componentTemplate) { + this.componentTemplate = componentTemplate; } @Override @@ -59,10 +67,6 @@ public abstract class AbstractViewComponent implements ViewComponent { return Objects.requireNonNull(this.context); } - protected ComponentTemplate getTemplate() { - return Objects.requireNonNull(template); - } - protected void beforeRender() {} protected void afterRender() {} @@ -76,7 +80,7 @@ public abstract class AbstractViewComponent implements ViewComponent { */ @Override public void renderTo(Writer out) throws IOException { - final Closure closure = this.getTemplate().getRenderer(); + final Closure closure = this.getComponentTemplate().getRenderer(); closure.setDelegate(this); closure.setResolveStrategy(Closure.DELEGATE_FIRST); this.beforeRender(); diff --git a/view-components/src/main/java/groowt/view/component/ViewComponent.java b/view-components/src/main/java/groowt/view/component/ViewComponent.java index 713a2fc..d8eb958 100644 --- a/view-components/src/main/java/groowt/view/component/ViewComponent.java +++ b/view-components/src/main/java/groowt/view/component/ViewComponent.java @@ -5,6 +5,9 @@ import groowt.view.component.context.ComponentContext; public interface ViewComponent extends View { + ComponentTemplate getComponentTemplate(); + void setComponentTemplate(ComponentTemplate componentTemplate); + /** * Note: compiled templates are required to automatically * call this method after the component is constructed. One diff --git a/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java b/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java index cb34305..7b9637b 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java +++ b/web-view-components/src/main/java/groowt/view/component/web/AbstractWebViewComponent.java @@ -89,7 +89,7 @@ public abstract class AbstractWebViewComponent extends AbstractViewComponent imp @Override public void renderTo(Writer out) throws IOException { final ComponentWriter webWriter = new DefaultComponentWriter(out); - final Closure renderer = this.getTemplate().getRenderer(); + final Closure renderer = this.getComponentTemplate().getRenderer(); renderer.setDelegate(this); renderer.setResolveStrategy(Closure.DELEGATE_FIRST); this.beforeRender(); diff --git a/web-view-components/src/main/java/groowt/view/component/web/compiler/AnonymousWebViewComponent.java b/web-view-components/src/main/java/groowt/view/component/web/compiler/AnonymousWebViewComponent.java index 243ced5..62fb284 100644 --- a/web-view-components/src/main/java/groowt/view/component/web/compiler/AnonymousWebViewComponent.java +++ b/web-view-components/src/main/java/groowt/view/component/web/compiler/AnonymousWebViewComponent.java @@ -1,5 +1,6 @@ package groowt.view.component.web.compiler; +import groowt.view.component.ComponentTemplate; import groowt.view.component.context.ComponentContext; import groowt.view.component.runtime.ComponentWriter; import groowt.view.component.web.WebViewComponent; @@ -11,6 +12,16 @@ import java.util.List; @ApiStatus.Internal public final class AnonymousWebViewComponent implements WebViewComponent { + @Override + public ComponentTemplate getComponentTemplate() { + throw new UnsupportedOperationException(); + } + + @Override + public void setComponentTemplate(ComponentTemplate componentTemplate) { + throw new UnsupportedOperationException(); + } + @Override public void setContext(ComponentContext context) { throw new UnsupportedOperationException();