public static String getLangFromFilename()

in src/main/java/org/apache/bsf/BSFManager.java [646:712]


    public static String getLangFromFilename(final String fileName)
        throws BSFException {
        final int dotIndex = fileName.lastIndexOf(".");

        if (dotIndex != -1) {
            final String extn = fileName.substring(dotIndex + 1);
            String langval = (String) extn2Lang.get(extn);
            String lang = null;
            int index, loops = 0;

            if (langval != null) {
                final ClassLoader tccl=Thread.currentThread().getContextClassLoader();    // rgf, 2009-09-10

                while ((index = langval.indexOf(":", 0)) != -1) {
                    // Great. Multiple language engines registered
                    // for this extension.
                    // Try to find first one that is in our classpath.
                    lang = langval.substring(0, index);
                    langval = langval.substring(index + 1);
                    loops++;

                    // Test to see if in classpath
                    String engineName=null;
                    try {
                        engineName =
                            (String) registeredEngines.get(lang);

                        boolean bTryDefinedClassLoader=false;
                        if (tccl!=null)     // context CL available, try it first
                        {
                            try
                            {
                                tccl.loadClass (engineName);
                            }
                            catch (final ClassNotFoundException cnfe)
                            {
                                bTryDefinedClassLoader=true;
                            }
                        }

                        if (bTryDefinedClassLoader || tccl==null)   // not found, try defined CL next
                        {
                            definedClassLoader.loadClass(engineName);
                        }
                    }
                    catch (final ClassNotFoundException cnfe2) {
                        // Bummer.
                        lang = langval;
                        continue;
                    }

                    // Got past that? Good.
                    break;
                }
                if (loops == 0) { lang = langval; }
            }

            if (lang != null && lang != "") {
                return lang;
            }
        }
        throw new BSFException(BSFException.REASON_OTHER_ERROR,
                               "[BSFManager.getLangFromFilename] file extension missing or unknown: "
                               + "unable to determine language for '"
                               + fileName
                               + "'");
    }