001/*
002 * (C) Copyright 2015 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Thierry Delprat <tdelprat@nuxeo.com>
018 */
019package org.nuxeo.automation.scripting.api;
020
021import java.io.InputStream;
022
023import javax.script.ScriptException;
024
025import org.nuxeo.automation.scripting.internals.ScriptOperationContext;
026import org.nuxeo.ecm.automation.OperationException;
027import org.nuxeo.ecm.core.api.CoreSession;
028
029/**
030 * @since 7.2
031 */
032public interface AutomationScriptingService {
033
034    /**
035     * @since 7.3
036     */
037    void setOperationContext(ScriptOperationContext ctx);
038
039    /**
040     * @return The default JS binding wrapper injected into Nashorn.
041     */
042    String getJSWrapper() throws OperationException;
043
044    /**
045     * Run Automation Scripting with given 'JavaScript' InputStream and CoreSession.
046     * @param in
047     * @param session
048     * @throws ScriptException
049     */
050    void run(InputStream in, CoreSession session) throws ScriptException, OperationException;
051
052    /**
053     * Run Automation Scripting for a given 'JavaScript' script and CoreSession.
054     * @param script
055     * @param session
056     * @throws ScriptException
057     */
058    void run(String script, CoreSession session) throws ScriptException, OperationException;
059
060    /**
061     * @param scriptingOperationInterface
062     * @param script
063     * @param session
064     * @param <T>
065     * @return
066     * @throws ScriptException
067     */
068    <T> T getInterface(Class<T> scriptingOperationInterface, String script,
069            CoreSession session) throws ScriptException, OperationException;
070
071}