private NameEnvironmentAnswer findType()

in compilers/eclipse/src/main/java/org/apache/commons/jci2/compiler/eclipse/EclipseJavaCompiler.java [248:309]


            private NameEnvironmentAnswer findType( final String className ) {

                if (isPackage(className)) {
                    return null;
                }

                log.debug("finding " + className);

                final String resourceName = ConversionUtils.convertClassToResourcePath(className);

                final byte[] clazzBytes = resourceStore.read(resourceName);
                if (clazzBytes != null) {
                    log.debug("loading from store " + className);

                    final char[] fileName = className.toCharArray();
                    try {
                        final ClassFileReader classFileReader = new ClassFileReader(clazzBytes, fileName, true);
                        return new NameEnvironmentAnswer(classFileReader, null);
                    } catch (final ClassFormatException e) {
                        log.error("wrong class format", e);
                        return null;
                    }
                }

                log.debug("not in store " + className);

                final InputStream is = classLoader.getResourceAsStream(resourceName);
                if (is == null) {
                    log.debug("class " + className + " not found");
                    return null;
                }

                final byte[] buffer = new byte[8192];
                final ByteArrayOutputStream baos = new ByteArrayOutputStream(buffer.length);
                int count;
                try {
                    while ((count = is.read(buffer, 0, buffer.length)) > 0) {
                        baos.write(buffer, 0, count);
                    }
                    baos.flush();
                    final char[] fileName = className.toCharArray();
                    final ClassFileReader classFileReader = new ClassFileReader(baos.toByteArray(), fileName, true);
                    return new NameEnvironmentAnswer(classFileReader, null);
                } catch (final IOException e) {
                    log.error("could not read class", e);
                    return null;
                } catch (final ClassFormatException e) {
                    log.error("wrong class format", e);
                    return null;
                } finally {
                    try {
                        baos.close();
                    } catch (final IOException oe) {
                        log.error("could not close output stream", oe);
                    }
                    try {
                        is.close();
                    } catch (final IOException ie) {
                        log.error("could not close input stream", ie);
                    }
                }
            }