aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/jenkins
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/jenkins')
-rwxr-xr-xsrc/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java22
-rwxr-xr-xsrc/main/java/io/trygvis/esper/testing/jenkins/JenkinsDao.java1
-rwxr-xr-x[-rw-r--r--]src/main/java/io/trygvis/esper/testing/jenkins/JenkinsJobDto.java4
-rwxr-xr-xsrc/main/java/io/trygvis/esper/testing/jenkins/JenkinsServerDto.java2
-rwxr-xr-xsrc/main/java/io/trygvis/esper/testing/jenkins/xml/JenkinsJobXml.java44
5 files changed, 48 insertions, 25 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 24ea6d9..d93651d 100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsClient.java
@@ -3,7 +3,6 @@ package io.trygvis.esper.testing.jenkins;
import fj.*;
import fj.data.*;
import io.trygvis.esper.testing.jenkins.xml.*;
-import io.trygvis.esper.testing.jenkins.xml.JenkinsJobXml.*;
import io.trygvis.esper.testing.util.*;
import org.apache.abdera.*;
import org.apache.abdera.model.*;
@@ -111,23 +110,14 @@ public class JenkinsClient {
Element root = d.some()._1().getRootElement();
- String name = root.getName();
+ Option<JenkinsJobXml> xml = JenkinsJobXml.parse(root);
- switch (name) {
- case "freeStyleProject":
- return some(p(JenkinsJobXml.parse(url, JenkinsJobType.FREE_STYLE, root), d.some()._2()));
- case "mavenModuleSet":
- return some(p(JenkinsJobXml.parse(url, JenkinsJobType.MAVEN_MODULE_SET, root), d.some()._2()));
- case "mavenModule":
- return some(p(JenkinsJobXml.parse(url, JenkinsJobType.MAVEN_MODULE, root), d.some()._2()));
- case "matrixProject":
- return some(p(JenkinsJobXml.parse(url, JenkinsJobType.MATRIX, root), d.some()._2()));
- case "matrixConfiguration":
- return some(p(JenkinsJobXml.parse(url, JenkinsJobType.MATRIX_CONFIGURATION, root), d.some()._2()));
- default:
- logger.warn("Unknown project type: " + name);
- return Option.none();
+ if(xml.isNone()) {
+ logger.warn("Unable to parse xml");
+ return none();
}
+
+ return some(p(xml.some(), d.some()._2()));
}
public Option<P2<JenkinsBuildXml, byte[]>> fetchBuild(URI url) {
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsDao.java b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsDao.java
index aec9ab3..ee793fa 100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsDao.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsDao.java
@@ -48,6 +48,7 @@ public class JenkinsDao {
UUID.fromString(rs.getString(i++)),
new DateTime(rs.getTimestamp(i++).getTime()),
UUID.fromString(rs.getString(i++)),
+ UUID.fromString(rs.getString(i++)),
URI.create(rs.getString(i++)),
fromNull(rs.getString(i)));
}
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsJobDto.java b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsJobDto.java
index 2fb5b99..e540a2a 100644..100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsJobDto.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsJobDto.java
@@ -9,12 +9,14 @@ import java.util.*;
public class JenkinsJobDto extends AbstractEntity {
public final UUID server;
+ public final UUID file;
public final URI url;
public final Option<String> displayName;
- JenkinsJobDto(UUID uuid, DateTime createdDate, UUID server, URI url, Option<String> displayName) {
+ public JenkinsJobDto(UUID uuid, DateTime createdDate, UUID server, UUID file, URI url, Option<String> displayName) {
super(uuid, createdDate);
this.server = server;
+ this.file = file;
this.url = url;
this.displayName = displayName;
}
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServerDto.java b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServerDto.java
index c603506..8195f01 100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServerDto.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/JenkinsServerDto.java
@@ -17,6 +17,6 @@ public class JenkinsServerDto extends AbstractEntity {
}
public URI userUrl(String id) {
- return URI.create(url.toASCIIString() + "/users/" + id);
+ return URI.create(url.toASCIIString() + "/user/" + id);
}
}
diff --git a/src/main/java/io/trygvis/esper/testing/jenkins/xml/JenkinsJobXml.java b/src/main/java/io/trygvis/esper/testing/jenkins/xml/JenkinsJobXml.java
index eb4c874..8cbeb9d 100755
--- a/src/main/java/io/trygvis/esper/testing/jenkins/xml/JenkinsJobXml.java
+++ b/src/main/java/io/trygvis/esper/testing/jenkins/xml/JenkinsJobXml.java
@@ -2,19 +2,36 @@ package io.trygvis.esper.testing.jenkins.xml;
import java.net.URI;
-import org.jdom2.Element;
+import org.jdom2.*;
import fj.F;
import fj.data.Option;
import io.trygvis.esper.testing.Util;
-import static fj.data.Option.some;
+import static fj.data.Option.*;
import static io.trygvis.esper.testing.Util.child;
import static io.trygvis.esper.testing.Util.childText;
public class JenkinsJobXml {
public enum JenkinsJobType {
- FREE_STYLE, MAVEN_MODULE_SET, MAVEN_MODULE, MATRIX, MATRIX_CONFIGURATION
+ FREE_STYLE, MAVEN_MODULE_SET, MAVEN_MODULE, MATRIX, MATRIX_CONFIGURATION;
+
+ public static Option<JenkinsJobType> fromElement(String name) {
+ switch (name) {
+ case "freeStyleProject":
+ return some(FREE_STYLE);
+ case "mavenModuleSet":
+ return some(MAVEN_MODULE_SET);
+ case "mavenModule":
+ return some(MAVEN_MODULE);
+ case "matrixProject":
+ return some(MATRIX);
+ case "matrixConfiguration":
+ return some(MATRIX_CONFIGURATION);
+ default:
+ return none();
+ }
+ }
}
public final JenkinsJobType type;
@@ -71,18 +88,31 @@ public class JenkinsJobXml {
}
}
- public static JenkinsJobXml parse(URI url, JenkinsJobType type, Element root) {
- return new JenkinsJobXml(type,
+ public static final F<Document, Option<JenkinsJobXml>> parse = new F<Document, Option<JenkinsJobXml>>() {
+ public Option<JenkinsJobXml> f(Document document) {
+ return parse(document.getRootElement());
+ }
+ };
+
+ public static Option<JenkinsJobXml> parse(Element root) {
+ Option<URI> uri = childText(root, "url").bind(Util.parseUri);
+ Option<JenkinsJobType> typeO = JenkinsJobType.fromElement(root.getName());
+
+ if (uri.isNone() || typeO.isNone()) {
+ return none();
+ }
+
+ return some(new JenkinsJobXml(typeO.some(),
childText(root, "description"),
childText(root, "displayName"),
childText(root, "name"),
- childText(root, "url").bind(Util.parseUri).orSome(url),
+ uri.some(),
childText(root, "color"),
childText(root, "buildable").bind(Util.parseBoolean).orSome(false),
child(root, "lastBuild").bind(BuildXml.buildXml),
child(root, "lastCompletedBuild").bind(BuildXml.buildXml),
child(root, "lastFailedBuild").bind(BuildXml.buildXml),
child(root, "lastSuccessfulBuild").bind(BuildXml.buildXml),
- child(root, "lastUnsuccessfulBuild").bind(BuildXml.buildXml));
+ child(root, "lastUnsuccessfulBuild").bind(BuildXml.buildXml)));
}
}