JSMin fails when access to internal CF Java Components is disabled
Description
Checking the "Disable access to internal ColdFusion Java components" option in the ColdFusion administrator causes JavaScript minification to fail on request end.
The following is a Java stack trace from the test environment:
java.io.IOException: Stream closed at java.io.StringReader.ensureOpen(StringReader.java:39) at java.io.StringReader.read(StringReader.java:52) at java.io.FilterReader.read(FilterReader.java:48) at java.io.PushbackReader.read(PushbackReader.java:73) at com.magnoliabox.jsmin.JSMin.get(JSMin.java:91) at com.magnoliabox.jsmin.JSMin.next(JSMin.java:120) at com.magnoliabox.jsmin.JSMin.action(JSMin.java:188) at com.magnoliabox.jsmin.JSMin.jsmin(JSMin.java:221) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at coldfusion.runtime.StructBean.invoke(StructBean.java:508) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393) at cfcombine2ecfc980684724$funcCOMPRESSJSWITHJSMIN.runFunction(C:\farcry\core\packages\farcry\combine\combine.cfc:354) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2582) at cfcombine2ecfc980684724$funcCOMBINE.runFunction(C:\farcry\core\packages\farcry\combine\combine.cfc:279) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301) at cfutils2ecfc1581523079$funcCOMBINE.runFunction(C:\farcry\core\packages\farcry\utils.cfc:67) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301) at cfjsInHead2ecfm857967573.runPage(C:\farcry\core\tags\core\jsInHead.cfm:86) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) at coldfusion.filter.CFVariablesScopeFilter.invoke(CFVariablesScopeFilter.java:56) at coldfusion.tagext.lang.ModuleTag.doStartTag(ModuleTag.java:271) at cf_farcryOnRequestEnd2ecfm1772183517.runPage(C:\farcry\core\tags\farcry_farcryOnRequestEnd.cfm:54) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2722) at cfApplication2ecfc489319500$funcONREQUESTEND.runFunction(C:\farcry\core\Application.cfc:402) ...
The issue was reproducible in the latest development versions of FarCry Core 6.0, 6.1, and 6.2.
This issue was reported previously in the farcry-dev Google Group:
Looking at the Java source, the exception occurs while trying to read from the StringReader object containing the unprocessed JavaScript text. This is odd as StringReader is a standard Java class and the object is opened shortly before the error occurs.
Environment
ColdFusion 9.0.1 on Windows 7 64-bit, JDK 1.6.0_29 (x64)
Checking the "Disable access to internal ColdFusion Java components" option in the ColdFusion administrator causes JavaScript minification to fail on request end.
The following is a Java stack trace from the test environment:
java.io.IOException: Stream closed
at java.io.StringReader.ensureOpen(StringReader.java:39)
at java.io.StringReader.read(StringReader.java:52)
at java.io.FilterReader.read(FilterReader.java:48)
at java.io.PushbackReader.read(PushbackReader.java:73)
at com.magnoliabox.jsmin.JSMin.get(JSMin.java:91)
at com.magnoliabox.jsmin.JSMin.next(JSMin.java:120)
at com.magnoliabox.jsmin.JSMin.action(JSMin.java:188)
at com.magnoliabox.jsmin.JSMin.jsmin(JSMin.java:221)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at coldfusion.runtime.StructBean.invoke(StructBean.java:508)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393)
at cfcombine2ecfc980684724$funcCOMPRESSJSWITHJSMIN.runFunction(C:\farcry\core\packages\farcry\combine\combine.cfc:354)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2582)
at cfcombine2ecfc980684724$funcCOMBINE.runFunction(C:\farcry\core\packages\farcry\combine\combine.cfc:279)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
at cfutils2ecfc1581523079$funcCOMBINE.runFunction(C:\farcry\core\packages\farcry\utils.cfc:67)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472)
at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:517)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:496)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:355)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2301)
at cfjsInHead2ecfm857967573.runPage(C:\farcry\core\tags\core\jsInHead.cfm:86)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
at coldfusion.filter.CFVariablesScopeFilter.invoke(CFVariablesScopeFilter.java:56)
at coldfusion.tagext.lang.ModuleTag.doStartTag(ModuleTag.java:271)
at cf_farcryOnRequestEnd2ecfm1772183517.runPage(C:\farcry\core\tags\farcry_farcryOnRequestEnd.cfm:54)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416)
at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2722)
at cfApplication2ecfc489319500$funcONREQUESTEND.runFunction(C:\farcry\core\Application.cfc:402)
...
The issue was reproducible in the latest development versions of FarCry Core 6.0, 6.1, and 6.2.
This issue was reported previously in the farcry-dev Google Group:
https://groups.google.com/forum/?hl=en&fromgroups#!searchin/farcry-dev/stream$20closed
Looking at the Java source, the exception occurs while trying to read from the StringReader object containing the unprocessed JavaScript text. This is odd as StringReader is a standard Java class and the object is opened shortly before the error occurs.