From 2b3cd3120cd59e25c43a1b89e98c28518f02f2dd Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Mon, 27 Jan 2025 14:18:49 -0600 Subject: [PATCH] Add OutletContainer and check to renderer of Outlet. --- .../main/groovy/groowt/view/component/web/lib/Outlet.groovy | 6 ++++++ .../groowt/view/component/web/lib/OutletContainer.groovy | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 web-view-components/src/main/groovy/groowt/view/component/web/lib/OutletContainer.groovy diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/Outlet.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/Outlet.groovy index 6108771..8648e82 100644 --- a/web-view-components/src/main/groovy/groowt/view/component/web/lib/Outlet.groovy +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/Outlet.groovy @@ -1,6 +1,7 @@ package groowt.view.component.web.lib import groowt.view.View +import groowt.view.component.ComponentRenderException import groowt.view.component.runtime.DefaultComponentWriter class Outlet extends DelegatingWebViewComponent { @@ -14,6 +15,11 @@ class Outlet extends DelegatingWebViewComponent { @Override protected View getDelegate() { return { Writer w -> + if (!context.hasAncestor(OutletContainer)) { + throw new ComponentRenderException( + " is being used outside of a component implementing OutletContainer." + ) + } def cw = new DefaultComponentWriter(w, context.renderContext, context) givenChildren.each { cw << it } } diff --git a/web-view-components/src/main/groovy/groowt/view/component/web/lib/OutletContainer.groovy b/web-view-components/src/main/groovy/groowt/view/component/web/lib/OutletContainer.groovy new file mode 100644 index 0000000..c801530 --- /dev/null +++ b/web-view-components/src/main/groovy/groowt/view/component/web/lib/OutletContainer.groovy @@ -0,0 +1,5 @@ +package groowt.view.component.web.lib + +import groowt.view.component.web.WebViewComponent + +interface OutletContainer extends WebViewComponent {} \ No newline at end of file