Tapestry 5
  1. Tapestry 5
  2. TAP5-1726

JavaScript Assets fail to load for already-minified JS assets in Production mode

    Details

      Description

      I have another vendor's minified JavaScript files as assets in my context folder.
      They are obfuscated and don't pass YUI compressor's syntax checking.

      In this case, the process should still let the file through, but right now it fails with HTTP 500 error:
      So right now Tapestry can't load these assets.

      SEVERE: Operations trace:
      SEVERE: [ 1] Streaming context:com.baw.website.gwt.table/sc/modules/ISC_Core.js
      SEVERE: [ 2] Minimizing JavaScript
      SEVERE: Processing of request failed with uncaught exception: Compilation produced 6 syntax errors.
      org.apache.tapestry5.ioc.internal.OperationException: Compilation produced 6 syntax errors.
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
      at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
      at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1029)
      at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
      at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer.minimize(AbstractMinimizer.java:62)
      at org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer.minimize(MasterResourceMinimizer.java:44)
      at $ResourceMinimizer_125025d36590963b.minimize(Unknown Source)
      at org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:44)
      at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
      at org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:40)
      at org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:56)
      at $StreamableResourceSource_125025d365909639.getStreamableResource(Unknown Source)
      at org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:93)
      at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:47)
      at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:76)
      at org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1029)
      at org.apache.tapestry5.internal.TapestryInternalUtils.performIO(TapestryInternalUtils.java:576)
      at org.apache.tapestry5.internal.services.ResourceStreamerImpl.streamResource(ResourceStreamerImpl.java:86)
      at $ResourceStreamer_125025d365909623.streamResource(Unknown Source)
      at org.apache.tapestry5.internal.services.assets.ContextAssetRequestHandler.handleAssetRequest(ContextAssetRequestHandler.java:53)
      at org.apache.tapestry5.internal.services.AssetDispatcher.dispatch(AssetDispatcher.java:109)
      at $Dispatcher_125025d365909634.dispatch(Unknown Source)
      at $Dispatcher_125025d365909638.dispatch(Unknown Source)
      at $Dispatcher_125025d365909632.dispatch(Unknown Source)
      at org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:302)
      at com.flowlogix.web.services.SecurityModule$1.service(SecurityModule.java:85)
      at $RequestHandler_125025d365909633.service(Unknown Source)
      at org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
      at $RequestHandler_125025d365909633.service(Unknown Source)
      at org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:902)
      at $RequestHandler_125025d365909633.service(Unknown Source)
      at org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:892)
      at $RequestHandler_125025d365909633.service(Unknown Source)
      at org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)
      at $RequestHandler_125025d365909633.service(Unknown Source)
      at $RequestHandler_125025d365909628.service(Unknown Source)
      at org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:253)
      at com.flowlogix.web.services.internal.GwtCachingFilter.service(GwtCachingFilter.java:102)
      at $HttpServletRequestHandler_125025d365909629.service(Unknown Source)
      at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
      at $HttpServletRequestHandler_125025d365909629.service(Unknown Source)
      at org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
      at $HttpServletRequestFilter_125025d365909626.service(Unknown Source)
      at $HttpServletRequestHandler_125025d365909629.service(Unknown Source)
      at org.tynamo.security.services.impl.SecurityConfiguration$2.call(SecurityConfiguration.java:104)
      at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
      at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
      at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344)
      at org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:102)
      at $HttpServletRequestFilter_125025d365909627.service(Unknown Source)
      at $HttpServletRequestHandler_125025d365909629.service(Unknown Source)
      at org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:852)
      at $HttpServletRequestHandler_125025d365909629.service(Unknown Source)
      at $HttpServletRequestHandler_125025d365909622.service(Unknown Source)
      at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:171)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
      at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:232)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
      at com.sun.grizzly.comet.CometEngine.executeServlet(CometEngine.java:444)
      at com.sun.grizzly.comet.CometEngine.handle(CometEngine.java:308)
      at com.sun.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter.java:87)
      at com.sun.grizzly.arp.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:171)
      at com.sun.grizzly.arp.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:143)
      at com.sun.grizzly.arp.AsyncProcessorTask.doTask(AsyncProcessorTask.java:94)
      at com.sun.grizzly.http.TaskBase.run(TaskBase.java:193)
      at com.sun.grizzly.http.TaskBase.execute(TaskBase.java:175)
      at com.sun.grizzly.arp.DefaultAsyncHandler.handle(DefaultAsyncHandler.java:145)
      at com.sun.grizzly.arp.AsyncProtocolFilter.execute(AsyncProtocolFilter.java:204)
      at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
      at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
      at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
      at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
      at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
      at java.lang.Thread.run(Thread.java:680)
      Caused by: org.mozilla.javascript.EvaluatorException: Compilation produced 6 syntax errors.
      at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer$1.runtimeError(JavaScriptResourceMinimizer.java:80)
      at org.mozilla.javascript.Parser.parse(Parser.java:392)
      at org.mozilla.javascript.Parser.parse(Parser.java:337)
      at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312)
      at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
      at org.apache.tapestry5.internal.yuicompressor.JavaScriptResourceMinimizer.doMinimize(JavaScriptResourceMinimizer.java:97)
      at org.apache.tapestry5.internal.yuicompressor.AbstractMinimizer$1.perform(AbstractMinimizer.java:68)
      at org.apache.tapestry5.internal.TapestryInternalUtils$5.run(TapestryInternalUtils.java:582)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:51)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:48)
      at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
      ... 92 more

        Activity

        Hide
        Hudson added a comment -

        Integrated in tapestry-trunk-freestyle #614 (See https://builds.apache.org/job/tapestry-trunk-freestyle/614/)
        TAP5-1726: JavaScript Assets fail to load for already-minified JS assets in Production mode

        hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1190418
        Files :

        • /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/groovy/org/apache/tapestry5/yuicompressor/itest/YUICompressorIntegrationTests.groovy
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/java/yuicompressor/testapp/pages/BadJavaScript.java
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/java/yuicompressor/testapp/pages/Index.java
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/BadJavaScript.tml
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/Index.tml
        • /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/bad.js
        Show
        Hudson added a comment - Integrated in tapestry-trunk-freestyle #614 (See https://builds.apache.org/job/tapestry-trunk-freestyle/614/ ) TAP5-1726 : JavaScript Assets fail to load for already-minified JS assets in Production mode hlship : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1190418 Files : /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/main/java/org/apache/tapestry5/internal/yuicompressor/JavaScriptResourceMinimizer.java /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/groovy/org/apache/tapestry5/yuicompressor/itest/YUICompressorIntegrationTests.groovy /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/java/yuicompressor/testapp/pages/BadJavaScript.java /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/java/yuicompressor/testapp/pages/Index.java /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/BadJavaScript.tml /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/Index.tml /tapestry/tapestry5/trunk/tapestry-yuicompressor/src/test/resources/yuicompressor/testapp/pages/bad.js
        Hide
        Howard M. Lewis Ship added a comment -

        Any idea how to differentiate minimized JS from normal?

        I'm changing to code to log the minimization failure, but then stream the unminimized version.

        Show
        Howard M. Lewis Ship added a comment - Any idea how to differentiate minimized JS from normal? I'm changing to code to log the minimization failure, but then stream the unminimized version.

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Lenny Primak
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development