Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using keycloak version 18 yields TemplateModelException #91

Closed
valkum opened this issue Apr 22, 2022 · 15 comments
Closed

Using keycloak version 18 yields TemplateModelException #91

valkum opened this issue Apr 22, 2022 · 15 comments

Comments

@valkum
Copy link

valkum commented Apr 22, 2022

FYI: While evaluating with keycloak version 18 we see the following error when trying to load the login page. With 17.0.1 this seems to work fine.

2022-04-22 12:39:11,303 ERROR [freemarker.runtime] (executor-thread-2) Error executing FreeMarker template part in the #attempt block: freemarker.core._TemplateModelException: An error has occurred when reading existing sub-variable "loginAction"; see cause exception! The type of the containing value was: extended_hash+string (org.keycloak.forms.login.freemarker.model.UrlBean wrapped into f.e.b.StringModel)

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if !object[key]??  [in template "error.ftl" in function "ftl_object_to_js_code_declaring_an_object" at line 157, column 21]
	- Reached through: ${ftl_object_to_js_code_declaring_an_...  [in template "error.ftl" at line 7, column 1]
----
	at freemarker.ext.beans.BeanModel.get(BeanModel.java:185)
	at freemarker.core.DynamicKeyName.dealWithStringKey(DynamicKeyName.java:164)
	at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:84)
	at freemarker.core.Expression.eval(Expression.java:101)
	at freemarker.core.ExistsExpression._eval(ExistsExpression.java:49)
	at freemarker.core.Expression.eval(Expression.java:101)
	at freemarker.core.Expression.evalToBoolean(Expression.java:177)
	at freemarker.core.Expression.evalToBoolean(Expression.java:163)
	at freemarker.core.NotExpression.evalToBoolean(NotExpression.java:34)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
	at freemarker.core.Environment.visit(Environment.java:347)
	at freemarker.core.Environment.visit(Environment.java:353)
	at freemarker.core.Environment.visitAttemptRecover(Environment.java:564)
	at freemarker.core.AttemptBlock.accept(AttemptBlock.java:45)
	at freemarker.core.Environment.visit(Environment.java:383)
	at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
	at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
	at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
	at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
	at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
	at freemarker.core.Environment.visit(Environment.java:347)
	at freemarker.core.Environment.visit(Environment.java:389)
	at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
	at freemarker.core.Environment.invokeMacro(Environment.java:825)
	at freemarker.core.Environment.invokeFunction(Environment.java:841)
	at freemarker.core.MethodCall._eval(MethodCall.java:65)
	at freemarker.core.Expression.eval(Expression.java:101)
	at freemarker.core.Assignment.accept(Assignment.java:134)
	at freemarker.core.Environment.visit(Environment.java:383)
	at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
	at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
	at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
	at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
	at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
	at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
	at freemarker.core.Environment.visit(Environment.java:347)
	at freemarker.core.Environment.visit(Environment.java:389)
	at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
	at freemarker.core.Environment.invokeMacro(Environment.java:825)
	at freemarker.core.Environment.invokeFunction(Environment.java:841)
	at freemarker.core.MethodCall._eval(MethodCall.java:65)
	at freemarker.core.Expression.eval(Expression.java:101)
	at freemarker.core.BuiltInsForOutputFormatRelated$AbstractConverterBI.calculateResult(BuiltInsForOutputFormatRelated.java:50)
	at freemarker.core.MarkupOutputFormatBoundBuiltIn._eval(MarkupOutputFormatBoundBuiltIn.java:40)
	at freemarker.core.Expression.eval(Expression.java:101)
	at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
	at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
	at freemarker.core.Environment.visit(Environment.java:347)
	at freemarker.core.Environment.visit(Environment.java:353)
	at freemarker.core.Environment.process(Environment.java:326)
	at freemarker.template.Template.process(Template.java:383)
	at org.keycloak.theme.FreeMarkerUtil.processTemplate(FreeMarkerUtil.java:68)
	at org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.processTemplate(FreeMarkerLoginFormsProvider.java:530)
	at org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createResponse(FreeMarkerLoginFormsProvider.java:295)
	at org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createErrorPage(FreeMarkerLoginFormsProvider.java:646)
	at org.keycloak.services.ErrorPage.error(ErrorPage.java:31)
	at org.keycloak.services.resources.SessionCodeChecks.restartAuthenticationSessionFromCookie(SessionCodeChecks.java:412)
	at org.keycloak.services.resources.SessionCodeChecks.initialVerifyAuthSession(SessionCodeChecks.java:193)
	at org.keycloak.services.resources.SessionCodeChecks.initialVerify(SessionCodeChecks.java:200)
	at org.keycloak.services.resources.LoginActionsService.checksForCode(LoginActionsService.java:201)
	at org.keycloak.services.resources.LoginActionsService.authenticate(LoginActionsService.java:266)
	at org.keycloak.services.resources.LoginActionsService.authenticateForm(LoginActionsService.java:349)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
	at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
	at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
	at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:192)
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:141)
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:32)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
	at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
	at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
	at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
	at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.handle(VertxRequestHandler.java:82)
	at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.handle(VertxRequestHandler.java:42)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
	at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:67)
	at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:55)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$5.handle(VertxHttpRecorder.java:380)
	at io.quarkus.vertx.http.runtime.VertxHttpRecorder$5.handle(VertxHttpRecorder.java:358)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
	at org.keycloak.quarkus.runtime.integration.web.QuarkusRequestFilter.lambda$createBlockingHandler$1(QuarkusRequestFilter.java:71)
	at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:159)
	at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:157)
	at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:543)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552)
	at freemarker.ext.beans.BeanModel.invokeThroughDescriptor(BeanModel.java:233)
	at freemarker.ext.beans.BeanModel.get(BeanModel.java:152)
	... 111 more
Caused by: java.lang.RuntimeException: action URI not set
	at org.keycloak.forms.login.freemarker.model.UrlBean.getLoginAction(UrlBean.java:48)
	... 118 more

Are you able to reproduce that with the demo app and keycloak version 18 as well?

@garronej
Copy link
Collaborator

Keycloak 18 was just released.
I didn't tested it yet.

@garronej
Copy link
Collaborator

I can reproduce but I think the bug is inconsequential.
It's just a warning in the log (I will try to get read of it though).
Have you tried with the builtin theme of keycloak 18?
I thik the relevent error is:

2022-04-22 13:45:58,451 WARN  [org.keycloak.events] (executor-thread-13) type=LOGIN_ERROR, realmId=ea10048d-984b-4b57-bc28-526700b3296c, clientId=myclient, userId=null, ipAddress=172.17.0.1, error=invalid_redirect_uri, redirect_uri=https://www.keycloak.org/app/#url=http://localhost:8080&realm=myrealm&client=myclient

It should appears just before what you copy pasted to me and you should see the same thing with the default theme.

garronej added a commit that referenced this issue Apr 22, 2022
@garronej
Copy link
Collaborator

I released a new version (4.8.5)
You won't get the ftl warning you copy pasted anymore.

@garronej
Copy link
Collaborator

For the rest, theses informations need to be updated for Keycloak 18.
image

I'll wait until they update https://www.keycloak.org/getting-started/getting-started-docker and https://www.keycloak.org/app/

@garronej
Copy link
Collaborator

garronej commented May 1, 2022

Everything works with kc18

@garronej garronej closed this as completed May 1, 2022
@VM-Cloud-Solutions
Copy link

VM-Cloud-Solutions commented Nov 27, 2022

Hi. Same Issue with Keycloak Quarkus ver 19.0.3.

  • Reached through: ${ftl_object_to_js_code_declaring_an_... [in template "error.ftl" at line 14, column 1]

  • Failed at: #if !object[key]?? [in template "error.ftl" in function "ftl_object_to_js_code_declaring_an_object" at line 194, column 21]

FTL stack trace ("~" means nesting-related):


ERROR [freemarker.runtime] (executor-thread-157) Error executing FreeMarker template part in the #attempt block: freemarker.core._TemplateModelException: An error has occurred when reading existing sub-variable "enabledEventTypes"; see cause exception! The type of the containing value was: extended_hash+string (org.keycloak.models.jpa.entities.RealmEntity wrapped into f.e.b.StringModel)
Caused by: java.lang.reflect.InvocationTargetException at jdk.internal.reflect.GeneratedMethodAccessor701.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552) at freemarker.ext.beans.BeanModel.invokeThroughDescriptor(BeanModel.java:233) at freemarker.ext.beans.BeanModel.get(BeanModel.java:152) ... 211 more Caused by: org.hibernate.LazyInitializationException: Unable to perform requested lazy initialization [org.keycloak.models.jpa.entities.RealmEntity.supportedLocales] - no session and settings disallow loading outside the Session at org.hibernate.bytecode.enhance.spi.interceptor.EnhancementHelper.throwLazyInitializationException(EnhancementHelper.java:275) at org.hibernate.bytecode.enhance.spi.interceptor.EnhancementHelper.performWork(EnhancementHelper.java:165) at org.hibernate.bytecode.enhance.spi.interceptor.LazyAttributeLoadingInterceptor.loadAttribute(LazyAttributeLoadingInterceptor.java:77) at org.hibernate.bytecode.enhance.spi.interceptor.LazyAttributeLoadingInterceptor.fetchAttribute(LazyAttributeLoadingInterceptor.java:73) at org.hibernate.bytecode.enhance.spi.interceptor.LazyAttributeLoadingInterceptor.handleRead(LazyAttributeLoadingInterceptor.java:54) at org.hibernate.bytecode.enhance.spi.interceptor.AbstractInterceptor.readObject(AbstractInterceptor.java:153) at org.keycloak.models.jpa.entities.RealmEntity.$$_hibernate_read_supportedLocales(RealmEntity.java) at org.keycloak.models.jpa.entities.RealmEntity.getSupportedLocales(RealmEntity.java:643) ... 217 more
 at java.base/java.lang.Thread.run(Thread.java:829)
 at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
 at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
 at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
 at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
 at io.quarkus.vertx.core.runtime.VertxCoreRecorder$13.runWith(VertxCoreRecorder.java:545)
 at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:157)
 at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:100)
 at io.vertx.core.impl.ContextImpl.lambda$null$0(ContextImpl.java:159)
 at org.keycloak.quarkus.runtime.integration.web.QuarkusRequestFilter.lambda$createBlockingHandler$1(QuarkusRequestFilter.java:90)
 at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
 at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
 at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
 at io.quarkus.vertx.http.runtime.VertxHttpRecorder$5.handle(VertxHttpRecorder.java:358)
 at io.quarkus.vertx.http.runtime.VertxHttpRecorder$5.handle(VertxHttpRecorder.java:380)
 at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
 at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
 at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
 at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:55)
 at io.quarkus.vertx.http.runtime.StaticResourcesRecorder$2.handle(StaticResourcesRecorder.java:67)
 at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:141)
 at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:163)
 at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1212)
 at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.handle(VertxRequestHandler.java:42)
 at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.handle(VertxRequestHandler.java:82)
 at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:151)
 at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
 at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
 at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
 at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
 at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
 at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
 at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:519)
 at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:218)
 at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:309)
 at org.jboss.resteasy.core.ExceptionHandler.executeExceptionMapper(ExceptionHandler.java:136)
 at org.keycloak.services.error.KeycloakErrorHandler.toResponse(KeycloakErrorHandler.java:56)
 at org.keycloak.services.error.KeycloakErrorHandler.getResponse(KeycloakErrorHandler.java:95)
 at org.keycloak.theme.FreeMarkerUtil.processTemplate(FreeMarkerUtil.java:68)
 at freemarker.template.Template.process(Template.java:383)
 at freemarker.core.Environment.process(Environment.java:326)
 at freemarker.core.Environment.visit(Environment.java:353)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
 at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MarkupOutputFormatBoundBuiltIn._eval(MarkupOutputFormatBoundBuiltIn.java:40)
 at freemarker.core.BuiltInsForOutputFormatRelated$AbstractConverterBI.calculateResult(BuiltInsForOutputFormatRelated.java:50)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.Assignment.accept(Assignment.java:134)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.MethodCall._eval(MethodCall.java:65)
 at freemarker.core.Environment.invokeFunction(Environment.java:841)
 at freemarker.core.Environment.invokeMacro(Environment.java:825)
 at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
 at freemarker.core.Environment.visit(Environment.java:389)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94)
 at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108)
 at freemarker.core.Environment.visitIteratorBlock(Environment.java:657)
 at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244)
 at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271)
 at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:291)
 at freemarker.core.Environment.visit(Environment.java:383)
 at freemarker.core.AttemptBlock.accept(AttemptBlock.java:45)
 at freemarker.core.Environment.visitAttemptRecover(Environment.java:564)
 at freemarker.core.Environment.visit(Environment.java:353)
 at freemarker.core.Environment.visit(Environment.java:347)
 at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
 at freemarker.core.NotExpression.evalToBoolean(NotExpression.java:34)
 at freemarker.core.Expression.evalToBoolean(Expression.java:163)
 at freemarker.core.Expression.evalToBoolean(Expression.java:177)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.ExistsExpression._eval(ExistsExpression.java:49)
 at freemarker.core.Expression.eval(Expression.java:101)
 at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:84)
 at freemarker.core.DynamicKeyName.dealWithStringKey(DynamicKeyName.java:164)
 at freemarker.ext.beans.BeanModel.get(BeanModel.java:185)

@garronej
Copy link
Collaborator

Hi @VM-Cloud-Solutions,
What version of Keycloakify are you using?

@VM-Cloud-Solutions
Copy link

Hi @garronej . Thanks for reply. I am using Version Keycloak 19.0.3 (Quarkus)

@garronej
Copy link
Collaborator

What version of Keycloakify

@VM-Cloud-Solutions
Copy link

Sorry. using keycloakify": "^5.4.0",

@garronej
Copy link
Collaborator

Sorry, I can't afford to to support legacy version of Keycloakify.
Please upgrade to v6 and if the bug is still there I'll fix it.

Best regards,

@VM-Cloud-Solutions
Copy link

Thanks for reply.

It has become the perfect excuse to make version updates to leave previous versions unsupported. And the most complicated thing is that the error will surely persist but I will also have new ones and instead of going forward we will go backwards. Thanks.

@garronej
Copy link
Collaborator

garronej commented Nov 27, 2022

I understand your frustration but I am the sole maintainer of multiple OSS project, I do the best I can.
I don't have a set up to test on older versions and there are very good chances that the bug has been fixed already.
If the bug is still there in latest, I'll fix it.

@VM-Cloud-Solutions
Copy link

VM-Cloud-Solutions commented Nov 27, 2022

It is not my wish to generate controversy. I understand that you are young and you interpreted that I was referring to your actitude (which in fact has been very kind and cordial). They were a comment directed to the update scheme and unfortunately that scheme is being applied to other activities of daily life which leads to a regression and not to an evolution of the service

@garronej
Copy link
Collaborator

OK sorry for my harsh answer 😞.

To be honest my policy of not supporting older version is also related to the fact that I want people to upgrade.
Until v5 in particular, there was no <Suspens /> support so everything was in the bundle, all the pages, all the locals.
I don't want people to think Keycloakify === my login page is a 2MB SPA. But I also know that most peoples doesn't bother updating if it works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants