aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java')
-rwxr-xr-x[-rw-r--r--]src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java87
1 files changed, 23 insertions, 64 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
index ed4cb59..e31fcfe 100644..100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
@@ -5,38 +5,32 @@ import fj.data.*;
import io.trygvis.esper.testing.*;
import static io.trygvis.esper.testing.Util.*;
import io.trygvis.esper.testing.jenkins.JenkinsJobXml.*;
-import static java.lang.Integer.parseInt;
+import io.trygvis.esper.testing.util.*;
import static org.apache.commons.lang.StringUtils.*;
-import org.codehaus.httpcache4j.*;
import org.codehaus.httpcache4j.cache.*;
-import org.h2.util.*;
import org.jdom2.*;
-import org.jdom2.input.*;
-import javax.xml.stream.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.List;
+import javax.xml.stream.*;
public class JenkinsClient {
- private static final XMLInputFactory xmlReader = XMLInputFactory.newFactory();
- private static final StAXStreamBuilder streamBuilder = new StAXStreamBuilder();
- private final HTTPCache http;
-
- private boolean debugXml;
+ private final XmlHttpClient xmlHttpClient;
public JenkinsClient(HTTPCache http) {
- this.http = http;
- this.debugXml = false;
- }
-
- public void setDebugXml(boolean debugXml) {
- this.debugXml = debugXml;
+ this.xmlHttpClient = new XmlHttpClient(http);
}
public JenkinsXml fetchJobs(URI uri) throws XMLStreamException, JDOMException, IOException {
- Element root = fetchXml(uri).getRootElement();
+ Option<Document> d = xmlHttpClient.fetch(uri);
+
+ if(d.isNone()) {
+ return new JenkinsXml(Option.<String>none(), Option.<String>none(), Option.<String>none(), Collections.<JenkinsJobEntryXml>emptyList());
+ }
+
+ Element root = d.some().getRootElement();
List<JenkinsJobEntryXml> jobs = new ArrayList<>();
for (Element job : root.getChildren("job")) {
@@ -57,60 +51,25 @@ public class JenkinsClient {
Option.fromNull(root.getChildText("description")), jobs);
}
- public JenkinsJobXml fetchJob(URI uri) throws IOException, JDOMException, XMLStreamException {
- Element root = fetchXml(uri).getRootElement();
+ public Option<JenkinsJobXml> fetchJob(URI uri) throws IOException, JDOMException, XMLStreamException {
+ Option<Document> d = xmlHttpClient.fetch(uri);
+
+ if(d.isNone()) {
+ return Option.none();
+ }
+
+ Element root = d.some().getRootElement();
String name = root.getName();
switch (name) {
case "freeStyleProject":
- return JenkinsJobXml.parse(uri, JenkinsJobType.FREE_STYLE, root);
+ return Option.some(JenkinsJobXml.parse(uri, JenkinsJobType.FREE_STYLE, root));
case "mavenModuleSet":
- return JenkinsJobXml.parse(uri, JenkinsJobType.MAVEN, root);
+ return Option.some(JenkinsJobXml.parse(uri, JenkinsJobType.MAVEN, root));
default:
- throw new IOException("Unknown project type: " + name);
- }
- }
-
- private Document fetchXml(URI uri) throws IOException, XMLStreamException, JDOMException {
- HTTPResponse response = null;
-
- try {
- response = http.execute(new HTTPRequest(uri));
-
- if (response.getStatus().getCode() != 200) {
- throw new IOException("Did not get 200 back, got " + response.getStatus().getCode());
- }
-
- InputStream stream = response.getPayload().getInputStream();
-
- if (debugXml) {
- int size;
- try {
- size = parseInt(response.getHeaders().getFirstHeader("Content-Length").getValue());
- } catch (Throwable e) {
- size = 10 * 1024;
- }
-
- // TODO: Pretty print
-
- ByteArrayOutputStream buffer = new ByteArrayOutputStream(size);
- IOUtils.copy(stream, buffer);
- byte[] bytes = buffer.toByteArray();
- System.out.println("------------------------------------------------");
- System.out.write(bytes);
- System.out.println();
- System.out.println("------------------------------------------------");
- stream = new ByteArrayInputStream(bytes);
- }
-
- return streamBuilder.build(xmlReader.createXMLStreamReader(stream));
- } catch (HTTPException e) {
- throw new IOException(e);
- } finally {
- if (response != null) {
- response.consume();
- }
+ System.out.println("Unknown project type: " + name);
+ return Option.none();
}
}
}