[ 
https://issues.apache.org/jira/browse/WINK-327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kaloyan Kolev updated WINK-327:
-------------------------------

    Component/s: Common

> wink-provider files cannot be read when system default encoding is non-ASCII 
> compliant (e.g. EBCDIC, IBM-1047)
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: WINK-327
>                 URL: https://issues.apache.org/jira/browse/WINK-327
>             Project: Wink
>          Issue Type: Bug
>          Components: Common
>    Affects Versions: 1.1.2
>         Environment: IBM Java for z/OS 6.0 running on z/OS 1.12 with default 
> encoding IBM-1047.
>            Reporter: Kaloyan Kolev
>
> When executing in the described platform I am getting ClassNotFoundException:
> {code}
> java.lang.ClassNotFoundException: <non-ascii characters>
>       at java.lang.Class.forNameImpl(Native Method)
>       at java.lang.Class.forName(Class.java:136)
>       at 
> org.apache.wink.common.internal.utils.ClassUtils$1.run(ClassUtils.java:87)
>       at 
> java.security.AccessController.doPrivileged(AccessController.java:202)
>       at 
> org.apache.wink.common.internal.utils.ClassUtils.loadClass(ClassUtils.java:66)
>       at 
> org.apache.wink.common.internal.application.ApplicationFileLoader.loadClasses(ApplicationFileLoader.java:126)
>       at 
> org.apache.wink.common.internal.application.ApplicationFileLoader.<init>(ApplicationFileLoader.java:92)
>       at 
> org.apache.wink.common.internal.application.ApplicationFileLoader.<init>(ApplicationFileLoader.java:66)
>       at 
> org.apache.wink.server.internal.application.ServletApplicationFileLoader.<init>(ServletApplicationFileLoader.java:34)
>       at 
> org.apache.wink.server.internal.RequestProcessor.registerDefaultApplication(RequestProcessor.java:82)
>       at 
> org.apache.wink.server.internal.RequestProcessor.<init>(RequestProcessor.java:70)
>       at 
> org.apache.wink.server.internal.servlet.RestServlet.createRequestProcessor(RestServlet.java:117)
>       at 
> org.apache.wink.server.internal.servlet.RestServlet.init(RestServlet.java:90)
>       at javax.servlet.GenericServlet.init(GenericServlet.java:241)
>       <problem-irrelevant-stack>
>       ...
> {code}
> The <non-ascii characters> tag represents incorrectly decoded characters. It 
> seems that the problem is this piece of code in class 
> org.apache.wink.common.internal.application.ApplicationFileLoader:
> {code}
> final protected void loadClasses(InputStream is) {
>         try {
>             BufferedReader bufferedReader = new BufferedReader(new 
> InputStreamReader(is));
>             String line;
>             l: while ((line = bufferedReader.readLine()) != null) {
>               ...
> {code}
> Which is being called by:  
> {code}
> public ApplicationFileLoader(String appConfigFile) throws 
> FileNotFoundException {
>         logger.debug(Messages.getMessage("loadingApplication", 
> appConfigFile)); //$NON-NLS-1$
>         loadClasses(FileLoader.loadFileAsStream(appConfigFile));
>     }
> {code}
> to load the META-INF/corewink-provider file, and also by:
> {code}
> public ServletApplicationFileLoader(boolean loadWinkApplication) throws 
> FileNotFoundException {
>         super(loadWinkApplication);
>         
> loadClasses(ServletFileLoader.loadFileAsStream(SERVER_CORE_APPLICATION));
>     }
> {code}
> to load the META-INF/server/wink-provider file.
> Since these files are ASCII encoded the above decoding does not work.
> I went ahead and encoded both of the files in IBM-1047 encoding which 
> resolved the problem.
> I think Wink should always require UTF-8 for the bundled text files. This way 
> it will work by default when reading the JAR'ed text files, but will require 
> a little more effort for those supporting it on such "exotic" platforms that 
> need to provide their own files (I assume not the majority of the consumers)
> Thanks.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to