diff --git a/scm-core/src/main/java/sonia/scm/script/AbstractScmScriptContext.java b/scm-core/src/main/java/sonia/scm/script/AbstractScmScriptContext.java index de2be519d0..f3af3e0645 100644 --- a/scm-core/src/main/java/sonia/scm/script/AbstractScmScriptContext.java +++ b/scm-core/src/main/java/sonia/scm/script/AbstractScmScriptContext.java @@ -40,9 +40,6 @@ import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.Reader; - -import java.util.Map; /** * @@ -57,13 +54,14 @@ public abstract class AbstractScmScriptContext implements ScmScriptContext * * * @param file - * @param additionalParams + * + * @return * * @throws IOException * @throws ScmScriptException */ @Override - public void eval(File file, Map additionalParams) + public ScmScript createScript(File file) throws IOException, ScmScriptException { if (!file.exists() ||!file.isFile()) @@ -72,22 +70,7 @@ public abstract class AbstractScmScriptContext implements ScmScriptContext "could not find script ".concat(file.getPath())); } - eval(new FileReader(file), additionalParams); - } - - /** - * Method description - * - * - * @param file - * - * @throws IOException - * @throws ScmScriptException - */ - @Override - public void eval(File file) throws IOException, ScmScriptException - { - eval(file, null); + return createScript(new FileReader(file)); } /** @@ -95,13 +78,14 @@ public abstract class AbstractScmScriptContext implements ScmScriptContext * * * @param path - * @param additionalParams + * + * @return * * @throws IOException * @throws ScmScriptException */ @Override - public void eval(String path, Map additionalParams) + public ScmScript createScript(String path) throws IOException, ScmScriptException { InputStream stream = @@ -113,36 +97,6 @@ public abstract class AbstractScmScriptContext implements ScmScriptContext "could not find script ".concat(path)); } - eval(new InputStreamReader(stream), additionalParams); - } - - /** - * Method description - * - * - * @param path - * - * @throws IOException - * @throws ScmScriptException - */ - @Override - public void eval(String path) throws IOException, ScmScriptException - { - eval(path, null); - } - - /** - * Method description - * - * - * @param reader - * - * @throws IOException - * @throws ScmScriptException - */ - @Override - public void eval(Reader reader) throws IOException, ScmScriptException - { - eval(reader, null); + return createScript(new InputStreamReader(stream)); } } diff --git a/scm-core/src/main/java/sonia/scm/script/ScmScript.java b/scm-core/src/main/java/sonia/scm/script/ScmScript.java new file mode 100644 index 0000000000..c4c28a883a --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/script/ScmScript.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.script; + +//~--- JDK imports ------------------------------------------------------------ + +import java.io.IOException; + +import java.util.Map; + +/** + * + * @author Sebastian Sdorra + * @since 1.6 + */ +public interface ScmScript +{ + + /** + * Invokes the script. + * + */ + public void invoke(); + + /** + * Invokes the script. + * + * + * @param additonalParameters + */ + public void invoke(Map additonalParameters); + + /** + * Method description + * + * + * @param function + * @param resultType + * @param additonalParameters + * @param + * + * @return + * + * @throws IOException + * @throws ScmScriptException + */ + public T invonke(String function, Class resultType, + Map additonalParameters) + throws IOException, ScmScriptException; + + /** + * Method description + * + * + * @param function + * @param resultType + * @param + * + * @return + * + * @throws IOException + * @throws ScmScriptException + */ + public T invonke(String function, Class resultType) + throws IOException, ScmScriptException; +} diff --git a/scm-core/src/main/java/sonia/scm/script/ScmScriptContext.java b/scm-core/src/main/java/sonia/scm/script/ScmScriptContext.java index 5961e90cb2..7add7d4e79 100644 --- a/scm-core/src/main/java/sonia/scm/script/ScmScriptContext.java +++ b/scm-core/src/main/java/sonia/scm/script/ScmScriptContext.java @@ -39,10 +39,8 @@ import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.Map; - /** - * Executes scripts. + * Returns a implementation of {@link ScmScript}. * * @author Sebastian Sdorra * @since 1.6 @@ -51,77 +49,44 @@ public interface ScmScriptContext { /** - * Executes the given script. - * - * - * @param file - the script - * @param additionalParams - - * additional parameters for the execution of the script - * - * @throws IOException - * @throws ScmScriptException - */ - public void eval(File file, Map additionalParams) - throws IOException, ScmScriptException; - - /** - * Executes the given script. + * Returns a implementation of {@link ScmScript}. * * * @param file - the script * + * + * @return implementation of {@link ScmScript} for the given script * @throws IOException * @throws ScmScriptException */ - public void eval(File file) throws IOException, ScmScriptException; - - /** - * Executes the given script. - * - * - * @param path - classpath location of the script - * @param additionalParams - - * additional parameters for the execution of the script - * - * @throws IOException - * @throws ScmScriptException - */ - public void eval(String path, Map additionalParams) + public ScmScript createScript(File file) throws IOException, ScmScriptException; /** - * Executes the given script. + * Returns a implementation of {@link ScmScript}. * * * @param path - classpath location of the script * + * + * @return implementation of {@link ScmScript} for the given script * @throws IOException * @throws ScmScriptException */ - public void eval(String path) throws IOException, ScmScriptException; + public ScmScript createScript(String path) + throws IOException, ScmScriptException; /** - * Executes the given script. + * Returns a implementation of {@link ScmScript}. * * * @param reader - The script in form of a {@link Reader} * + * + * @return implementation of {@link ScmScript} for the given script * @throws IOException * @throws ScmScriptException */ - public void eval(Reader reader) throws IOException, ScmScriptException; - - /** - * Executes the given script. - * - * - * @param reader - The script in form of a {@link Reader} - * @param additionalParams - - * additional parameters for the execution of the script - * - * @throws IOException - * @throws ScmScriptException - */ - public void eval(Reader reader, Map additionalParams) + public ScmScript createScript(Reader reader) throws IOException, ScmScriptException; } diff --git a/scm-core/src/main/java/sonia/scm/script/ScmScriptContextFactory.java b/scm-core/src/main/java/sonia/scm/script/ScmScriptContextFactory.java index 50bba8cd5e..92cd610c7a 100644 --- a/scm-core/src/main/java/sonia/scm/script/ScmScriptContextFactory.java +++ b/scm-core/src/main/java/sonia/scm/script/ScmScriptContextFactory.java @@ -34,7 +34,7 @@ package sonia.scm.script; /** - * {@link ScmScriptContextFactory} is used to get a instance of + * {@link ScmScriptContextFactory} is used to get a instance of * {@link ScmScriptContext} for a specific language. * * @author Sebastian Sdorra @@ -44,7 +44,7 @@ public interface ScmScriptContextFactory { /** - * Returns the {@link ScmScriptContext} for given language or null if no + * Returns the {@link ScmScriptContext} for given language or null if no * {@link ScmScriptContext} for the language exists. * * diff --git a/scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFound.java b/scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFoundException.java similarity index 91% rename from scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFound.java rename to scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFoundException.java index 112465bbfd..1d2c39ed7e 100644 --- a/scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFound.java +++ b/scm-core/src/main/java/sonia/scm/script/ScmScriptLanguageNotFoundException.java @@ -39,7 +39,7 @@ package sonia.scm.script; * @author Sebastian Sdorra * @since 1.6 */ -public class ScmScriptLanguageNotFound extends ScmScriptException +public class ScmScriptLanguageNotFoundException extends ScmScriptException { /** Field description */ @@ -51,7 +51,7 @@ public class ScmScriptLanguageNotFound extends ScmScriptException * Constructs ... * */ - public ScmScriptLanguageNotFound() {} + public ScmScriptLanguageNotFoundException() {} /** * Constructs ... @@ -59,7 +59,7 @@ public class ScmScriptLanguageNotFound extends ScmScriptException * * @param message */ - public ScmScriptLanguageNotFound(String message) + public ScmScriptLanguageNotFoundException(String message) { super(message); }