diff --git a/pom.xml b/pom.xml index 34c375548..631c6e8b6 100644 --- a/pom.xml +++ b/pom.xml @@ -86,7 +86,7 @@ UTF-8 yyyy-MM-dd'T'HH:mm:ssZ - 9.0.0.8 + 10.0 diff --git a/teamengine-core/pom.xml b/teamengine-core/pom.xml index c76bcfb1d..5c864d9b6 100644 --- a/teamengine-core/pom.xml +++ b/teamengine-core/pom.xml @@ -22,8 +22,8 @@ ${project.version} - org.opengis.cite.saxon - saxon9 + net.sf.saxon + Saxon-HE ${saxon.version} diff --git a/teamengine-core/src/main/java/com/occamlab/te/Engine.java b/teamengine-core/src/main/java/com/occamlab/te/Engine.java index fb8d51514..c72af7c24 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/Engine.java +++ b/teamengine-core/src/main/java/com/occamlab/te/Engine.java @@ -32,6 +32,8 @@ C. Heazel (WiSC): Applied mods to address Fortify issues import net.sf.saxon.Configuration; import net.sf.saxon.functions.FunctionLibraryList; +import net.sf.saxon.lib.Feature; +import net.sf.saxon.lib.TraceListener; import net.sf.saxon.s9api.DocumentBuilder; import net.sf.saxon.s9api.Processor; import net.sf.saxon.s9api.SaxonApiException; @@ -91,12 +93,12 @@ public Engine() throws Exception { // Modify its configuration settings Configuration config = processor.getUnderlyingConfiguration(); - config.setVersionWarning(false); + config.setConfigurationProperty(Feature.VERSION_WARNING, Boolean.FALSE); // Use our custom error listener which reports line numbers in the CTL // source file errorListener = new TeErrorListener(); - config.setErrorListener(errorListener); + config.setTraceListener((TraceListener) errorListener); // Create a compiler and document builder compiler = processor.newXsltCompiler(); @@ -121,7 +123,9 @@ public void addFunctionLibrary(Collection indexes) { } liblist.addFunctionLibrary(config.getExtensionBinder("java")); config.setExtensionBinder("java", liblist); - +// JavaExtensionLibrary javaExtensionLibrary = new JavaExtensionLibrary(config); +// liblist.addFunctionLibrary(javaExtensionLibrary.copy()); +// config.addExtensionBinders(liblist); } /** diff --git a/teamengine-core/src/main/java/com/occamlab/te/Generator.java b/teamengine-core/src/main/java/com/occamlab/te/Generator.java index f6b383b24..def5a84b4 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/Generator.java +++ b/teamengine-core/src/main/java/com/occamlab/te/Generator.java @@ -28,7 +28,7 @@ C. Heazel (WiSC): Added Fortify adjudication changes import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; -import net.sf.saxon.FeatureKeys; +import net.sf.saxon.lib.Feature; import net.sf.saxon.s9api.Processor; import net.sf.saxon.s9api.QName; import net.sf.saxon.s9api.Serializer; @@ -88,7 +88,7 @@ public static Index generateXsl(SetupOptions opts) throws Exception { // Create a transformer to generate executable scripts from CTL sources Processor processor = new Processor(false); - processor.setConfigurationProperty(FeatureKeys.LINE_NUMBERING, + processor.setConfigurationProperty(Feature.LINE_NUMBERING, Boolean.TRUE); XsltCompiler generatorCompiler = processor.newXsltCompiler(); XsltExecutable generatorXsltExecutable = generatorCompiler.compile( @@ -203,7 +203,7 @@ public static Index generateXsl(SetupOptions opts) throws Exception { // and is saved to disk. The generator also creates XSL // template files in the working dir. generatorTransformer.setSource(ctlSource); - Serializer generatorSerializer = new Serializer(); + Serializer generatorSerializer = processor.newSerializer(); generatorSerializer.setOutputFile(indexFile); generatorTransformer.setDestination(generatorSerializer); XdmAtomicValue av = new XdmAtomicValue( diff --git a/teamengine-core/src/main/java/com/occamlab/te/TECore.java b/teamengine-core/src/main/java/com/occamlab/te/TECore.java index 8a407e27b..2071da898 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/TECore.java +++ b/teamengine-core/src/main/java/com/occamlab/te/TECore.java @@ -64,12 +64,13 @@ import com.occamlab.te.form.ImageHandler; import com.occamlab.te.html.EarlToHtmlTransformation; +import net.sf.saxon.PreparedStylesheet; import net.sf.saxon.dom.NodeOverNodeInfo; import net.sf.saxon.expr.XPathContext; import net.sf.saxon.expr.XPathContextMajor; -import net.sf.saxon.instruct.Executable; import net.sf.saxon.om.NodeInfo; import net.sf.saxon.s9api.Axis; +import net.sf.saxon.s9api.Processor; import net.sf.saxon.s9api.QName; import net.sf.saxon.s9api.S9APIUtils; import net.sf.saxon.s9api.SaxonApiException; @@ -266,8 +267,7 @@ XPathContext getXPathContext(TestEntry test, String sourcesName, XPathContext context = null; if (test.usesContext()) { XsltExecutable xe = engine.loadExecutable(test, sourcesName); - Executable ex = xe.getUnderlyingCompiledStylesheet() - .getExecutable(); + PreparedStylesheet ex = xe.getUnderlyingCompiledStylesheet(); context = new XPathContextMajor(contextNode.getUnderlyingNode(), ex); } return context; @@ -2366,7 +2366,8 @@ public Node form(Document ctlForm, String id) throws Exception { formTransformer.setParameter(new QName("action"), new XdmAtomicValue( getTestServletURL())); StringWriter sw = new StringWriter(); - Serializer serializer = new Serializer(); + Processor processor = new Processor(false); + Serializer serializer = processor.newSerializer(); serializer.setOutputWriter(sw); serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes"); diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/GetTypeFunctionCall.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/GetTypeFunctionCall.java index 774f4b3e6..bc310a9c3 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/GetTypeFunctionCall.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/GetTypeFunctionCall.java @@ -4,19 +4,21 @@ import javax.xml.namespace.QName; +import net.sf.saxon.Configuration; import net.sf.saxon.expr.Expression; -import net.sf.saxon.expr.ExpressionTool; import net.sf.saxon.expr.StaticContext; import net.sf.saxon.expr.XPathContext; +import net.sf.saxon.expr.parser.ExpressionTool; +import net.sf.saxon.om.Item; +import net.sf.saxon.om.Sequence; import net.sf.saxon.om.SequenceIterator; +import net.sf.saxon.om.SequenceTool; import net.sf.saxon.om.StructuredQName; -import net.sf.saxon.om.ValueRepresentation; import net.sf.saxon.trans.XPathException; import net.sf.saxon.type.ItemType; import net.sf.saxon.type.SchemaType; import net.sf.saxon.type.TypeHierarchy; import net.sf.saxon.value.SequenceType; -import net.sf.saxon.value.Value; public class GetTypeFunctionCall extends TEFunctionCall { List params = null; @@ -37,10 +39,8 @@ public static String getTypeName(ItemType it) throws XPathException { public SequenceIterator iterate(XPathContext context) throws XPathException { Expression[] argExpressions = getArguments(); - ValueRepresentation vr = ExpressionTool.lazyEvaluate(argExpressions[0], - context, 1); - ItemType it = Value.asValue(vr).getItemType( - context.getConfiguration().getTypeHierarchy()); + Sequence sequence = ExpressionTool.lazyEvaluate(argExpressions[0], context, false); + ItemType it = SequenceTool.getItemType(sequence, context.getConfiguration().getTypeHierarchy()); String type = getTypeName(it); Value v = Value.convertJavaObjectToXPath(type, SequenceType.SINGLE_STRING, context); diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/ObjValue.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/ObjValue.java index f6f6ef0cd..c519a1d68 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/ObjValue.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/ObjValue.java @@ -1,10 +1,11 @@ package com.occamlab.te.saxon; +import net.sf.saxon.s9api.XdmItem; import net.sf.saxon.s9api.XdmValue; import net.sf.saxon.value.ObjectValue; public class ObjValue extends XdmValue { public ObjValue(Object o) { - super(new ObjectValue(o)); + super((Iterable) new ObjectValue(o)); } } diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionCall.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionCall.java index 17f534bca..3387d1ebc 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionCall.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionCall.java @@ -1,21 +1,26 @@ package com.occamlab.te.saxon; import net.sf.saxon.expr.Expression; -import net.sf.saxon.expr.ExpressionVisitor; import net.sf.saxon.expr.FunctionCall; import net.sf.saxon.expr.StaticContext; import net.sf.saxon.expr.StaticProperty; +import net.sf.saxon.expr.XPathContext; +import net.sf.saxon.expr.parser.ExpressionVisitor; +import net.sf.saxon.expr.parser.RebindingMap; +import net.sf.saxon.om.Function; import net.sf.saxon.om.StructuredQName; import net.sf.saxon.trans.XPathException; import net.sf.saxon.type.AnyItemType; import net.sf.saxon.type.ItemType; -import net.sf.saxon.type.TypeHierarchy; public class TEFunctionCall extends FunctionCall { + + private StructuredQName functionName; + public TEFunctionCall(StructuredQName functionName, Expression[] staticArgs, StaticContext env) { super(); - this.setFunctionName(functionName); + setFunctionName(functionName); this.setArguments(staticArgs); } @@ -35,12 +40,24 @@ protected void checkArguments(ExpressionVisitor visitor) protected int computeCardinality() { return StaticProperty.ALLOWS_ZERO_OR_MORE; } - - public Expression copy() { + + public Expression copy(RebindingMap rebindings) { throw new UnsupportedOperationException(); } - - public ItemType getItemType(TypeHierarchy th) { + + public ItemType getItemType() { return AnyItemType.getInstance(); } + + public void setFunctionName(StructuredQName fName) { + this.functionName = fName; + } + + public StructuredQName getFunctionName() { + return functionName; + } + + public Function getTargetFunction(XPathContext context) throws XPathException { + return null; + } } diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionLibrary.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionLibrary.java index ef6eea851..f16cf6f9f 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionLibrary.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEFunctionLibrary.java @@ -6,7 +6,9 @@ import net.sf.saxon.expr.Expression; import net.sf.saxon.expr.StaticContext; import net.sf.saxon.functions.FunctionLibrary; +import net.sf.saxon.om.Function; import net.sf.saxon.om.StructuredQName; +import net.sf.saxon.trans.SymbolicName.F; import net.sf.saxon.trans.XPathException; import com.occamlab.te.Test; @@ -24,8 +26,8 @@ public TEFunctionLibrary(Configuration config, Index index) { public Expression bind(StructuredQName functionName, Expression[] staticArgs, StaticContext env) throws XPathException { - if (functionName.getNamespaceURI().equals(Test.TE_NS) - && functionName.getLocalName().equals("get-type")) { + if (functionName.getURI().equals(Test.TE_NS) + && functionName.getLocalPart().equals("get-type")) { return new GetTypeFunctionCall(functionName, staticArgs, env); } @@ -74,4 +76,17 @@ public boolean isAvailable(StructuredQName functionName, int arity) { return false; } + public boolean isAvailable(F functionName) { + return false; + } + + public Expression bind(F functionName, Expression[] staticArgs, + StaticContext env, List reasons) { + return null; + } + + public Function getFunctionItem(F functionName, StaticContext staticContext) + throws XPathException { + return null; + } } diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEJavaFunctionCall.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEJavaFunctionCall.java index e3d423afe..7b749a14a 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEJavaFunctionCall.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEJavaFunctionCall.java @@ -3,19 +3,20 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import net.sf.saxon.Configuration; import net.sf.saxon.Controller; import net.sf.saxon.expr.Expression; -import net.sf.saxon.expr.ExpressionTool; import net.sf.saxon.expr.StaticContext; import net.sf.saxon.expr.XPathContext; -import net.sf.saxon.om.EmptyIterator; +import net.sf.saxon.expr.parser.ExpressionTool; +import net.sf.saxon.om.Item; +import net.sf.saxon.om.Sequence; import net.sf.saxon.om.SequenceIterator; import net.sf.saxon.om.StructuredQName; -import net.sf.saxon.om.ValueRepresentation; import net.sf.saxon.trans.XPathException; +import net.sf.saxon.tree.iter.EmptyIterator; import net.sf.saxon.value.ObjectValue; import net.sf.saxon.value.SequenceType; -import net.sf.saxon.value.Value; import com.occamlab.te.TEClassLoader; import com.occamlab.te.TECore; @@ -35,8 +36,7 @@ public TEJavaFunctionCall(FunctionEntry fe, StructuredQName functionName, public SequenceIterator iterate(XPathContext context) throws XPathException { Controller controller = context.getController(); - ObjectValue ov = (ObjectValue) controller.getParameter("{" + Test.TE_NS - + "}core"); + ObjectValue ov = (ObjectValue) controller.getParameter(new StructuredQName("", Test.TE_NS, "core")); TECore core = (TECore) ov.getObject(); TEClassLoader cl = core.getEngine().getClassLoader( core.getOpts().getSourcesName()); @@ -75,7 +75,7 @@ public SequenceIterator iterate(XPathContext context) throws XPathException { if (fe.usesContext()) { m = methods[argExpressions.length + 1]; types = m.getParameterTypes(); - ValueRepresentation vr = context.getContextItem(); + Item item = context.getContextItem(); javaArgs[0] = Value.asValue(vr).convertToJava(types[0], context); argsIndex = 1; } else { @@ -84,8 +84,8 @@ public SequenceIterator iterate(XPathContext context) throws XPathException { argsIndex = 0; } for (int i = 0; i < argExpressions.length; i++) { - ValueRepresentation vr = ExpressionTool.lazyEvaluate( - argExpressions[i], context, 1); + Sequence sequence = ExpressionTool.lazyEvaluate( + argExpressions[i], context, false); javaArgs[argsIndex] = Value.asValue(vr).convertToJava( types[argsIndex], context); argsIndex++; diff --git a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEXSLFunctionCall.java b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEXSLFunctionCall.java index ae72a8453..6999b19e0 100644 --- a/teamengine-core/src/main/java/com/occamlab/te/saxon/TEXSLFunctionCall.java +++ b/teamengine-core/src/main/java/com/occamlab/te/saxon/TEXSLFunctionCall.java @@ -11,20 +11,21 @@ import net.sf.saxon.Controller; import net.sf.saxon.expr.Expression; -import net.sf.saxon.expr.ExpressionTool; import net.sf.saxon.expr.StaticContext; import net.sf.saxon.expr.XPathContext; -import net.sf.saxon.om.Axis; -import net.sf.saxon.om.EmptyIterator; +import net.sf.saxon.expr.parser.ExpressionTool; +import net.sf.saxon.om.AxisInfo; +import net.sf.saxon.om.GroundedValue; import net.sf.saxon.om.NodeInfo; +import net.sf.saxon.om.Sequence; import net.sf.saxon.om.SequenceIterator; +import net.sf.saxon.om.SequenceTool; import net.sf.saxon.om.StructuredQName; -import net.sf.saxon.om.ValueRepresentation; import net.sf.saxon.trans.XPathException; +import net.sf.saxon.tree.iter.EmptyIterator; import net.sf.saxon.type.ItemType; import net.sf.saxon.type.SchemaType; import net.sf.saxon.value.ObjectValue; -import net.sf.saxon.value.Value; import org.w3c.dom.Attr; import org.w3c.dom.Node; @@ -45,9 +46,8 @@ public TEXSLFunctionCall(FunctionEntry fe, StructuredQName functionName, public static String getType(Expression expr, XPathContext context) throws XPathException { - ValueRepresentation vr = ExpressionTool.lazyEvaluate(expr, context, 1); - ItemType it = Value.asValue(vr).getItemType( - context.getConfiguration().getTypeHierarchy()); + Sequence sequence = ExpressionTool.lazyEvaluate(expr, context, false); + ItemType it = SequenceTool.getItemType(sequence, context.getConfiguration().getTypeHierarchy()); if (it instanceof SchemaType) { return "xs:" + ((SchemaType) it).getName(); } @@ -56,8 +56,7 @@ public static String getType(Expression expr, XPathContext context) public SequenceIterator iterate(XPathContext context) throws XPathException { Controller controller = context.getController(); - ObjectValue ov = (ObjectValue) controller.getParameter("{" + Test.TE_NS - + "}core"); + ObjectValue ov = (ObjectValue) controller.getParameter(new StructuredQName("", Test.TE_NS, "core")); TECore core = (TECore) ov.getObject(); Expression[] argExpressions = getArguments(); @@ -69,7 +68,7 @@ public SequenceIterator iterate(XPathContext context) throws XPathException { xml += " local-name=\"" + param.getLocalPart() + "\""; xml += " namespace-uri=\"" + param.getNamespaceURI() + "\""; xml += " prefix=\"" + param.getPrefix() + "\""; - ValueRepresentation vr = ExpressionTool.eagerEvaluate( + GroundedValue groundValue = ExpressionTool.eagerEvaluate( argExpressions[i], context); Value v = Value.asValue(vr); try { @@ -122,7 +121,7 @@ public SequenceIterator iterate(XPathContext context) throws XPathException { if (result == null) { return EmptyIterator.getInstance(); } else { - return result.iterateAxis(Axis.CHILD); + return result.iterateAxis(AxisInfo.CHILD); } } } diff --git a/teamengine-core/src/main/java/net/sf/saxon/s9api/S9APIUtils.java b/teamengine-core/src/main/java/net/sf/saxon/s9api/S9APIUtils.java index cb58b1c3a..afba3b24c 100644 --- a/teamengine-core/src/main/java/net/sf/saxon/s9api/S9APIUtils.java +++ b/teamengine-core/src/main/java/net/sf/saxon/s9api/S9APIUtils.java @@ -28,6 +28,6 @@ public static void setTransformerParam(XsltTransformer xt, String param, public static void setTransformerParam(XsltTransformer xt, QName param, String value) throws SaxonApiException { xt.setParameter(param, - XdmItem.newAtomicValue(value, ItemType.ANY_ATOMIC_VALUE)); + new XdmAtomicValue(value, ItemType.ANY_ATOMIC_VALUE)); } } diff --git a/teamengine-web/src/main/webapp/viewSessionLog.jsp b/teamengine-web/src/main/webapp/viewSessionLog.jsp index 5745f9586..eb9febd82 100644 --- a/teamengine-web/src/main/webapp/viewSessionLog.jsp +++ b/teamengine-web/src/main/webapp/viewSessionLog.jsp @@ -181,10 +181,9 @@ File earlHtml = null; if(!resDir.exists()){ resDir = new File(userLog.toString() + System.getProperty("file.separator") + sessionId ); } -if(resDir.exists()){ +earlHtml = new File(resultdir + System.getProperty("file.separator") + "result" + System.getProperty("file.separator") + "index.html"); +if(resDir.exists() && !earlHtml.exists()){ core.earlHtmlReport(resultdir.toString()); -earlHtml = new File(resultdir + System.getProperty("file.separator") + "result" + System.getProperty("file.separator") + "index.html"); - } /* if ( htmlReportDir.isDirectory()) { */ %>