Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ssZ</maven.build.timestamp.format>
<saxon.version>9.0.0.8</saxon.version>
<saxon.version>10.0</saxon.version>
</properties>

<modules>
Expand Down
4 changes: 2 additions & 2 deletions teamengine-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.opengis.cite.saxon</groupId>
<artifactId>saxon9</artifactId>
<groupId>net.sf.saxon</groupId>
<artifactId>Saxon-HE</artifactId>
<version>${saxon.version}</version>
</dependency>
<dependency>
Expand Down
10 changes: 7 additions & 3 deletions teamengine-core/src/main/java/com/occamlab/te/Engine.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand All @@ -121,7 +123,9 @@ public void addFunctionLibrary(Collection<Index> indexes) {
}
liblist.addFunctionLibrary(config.getExtensionBinder("java"));
config.setExtensionBinder("java", liblist);

// JavaExtensionLibrary javaExtensionLibrary = new JavaExtensionLibrary(config);
// liblist.addFunctionLibrary(javaExtensionLibrary.copy());
// config.addExtensionBinders(liblist);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions teamengine-core/src/main/java/com/occamlab/te/Generator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down
9 changes: 5 additions & 4 deletions teamengine-core/src/main/java/com/occamlab/te/TECore.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<QName> params = null;
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<? extends XdmItem>) new ObjectValue(o));
}
}
Original file line number Diff line number Diff line change
@@ -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);
}

Expand All @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}

Expand Down Expand Up @@ -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<String> reasons) {
return null;
}

public Function getFunctionItem(F functionName, StaticContext staticContext)
throws XPathException {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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());
Expand Down Expand Up @@ -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 {
Expand All @@ -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++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
}
Expand All @@ -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();
Expand All @@ -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 {
Expand Down Expand Up @@ -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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}
Loading