Skip to content

Exception when posts are missing an author #244

@dmlloyd

Description

@dmlloyd

If a post is missing an author tag, the following error occurs:

2024-11-01 12:08:42,499 ERROR [io.qua.roq.fro.run.RoqRouteHandler] (vert.x-worker-thread-1) Error occurred while rendering the template [posts/2017-10-30-rwlocks-with-just-synch.md]: io.quarkus.qute.TemplateException: Rendering error in template [roq-gen/layouts/roq-default/post.html] line 44: Property "author" not found on the base object "io.vertx.core.json.JsonObject" in expression {page.data.author}
2024-11-01 12:08:42,503 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (vert.x-eventloop-thread-0) HTTP Request to /posts/a-lightweight-readers-writer-lock failed, error id: f6c9d2f4-b4f4-4a65-8ef8-c6ebd41c7765-1: io.quarkus.qute.TemplateException: Rendering error in template [roq-gen/layouts/roq-default/post.html] line 44: Property "author" not found on the base object "io.vertx.core.json.JsonObject" in expression {page.data.author}
	at io.quarkus.qute.TemplateException$Builder.build(TemplateException.java:169)
	at io.quarkus.qute.EvaluatorImpl.propertyNotFound(EvaluatorImpl.java:234)
	at io.quarkus.qute.EvaluatorImpl.resolve(EvaluatorImpl.java:204)
	at io.quarkus.qute.EvaluatorImpl.lambda$resolve$4(EvaluatorImpl.java:214)
	at io.quarkus.qute.CompletedStage.thenCompose(CompletedStage.java:249)
	at io.quarkus.qute.EvaluatorImpl.resolve(EvaluatorImpl.java:211)
	at io.quarkus.qute.EvaluatorImpl.resolveReference(EvaluatorImpl.java:131)
	at io.quarkus.qute.EvaluatorImpl.lambda$resolveReference$2(EvaluatorImpl.java:135)
	at io.quarkus.qute.CompletedStage.thenCompose(CompletedStage.java:249)
	at io.quarkus.qute.EvaluatorImpl.resolveReference(EvaluatorImpl.java:135)
	at io.quarkus.qute.EvaluatorImpl.lambda$resolveReference$2(EvaluatorImpl.java:135)
	at io.quarkus.qute.CompletedStage.thenCompose(CompletedStage.java:249)
	at io.quarkus.qute.EvaluatorImpl.resolveReference(EvaluatorImpl.java:135)
	at io.quarkus.qute.EvaluatorImpl.evaluate(EvaluatorImpl.java:85)
	at io.quarkus.qute.ResolutionContextImpl$ChildResolutionContext.evaluate(ResolutionContextImpl.java:92)
	at io.quarkus.qute.EvaluatorImpl$EvalContextImpl.evaluate(EvaluatorImpl.java:387)
	at io.quarkus.qute.runtime.jsonobject.JsonObjectValueResolver.resolve(JsonObjectValueResolver.java:39)
	at io.quarkus.qute.EvaluatorImpl.resolve(EvaluatorImpl.java:211)
	at io.quarkus.qute.EvaluatorImpl.resolveReference(EvaluatorImpl.java:131)
	at io.quarkus.qute.EvaluatorImpl.lambda$evaluate$0(EvaluatorImpl.java:78)
	at io.quarkus.qute.CompletedStage.thenCompose(CompletedStage.java:249)
	at io.quarkus.qute.EvaluatorImpl.evaluate(EvaluatorImpl.java:77)
	at io.quarkus.qute.ResolutionContextImpl$ChildResolutionContext.evaluate(ResolutionContextImpl.java:92)
	at io.quarkus.qute.Futures.evaluateParams(Futures.java:40)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.evaluate(SectionNode.java:229)
	at io.quarkus.qute.SetSectionHelper.resolve(SetSectionHelper.java:42)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:57)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.InsertSectionHelper.resolve(InsertSectionHelper.java:28)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:57)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.InsertSectionHelper.resolve(InsertSectionHelper.java:28)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:57)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:66)
	at io.quarkus.qute.Parser$1.resolve(Parser.java:1331)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.IncludeSectionHelper.resolve(IncludeSectionHelper.java:50)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:50)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:66)
	at io.quarkus.qute.Parser$1.resolve(Parser.java:1331)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.IncludeSectionHelper.resolve(IncludeSectionHelper.java:50)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:50)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:66)
	at io.quarkus.qute.Parser$1.resolve(Parser.java:1331)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.IncludeSectionHelper.resolve(IncludeSectionHelper.java:50)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.Results.resolveWith(Results.java:110)
	at io.quarkus.qute.Results.resolveAndProcess(Results.java:50)
	at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:238)
	at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:66)
	at io.quarkus.qute.Parser$1.resolve(Parser.java:1331)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:53)
	at io.quarkus.qute.SectionNode.resolve(SectionNode.java:58)
	at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderData(TemplateImpl.java:272)
	at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderAsyncNoTimeout(TemplateImpl.java:239)
	at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderAsync(TemplateImpl.java:212)
	at io.quarkus.qute.runtime.TemplateProducer$InjectableTemplate$InjectableTemplateInstanceImpl.renderAsync(TemplateProducer.java:353)
	at io.quarkiverse.roq.frontmatter.runtime.RoqRouteHandler.handlePage(RoqRouteHandler.java:149)
	at io.quarkiverse.roq.frontmatter.runtime.RoqRouteHandler.handle(RoqRouteHandler.java:88)
	at io.quarkiverse.roq.frontmatter.runtime.RoqRouteHandler.handle(RoqRouteHandler.java:36)
	at io.vertx.ext.web.impl.BlockingHandlerDecorator.lambda$handle$0(BlockingHandlerDecorator.java:48)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:191)
	at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270)
	at io.vertx.core.impl.ContextImpl.lambda$internalExecuteBlocking$2(ContextImpl.java:210)
	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
	at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2675)
	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2654)
	at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1627)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1594)
	at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:11)
	at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:11)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1583)

It would be nice to have a default or perhaps just render without an author.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions