[
https://issues.apache.org/jira/browse/TAP5-2605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16872700#comment-16872700
]
Svein commented on TAP5-2605:
-----------------------------
Did it really work in Tapestry 5.4.4 in production mode? I seems that
clipboard-polyfill.promise.js is written in ES6. Today I tried to switch from
ES5 to ES6 and got a similar error. The closure compiler is very old. I have
overridden the closure compiler and can now use
{color:#660e7a}ECMASCRIPT6{color}
<{color:#000080}dependency{color}>
<{color:#000080}groupId{color}>com.google.javascript</{color:#000080}groupId{color}>
<{color:#000080}artifactId{color}>closure-compiler</{color:#000080}artifactId{color}>
<{color:#000080}version{color}>v20151216</{color:#000080}version{color}>
</{color:#000080}dependency{color}>
{color:#660e7a} {color}
{color:#808000}@Contribute{color}(ResourceMinimizer.{color:#000080}class{color})
{color:#808000}@Primary
{color}{color:#000080}public static void
{color}overrideJavaScriptMinimizer({color:#000080}final
{color}MappedConfiguration<String, ResourceMinimizer> configuration) {
configuration.overrideInstance({color:#008000}"text/javascript"{color},
MyGoogleClosureMinimizer.{color:#000080}class{color});
}
{color:#000080}public class {color}MyGoogleClosureMinimizer
{color:#000080}extends {color}GoogleClosureMinimizer {
{color:#000080}private final static {color}String
{color:#660e7a}OUTPUT_CHARSET {color}= {color:#008000}"utf-8"{color};
{color:#000080}private final {color}List<SourceFile> {color:#660e7a}EXTERNS
{color}= Collections.emptyList();
{color:#000080}private final {color}CompilationLevel
{color:#660e7a}compilationLevel{color};
{color:#000080}public {color}MyGoogleClosureMinimizer(Logger logger,
OperationTracker tracker, AssetChecksumGenerator checksumGenerator, Request
request,
{color:#808000}@Symbol{color}(WebResourcesSymbols.{color:#660e7a}COMPILATION_LEVEL{color})
CompilationLevel compilationLevel) {
{color:#000080}super{color}(logger, tracker, checksumGenerator, request,
compilationLevel);
{color:#000080}this{color}.{color:#660e7a}compilationLevel {color}=
compilationLevel;
}
{color:#808000}@Override
{color} {color:#000080}protected {color}InputStream
doMinimize(StreamableResource resource) {color:#000080}throws
{color}IOException {
CompilerOptions options = {color:#000080}new {color}CompilerOptions();
{color:#660e7a}compilationLevel{color}.setOptionsForCompilationLevel(options);
options.setLanguage(CompilerOptions.LanguageMode.{color:#660e7a}ECMASCRIPT6{color});
options.setCodingConvention({color:#000080}new
{color}ClosureCodingConvention());
options.setOutputCharset({color:#660e7a}OUTPUT_CHARSET{color});
options.setWarningLevel(DiagnosticGroups.{color:#660e7a}CHECK_VARIABLES{color},
CheckLevel.{color:#660e7a}WARNING{color});
com.google.javascript.jscomp.Compiler compiler = {color:#000080}new
{color}Compiler();
compiler.disableThreads();
SourceFile input = SourceFile.fromInputStream(resource.toString(),
resource.openStream(), Charset.defaultCharset());
List<SourceFile> inputs = Collections.singletonList(input);
Result result = compiler.compile({color:#660e7a}EXTERNS{color}, inputs,
options);
{color:#000080}if {color}(result.{color:#660e7a}success{color}) {
{color:#000080}return {color}IOUtils.toInputStream(compiler.toSource(),
{color:#660e7a}OUTPUT_CHARSET{color});
}
{color:#000080}throw new
{color}RuntimeException(String.format({color:#008000}"Compilation failed:
%s."{color},
InternalUtils.join(CollectionFactory.newList(result.{color:#660e7a}errors{color}),
{color:#008000}";"{color})));
}
}
> JS minimizer regression bug in 5.5.0-beta-1
> -------------------------------------------
>
> Key: TAP5-2605
> URL: https://issues.apache.org/jira/browse/TAP5-2605
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-webresources
> Affects Versions: 5.5.0
> Reporter: Balázs Palcsó
> Priority: Major
> Labels: regression
> Attachments: clipboard-polyfill.promise.js
>
>
> After upgrading from 5.4.4 to 5.5.0-beta-1 I am getting the following error
> for the attached [^clipboard-polyfill.promise.js]
>
> {code:java}
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR
> org.apache.tapestry5.ioc.Registry - Illegal char <<> at index 18:
> StreamableResource<text/javascript
> classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js
> COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR
> org.apache.tapestry5.ioc.Registry - Operations trace:
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR
> org.apache.tapestry5.ioc.Registry - [ 1] Streaming compressed module clipboard
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR
> org.apache.tapestry5.ioc.Registry - [ 2] Streaming
> classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js
> (compressed)
> 20190105 22:07:58.126 [http-nio-8080-exec-5] ERROR
> org.apache.tapestry5.ioc.Registry - [ 3] Minimizing
> StreamableResource<text/javascript
> classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js
> COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> 20190105 22:07:58.246 [http-nio-8080-exec-5] ERROR
> o.a.t.m.T.RequestExceptionHandler - Processing of request failed with
> uncaught exception: {}
> org.apache.tapestry5.ioc.internal.OperationException: Illegal char <<> at
> index 18: StreamableResource<text/javascript
> classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js
> COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:186)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:118)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at
> org.apache.tapestry5.internal.webresources.AbstractMinimizer.minimize(AbstractMinimizer.java:67)
> at
> org.apache.tapestry5.internal.services.assets.MasterResourceMinimizer.minimize(MasterResourceMinimizer.java:42)
> at $ResourceMinimizer_2469ff1505ff6.minimize(Unknown Source)
> at
> org.apache.tapestry5.internal.services.assets.SRSMinimizingInterceptor.getStreamableResource(SRSMinimizingInterceptor.java:42)
> at
> org.apache.tapestry5.internal.services.assets.JavaScriptStackMinimizeDisabler.getStreamableResource(JavaScriptStackMinimizeDisabler.java:61)
> at
> org.apache.tapestry5.internal.services.assets.UTF8ForTextAssets.getStreamableResource(UTF8ForTextAssets.java:40)
> at
> org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:55)
> at
> org.apache.tapestry5.internal.services.assets.SRSCompressingInterceptor.getStreamableResource(SRSCompressingInterceptor.java:38)
> at
> org.apache.tapestry5.internal.services.assets.SRSCachingInterceptor.getStreamableResource(SRSCachingInterceptor.java:55)
> at $StreamableResourceSource_2469ff1505e6a.getStreamableResource(Unknown
> Source)
> at
> org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:114)
> at
> org.apache.tapestry5.internal.services.ResourceStreamerImpl$1.perform(ResourceStreamerImpl.java:107)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at
> org.apache.tapestry5.internal.services.ResourceStreamerImpl.streamResource(ResourceStreamerImpl.java:106)
> at $ResourceStreamer_2469ff1505e97.streamResource(Unknown Source)
> at
> org.apache.tapestry5.internal.services.javascript.ModuleDispatcher$1.perform(ModuleDispatcher.java:167)
> at
> org.apache.tapestry5.internal.services.javascript.ModuleDispatcher$1.perform(ModuleDispatcher.java:158)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
> at
> org.apache.tapestry5.internal.services.javascript.ModuleDispatcher.handleModuleRequest(ModuleDispatcher.java:155)
> at
> org.apache.tapestry5.internal.services.javascript.ModuleDispatcher.dispatch(ModuleDispatcher.java:105)
> at $Dispatcher_2469ff1505e9d.dispatch(Unknown Source)
> at $Dispatcher_2469ff1505e93.dispatch(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:305)
> at
> org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$3.service(TapestryModule.java:846)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$2.service(TapestryModule.java:836)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at
> org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:89)
> at $RequestHandler_2469ff1505e94.service(Unknown Source)
> at $RequestHandler_2469ff1505e7e.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:256)
> at
> org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:45)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:59)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at
> org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:69)
> at $HttpServletRequestFilter_2469ff1505e7a.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at
> org.tynamo.security.services.impl.SecurityConfiguration.service(SecurityConfiguration.java:72)
> at $HttpServletRequestFilter_2469ff1505e7d.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at
> org.apache.tapestry5.modules.TapestryModule$1.service(TapestryModule.java:796)
> at $HttpServletRequestHandler_2469ff1505e80.service(Unknown Source)
> at $HttpServletRequestHandler_2469ff1505e79.service(Unknown Source)
> at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:166)
> 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:806)
> at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
> 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.nio.file.InvalidPathException: Illegal char <<> at index 18:
> StreamableResource<text/javascript
> classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js
> COMPRESSABLE lastModified: Sat Jan 05 22:07:25 CET 2019 size: 24061>
> at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
> at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
> at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
> at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
> at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
> at
> com.google.javascript.jscomp.SourceMapResolver.getRelativePath(SourceMapResolver.java:102)
> at
> com.google.javascript.jscomp.SourceMapResolver.extractSourceMap(SourceMapResolver.java:63)
> at com.google.javascript.jscomp.JsAst.parse(JsAst.java:169)
> at com.google.javascript.jscomp.JsAst.getAstRoot(JsAst.java:56)
> at
> com.google.javascript.jscomp.CompilerInput.getAstRoot(CompilerInput.java:133)
> at com.google.javascript.jscomp.Compiler.hoistIfExtern(Compiler.java:1979)
> at com.google.javascript.jscomp.Compiler.hoistExterns(Compiler.java:1965)
> at com.google.javascript.jscomp.Compiler.orderInputs(Compiler.java:1819)
> at com.google.javascript.jscomp.Compiler.parseInputs(Compiler.java:1751)
> at
> com.google.javascript.jscomp.Compiler.parseForCompilationInternal(Compiler.java:965)
> at
> com.google.javascript.jscomp.Compiler.lambda$parseForCompilation$4(Compiler.java:948)
> at
> com.google.javascript.jscomp.CompilerExecutor.runInCompilerThread(CompilerExecutor.java:129)
> at
> com.google.javascript.jscomp.Compiler.runInCompilerThread(Compiler.java:856)
> at
> com.google.javascript.jscomp.Compiler.parseForCompilation(Compiler.java:946)
> at com.google.javascript.jscomp.Compiler.compile(Compiler.java:715)
> at
> org.apache.tapestry5.internal.webresources.GoogleClosureMinimizer.doMinimize(GoogleClosureMinimizer.java:92)
> at
> org.apache.tapestry5.internal.webresources.AbstractMinimizer$1.perform(AbstractMinimizer.java:72)
> at
> org.apache.tapestry5.internal.webresources.AbstractMinimizer$1.perform(AbstractMinimizer.java:68)
> at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
> ... 72 common frames omitted{code}
> This is how the JS file is added in the AppModule Java class:
> {code:java}
> @Contribute(ModuleManager.class)
> public static void contributeModuleManager(final
> MappedConfiguration<String, Object> configuration,
>
> @Path("classpath:META-INF/assets/js/3rd-party/clipboard-polyfill.promise.js")
> final Resource clipboard) {
> configuration.add("clipboard", new
> JavaScriptModuleConfiguration(clipboard));
> }
> {code}
> This only happens when -Dtapestry.production-mode=true
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)