Uploaded image for project: 'Imaging'
  1. Imaging
  2. MGNLIMG-224

Missing imaging node in the theme leads to stack overflow

    XMLWordPrintable

Details

    • Bug
    • Resolution: Workaround exists
    • Neutral
    • None
    • 3.3
    • None
    • None

    Description

      When using a theme it's required that you have an imaging node present even if you do not plan to use the variations feature. Not having the node leads to a stack overflow.

      Example:

      [#assign imgLink = imgfn.getImageVariationLinkFromBinary(binaryNode,"original") /]
      <img src="${imgLink}"/>
      

      Leads to:

      java method "info.magnolia.imaging.functions.ImagingTemplatingFunctions.getImageVariationLinkFromBinary(javax.jcr.Node, String)" threw an exception when invoked on info.magnolia.imaging.functions.ImagingTemplatingFunctions object "info.magnolia.imaging.functions.ImagingTemplatingFunctions@453deb93"; see cause exception in the Java stack trace.
      ----
      FTL stack trace ("~" means nesting-related):
       - Failed at: #assign imgLink = imgfn.getImageVaria... [in template "frontend/templates/components/contactperson/contactperson.ftl" at line 6, column 5]
      ----
      Java stack trace (for programmers):
      ----
      freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...]
       at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:289)
       at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:261)
       at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:65)
       at freemarker.core.MethodCall._eval(MethodCall.java:65)
       at freemarker.core.Expression.eval(Expression.java:83)
       at freemarker.core.Assignment.accept(Assignment.java:134)
       at freemarker.core.Environment.visit(Environment.java:366)
       at freemarker.core.Environment.visitAndTransform(Environment.java:495)
       at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42)
       at freemarker.core.Environment.visit(Environment.java:330)
       at freemarker.core.Environment.process(Environment.java:309)
       at freemarker.template.Template.process(Template.java:384)
       at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:171)
       at info.magnolia.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:99)
       at info.magnolia.rendering.renderer.AbstractRenderer.render(AbstractRenderer.java:166)
       at sun.reflect.GeneratedMethodAccessor337.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at com.thoughtworks.proxy.kit.SimpleInvoker.invoke(SimpleInvoker.java:42)
       at com.thoughtworks.proxy.kit.PrivateInvoker.invoke(PrivateInvoker.java:43)
       at com.thoughtworks.proxy.toys.decorate.DecoratingInvoker.invoke(DecoratingInvoker.java:61)
       at com.thoughtworks.proxy.factory.AbstractProxyFactory$CoincidentalInvocationHandlerAdapter.invoke(AbstractProxyFactory.java:96)
       at info.magnolia.rendering.renderer.FreemarkerRenderer$$EnhancerByCGLIB$$fd0ffdb5.render(<generated>)
       at info.magnolia.rendering.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:119)
       at info.magnolia.rendering.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$cab81fc3.render(<generated>)
       at info.magnolia.templating.elements.ComponentElement.begin(ComponentElement.java:144)
       at info.magnolia.templating.renderers.NoScriptRenderer.onRender(NoScriptRenderer.java:103)
       at info.magnolia.templating.renderers.NoScriptRenderer.render(NoScriptRenderer.java:81)
       at info.magnolia.rendering.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:119)
       at info.magnolia.rendering.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$cab81fc3.render(<generated>)
       at info.magnolia.templating.elements.AreaElement.end(AreaElement.java:332)
       at info.magnolia.templating.freemarker.AbstractDirective.execute(AbstractDirective.java:97)
       at freemarker.core.Environment.visit(Environment.java:445)
       at freemarker.core.UnifiedCall.accept(UnifiedCall.java:101)
       at freemarker.core.Environment.visit(Environment.java:330)
       at freemarker.core.Environment.visit(Environment.java:336)
       at freemarker.core.Environment.visit(Environment.java:336)
       at freemarker.core.Environment.process(Environment.java:309)
       at freemarker.template.Template.process(Template.java:384)
       at info.magnolia.freemarker.FreemarkerHelper.render(FreemarkerHelper.java:171)
       at info.magnolia.rendering.renderer.FreemarkerRenderer.onRender(FreemarkerRenderer.java:99)
       at info.magnolia.rendering.renderer.AbstractRenderer.render(AbstractRenderer.java:166)
       at sun.reflect.GeneratedMethodAccessor337.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at com.thoughtworks.proxy.kit.SimpleInvoker.invoke(SimpleInvoker.java:42)
       at com.thoughtworks.proxy.kit.PrivateInvoker.invoke(PrivateInvoker.java:43)
       at com.thoughtworks.proxy.toys.decorate.DecoratingInvoker.invoke(DecoratingInvoker.java:61)
       at com.thoughtworks.proxy.factory.AbstractProxyFactory$CoincidentalInvocationHandlerAdapter.invoke(AbstractProxyFactory.java:96)
       at info.magnolia.rendering.renderer.FreemarkerRenderer$$EnhancerByCGLIB$$fd0ffdb5.render(<generated>)
       at info.magnolia.module.site.renderer.SiteAwareRendererWrapper.render(SiteAwareRendererWrapper.java:92)
       at info.magnolia.rendering.engine.DefaultRenderingEngine.render(DefaultRenderingEngine.java:119)
       at info.magnolia.rendering.engine.DefaultRenderingEngine$$EnhancerByCGLIB$$cab81fc3.render(<generated>)
       at info.magnolia.rendering.engine.RenderingFilter.render(RenderingFilter.java:195)
       at info.magnolia.rendering.engine.RenderingFilter.handleTemplateRequest(RenderingFilter.java:140)
       at info.magnolia.rendering.engine.RenderingFilter.doFilter(RenderingFilter.java:94)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.rendering.model.ModelExecutionFilter.doFilter(ModelExecutionFilter.java:109)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.filter.VariantResolverFilter.doFilter(VariantResolverFilter.java:131)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.AggregatorFilter.doFilter(AggregatorFilter.java:135)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.RepositoryMappingFilter.doFilter(RepositoryMappingFilter.java:122)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:74)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.virtualuri.VirtualUriFilter.doFilter(VirtualUriFilter.java:98)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58)
       at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:67)
       at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:220)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:89)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:77)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:84)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81)
       at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:64)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.UnicodeNormalizationFilter.doFilter(UnicodeNormalizationFilter.java:89)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:111)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92)
       at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:80)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:80)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:80)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.personalization.trait.AbstractTraitDetectorFilter.doFilter(AbstractTraitDetectorFilter.java:80)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79)
       at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65)
       at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85)
       at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107)
       at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67)
       at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110)
       at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
       at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
       at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
       at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
       at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
       at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
       at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
       at java.lang.Thread.run(Thread.java:748)
       Caused by: java.lang.StackOverflowError
       at java.util.HashMap.hash(HashMap.java:339)
       at java.util.LinkedHashMap.get(LinkedHashMap.java:440)
       at java.util.Collections$UnmodifiableMap.get(Collections.java:1454)
       at com.google.inject.internal.InheritingState.getExplicitBinding(InheritingState.java:74)
       at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:216)
       at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1040)
       at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1071)
       at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1034)
       at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
       at info.magnolia.objectfactory.guice.GuiceComponentProvider.getComponent(GuiceComponentProvider.java:109)
       at info.magnolia.objectfactory.Components.getComponent(Components.java:107)
       at info.magnolia.cms.core.version.MgnlVersioningNodeWrapper.<init>(MgnlVersioningNodeWrapper.java:69)
       at info.magnolia.cms.core.version.MgnlVersioningContentDecorator.wrapNode(MgnlVersioningContentDecorator.java:49)
       at info.magnolia.jcr.decoration.ContentDecoratorPropertyWrapper.wrapNode(ContentDecoratorPropertyWrapper.java:104)
       at info.magnolia.jcr.decoration.ContentDecoratorPropertyWrapper.getParent(ContentDecoratorPropertyWrapper.java:78)
       at info.magnolia.jcr.wrapper.DelegatePropertyWrapper.getParent(DelegatePropertyWrapper.java:252)
       at info.magnolia.jcr.decoration.ContentDecoratorPropertyWrapper.getParent(ContentDecoratorPropertyWrapper.java:78)
       at info.magnolia.jcr.wrapper.DelegatePropertyWrapper.getParent(DelegatePropertyWrapper.java:252)
       at info.magnolia.jcr.decoration.ContentDecoratorPropertyWrapper.getParent(ContentDecoratorPropertyWrapper.java:78)
       at info.magnolia.jcr.wrapper.DelegatePropertyWrapper.getParent(DelegatePropertyWrapper.java:252)
       at info.magnolia.jcr.decoration.ContentDecoratorPropertyWrapper.getParent(ContentDecoratorPropertyWrapper.java:78)
       at info.magnolia.templating.imaging.support.ThemeDelegatingImagingSupport.getImagingSupport(ThemeDelegatingImagingSupport.java:96)
       at info.magnolia.templating.imaging.support.ThemeDelegatingImagingSupport.createLink(ThemeDelegatingImagingSupport.java:82)
       at info.magnolia.templating.imaging.support.ThemeDelegatingImagingSupport.createLink(ThemeDelegatingImagingSupport.java:82)
       at info.magnolia.templating.imaging.support.ThemeDelegatingImagingSupport.createLink(ThemeDelegatingImagingSupport.java:82)
      

      It would be helpful to have some indication this configuration is missing since it seems to be required even for "original". For example, "Check your theme imaging configuration" or "You must have a theme configuration to use the imaging templating functions"

      Workaround
      Configure the proper imaging support class. For example:

      cssFiles:
        #CSS files configuration
      jsFiles:
        #JavaScript files configuration
      imaging:
        class: info.magnolia.templating.imaging.VariationAwareImagingSupport
      

      Checklists

        Acceptance criteria

        Attachments

          Issue Links

            Activity

              People

                rgange Richard Gange
                rgange Richard Gange
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  Checklists

                    Bug DoR
                    Task DoD