static

in src/main/java/org/apache/bsf/BSFManager.java [136:205]


    static {
        final String strInfo = "org.apache.bsf.BSFManager.dumpEnvironment() [from static{}]";
        try {
            definedClassLoader = BSFManager.class.getClassLoader(); // get defining ClassLoader

            final String resourceName = "org/apache/bsf/Languages.properties";

            Enumeration e = null;
            // use the Thread's context class loader to locate the resources
            final ClassLoader tccl = Thread.currentThread().getContextClassLoader(); // try to get the context class loader
            if (tccl != null) // no context class loader available!
            {
                e = tccl.getResources(resourceName);
            } else // fallback
            {
                e = definedClassLoader.getResources(resourceName);
                Thread.currentThread().setContextClassLoader(definedClassLoader); // set Thread context class loader
            }

            while (e.hasMoreElements()) {
                final URL url = (URL) e.nextElement();
                final InputStream is = url.openStream();

                final Properties p = new Properties();
                p.load(is);

                for (final Enumeration keys = p.propertyNames(); keys.hasMoreElements();) {

                    final String key = (String) keys.nextElement();
                    final String value = p.getProperty(key);
                    final String className = value.substring(0, value.indexOf(","));

                    // get the extensions for this language
                    final String exts = value.substring(value.indexOf(",") + 1);
                    final StringTokenizer st = new StringTokenizer(exts, "|");
                    final String[] extensions = new String[st.countTokens()];

                    for (int i = 0; st.hasMoreTokens(); i++) {
                        extensions[i] = st.nextToken().trim();
                    }

                    registerScriptingEngine(key, className, extensions);
                }
            }
        } catch (final IOException ex) {
            final BSF_Log logger = BSF_LogFactory.getLog(BSFManager.class.getName());
            logger.debug("[BSFManager] static {...}");
            logger.error("[BSFManager] Error reading Languages file, exception :", ex);

            // TODO: leave in case only a no-op-logger is available or remove next two statements?
            ex.printStackTrace();
            System.err.println("Error reading Languages file " + ex);
        } catch (final NoSuchElementException nsee) {
            final BSF_Log logger = BSF_LogFactory.getLog(BSFManager.class.getName());
            logger.debug("[BSFManager] static {...}");
            logger.error("[BSFManager] Syntax error in Languages resource bundle, exception :", nsee);

            // TODO: leave in case only a no-op-logger is available or remove next two statements?
            nsee.printStackTrace();
            System.err.println("Syntax error in Languages resource bundle");
        } catch (final MissingResourceException mre) {
            final BSF_Log logger = BSF_LogFactory.getLog(BSFManager.class.getName());
            logger.debug("[BSFManager] static {...}");
            logger.error("[BSFManager] Initialization error, exception :", mre);

            // TODO: leave in case only a no-op-logger is available or remove next two statements?
            mre.printStackTrace();
            System.err.println("Initialization error: " + mre.toString());
        }
    }