/****************************************************************************/ /* File: RunCalabash.java */ /* Author: F. Georges */ /* Company: H2O Consulting */ /* Date: 2009-10-19 */ /* Tags: */ /* Copyright (c) 2009-2013 Florent Georges (see end of file.) */ /* ------------------------------------------------------------------------ */ package functional.run; import com.xmlcalabash.core.XProcConfiguration; import com.xmlcalabash.core.XProcException; import com.xmlcalabash.core.XProcRuntime; import com.xmlcalabash.io.ReadablePipe; import com.xmlcalabash.io.WritableDocument; import com.xmlcalabash.model.Serialization; import com.xmlcalabash.runtime.XPipeline; import com.xmlcalabash.config.XProcConfigurer; import com.xmlcalabash.util.Input; import java.io.File; import net.sf.saxon.s9api.SaxonApiException; import org.expath.pkg.calabash.PkgConfigurer; import org.expath.pkg.repo.FileSystemStorage; import org.expath.pkg.repo.PackageException; import org.expath.pkg.repo.Repository; import org.expath.pkg.repo.Storage; import org.junit.Ignore; import org.junit.Test; /** * TODO: ... * * @author Florent Georges */ public class RunCalabash { // DEBUG: To be able to use the debugger... // public static void main(String[] args) // throws SaxonApiException // , PackageException // { // RunCalabash run = new RunCalabash(); // run.run_xquery_data(); // } @Test public void run_pipe() throws SaxonApiException, PackageException { runConfiguredPipeline("pipe.xpl"); } // Must fail if not configured (runPlainPipeline() does not set the EXPath // Pkg Configurer object on the XProcRuntime.) @Test(expected=XProcException.class) public void run_rnc_error() throws SaxonApiException { runPlainPipeline("rnc-data.xpl"); } @Test @Ignore("Packaging not supported for p:load with Calabash 0.9.34") public void run_load() throws SaxonApiException, PackageException { runConfiguredPipeline("load.xpl"); } @Test public void run_rnc_data() throws SaxonApiException, PackageException { runConfiguredPipeline("rnc-data.xpl"); } @Test public void run_rnc_external() throws SaxonApiException, PackageException { runConfiguredPipeline("rnc-external.xpl"); } @Test public void run_rnc_include() throws SaxonApiException, PackageException { runConfiguredPipeline("rnc-include.xpl"); } @Test public void run_rnc_replace() throws SaxonApiException, PackageException { runConfiguredPipeline("rnc-replace.xpl"); } @Test public void run_rng_doc() throws SaxonApiException, PackageException { runConfiguredPipeline("rng-doc.xpl"); } @Test public void run_rng_external() throws SaxonApiException, PackageException { runConfiguredPipeline("rng-external.xpl"); } @Test public void run_rng_include() throws SaxonApiException, PackageException { runConfiguredPipeline("rng-include.xpl"); } @Test public void run_rng_replace() throws SaxonApiException, PackageException { runConfiguredPipeline("rng-replace.xpl"); } @Test public void run_schematron_doc() throws SaxonApiException, PackageException { runConfiguredPipeline("schematron-doc.xpl"); } @Test public void run_schematron_include() throws SaxonApiException, PackageException { runConfiguredPipeline("schematron-include.xpl"); } @Test public void run_xquery_simple() throws SaxonApiException, PackageException { runConfiguredPipeline("xquery-simple.xpl"); } @Test public void run_xquery_data() throws SaxonApiException, PackageException { runConfiguredPipeline("xquery-data.xpl"); } @Test public void run_xquery_import() throws SaxonApiException, PackageException { runConfiguredPipeline("xquery-import.xpl"); } @Test public void run_xquery_java() throws SaxonApiException, PackageException { runConfiguredPipeline("xquery-java.xpl"); } @Test public void run_xsd_doc() throws SaxonApiException, PackageException { runConfiguredPipeline("xsd-doc.xpl"); } @Test public void run_xsd_import() throws SaxonApiException, PackageException { runConfiguredPipeline("xsd-import.xpl"); } @Test public void run_xsd_include() throws SaxonApiException, PackageException { runConfiguredPipeline("xsd-include.xpl"); } @Test public void run_xsd_redefine() throws SaxonApiException, PackageException { runConfiguredPipeline("xsd-redefine.xpl"); } @Test public void run_xslt_doc() throws SaxonApiException, PackageException { runConfiguredPipeline("xslt-doc.xpl"); } @Test public void run_xslt_import() throws SaxonApiException, PackageException { runConfiguredPipeline("xslt-import.xpl"); } @Test public void run_xslt_include() throws SaxonApiException, PackageException { runConfiguredPipeline("xslt-include.xpl"); } @Test public void run_xslt_java() throws SaxonApiException, PackageException { runConfiguredPipeline("xslt-java.xpl"); } private void runPlainPipeline(String name) throws SaxonApiException { XProcRuntime runtime = makePlainRuntime(); runPipeline(name, runtime); } private void runConfiguredPipeline(String name) throws SaxonApiException , PackageException { XProcRuntime runtime = makeConfiguredRuntime(); runPipeline(name, runtime); } private void runPipeline(String name, XProcRuntime runtime) throws SaxonApiException { String path = PIPE_DIR + name; System.err.println(" ------------ "); System.err.println("I AM GONNA RUN: '" + name + "'"); System.err.println(" with uri: '" + path + "'"); Input in = new Input(path); XPipeline pipe = runtime.load(in); pipe.run(); copyPortToStdout(pipe, "result", runtime); } private XProcRuntime makePlainRuntime() { XProcConfiguration conf = new XProcConfiguration(); return new XProcRuntime(conf); } private XProcRuntime makeConfiguredRuntime() throws PackageException { XProcRuntime runtime = makePlainRuntime(); XProcConfigurer configurer = makeConfigurer(runtime); runtime.setConfigurer(configurer); return runtime; } private XProcConfigurer makeConfigurer(XProcRuntime runtime) throws PackageException { File dir = new File(REPO); Storage storage = new FileSystemStorage(dir); Repository repo = new Repository(storage); return new PkgConfigurer(runtime, repo); } private void copyPortToStdout(XPipeline pipe, String port, XProcRuntime runtime) throws SaxonApiException { Serialization serial = pipe.getSerialization(port); WritableDocument wdoc = new WritableDocument(runtime, null, serial); ReadablePipe rpipe = pipe.readFrom(port); while ( rpipe.moreDocuments() ) { wdoc.write(rpipe.read()); } } private static final String PIPE_DIR = "test/functional/run/"; private static final String REPO = "test/functional/run/repo/"; } /* ------------------------------------------------------------------------ */ /* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS COMMENT. */ /* */ /* The contents of this file are subject to the Mozilla Public License */ /* Version 1.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.mozilla.org/MPL/. */ /* */ /* Software distributed under the License is distributed on an "AS IS" */ /* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */ /* the License for the specific language governing rights and limitations */ /* under the License. */ /* */ /* The Original Code is: all this file. */ /* */ /* The Initial Developer of the Original Code is Florent Georges. */ /* */ /* Contributor(s): none. */ /* ------------------------------------------------------------------------ */