Subject: [PATCH 17/31] gnu: Add java-xom.

From: Julien Lepiller <[email-masked]>
Date: Sun, 19 Nov 2017 18:57:51 +0100

* gnu/packages/java.scm (java-xom): New variables.
---
 gnu/packages/java.scm | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 78 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 873226aca..e575d34fd 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -8066,3 +8066,81 @@ specification.  It also handles namespaces according to the XML Namespaces 1.1
 Candidate Recommendation, and will correctly serialize XML 1.1 documents if
 the DOM level 3 load/save API's are in use.")
     (license license:asl2.0)))
+
+;; Jaxen requires java-dom4j and java-xom that in turn require jaxen :/
+(define java-jaxen-no-rec-deps
+  (package
+    (name "java-jaxen-no-rec-deps")
+    (version "1.1.6")
+    (source (origin
+              (method url-fetch)
+              ;; No release on github
+              (uri (string-append "https://repo1.maven.org/maven2/jaxen/jaxen/"
+                                  version "/jaxen-" version "-sources.jar"))
+              (sha256
+               (base32
+                "18pa8mks3gfhazmkyil8wsp6j1g1x7rggqxfv4k2mnixkrj5x1kx"))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "jaxen.jar"
+       #:source-dir "src"
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'remove-dom4j
+           (lambda _
+             (delete-file-recursively "src/org/jaxen/dom4j")
+             (delete-file-recursively "src/org/jaxen/xom")
+             #t)))))
+    (inputs
+     `(("java-jdom" ,java-jdom)))
+    (home-page "https://github.com/jaxen-xpath/jaxen")
+    (synopsis "XPath library")
+    (description "Jaxen is an XPath library written in Java.  It is adaptable
+to many different object models, including DOM, XOM, dom4j, and JDOM.  It is
+also possible to write adapters that treat non-XML trees such as compiled
+Java byte code or Java beans as XML, thus enabling you to query these trees
+with XPath too.")
+    (license license:bsd-3)))
+
+(define-public java-xom
+  (package
+    (name "java-xom")
+    (version "127")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/elharo/xom/archive/XOM_"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "04m69db1irqja12a9rfxrac8cbn9psqa1k136wh4ls4pxfsdr5wg"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  (for-each delete-file
+                            (find-files "." "\\.jar$"))
+                  #t))))
+    (build-system ant-build-system)
+    (arguments
+     `(#:jar-name "xom.jar"
+       #:jdk ,icedtea-8
+       #:tests? #f; no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-tagsoup-dep
+           (lambda _
+             ;; FIXME: Where is tagsoup source?
+             (delete-file "src/nu/xom/tools/XHTMLJavaDoc.java")
+             #t)))))
+    (inputs
+     `(("java-jdom" ,java-jdom)
+       ("java-junit" ,java-junit)
+       ("java-classpathx-servletapi" ,java-classpathx-servletapi)
+       ("java-jaxen-no-rec-deps" ,java-jaxen-no-rec-deps)
+       ("java-xerces" ,java-xerces)))
+    (home-page "https://xom.nu/")
+    (synopsis "XML Object Model")
+    (description "XOM is a new XML Object Model for processing XML with Java 
+that strives for correctness and simplicity.")
+    ;; 2.1 only
+    (license license:lgpl2.1)))
-- 
2.15.0