⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptrunnercreator.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You under the Apache License, Version 2.0 *  (the "License"); you may not use this file except in compliance with *  the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. * */package org.apache.tools.ant.util;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.Project;/** * This is a helper class used by ScriptRunnerHelper to * create a ScriptRunner based on a classloader and on a language. */public class ScriptRunnerCreator {    private static final String AUTO = "auto";    private static final String OATAU = "org.apache.tools.ant.util";    private static final String UTIL_OPT = OATAU + ".optional";    private static final String BSF = "bsf";    private static final String BSF_PACK = "org.apache.bsf";    private static final String BSF_MANAGER = BSF_PACK + ".BSFManager";    private static final String BSF_RUNNER = UTIL_OPT + ".ScriptRunner";    private static final String JAVAX = "javax";    private static final String JAVAX_MANAGER = "javax.script.ScriptEngineManager";    private static final String JAVAX_RUNNER = UTIL_OPT + ".JavaxScriptRunner";    private Project     project;    private String      manager;    private String      language;    private ClassLoader scriptLoader = null;    /**     * Constructor for creator.     * @param project the current project.     */    public ScriptRunnerCreator(Project project) {        this.project = project;    }    /**     * Create a ScriptRunner.     * @param manager      the script manager ("auto" | "bsf" | "javax")     * @param language     the language.     * @param classLoader  the classloader to use     * @return the created script runner.     * @throws BuildException if unable to create the ScriptRunner.     */    public synchronized ScriptRunnerBase createRunner(        String manager, String language, ClassLoader classLoader) {        this.manager      = manager;        this.language     = language;        this.scriptLoader = classLoader;        if (language == null) {            throw new BuildException("script language must be specified");        }        if (!manager.equals(AUTO) && !manager.equals(JAVAX) && !manager.equals(BSF)) {            throw new BuildException("Unsupported language prefix " + manager);        }        // Check for bsf first then javax        // This version does not check if the scriptManager        // supports the language.        ScriptRunnerBase ret = null;        ret = createRunner(BSF, BSF_MANAGER, BSF_RUNNER);        if (ret == null) {            ret = createRunner(JAVAX, JAVAX_MANAGER, JAVAX_RUNNER);        }        if (ret != null) {            return ret;        }        if (JAVAX.equals(manager)) {            throw new BuildException(                    "Unable to load the script engine manager " + "(" + JAVAX_MANAGER + ")");        }        if (BSF.equals(manager)) {            throw new BuildException(                    "Unable to load the BSF script engine manager " + "(" + BSF_MANAGER + ")");        }        throw new BuildException("Unable to load a script engine manager "                + "(" + BSF_MANAGER + " or " + JAVAX_MANAGER + ")");    }    /**     * Create a script runner if the scriptManager matches the passed     * in manager.     * This checks if the script manager exists in the scriptLoader     * classloader and if so it creates and returns the script runner.     * @param checkManager check if the manager matchs this value.     * @param managerClass the name of the script manager class.     * @param runnerClass   the name of ant's script runner for this manager.     * @return the script runner class.     * @throws BuildException if there is a problem creating the runner class.     */    private ScriptRunnerBase createRunner(        String checkManager, String managerClass, String runnerClass) {        ScriptRunnerBase runner = null;        if (!manager.equals(AUTO) && !manager.equals(checkManager)) {            return null;        }        if (scriptLoader.getResource(LoaderUtils.classNameToResource(managerClass)) == null) {            return null;        }        if (managerClass.equals(BSF_MANAGER)) {            new ScriptFixBSFPath().fixClassLoader(scriptLoader, language);        }        try {            runner = (ScriptRunnerBase) Class.forName(                    runnerClass, true, scriptLoader).newInstance();            runner.setProject(project);        } catch (Exception ex) {            throw ReflectUtil.toBuildException(ex);        }        runner.setLanguage(language);        runner.setScriptClassLoader(scriptLoader);        return runner;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -