Package org.gradle.groovy.scripts

Source Code of org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl

/*
* Copyright 2010 the original author or authors.
*
* Licensed 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.gradle.groovy.scripts;

import org.gradle.api.GradleScriptException;

public class DefaultScriptRunnerFactory implements ScriptRunnerFactory {
    private final ScriptExecutionListener listener;

    public DefaultScriptRunnerFactory(ScriptExecutionListener listener) {
        this.listener = listener;
    }

    public <T extends Script> ScriptRunner<T> create(T script) {
        return new ScriptRunnerImpl<T>(script);
    }

    private class ScriptRunnerImpl<T extends Script> implements ScriptRunner<T> {
        private final T script;

        public ScriptRunnerImpl(T script) {
            this.script = script;
        }

        public T getScript() {
            return script;
        }

        public void run() throws GradleScriptException {
            ClassLoader originalLoader = Thread.currentThread().getContextClassLoader();
            listener.beforeScript(script);
            GradleScriptException failure = null;
            Thread.currentThread().setContextClassLoader(script.getContextClassloader());
            script.getStandardOutputCapture().start();
            try {
                script.run();
            } catch (Throwable e) {
                failure = new GradleScriptException(String.format("A problem occurred evaluating %s.", script), e);
            }
            script.getStandardOutputCapture().stop();
            Thread.currentThread().setContextClassLoader(originalLoader);
            listener.afterScript(script, failure);
            if (failure != null) {
                throw failure;
            }
        }
    }
}
TOP

Related Classes of org.gradle.groovy.scripts.DefaultScriptRunnerFactory$ScriptRunnerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.