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

Emmanuel Bourg updated JCI-58:
------------------------------

    Description: 
The method isPackage(final String pClaszzName) calls 
classLoader.getResourceAsStream() but fails to close the stream if it is opened 
successfully. On Windows this means all other file access to this file is not 
permitted. The inputstream should be closed. Here is a replacement method:

{code}
    private boolean isPackage( final String pClazzName ) {

        final InputStream is = 
pClassLoader.getResourceAsStream(ConversionUtils.convertClassToResourcePath(pClazzName));
        if (is != null) {
            log.debug("found the class for " + pClazzName + "- no package");
            try {
                is.close();
            } catch (final IOException ie) {
                log.error("could not close input stream", ie);
            } 
            return false;
        }

        // FIXME: this should not be tied to the extension
        final String source = pClazzName.replace('.', '/') + ".java";
        if (pReader.isAvailable(source)) {
            log.debug("found the source " + source + " for " + pClazzName + " - 
no package ");
            return false;
        }

        return true;
    }
{code}

  was:
The method isPackage(final String pClaszzName) calls 
classLoader.getResourceAsStream() but fails to close the stream if it is opened 
successfully. On Windows this means all other file access to this file is not 
permitted. The inputstream should be closed. Here is a replacement method:

            private boolean isPackage( final String pClazzName ) {

                final InputStream is = 
pClassLoader.getResourceAsStream(ConversionUtils.convertClassToResourcePath(pClazzName));
                if (is != null) {
                    log.debug("found the class for " + pClazzName + "- no 
package");
                    try {
                        is.close();
                    } catch (final IOException ie) {
                        log.error("could not close input stream", ie);
                    } 
                    return false;
                }


                // FIXME: this should not be tied to the extension
                final String source = pClazzName.replace('.', '/') + ".java";
                if (pReader.isAvailable(source)) {
                    log.debug("found the source " + source + " for " + 
pClazzName + " - no package ");
                    return false;
                }

                return true;
            }


> EclipseJavaCompiler fails to close inputstream
> ----------------------------------------------
>
>                 Key: JCI-58
>                 URL: https://issues.apache.org/jira/browse/JCI-58
>             Project: Commons JCI
>          Issue Type: Bug
>          Components: compiler eclipse
>    Affects Versions: 1.1
>         Environment: Java 1.5, WinXP
>            Reporter: Michael Gannon
>            Assignee: Torsten Curdt
>             Fix For: 1.1
>
>
> The method isPackage(final String pClaszzName) calls 
> classLoader.getResourceAsStream() but fails to close the stream if it is 
> opened successfully. On Windows this means all other file access to this file 
> is not permitted. The inputstream should be closed. Here is a replacement 
> method:
> {code}
>     private boolean isPackage( final String pClazzName ) {
>         final InputStream is = 
> pClassLoader.getResourceAsStream(ConversionUtils.convertClassToResourcePath(pClazzName));
>         if (is != null) {
>             log.debug("found the class for " + pClazzName + "- no package");
>             try {
>                 is.close();
>             } catch (final IOException ie) {
>                 log.error("could not close input stream", ie);
>             } 
>             return false;
>         }
>         // FIXME: this should not be tied to the extension
>         final String source = pClazzName.replace('.', '/') + ".java";
>         if (pReader.isAvailable(source)) {
>             log.debug("found the source " + source + " for " + pClazzName + " 
> - no package ");
>             return false;
>         }
>         return true;
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to