diff --git a/.gitignore b/.gitignore
index 7a7b4d5..be659bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,7 @@
/http-client-java/dist/
/http-client-saxon/build/
/http-client-saxon/dist/
+target
+*~
+
+/bin
diff --git a/http-client-java/pom.xml b/http-client-java/pom.xml
new file mode 100644
index 0000000..da049ac
--- /dev/null
+++ b/http-client-java/pom.xml
@@ -0,0 +1,115 @@
+
+ 4.0.0
+ org.expath.httpclient
+ expath-httpclient-java
+ 0.0.1-SNAPSHOT
+ jar
+
+ org.sonatype.oss
+ oss-parent
+ 7
+
+ EXPath HTTP Client
+ EXPath HTTP Client
+ http://expath.org/
+
+ git@github.com:fgeorges/expath-http-client-java.git
+ scm:git@github.com:fgeorges/expath-http-client-java.git
+ scm:git:https://github.com/fgeorges/expath-http-client-java
+
+
+
+ fgeorges
+ Florent Georges
+ fgeorges@expath.org
+
+
+
+ UTF-8
+ UTF-8
+
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.3.1
+
+
+ org.ccil.cowan.tagsoup
+ tagsoup
+ 1.2.1
+
+
+ org.apache.james
+ apache-mime4j
+ 0.6.1
+
+
+ junit
+ junit
+ 4.10
+ test
+
+
+
+
+ src
+ test
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.0.2
+
+ 1.6
+ 1.6
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.5
+
+ UTF-8
+
+
+
+ org.codehaus.mojo
+ cobertura-maven-plugin
+ 2.5.1
+
+
+ 90
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.9
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+
diff --git a/http-client-saxon/pom.xml b/http-client-saxon/pom.xml
new file mode 100644
index 0000000..cb42a9e
--- /dev/null
+++ b/http-client-saxon/pom.xml
@@ -0,0 +1,116 @@
+
+ 4.0.0
+ org.expath.httpclient
+ expath-httpclient-saxon
+ 0.1.0-SNAPSHOT
+ jar
+
+ org.sonatype.oss
+ oss-parent
+ 7
+
+ EXPath HTTP Client
+ EXPath HTTP Client
+ http://expath.org/
+
+ git@github.com:fgeorges/expath-http-client-java.git
+ scm:git@github.com:fgeorges/expath-http-client-java.git
+ scm:git:https://github.com/fgeorges/expath-http-client-java
+
+
+
+ fgeorges
+ Florent Georges
+ fgeorges@expath.org
+
+
+
+ UTF-8
+ UTF-8
+
+
+
+ org.expath.httpclient
+ expath-httpclient-java
+ 0.0.1-SNAPSHOT
+
+
+ org.expath.packaging
+ pkg-saxon
+ 1.1-SNAPSHOT
+
+
+ net.sf.saxon
+ Saxon-HE
+ 9.5.1-2
+
+
+
+ junit
+ junit
+ 4.10
+ test
+
+
+
+
+ src
+ test
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.0.2
+
+ 1.6
+ 1.6
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.5
+
+ UTF-8
+
+
+
+ org.codehaus.mojo
+ cobertura-maven-plugin
+ 2.5.1
+
+
+ 90
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.9
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+
diff --git a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonElement.java b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonElement.java
index a918182..7fbbd3e 100644
--- a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonElement.java
+++ b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonElement.java
@@ -12,7 +12,7 @@
import java.util.Arrays;
import java.util.Iterator;
import net.sf.saxon.expr.XPathContext;
-import net.sf.saxon.om.Axis;
+import net.sf.saxon.om.AxisInfo;
import net.sf.saxon.om.NamePool;
import net.sf.saxon.om.NodeInfo;
import net.sf.saxon.om.SequenceIterator;
@@ -77,7 +77,7 @@ public String getAttribute(String local_name)
// get the attribute
NamePool pool = myNode.getNamePool();
NodeTest pred = new NameTest(Type.ATTRIBUTE, "", local_name, pool);
- AxisIterator attrs = myNode.iterateAxis(Axis.ATTRIBUTE, pred);
+ AxisIterator attrs = myNode.iterateAxis(AxisInfo.ATTRIBUTE, pred);
NodeInfo a = (NodeInfo) attrs.next();
// return its string value, or null if there is no such attribute
if ( a == null ) {
@@ -91,7 +91,7 @@ public String getAttribute(String local_name)
@Override
public Iterable attributes()
{
- AxisIterator it = myNode.iterateAxis(Axis.ATTRIBUTE);
+ AxisIterator it = myNode.iterateAxis(AxisInfo.ATTRIBUTE);
return new AttributeIterable(it);
}
@@ -101,7 +101,7 @@ public boolean hasNoNsChild()
{
NamePool pool = myNode.getNamePool();
NodeTest no_ns_pred = new NamespaceTest(pool, Type.ELEMENT, "");
- return myNode.iterateAxis(Axis.CHILD, no_ns_pred).moveNext();
+ return myNode.iterateAxis(AxisInfo.CHILD, no_ns_pred).moveNext();
}
@Override
@@ -117,7 +117,7 @@ public void noOtherNCNameAttribute(String[] names)
}
Arrays.sort(sorted);
String elem_name = myNode.getDisplayName();
- AxisIterator it = myNode.iterateAxis(Axis.ATTRIBUTE);
+ AxisIterator it = myNode.iterateAxis(AxisInfo.ATTRIBUTE);
NodeInfo attr;
while ( (attr = (NodeInfo) it.next()) != null ) {
String attr_name = attr.getDisplayName();
@@ -140,7 +140,7 @@ else if ( Arrays.binarySearch(sorted, attr.getLocalPart()) < 0 ) {
public Sequence getContent()
throws HttpClientException
{
- SequenceIterator it = myNode.iterateAxis(Axis.CHILD);
+ SequenceIterator it = myNode.iterateAxis(AxisInfo.CHILD);
return new SaxonSequence(it, myCtxt);
}
@@ -148,7 +148,7 @@ public Sequence getContent()
public Iterable children()
throws HttpClientException
{
- AxisIterator it = myNode.iterateAxis(Axis.CHILD, NodeKindTest.ELEMENT);
+ AxisIterator it = myNode.iterateAxis(AxisInfo.CHILD, NodeKindTest.ELEMENT);
return new ElemIterable(it);
}
@@ -158,7 +158,7 @@ public Iterable children(String ns)
{
NamePool pool = myNode.getNamePool();
NodeTest pred = new NamespaceTest(pool, Type.ELEMENT, ns);
- AxisIterator it = myNode.iterateAxis(Axis.CHILD, pred);
+ AxisIterator it = myNode.iterateAxis(AxisInfo.CHILD, pred);
return new ElemIterable(it);
}
diff --git a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonResult.java b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonResult.java
index ac71f21..0aa8e24 100644
--- a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonResult.java
+++ b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonResult.java
@@ -14,10 +14,12 @@
import javax.xml.transform.Source;
import net.sf.saxon.expr.XPathContext;
import net.sf.saxon.om.Item;
+import net.sf.saxon.om.Sequence;
import net.sf.saxon.om.SequenceIterator;
import net.sf.saxon.trans.XPathException;
import net.sf.saxon.tree.iter.ArrayIterator;
import net.sf.saxon.value.Base64BinaryValue;
+import net.sf.saxon.value.SequenceExtent;
import net.sf.saxon.value.StringValue;
import org.expath.httpclient.HttpClientException;
import org.expath.httpclient.HttpResponse;
@@ -85,6 +87,13 @@ public SequenceIterator newIterator()
return new ArrayIterator(array);
}
+ public Sequence asSequence()
+ throws HttpClientException
+ {
+ Item[] array = myItems.toArray(new Item[0]);
+ return new SequenceExtent- (array);
+ }
+
private List
- myItems;
private XPathContext myCtxt;
/** The namespace used for the elements. */
diff --git a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonSequence.java b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonSequence.java
index 1e70515..8c76398 100644
--- a/http-client-saxon/src/org/expath/httpclient/saxon/SaxonSequence.java
+++ b/http-client-saxon/src/org/expath/httpclient/saxon/SaxonSequence.java
@@ -55,12 +55,11 @@ public Sequence next()
Item item;
try {
item = myIt == null ? null : myIt.next();
+ return new SaxonSequence(item.iterate(), myCtxt);
}
catch ( XPathException ex ) {
throw new HttpClientException("Error getting the next item in the sequence", ex);
}
- SequenceIterator it = SingletonIterator.makeIterator(item);
- return new SaxonSequence(it, myCtxt);
}
@Override
diff --git a/http-client-saxon/src/org/expath/httpclient/saxon/SendRequestCall.java b/http-client-saxon/src/org/expath/httpclient/saxon/SendRequestCall.java
index 698c6b3..73660b8 100644
--- a/http-client-saxon/src/org/expath/httpclient/saxon/SendRequestCall.java
+++ b/http-client-saxon/src/org/expath/httpclient/saxon/SendRequestCall.java
@@ -13,7 +13,7 @@
import net.sf.saxon.lib.ExtensionFunctionCall;
import net.sf.saxon.om.Item;
import net.sf.saxon.om.NodeInfo;
-import net.sf.saxon.om.SequenceIterator;
+import net.sf.saxon.om.Sequence;
import net.sf.saxon.trans.XPathException;
import net.sf.saxon.value.StringValue;
import org.expath.saxon.HttpClient;
@@ -28,12 +28,12 @@ public class SendRequestCall
extends ExtensionFunctionCall
{
@Override
- public SequenceIterator call(SequenceIterator[] params, XPathContext ctxt)
+ public Sequence call(XPathContext ctxt, Sequence[] params)
throws XPathException
{
NodeInfo request = null;
String href = null;
- SequenceIterator bodies = null;
+ Sequence bodies = null;
switch ( params.length ) {
case 3:
bodies = params[2];
@@ -48,10 +48,10 @@ public SequenceIterator call(SequenceIterator[] params, XPathContext ctxt)
return HttpClient.sendRequest(ctxt, request, href, bodies);
}
- private NodeInfo getRequest(SequenceIterator param)
+ private NodeInfo getRequest(Sequence param)
throws XPathException
{
- Item item = param.next();
+ Item item = param.head();
if ( item == null ) {
throw new XPathException("The request param is an empty sequence");
}
@@ -61,10 +61,10 @@ private NodeInfo getRequest(SequenceIterator param)
return (NodeInfo) item;
}
- private String getHref(SequenceIterator param)
+ private String getHref(Sequence param)
throws XPathException
{
- Item item = param.next();
+ Item item = param.head();
if ( item == null ) {
return null;
}
diff --git a/http-client-saxon/src/org/expath/saxon/HttpClient.java b/http-client-saxon/src/org/expath/saxon/HttpClient.java
index 057fa52..d78151c 100644
--- a/http-client-saxon/src/org/expath/saxon/HttpClient.java
+++ b/http-client-saxon/src/org/expath/saxon/HttpClient.java
@@ -13,7 +13,7 @@
import java.net.URISyntaxException;
import net.sf.saxon.expr.XPathContext;
import net.sf.saxon.om.NodeInfo;
-import net.sf.saxon.om.SequenceIterator;
+import net.sf.saxon.om.Sequence;
import net.sf.saxon.trans.XPathException;
import org.expath.httpclient.HttpClientException;
import org.expath.httpclient.HttpConnection;
@@ -22,7 +22,6 @@
import org.expath.httpclient.impl.ApacheHttpConnection;
import org.expath.httpclient.impl.RequestParser;
import org.expath.httpclient.model.Element;
-import org.expath.httpclient.model.Sequence;
import org.expath.httpclient.saxon.SaxonElement;
import org.expath.httpclient.saxon.SaxonResult;
import org.expath.httpclient.saxon.SaxonSequence;
@@ -43,7 +42,7 @@ public class HttpClient
* http:send-request($request as element(http:request)?) as item()+
*
*/
- public static SequenceIterator sendRequest(XPathContext ctxt, NodeInfo request)
+ public static Sequence sendRequest(XPathContext ctxt, NodeInfo request)
throws XPathException
{
return sendRequest(ctxt, request, null, null);
@@ -57,9 +56,9 @@ public static SequenceIterator sendRequest(XPathContext ctxt, NodeInfo request)
* $href as xs:string?) as item()+
*
*/
- public static SequenceIterator sendRequest(XPathContext ctxt,
- NodeInfo request,
- String href)
+ public static Sequence sendRequest(XPathContext ctxt,
+ NodeInfo request,
+ String href)
throws XPathException
{
return sendRequest(ctxt, request, href, null);
@@ -74,10 +73,10 @@ public static SequenceIterator sendRequest(XPathContext ctxt,
* $bodies as item()*) as item()+
*
*/
- public static SequenceIterator sendRequest(XPathContext ctxt,
- NodeInfo request,
- String href,
- SequenceIterator bodies)
+ public static Sequence sendRequest(XPathContext ctxt,
+ NodeInfo request,
+ String href,
+ Sequence bodies)
throws XPathException
{
HttpClient client = new HttpClient();
@@ -97,14 +96,14 @@ public static SequenceIterator sendRequest(XPathContext ctxt,
// response content if the user does: http:send-request(...)[1],
// that is, if he/she does not actually access the content). See
// if we can use that...
- private SequenceIterator doSendRequest(XPathContext ctxt,
- NodeInfo request,
- String href,
- SequenceIterator bodies)
+ private Sequence doSendRequest(XPathContext ctxt,
+ NodeInfo request,
+ String href,
+ Sequence bodies)
throws HttpClientException
, XPathException
{
- Sequence b = new SaxonSequence(bodies, ctxt);
+ SaxonSequence b = new SaxonSequence(bodies.iterate(), ctxt);
Element r = new SaxonElement(request, ctxt);
RequestParser parser = new RequestParser(r);
HttpRequest req = parser.parse(b, href);
@@ -115,7 +114,7 @@ private SequenceIterator doSendRequest(XPathContext ctxt,
try {
URI uri = new URI(req.getHref());
SaxonResult result = sendOnce(uri, req, parser, ctxt);
- return result.newIterator();
+ return result.asSequence();
}
catch ( URISyntaxException ex ) {
throw new HttpClientException("Href is not valid: " + req.getHref(), ex);