From cbd002ab9a8f3da5b13a10dbf49cac9f5dbfcac54298e18e2c3e8024be681257 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 23 Aug 2023 11:11:51 +0000 Subject: [PATCH 1/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=42 --- _service | 15 + dom4j-1.6.1-bug1618750.patch | 12 - dom4j-1.6.1-debian.tar.bz2 | 3 - dom4j-1.6.1.pom | 221 -------------- dom4j-2.0.3.pom | 77 +++++ dom4j-2.0.3.tar.xz | 3 + dom4j-CVE-2018-1000632.patch | 259 ---------------- dom4j-CVE-2020-10683.patch | 484 ------------------------------ dom4j-build.xml | 113 +++++++ dom4j-enable-stax-datatypes.patch | 14 - dom4j-javadoc.patch | 19 -- dom4j-sourcetarget.patch | 37 --- dom4j.spec | 221 ++++---------- dom4j_rundemo.sh | 128 -------- 14 files changed, 265 insertions(+), 1341 deletions(-) create mode 100644 _service delete mode 100644 dom4j-1.6.1-bug1618750.patch delete mode 100644 dom4j-1.6.1-debian.tar.bz2 delete mode 100644 dom4j-1.6.1.pom create mode 100644 dom4j-2.0.3.pom create mode 100644 dom4j-2.0.3.tar.xz delete mode 100644 dom4j-CVE-2018-1000632.patch delete mode 100644 dom4j-CVE-2020-10683.patch create mode 100644 dom4j-build.xml delete mode 100644 dom4j-enable-stax-datatypes.patch delete mode 100644 dom4j-javadoc.patch delete mode 100644 dom4j-sourcetarget.patch delete mode 100644 dom4j_rundemo.sh diff --git a/_service b/_service new file mode 100644 index 0000000..273d538 --- /dev/null +++ b/_service @@ -0,0 +1,15 @@ + + + git + https://github.com/dom4j/dom4j.git + version-2.0.3 + version-* + @PARENT_TAG@ + version-(.*) + + + *.tar + xz + + + diff --git a/dom4j-1.6.1-bug1618750.patch b/dom4j-1.6.1-bug1618750.patch deleted file mode 100644 index f954337..0000000 --- a/dom4j-1.6.1-bug1618750.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- dom4j/src/java/org/dom4j/util/SimpleSingleton.java -+++ dom4j/src/java/org/dom4j/util/SimpleSingleton.java -@@ -35,8 +35,7 @@ - if (singletonClassName != null) { - Class clazz = null; - try { -- clazz = Thread.currentThread().getContextClassLoader().loadClass( -- singletonClassName); -+ clazz = Class.forName(singletonClassName); - singletonInstance = clazz.newInstance(); - } catch (Exception ignore) { - try { diff --git a/dom4j-1.6.1-debian.tar.bz2 b/dom4j-1.6.1-debian.tar.bz2 deleted file mode 100644 index 935f0ae..0000000 --- a/dom4j-1.6.1-debian.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d72427a11a23df97f8957331269df7fde4fcc982ac3b9d399a49e4df8598b94a -size 1962425 diff --git a/dom4j-1.6.1.pom b/dom4j-1.6.1.pom deleted file mode 100644 index c3b107a..0000000 --- a/dom4j-1.6.1.pom +++ /dev/null @@ -1,221 +0,0 @@ - - 4.0.0 - dom4j - dom4j - dom4j - 1.6.1 - dom4j: the flexible XML framework for Java - http://dom4j.org - - http://sourceforge.net/tracker/?group_id=16035 - - - - -
dom4j-dev@lists.sourceforge.net
-
-
-
- 2001 - - - dom4j user list - http://lists.sourceforge.net/lists/listinfo/dom4j-user - http://lists.sourceforge.net/lists/listinfo/dom4j-user - http://www.mail-archive.com/dom4j-user%40lists.sourceforge.net/ - - - dom4j developer list - http://lists.sourceforge.net/lists/listinfo/dom4j-dev - http://lists.sourceforge.net/lists/listinfo/dom4j-dev - http://www.mail-archive.com/dom4j-dev%40lists.sourceforge.net/ - - - dom4j commits list - http://lists.sourceforge.net/lists/listinfo/dom4j-commits - http://lists.sourceforge.net/lists/listinfo/dom4j-commits - - - - - carnold - Curt Arnold - carnold@users.sourceforge.net - - - ddlucas - David Lucas - ddlucas@users.sourceforge.net - - - drwhite - David White - drwhite@users.sourceforge.net - - - jjenkov - Jakob Jenkov - jjenkov@users.sourceforge.net - - - jstrachan - James Strachan - jstrachan@apache.org - SpiritSoft, Inc. - - - laramiec - Laramie Crocker - laramiec@users.sourceforge.net - - - maartenc - Maarten Coene - maartenc@users.sourceforge.net - Cronos - - - mskells - Michael Skells - mskells@users.sourceforge.net - - - nicksanderson - Nick Sanderson - nicksanderson@users.sourceforge.net - - - slehmann - Steen Lehmann - slehmann@users.sourceforge.net - - - tradem - Tobias Rademacher - tradem@users.sourceforge.net - - - werken - Bob McWhirter - werken@users.sourceforge.net - - - wolfftw - Todd Wolff - wolfftw@users.sourceforge.net - - - yeekee - OuYang Chen - yeekee@users.sourceforge.net - - - yruan2 - Yuxin Ruan - yruan2@users.sourceforge.net - - - - scm:cvs:pserver:anonymous@cvs.sourceforge.net:/cvsroot/dom4j:dom4j - scm:cvs:ext:${maven.username}@cvs.sourceforge.net:/cvsroot/dom4j:dom4j - http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/dom4j/dom4j/ - - - MetaStuff Ltd. - http://sourceforge.net/projects/dom4j - - - src/java - src/test - - - maven-surefire-plugin - - - **/*Test.java - - - - - - - - jaxme - jaxme-api - 0.3 - true - - - jaxen - jaxen - 1.1-beta-6 - true - - - msv - xsdlib - 20030807 - true - - - msv - relaxngDatatype - 20030807 - true - - - pull-parser - pull-parser - 2 - true - - - xpp3 - xpp3 - 1.1.3.3 - true - - - stax - stax-api - 1.0 - true - - - xml-apis - xml-apis - 1.0.b2 - - - junitperf - junitperf - 1.8 - test - - - stax - stax-ri - 1.0 - test - - - xerces - xercesImpl - 2.6.2 - test - - - xalan - xalan - 2.5.1 - test - - - - - default - Default Site - scp://dom4j.org//home/groups/d/do/dom4j/htdocs - - -
\ No newline at end of file diff --git a/dom4j-2.0.3.pom b/dom4j-2.0.3.pom new file mode 100644 index 0000000..d8958fb --- /dev/null +++ b/dom4j-2.0.3.pom @@ -0,0 +1,77 @@ + + + + + + + + 4.0.0 + org.dom4j + dom4j + 2.0.3 + dom4j + flexible XML framework for Java + http://dom4j.github.io/ + + + BSD 3-clause New License + https://github.com/dom4j/dom4j/blob/master/LICENSE + + + + + Filip Jirsák + filip@jirsak.org + https://github.com/FilipJirsak + + + + scm:git:git@github.com:dom4j/dom4j.git + scm:git:git@github.com:dom4j/dom4j.git + git@github.com:dom4j/dom4j.git + + + + jaxen + jaxen + 1.1.6 + runtime + true + + + javax.xml.stream + stax-api + 1.0-2 + runtime + true + + + net.java.dev.msv + xsdlib + 2013.6.1 + runtime + true + + + javax.xml.bind + jaxb-api + 2.2.12 + runtime + true + + + pull-parser + pull-parser + 2 + runtime + true + + + xpp3 + xpp3 + 1.1.4c + runtime + true + + + diff --git a/dom4j-2.0.3.tar.xz b/dom4j-2.0.3.tar.xz new file mode 100644 index 0000000..eb5beb8 --- /dev/null +++ b/dom4j-2.0.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2befe87fb264f5f04fa420414d5b35d2d3bc90937312078142021210e2633c12 +size 396540 diff --git a/dom4j-CVE-2018-1000632.patch b/dom4j-CVE-2018-1000632.patch deleted file mode 100644 index 788b519..0000000 --- a/dom4j-CVE-2018-1000632.patch +++ /dev/null @@ -1,259 +0,0 @@ -Index: dom4j/src/java/org/dom4j/Namespace.java -=================================================================== ---- dom4j.orig/src/java/org/dom4j/Namespace.java -+++ dom4j/src/java/org/dom4j/Namespace.java -@@ -51,6 +51,10 @@ public class Namespace extends AbstractN - public Namespace(String prefix, String uri) { - this.prefix = (prefix != null) ? prefix : ""; - this.uri = (uri != null) ? uri : ""; -+ -+ if (!this.prefix.isEmpty()) { -+ QName.validateNCName(this.prefix); -+ } - } - - /** -Index: dom4j/src/java/org/dom4j/QName.java -=================================================================== ---- dom4j.orig/src/java/org/dom4j/QName.java -+++ dom4j/src/java/org/dom4j/QName.java -@@ -11,6 +11,7 @@ import java.io.IOException; - import java.io.ObjectInputStream; - import java.io.ObjectOutputStream; - import java.io.Serializable; -+import java.util.regex.Pattern; - - import org.dom4j.tree.QNameCache; - import org.dom4j.util.SingletonStrategy; -@@ -20,6 +21,7 @@ import org.dom4j.util.SingletonStrategy; - * QName represents a qualified name value of an XML element or - * attribute. It consists of a local name and a {@link Namespace}instance. This - * object is immutable. -+ * @author Filip Jirsak - *

- * - * @author James Strachan -@@ -28,6 +30,81 @@ public class QName implements Serializab - /** The Singleton instance */ - private static SingletonStrategy singleton = null; - -+ /** -+ * {@code NameStartChar} without colon. -+ * -+ *
NameStartChar      ::=     ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
-+ * -+ * @see XML 1.0 - 2.3 Common Syntactic Constructs -+ * @see XML 1.1 - 2.3 Common Syntactic Constructs -+ */ -+ private static final String NAME_START_CHAR = "_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; -+ -+ /** -+ * {@code NameChar} without colon. -+ * -+ *
NameChar   ::=     NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
-+ * -+ * @see XML 1.0 - 2.3 Common Syntactic Constructs -+ * @see XML 1.1 - 2.3 Common Syntactic Constructs -+ */ -+ private static final String NAME_CHAR = NAME_START_CHAR + "-.0-9\u00B7\u0300-\u036F\u203F-\u2040"; -+ -+ /** -+ * {@code NCName} -+ * {@code NCName} -+ * -+ *
-+     * NCName          ::=     NCNameStartChar NCNameChar*     (An XML Name, minus the ":")
-+     * NCNameChar      ::=     NameChar -':'
-+     * NCNameStartChar ::=     NameStartChar -':'
-+     * 
-+ * -+ * @see Namespaces in XML 1.0 - 4 Qualified Names -+ * @see Namespaces in XML 1.1 - 4 Qualified Names -+ */ -+ private static final String NCNAME = "["+NAME_START_CHAR+"]["+NAME_CHAR+"]*"; -+ -+ /** -+ * Regular expression for {@code Name} (with colon). -+ * -+ *
Name       ::=     NameStartChar (NameChar)*
-+ * -+ * @see XML 1.0 - 2.3 Common Syntactic Constructs -+ * @see XML 1.1 - 2.3 Common Syntactic Constructs -+ */ -+ private static final Pattern RE_NAME = Pattern.compile("[:"+NAME_START_CHAR+"][:"+NAME_CHAR+"]*"); -+ -+ /** -+ * Regular expression for {@code NCName}. -+ * -+ *
-+     * NCName          ::=     NCNameStartChar NCNameChar*     (An XML Name, minus the ":")
-+     * NCNameChar      ::=     NameChar -':'
-+     * NCNameStartChar ::=     NameStartChar -':'
-+     * 
-+ * -+ * @see Namespaces in XML 1.0 - 4 Qualified Names -+ * @see Namespaces in XML 1.1 - 4 Qualified Names -+ */ -+ private static final Pattern RE_NCNAME = Pattern.compile(NCNAME); -+ -+ /** -+ * Regular expression for {@code QName}. -+ * -+ *
-+     * QName           ::=     PrefixedName | UnprefixedName
-+     * PrefixedName    ::=     Prefix ':' LocalPart
-+     * UnprefixedName  ::=     LocalPart
-+     * Prefix          ::=     NCName
-+     * LocalPart       ::=     NCName
-+     * 
-+ * -+ * @see Namespaces in XML 1.0 - 4 Qualified Names -+ * @see Namespaces in XML 1.1 - 4 Qualified Names -+ */ -+ private static final Pattern RE_QNAME = Pattern.compile("(?:"+NCNAME+":)?"+NCNAME); -+ - static { - try { - String defaultSingletonClass = "org.dom4j.util.SimpleSingleton"; -@@ -73,6 +150,11 @@ public class QName implements Serializab - this.name = (name == null) ? "" : name; - this.namespace = (namespace == null) ? Namespace.NO_NAMESPACE - : namespace; -+ if (this.namespace.equals(Namespace.NO_NAMESPACE)) { -+ validateName(this.name); -+ } else { -+ validateNCName(this.name); -+ } - } - - public QName(String name, Namespace namespace, String qualifiedName) { -@@ -80,6 +162,8 @@ public class QName implements Serializab - this.qualifiedName = qualifiedName; - this.namespace = (namespace == null) ? Namespace.NO_NAMESPACE - : namespace; -+ validateNCName(this.name); -+ validateQName(this.qualifiedName); - } - - public static QName get(String name) { -@@ -253,6 +337,24 @@ public class QName implements Serializab - QNameCache cache = (QNameCache) singleton.instance(); - return cache; - } -+ -+ private static void validateName(String name) { -+ if (!RE_NAME.matcher(name).matches()) { -+ throw new IllegalArgumentException(String.format("Illegal character in name: '%s'.", name)); -+ } -+ } -+ -+ protected static void validateNCName(String ncname) { -+ if (!RE_NCNAME.matcher(ncname).matches()) { -+ throw new IllegalArgumentException(String.format("Illegal character in local name: '%s'.", ncname)); -+ } -+ } -+ -+ private static void validateQName(String qname) { -+ if (!RE_QNAME.matcher(qname).matches()) { -+ throw new IllegalArgumentException(String.format("Illegal character in qualified name: '%s'.", qname)); -+ } -+ } - } - - -Index: dom4j/src/java/org/dom4j/tree/QNameCache.java -=================================================================== ---- dom4j.orig/src/java/org/dom4j/tree/QNameCache.java -+++ dom4j/src/java/org/dom4j/tree/QNameCache.java -@@ -164,6 +164,8 @@ public class QNameCache { - - if (index < 0) { - return get(qualifiedName, Namespace.get(uri)); -+ } else if (index == 0){ -+ throw new IllegalArgumentException("Qualified name cannot start with ':'."); - } else { - String name = qualifiedName.substring(index + 1); - String prefix = qualifiedName.substring(0, index); -Index: dom4j/src/test/org/dom4j/AllowedCharsTest.java -=================================================================== ---- /dev/null -+++ dom4j/src/test/org/dom4j/AllowedCharsTest.java -@@ -0,0 +1,78 @@ -+package org.dom4j;^M -+^M -+import org.testng.annotations.Test;^M -+^M -+/**^M -+ * @author Filip Jirsak^M -+ */^M -+public class AllowedCharsTest {^M -+ @Test^M -+ public void localName() {^M -+ QName.get("element");^M -+ QName.get(":element");^M -+ QName.get("elem:ent");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void localNameFail() {^M -+ QName.get("!element");^M -+ }^M -+^M -+ @Test^M -+ public void qname() {^M -+ QName.get("element", "http://example.com/namespace");^M -+ QName.get("ns:element", "http://example.com/namespace");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void qnameFail1() {^M -+ QName.get("ns:elem:ent", "http://example.com/namespace");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void qnameFail2() {^M -+ QName.get(":nselement", "http://example.com/namespace");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void createElementLT() {^M -+ DocumentHelper.createElement("elementname");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void createElementAmpersand() {^M -+ DocumentHelper.createElement("element&name");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void addElement() {^M -+ Element root = DocumentHelper.createElement("root");^M -+ root.addElement("element>name");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void addElementQualified() {^M -+ Element root = DocumentHelper.createElement("root");^M -+ root.addElement("element>name", "http://example.com/namespace");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void addElementQualifiedPrefix() {^M -+ Element root = DocumentHelper.createElement("root");^M -+ root.addElement("ns:element>name", "http://example.com/namespace");^M -+ }^M -+^M -+ @Test(expectedExceptions = IllegalArgumentException.class)^M -+ public void addElementPrefix() {^M -+ Element root = DocumentHelper.createElement("root");^M -+ root.addElement("ns>:element", "http://example.com/namespace");^M -+ }^M -+^M -+ //TODO It is illegal to create element or attribute with namespace prefix and empty namespace IRI.^M -+ //See https://www.w3.org/TR/2006/REC-xml-names11-20060816/#scoping^M -+}^M diff --git a/dom4j-CVE-2020-10683.patch b/dom4j-CVE-2020-10683.patch deleted file mode 100644 index 2c5724b..0000000 --- a/dom4j-CVE-2020-10683.patch +++ /dev/null @@ -1,484 +0,0 @@ -From a8228522a99a02146106672a34c104adbda5c658 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Filip=20Jirs=C3=A1k?= -Date: Sat, 11 Apr 2020 19:06:44 +0200 -Subject: [PATCH] SAXReader uses system default XMLReader with its defaults. - New factory method SAXReader.createDefault() sets more secure defaults. - ---- - src/java/org/dom4j/DocumentHelper.java | 65 +- - src/java/org/dom4j/io/SAXHelper.java | 37 +- - src/java/org/dom4j/io/SAXReader.java | 1824 ++++++++++--------- - 3 files changed, 973 insertions(+), 953 deletions(-) - -Index: dom4j/src/java/org/dom4j/io/SAXHelper.java -=================================================================== ---- dom4j.orig/src/java/org/dom4j/io/SAXHelper.java -+++ dom4j/src/java/org/dom4j/io/SAXHelper.java -@@ -13,6 +13,8 @@ import org.xml.sax.SAXNotSupportedExcept - import org.xml.sax.XMLReader; - import org.xml.sax.helpers.XMLReaderFactory; - -+import javax.xml.parsers.SAXParserFactory; -+ - /** - *

- * SAXHelper contains some helper methods for working with SAX -@@ -59,9 +61,18 @@ class SAXHelper { - } - - /** -- * Creats a default XMLReader via the org.xml.sax.driver system property or -+ * Creates a default XMLReader via the org.xml.sax.driver system property or - * JAXP if the system property is not set. - * -+ * This method internally calls {@link SAXParserFactory}{@code .newInstance().newSAXParser().getXMLReader()} or {@link XMLReaderFactory#createXMLReader()}. -+ * Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties: -+ * -+ *

-+     * reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-+     * 
-+ * - * @param validating - * DOCUMENT ME! - * -Index: dom4j/src/java/org/dom4j/io/SAXReader.java -=================================================================== ---- dom4j.orig/src/java/org/dom4j/io/SAXReader.java -+++ dom4j/src/java/org/dom4j/io/SAXReader.java -@@ -30,6 +30,8 @@ import org.xml.sax.XMLReader; - import org.xml.sax.helpers.DefaultHandler; - import org.xml.sax.helpers.XMLReaderFactory; - -+import javax.xml.parsers.SAXParserFactory; -+ - /** - *

- * SAXReader creates a DOM4J tree from SAX parsing events. -@@ -135,17 +137,76 @@ public class SAXReader { - /** The SAX filter used to filter SAX events */ - private XMLFilter xmlFilter; - -+ public static SAXReader createDefault() { -+ SAXReader reader = new SAXReader(); -+ try { -+ reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false); -+ reader.setFeature("http://xml.org/sax/features/external-general-entities", false); -+ reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false); -+ } catch (SAXException e) { -+ // nothing to do, incompatible reader -+ } -+ return reader; -+ } -+ -+ /** -+ * This method internally calls {@link SAXParserFactory}{@code .newInstance().newSAXParser().getXMLReader()} or {@link XMLReaderFactory#createXMLReader()}. -+ * Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties: -+ * -+ *

-+     * reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-+     * 
-+ */ - public SAXReader() { - } - -+ /** -+ * This method internally calls {@link SAXParserFactory}{@code .newInstance().newSAXParser().getXMLReader()} or {@link XMLReaderFactory#createXMLReader()}. -+ * Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties: -+ * -+ *
-+     * reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-+     * 
-+ * -+ * @param validating -+ */ - public SAXReader(boolean validating) { - this.validating = validating; - } - -+ /** -+ * This method internally calls {@link SAXParserFactory}{@code .newInstance().newSAXParser().getXMLReader()} or {@link XMLReaderFactory#createXMLReader()}. -+ * Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties: -+ * -+ *
-+     * reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-+     * 
-+ * -+ * @param factory -+ */ - public SAXReader(DocumentFactory factory) { - this.factory = factory; - } - -+ /** -+ * This method internally calls {@link SAXParserFactory}{@code .newInstance().newSAXParser().getXMLReader()} or {@link XMLReaderFactory#createXMLReader()}. -+ * Be sure to configure returned reader if the default configuration does not suit you. Consider setting the following properties: -+ * -+ *
-+     * reader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-general-entities", false);
-+     * reader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-+     * 
-+ * -+ * @param factory -+ * @param validating -+ */ - public SAXReader(DocumentFactory factory, boolean validating) { - this.factory = factory; - this.validating = validating; -@@ -185,14 +246,10 @@ public class SAXReader { - * this method is to correctly configure an XMLReader object instance and - * call the {@link #setXMLReader(XMLReader)}method - * -- * @param name -- * is the SAX property name -- * @param value -- * is the value of the SAX property -- * -- * @throws SAXException -- * if the XMLReader could not be created or the property could -- * not be changed. -+ * @param name is the SAX property name -+ * @param value is the value of the SAX property -+ * @throws SAXException if the XMLReader could not be created or the property could -+ * not be changed. - */ - public void setProperty(String name, Object value) throws SAXException { - getXMLReader().setProperty(name, value); -@@ -205,14 +262,10 @@ public class SAXReader { - * calling this method is to correctly configure an XMLReader object - * instance and call the {@link #setXMLReader(XMLReader)}method - * -- * @param name -- * is the SAX feature name -- * @param value -- * is the value of the SAX feature -- * -- * @throws SAXException -- * if the XMLReader could not be created or the feature could -- * not be changed. -+ * @param name is the SAX feature name -+ * @param value is the value of the SAX feature -+ * @throws SAXException if the XMLReader could not be created or the feature could -+ * not be changed. - */ - public void setFeature(String name, boolean value) throws SAXException { - getXMLReader().setFeature(name, value); -@@ -223,13 +276,9 @@ public class SAXReader { - * Reads a Document from the given File - *

- * -- * @param file -- * is the File to read from. -- * -+ * @param file is the File to read from. - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(File file) throws DocumentException { - try { -@@ -272,13 +321,9 @@ public class SAXReader { - * Reads a Document from the given URL using SAX - *

- * -- * @param url -- * URL to read from. -- * -+ * @param url URL to read from. - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(URL url) throws DocumentException { - String systemID = url.toExternalForm(); -@@ -304,13 +349,9 @@ public class SAXReader { - * String} to denote the source of the document. - *

- * -- * @param systemId -- * is a URL for a document or a file name. -- * -+ * @param systemId is a URL for a document or a file name. - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(String systemId) throws DocumentException { - InputSource source = new InputSource(systemId); -@@ -326,13 +367,9 @@ public class SAXReader { - * Reads a Document from the given stream using SAX - *

- * -- * @param in -- * InputStream to read from. -- * -+ * @param in InputStream to read from. - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(InputStream in) throws DocumentException { - InputSource source = new InputSource(in); -@@ -348,13 +385,9 @@ public class SAXReader { - * Reads a Document from the given Reader using SAX - *

- * -- * @param reader -- * is the reader for the input -- * -+ * @param reader is the reader for the input - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(Reader reader) throws DocumentException { - InputSource source = new InputSource(reader); -@@ -370,15 +403,10 @@ public class SAXReader { - * Reads a Document from the given stream using SAX - *

- * -- * @param in -- * InputStream to read from. -- * @param systemId -- * is the URI for the input -- * -+ * @param in InputStream to read from. -+ * @param systemId is the URI for the input - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(InputStream in, String systemId) - throws DocumentException { -@@ -396,13 +424,9 @@ public class SAXReader { - * Reads a Document from the given Reader using SAX - *

- * -- * @param reader -- * is the reader for the input -- * @param systemId -- * is the URI for the input -- * -+ * @param reader is the reader for the input -+ * @param systemId is the URI for the input - * @return the newly created Document instance -- * - * @throws DocumentException - * if an error occurs during parsing. - */ -@@ -422,13 +446,9 @@ public class SAXReader { - * Reads a Document from the given InputSource using SAX - *

- * -- * @param in -- * InputSource to read from. -- * -+ * @param in InputSource to read from. - * @return the newly created Document instance -- * -- * @throws DocumentException -- * if an error occurs during parsing. -+ * @throws DocumentException if an error occurs during parsing. - */ - public Document read(InputSource in) throws DocumentException { - try { -@@ -695,8 +715,7 @@ public class SAXReader { - /** - * Sets the entity resolver used to resolve entities. - * -- * @param entityResolver -- * DOCUMENT ME! -+ * @param entityResolver DOCUMENT ME! - */ - public void setEntityResolver(EntityResolver entityResolver) { - this.entityResolver = entityResolver; -@@ -706,9 +725,7 @@ public class SAXReader { - * DOCUMENT ME! - * - * @return the XMLReader used to parse SAX events -- * -- * @throws SAXException -- * DOCUMENT ME! -+ * @throws SAXException DOCUMENT ME! - */ - public XMLReader getXMLReader() throws SAXException { - if (xmlReader == null) { -@@ -721,8 +738,7 @@ public class SAXReader { - /** - * Sets the XMLReader used to parse SAX events - * -- * @param reader -- * is the XMLReader to parse SAX events -+ * @param reader is the XMLReader to parse SAX events - */ - public void setXMLReader(XMLReader reader) { - this.xmlReader = reader; -@@ -742,8 +758,7 @@ public class SAXReader { - /** - * Sets encoding used for InputSource (null means system default encoding) - * -- * @param encoding -- * is encoding used for InputSource -+ * @param encoding is encoding used for InputSource - */ - public void setEncoding(String encoding) { - this.encoding = encoding; -@@ -753,12 +768,9 @@ public class SAXReader { - * Sets the class name of the XMLReader to be used to parse - * SAX events. - * -- * @param xmlReaderClassName -- * is the class name of the XMLReader to parse SAX -- * events -- * -- * @throws SAXException -- * DOCUMENT ME! -+ * @param xmlReaderClassName is the class name of the XMLReader -+ * to parse SAX events -+ * @throws SAXException DOCUMENT ME! - */ - public void setXMLReaderClassName(String xmlReaderClassName) - throws SAXException { -@@ -769,11 +781,9 @@ public class SAXReader { - * Adds the ElementHandler to be called when the specified - * path is encounted. - * -- * @param path -- * is the path to be handled -- * @param handler -- * is the ElementHandler to be called by the event -- * based processor. -+ * @param path is the path to be handled -+ * @param handler is the ElementHandler to be called by the event -+ * based processor. - */ - public void addHandler(String path, ElementHandler handler) { - getDispatchHandler().addHandler(path, handler); -@@ -783,8 +793,7 @@ public class SAXReader { - * Removes the ElementHandler from the event based processor, - * for the specified path. - * -- * @param path -- * is the path to remove the ElementHandler for. -+ * @param path is the path to remove the ElementHandler for. - */ - public void removeHandler(String path) { - getDispatchHandler().removeHandler(path); -@@ -795,9 +804,8 @@ public class SAXReader { - * registered, this will set a default ElementHandler to be - * called for any path which does NOT have a handler registered. - * -- * @param handler -- * is the ElementHandler to be called by the event -- * based processor. -+ * @param handler is the ElementHandler to be called by the event -+ * based processor. - */ - public void setDefaultHandler(ElementHandler handler) { - getDispatchHandler().setDefaultHandler(handler); -@@ -824,8 +832,7 @@ public class SAXReader { - /** - * Sets the SAX filter to be used when filtering SAX events - * -- * @param filter -- * is the SAX filter to use or null to disable filtering -+ * @param filter is the SAX filter to use or null to disable filtering - */ - public void setXMLFilter(XMLFilter filter) { - this.xmlFilter = filter; -@@ -838,9 +845,7 @@ public class SAXReader { - * Installs any XMLFilter objects required to allow the SAX event stream to - * be filtered and preprocessed before it gets to dom4j. - * -- * @param reader -- * DOCUMENT ME! -- * -+ * @param reader DOCUMENT ME! - * @return the new XMLFilter if applicable or the original XMLReader if no - * filter is being used. - */ -@@ -886,9 +891,7 @@ public class SAXReader { - * XMLReader objects - * - * @return DOCUMENT ME! -- * -- * @throws SAXException -- * DOCUMENT ME! -+ * @throws SAXException DOCUMENT ME! - */ - protected XMLReader createXMLReader() throws SAXException { - return SAXHelper.createXMLReader(isValidating()); -@@ -897,13 +900,9 @@ public class SAXReader { - /** - * Configures the XMLReader before use - * -- * @param reader -- * DOCUMENT ME! -- * @param handler -- * DOCUMENT ME! -- * -- * @throws DocumentException -- * DOCUMENT ME! -+ * @param reader DOCUMENT ME! -+ * @param handler DOCUMENT ME! -+ * @throws DocumentException DOCUMENT ME! - */ - protected void configureReader(XMLReader reader, DefaultHandler handler) - throws DocumentException { -@@ -918,10 +917,11 @@ public class SAXReader { - SAXHelper.setParserProperty(reader, SAX_DECL_HANDLER, handler); - } - -- // configure namespace support -- SAXHelper.setParserFeature(reader, SAX_NAMESPACES, true); -+ // // configure namespace support -+ // SAXHelper.setParserFeature(reader, SAX_NAMESPACES, true); - -- SAXHelper.setParserFeature(reader, SAX_NAMESPACE_PREFIXES, false); -+ // string interning -+ // SAXHelper.setParserFeature(reader, SAX_NAMESPACE_PREFIXES, false); - - // string interning - SAXHelper.setParserFeature(reader, SAX_STRING_INTERNING, -@@ -936,8 +936,8 @@ public class SAXReader { - * includeExternalParameterEntities ); - */ - // use Locator2 if possible -- SAXHelper.setParserFeature(reader, -- "http://xml.org/sax/features/use-locator2", true); -+ // SAXHelper.setParserFeature(reader, -+ // "http://xml.org/sax/features/use-locator2", true); - - try { - // configure validation support -@@ -960,9 +960,7 @@ public class SAXReader { - /** - * Factory Method to allow user derived SAXContentHandler objects to be used - * -- * @param reader -- * DOCUMENT ME! -- * -+ * @param reader DOCUMENT ME! - * @return DOCUMENT ME! - */ - protected SAXContentHandler createContentHandler(XMLReader reader) { diff --git a/dom4j-build.xml b/dom4j-build.xml new file mode 100644 index 0000000..4987681 --- /dev/null +++ b/dom4j-build.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dom4j-enable-stax-datatypes.patch b/dom4j-enable-stax-datatypes.patch deleted file mode 100644 index 5b4f8a5..0000000 --- a/dom4j-enable-stax-datatypes.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: dom4j/build.xml -=================================================================== ---- dom4j.orig/build.xml -+++ dom4j/build.xml -@@ -146,9 +146,6 @@ - source="8" - deprecation="${deprecation}" - classpathref="compile.classpath"> -- -- -- - - - diff --git a/dom4j-javadoc.patch b/dom4j-javadoc.patch deleted file mode 100644 index 895211b..0000000 --- a/dom4j-javadoc.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- dom4j/build.xml 2009-05-12 15:04:18.000000000 +0200 -+++ dom4j/build.xml 2018-07-10 10:51:51.814095475 +0200 -@@ -224,7 +224,6 @@ - doctitle="${Name}" - bottom="Copyright © ${year} MetaStuff Ltd. All Rights Reserved. Hosted by <p> <img src='http://sourceforge.net/sflogo.php?group_id=16035' width='88' height='31' border='0' alt='SourceForge Logo' />" - stylesheetfile="${doc.dir}/style/javadoc.css"> -- - - - -@@ -240,8 +239,6 @@ - doctitle="${Name}" - bottom="Copyright © ${year} MetaStuff Ltd. All Rights Reserved. Hosted by <p> <img src='http://sourceforge.net/sflogo.php?group_id=16035' width='88' height='31' border='0' alt='SourceForge Logo' />" - stylesheetfile="${doc.dir}/style/javadoc.css"> -- -- - - - diff --git a/dom4j-sourcetarget.patch b/dom4j-sourcetarget.patch deleted file mode 100644 index 1644b75..0000000 --- a/dom4j-sourcetarget.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- dom4j/build.xml 2009-05-12 15:04:18.000000000 +0200 -+++ dom4j/build.xml 2017-09-11 13:36:05.252661089 +0200 -@@ -142,8 +142,8 @@ - destdir="${build.dest}" - debug="${debug}" - optimize="${optimize}" -- target="1.3" -- source="1.3" -+ target="8" -+ source="8" - deprecation="${deprecation}" - classpathref="compile.classpath"> - -@@ -195,6 +195,7 @@ - - - - = 1.6.5 -BuildRequires: ant-apache-resolver -BuildRequires: ant-junit -BuildRequires: bea-stax +Summary: Open Source XML framework for Java +License: BSD-3-Clause +URL: https://dom4j.github.io/ +Source0: %{name}-%{version}.tar.xz +Source1: https://repo1.maven.org/maven2/org/%{name}/%{name}/%{version}/%{name}-%{version}.pom +Source2: %{name}-build.xml +BuildRequires: ant BuildRequires: fdupes BuildRequires: glassfish-jaxb-api -BuildRequires: isorelax -BuildRequires: java-devel >= 1.6 -# Needed for maven conversions BuildRequires: javapackages-local -BuildRequires: javapackages-tools -BuildRequires: jaxen-bootstrap >= 1.1 -BuildRequires: junit -BuildRequires: junitperf -BuildRequires: relaxngDatatype -BuildRequires: stax_1_0_api -BuildRequires: ws-jaxme -BuildRequires: xalan-j2 >= 2.7 -BuildRequires: xerces-j2 -BuildRequires: xpp2 -BuildRequires: xpp3 -Requires: bea-stax -Requires: glassfish-jaxb-api -Requires: isorelax -Requires: java >= 1.6.0 -Requires: jaxen >= 1.1 -Requires: relaxngDatatype -Requires: stax_1_0_api -Requires: ws-jaxme -Requires: xalan-j2 -Requires: xerces-j2 -Requires: xpp2 -Requires: xpp3 -#Requires: jaxp = 1.2 -Requires(post): javapackages-tools -Requires(postun):javapackages-tools +BuildRequires: jaxen-bootstrap +Obsoletes: %{name}-manual < %{version} BuildArch: noarch %description -dom4j is an easy to use Open Source XML, XPath and XSLT framework for -Java using the Java Collections Framework. dom4j allows you to read, +dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j integrates with -DOM, SAX and JAXP and is seamlessly integrated with full XPath support. +DOM and SAX and is seamlessly integrated with full XPath support. %package demo -Summary: XML, XPath and XSLT library for Java +Summary: Open Source XML framework for Java - demo Group: Development/Libraries/Java Requires: %{name} = %{version} %description demo -dom4j is an easy to use Open Source XML, XPath and XSLT framework for -Java using the Java Collections Framework. dom4j allows you to read, +dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j integrates with -DOM, SAX and JAXP and is seamlessly integrated with full XPath support. - -%package manual -Summary: JarJar of dom4j for JBoss -Group: Development/Libraries/Java - -%description manual -dom4j is an easy to use Open Source XML, XPath and XSLT framework for -Java using the Java Collections Framework. dom4j allows you to read, -write, navigate, create and modify XML documents. dom4j integrates with -DOM, SAX and JAXP and is seamlessly integrated with full XPath support. +DOM and SAX and is seamlessly integrated with full XPath support. %package javadoc -Summary: XML, XPath and XSLT library for Java -Group: Development/Libraries/Java +Summary: Javadoc for %{name} %description javadoc -dom4j is an easy to use Open Source XML, XPath and XSLT framework for -Java using the Java Collections Framework. dom4j allows you to read, -write, navigate, create and modify XML documents. dom4j integrates with -DOM, SAX and JAXP and is seamlessly integrated with full XPath support. +Javadoc for %{name}. %prep -%setup -q -n %{name} -# replace run.sh -cp %{SOURCE1} run.sh -cp %{SOURCE2} pom.xml -%pom_add_dep javax.xml.bind:jaxb-api pom.xml "true" +%autosetup -p1 -rm -f src/test/org/dom4j/xpath/MatrixConcatTest.java -# won't succeed in headless environment -rm src/test/org/dom4j/bean/BeansTest.java -# FIXME Bug in Xalan 2.6 -- reactivate with Xalan 2.7 -#rm src/test/org/dom4j/XPathExamplesTest.java -# fix for deleted jars -sed -i -e '/unjar/d' -e 's|,cookbook/\*\*,|,|' build.xml -# FIXME: (yyang): failed in JDK6 -rm -f src/test/org/dom4j/ThreadingTest.java -# FIXME: (yyang): failed in JDK6, maybe failed to load russArticle.xml because it's russian encoding -rm -f src/test/org/dom4j/io/StaxTest.java -%patch0 -p1 -b .bug1618750 -%patch1 -p1 -b .sourcetarget -%patch2 -p1 -b .javadoc -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -perl -pi -e 's/\r//g' LICENSE.txt docs/clover/*.css docs/style/*.css docs/xref/*.css docs/xref-test/*.css src/doc/style/*.css docs/benchmarks/xpath/*.java +cp %{SOURCE1} pom.xml +cp %{SOURCE2} build.xml -pushd lib -ln -sf $(build-classpath xpp2) -ln -sf $(build-classpath relaxngDatatype) -ln -sf $(build-classpath jaxme/jaxmeapi) -#ln -sf $(build-classpath msv-xsdlib) -#ln -sf $(build-classpath msv-msv) -ln -sf $(build-classpath jaxen) -ln -sf $(build-classpath bea-stax-api) -pushd test -ln -sf $(build-classpath bea-stax-ri) -ln -sf $(build-classpath junitperf) -ln -sf $(build-classpath junit) -popd -ln -sf $(build-classpath xpp3) -pushd tools -ln -sf $(build-classpath jaxme/jaxmexs) -ln -sf $(build-classpath xalan-j2) -ln -sf $(build-classpath xalan-j2-serializer) -ln -sf $(build-classpath jaxme/jaxmejs) -ln -sf $(build-classpath isorelax) -ln -sf $(build-classpath jaxme/jaxme2) -ln -sf $(build-classpath xerces-j2) -popd -popd +# Remove xpp2 support +rm -r src/main/java/org/dom4j/xpp +rm src/main/java/org/dom4j/io/XPPReader.java + +# Remove datatype code which depends on msv +rm -r src/main/java/org/dom4j/datatype +%pom_remove_dep net.java.dev.msv:xsdlib + +# Remove xpp3 support +rm src/main/java/org/dom4j/io/XPP3Reader.java +%pom_remove_dep xpp3:xpp3 +%pom_remove_dep pull-parser:pull-parser +%pom_remove_dep javax.xml.stream:stax-api %build -export CLASSPATH=$(build-classpath \ - glassfish-jaxb-api \ - jaxen relaxngDatatype xpp3 xpp2) -export OPT_JAR_LIST="junit ant/ant-junit" -rm -rf src/java/org/dom4j/datatype -ant package release-javadoc +mkdir -p lib +build-jar-repository -s lib jaxen glassfish-jaxb-api +%{ant} jar javadoc %install -# jars -install -d -m 755 %{buildroot}%{_javadir} -install -d -m 755 %{buildroot}%{_datadir}/maven2/poms -cp -p build/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar -mkdir -p %{buildroot}/%{_mavenpomdir} -install -m 644 pom.xml %{buildroot}/%{_mavenpomdir}/JPP-%{name}.pom -%add_maven_depmap JPP-%{name}.pom %{name}.jar -a "org.dom4j:dom4j" +# jar +install -dm 0755 %{buildroot}%{_javadir} +install -pm 0644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar + +# pom +install -dm 0755 %{buildroot}%{_mavenpomdir} +%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom +%add_maven_depmap %{name}.pom %{name}.jar -a %{name}:%{name} # javadoc -mkdir -p %{buildroot}%{_javadocdir}/%{name} -cp -pr build/doc/javadoc/* %{buildroot}%{_javadocdir}/%{name} -# manual -mkdir -p %{buildroot}%{_docdir}/%{name}-%{version} -rm -rf docs/apidocs -cp -pr docs/* %{buildroot}%{_docdir}/%{name}-%{version} +install -dm 0755 %{buildroot}%{_javadocdir}/%{name} +cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{name} +%fdupes -s %{buildroot}%{_javadocdir} + # demo -mkdir -p %{buildroot}%{_datadir}/%{name}/classes/org/dom4j +install -dm 0755 %{buildroot}%{_datadir}/%{name}/src cp -pr xml %{buildroot}%{_datadir}/%{name} -mkdir -p %{buildroot}%{_datadir}/%{name}/src -cp -pr src/samples %{buildroot}%{_datadir}/%{name}/src -#cp -pr build/classes/org/dom4j/samples $RPM_BUILD_ROOT%%{_datadir}/%%{name}/classes/org/dom4j -install -m 0755 run.sh %{buildroot}%{_datadir}/%{name} -%fdupes -s %{buildroot}%{_javadocdir}/%{name} -%fdupes -s %{buildroot}%{_docdir}/%{name}-%{version} +cp -pr src/example %{buildroot}%{_datadir}/%{name}/src %fdupes -s %{buildroot}%{_datadir}/%{name} %files -f .mfiles -%license LICENSE.txt - -%files javadoc -%defattr(0644,root,root,0755) -%{_javadocdir}/%{name} - -%files manual -%defattr(0644,root,root,0755) -%{_docdir}/%{name}-%{version} +%license LICENSE +%doc README.md %files demo -%defattr(-,root,root,0755) %{_datadir}/%{name} +%files javadoc +%license LICENSE +%{_javadocdir}/%{name} + %changelog diff --git a/dom4j_rundemo.sh b/dom4j_rundemo.sh deleted file mode 100644 index d2bb912..0000000 --- a/dom4j_rundemo.sh +++ /dev/null @@ -1,128 +0,0 @@ -#!/bin/sh - -XMLFMTOPS="-indentSize 2 -trimText -newlines" - -if [ $# -eq 0 ]; then -echo PullParserDemo -echo ./run.sh samples.PullParserDemo $XMLFMTOPS xml/web.xml -echo ./run.sh samples.PullParserDemo $XMLFMTOPS xml/fibo.xml -echo -echo SAXDemo -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/web.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/test/test_schema.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/xhtml/xhtml-basic.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/contents.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/cdata.xml -echo ./run.sh -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser samples.SAXDemo $XMLFMTOPS xml/cdata.xml -echo ./run.sh -Dorg.xml.sax.driver=xml.aelfred2.SAXDriver samples.SAXDemo $XMLFMTOPS xml/cdata.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/testPI.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/namespaces.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/testNamespaces.xml -echo ./run.sh samples.SAXDemo $XMLFMTOPS xml/inline.xml -echo -echo DOMDemo -echo ./run.sh samples.dom.DOMDemo xml/contents.xml -echo -echo SAXDOMDemo -echo ./run.sh samples.dom.SAXDOMDemo xml/contents.xml -echo -echo VisitorDemo -echo ./run.sh samples.VisitorDemo xml/cdata.xml -echo -echo CountDemo -echo ./run.sh samples.CountDemo xml/fibo.xml -echo -echo CreateXMLDemo -echo ./run.sh samples.CreateXMLDemo -echo -echo HTMLWriterDemo -echo ./run.sh samples.HTMLWriterDemo xml/xhtml.xml -echo -echo PerformanceTest -echo ./run.sh -Xprof samples.performance.PerformanceSupport xml/periodic_table.xml org.dom4j.DocumentFactory 10 -echo ./run.sh -Xprof -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser samples.performance.PerformanceSupport xml/periodic_table.xml org.dom4j.DocumentFactory 10 -echo ./run.sh -Xprof -Dorg.xml.sax.driver=xml.aelfred2.SAXDriver samples.performance.PerformanceSupport xml/periodic_table.xml org.dom4j.DocumentFactory 10 -echo ./run.sh -Xprof samples.performance.PerformanceSupport xml/much_ado.xml org.dom4j.DocumentFactory 10 -echo ./run.sh -Xprof -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser samples.performance.PerformanceSupport xml/much_ado.xml org.dom4j.DocumentFactory 10 -echo ./run.sh -Xprof -Dorg.xml.sax.driver=xml.aelfred2.SAXDriver samples.performance.PerformanceSupport xml/much_ado.xml org.dom4j.DocumentFactory 10 -echo -echo XPathDemo -echo ./run.sh samples.XPathDemo xml/web.xml //servlet/servlet-class -echo ./run.sh samples.XPathDemo xml/much_ado.xml //ACT/TITLE -echo -echo XSLTDemo -echo ./run.sh samples.XSLTDemo xml/nitf/sample.xml xml/nitf/ashtml.xsl -echo -echo XSLTNativeDOMDemo -echo ./run.sh samples.dom.XSLTNativeDOMDemo xml/nitf/sample.xml xml/nitf/ashtml.xsl -echo -echo LargeDocumentDemo -echo ./run.sh samples.LargeDocumentDemo xml/much_ado.xml /PLAY/ACT -echo -echo LargeDocumentDemo2 -echo ./run.sh samples.LargeDocumentDemo2 xml/much_ado.xml -echo -echo LinkCheckerDemo -echo ./run.sh samples.LinkChecker xml/xhtml/xhtml-basic.xml -echo -echo BeanDemo -echo ./run.sh samples.bean.BeanDemo xml/bean/gui.xml -echo -echo SAXValidatorDemo -echo ./run.sh samples.validate.SAXValidatorDemo xml/nitf/invalid.xml -echo -echo VisitorDemo -echo ./run.sh -Dorg.dom4j.factory=org.dom4j.datatype.DatatypeDocumentFactory samples.VisitorDemo xml/schema/personal-schema.xml -echo -echo JTableDemo -echo ./run.sh samples.swing.JTableDemo xml/web.xml -echo -echo JTableTool -echo ./run.sh samples.swing.JTableTool xml/swing/tableForAtoms.xml xml/periodic_table.xml -echo -echo JTreeDemo -echo ./run.sh samples.swing.JTreeDemo xml/web.xml -exit 0 -fi - -if [ -z "$JAVA_HOME" ] ; then - JAVA=`which java` - if [ -z "$JAVA" ] ; then - echo "Cannot find JAVA. Please set your PATH." - exit 1 - fi - JAVA_BIN=`dirname $JAVA` - JAVA_HOME=$JAVA_BIN/.. -fi - -JAVA=$JAVA_HOME/bin/java - -CLASSPATH=`build-classpath \ -dom4j \ -xpp2 \ -fop \ -xerces-j2 \ -msv-relaxngDatatype \ -msv-xsdlib \ -msv-isorelax \ -msv \ -jaxen \ -junit \ -junitperf \ -saxpath \ -xalan-j2 \ -xml-commons-apis \ -avalon-framework \ -avalon-logkit \ -`:$CLASSPATH - -BOOTCLASSPATH=`build-classpath \ -xml-commons-apis \ -xerces-j2 \ -xalan-j2 \ -` - -CLASSPATH=classes:$CLASSPATH:$JAVA_HOME/lib/tools.jar - - -$JAVA -Xbootclasspath/p:$BOOTCLASSPATH -classpath $CLASSPATH "$@" From 07a89f308721cef0c8acea166fede539213d417b6563aba264ba6fbabd3bc5ec Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 23 Aug 2023 11:13:17 +0000 Subject: [PATCH 2/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=43 --- dom4j.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom4j.spec b/dom4j.spec index 118b385..33a71bc 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -29,7 +29,7 @@ Source2: %{name}-build.xml BuildRequires: ant BuildRequires: fdupes BuildRequires: glassfish-jaxb-api -BuildRequires: javapackages-local +BuildRequires: javapackages-local >= 6 BuildRequires: jaxen-bootstrap Obsoletes: %{name}-manual < %{version} BuildArch: noarch From b54e3fa87eb5f77688a0602a3e513e0feec04dd8a12b772068a702863c697338 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 23 Aug 2023 12:52:00 +0000 Subject: [PATCH 3/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=44 --- _service | 2 +- dom4j-2.0.3.tar.xz | 3 - dom4j-2.0.3.pom => dom4j-2.1.4.pom | 154 ++++++++++++++--------------- dom4j-2.1.4.tar.xz | 3 + dom4j-build.xml | 2 +- dom4j.spec | 2 +- 6 files changed, 83 insertions(+), 83 deletions(-) delete mode 100644 dom4j-2.0.3.tar.xz rename dom4j-2.0.3.pom => dom4j-2.1.4.pom (93%) create mode 100644 dom4j-2.1.4.tar.xz diff --git a/_service b/_service index 273d538..9072f87 100644 --- a/_service +++ b/_service @@ -2,7 +2,7 @@ git https://github.com/dom4j/dom4j.git - version-2.0.3 + version-2.1.4 version-* @PARENT_TAG@ version-(.*) diff --git a/dom4j-2.0.3.tar.xz b/dom4j-2.0.3.tar.xz deleted file mode 100644 index eb5beb8..0000000 --- a/dom4j-2.0.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2befe87fb264f5f04fa420414d5b35d2d3bc90937312078142021210e2633c12 -size 396540 diff --git a/dom4j-2.0.3.pom b/dom4j-2.1.4.pom similarity index 93% rename from dom4j-2.0.3.pom rename to dom4j-2.1.4.pom index d8958fb..ab34e95 100644 --- a/dom4j-2.0.3.pom +++ b/dom4j-2.1.4.pom @@ -1,77 +1,77 @@ - - - - - - - - 4.0.0 - org.dom4j - dom4j - 2.0.3 - dom4j - flexible XML framework for Java - http://dom4j.github.io/ - - - BSD 3-clause New License - https://github.com/dom4j/dom4j/blob/master/LICENSE - - - - - Filip Jirsák - filip@jirsak.org - https://github.com/FilipJirsak - - - - scm:git:git@github.com:dom4j/dom4j.git - scm:git:git@github.com:dom4j/dom4j.git - git@github.com:dom4j/dom4j.git - - - - jaxen - jaxen - 1.1.6 - runtime - true - - - javax.xml.stream - stax-api - 1.0-2 - runtime - true - - - net.java.dev.msv - xsdlib - 2013.6.1 - runtime - true - - - javax.xml.bind - jaxb-api - 2.2.12 - runtime - true - - - pull-parser - pull-parser - 2 - runtime - true - - - xpp3 - xpp3 - 1.1.4c - runtime - true - - - + + + + + + + + 4.0.0 + org.dom4j + dom4j + 2.1.4 + dom4j + flexible XML framework for Java + http://dom4j.github.io/ + + + Plexus + https://github.com/dom4j/dom4j/blob/master/LICENSE + + + + + Filip Jirsák + filip@jirsak.org + https://github.com/FilipJirsak + + + + scm:git:git@github.com:dom4j/dom4j.git + scm:git:git@github.com:dom4j/dom4j.git + git@github.com:dom4j/dom4j.git + + + + jaxen + jaxen + 1.1.6 + runtime + true + + + javax.xml.stream + stax-api + 1.0-2 + runtime + true + + + net.java.dev.msv + xsdlib + 2013.6.1 + runtime + true + + + javax.xml.bind + jaxb-api + 2.2.12 + runtime + true + + + pull-parser + pull-parser + 2.1.10 + runtime + true + + + xpp3 + xpp3 + 1.1.4c + runtime + true + + + diff --git a/dom4j-2.1.4.tar.xz b/dom4j-2.1.4.tar.xz new file mode 100644 index 0000000..b1f866e --- /dev/null +++ b/dom4j-2.1.4.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:442ba06cc110721084312dec9ed41d00d2741362b37f1e6d89a595a79ff9a262 +size 397532 diff --git a/dom4j-build.xml b/dom4j-build.xml index 4987681..3d40761 100644 --- a/dom4j-build.xml +++ b/dom4j-build.xml @@ -8,7 +8,7 @@ - + diff --git a/dom4j.spec b/dom4j.spec index 33a71bc..60b278f 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -18,7 +18,7 @@ Name: dom4j -Version: 2.0.3 +Version: 2.1.4 Release: 0 Summary: Open Source XML framework for Java License: BSD-3-Clause From 3450d6c3ded7f17c4599d79d3532a06261a275d137b027fdb8af58a72502f77a Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 23 Aug 2023 18:54:07 +0000 Subject: [PATCH 4/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=45 --- 0001-no-jaxen-dom4.patch | 713 +++++++++++++++++++++++++++++++++++++++ _multibuild | 3 + dom4j.spec | 73 ++-- 3 files changed, 767 insertions(+), 22 deletions(-) create mode 100644 0001-no-jaxen-dom4.patch create mode 100644 _multibuild diff --git a/0001-no-jaxen-dom4.patch b/0001-no-jaxen-dom4.patch new file mode 100644 index 0000000..553a7f7 --- /dev/null +++ b/0001-no-jaxen-dom4.patch @@ -0,0 +1,713 @@ +From b494798add23c21d68b1dd54e8929095396516bb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fridrich=20=C5=A0trba?= +Date: Wed, 23 Aug 2023 20:33:23 +0200 +Subject: [PATCH] no-jaxen-dom4 + +--- + src/main/java/org/dom4j/DocumentFactory.java | 22 +- + src/main/java/org/dom4j/DocumentHelper.java | 16 - + .../java/org/dom4j/tree/AbstractNode.java | 4 - + .../org/dom4j/util/ProxyDocumentFactory.java | 4 - + .../java/org/dom4j/xpath/DefaultXPath.java | 409 ------------------ + .../java/org/dom4j/xpath/XPathPattern.java | 164 ------- + 6 files changed, 2 insertions(+), 617 deletions(-) + delete mode 100644 src/main/java/org/dom4j/xpath/DefaultXPath.java + delete mode 100644 src/main/java/org/dom4j/xpath/XPathPattern.java + +diff --git a/src/main/java/org/dom4j/DocumentFactory.java b/src/main/java/org/dom4j/DocumentFactory.java +index 9aaaa11..fa2bbb8 100644 +--- a/src/main/java/org/dom4j/DocumentFactory.java ++++ b/src/main/java/org/dom4j/DocumentFactory.java +@@ -27,8 +27,6 @@ import org.dom4j.tree.DefaultText; + import org.dom4j.tree.QNameCache; + import org.dom4j.util.SimpleSingleton; + import org.dom4j.util.SingletonStrategy; +-import org.dom4j.xpath.DefaultXPath; +-import org.dom4j.xpath.XPathPattern; + import org.jaxen.VariableContext; + + /** +@@ -219,7 +217,7 @@ public class DocumentFactory implements Serializable { + */ + public XPath createXPath(String xpathExpression) + throws InvalidXPathException { +- DefaultXPath xpath = new DefaultXPath(xpathExpression); ++ XPath xpath = createXPath(xpathExpression); + + if (xpathNamespaceURIs != null) { + xpath.setNamespaceURIs(xpathNamespaceURIs); +@@ -291,22 +289,6 @@ public class DocumentFactory implements Serializable { + // return new DefaultXPath( xpathFilterExpression ); + } + +- /** +- *

+- * createPattern parses the given XPath expression to create +- * an XSLT style {@link Pattern}instance which can then be used in an XSLT +- * processing model. +- *

+- * +- * @param xpathPattern +- * is the XPath pattern expression to create +- * +- * @return a new Pattern instance +- */ +- public Pattern createPattern(String xpathPattern) { +- return new XPathPattern(xpathPattern); +- } +- + // Properties + // ------------------------------------------------------------------------- + +@@ -445,4 +427,4 @@ public class DocumentFactory implements Serializable { + * POSSIBILITY OF SUCH DAMAGE. + * + * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +\ No newline at end of file ++ */ +diff --git a/src/main/java/org/dom4j/DocumentHelper.java b/src/main/java/org/dom4j/DocumentHelper.java +index 865a51a..040770c 100644 +--- a/src/main/java/org/dom4j/DocumentHelper.java ++++ b/src/main/java/org/dom4j/DocumentHelper.java +@@ -160,22 +160,6 @@ public final class DocumentHelper { + return getDocumentFactory().createXPathFilter(xpathFilterExpression); + } + +- /** +- *

+- * createPattern parses the given XPath expression to create +- * an XSLT style {@link Pattern}instance which can then be used in an XSLT +- * processing model. +- *

+- * +- * @param xpathPattern +- * is the XPath pattern expression to create +- * +- * @return a new Pattern instance +- */ +- public static Pattern createPattern(String xpathPattern) { +- return getDocumentFactory().createPattern(xpathPattern); +- } +- + /** + *

+ * selectNodes performs the given XPath expression on the +diff --git a/src/main/java/org/dom4j/tree/AbstractNode.java b/src/main/java/org/dom4j/tree/AbstractNode.java +index 3957c29..e8b14c7 100644 +--- a/src/main/java/org/dom4j/tree/AbstractNode.java ++++ b/src/main/java/org/dom4j/tree/AbstractNode.java +@@ -206,10 +206,6 @@ public abstract class AbstractNode implements Node, Cloneable, Serializable { + return getDocumentFactory().createXPathFilter(patternText); + } + +- public Pattern createPattern(String patternText) { +- return getDocumentFactory().createPattern(patternText); +- } +- + public Node asXPathResult(Element parent) { + if (supportsParent()) { + return this; +diff --git a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java +index 65624be..8bf7e57 100644 +--- a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java ++++ b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java +@@ -146,10 +146,6 @@ public abstract class ProxyDocumentFactory { + return proxy.createXPathFilter(xpathFilterExpression); + } + +- public Pattern createPattern(String xpathPattern) { +- return proxy.createPattern(xpathPattern); +- } +- + // Implementation methods + // ------------------------------------------------------------------------- + protected DocumentFactory getProxy() { +diff --git a/src/main/java/org/dom4j/xpath/DefaultXPath.java b/src/main/java/org/dom4j/xpath/DefaultXPath.java +deleted file mode 100644 +index f81eec5..0000000 +--- a/src/main/java/org/dom4j/xpath/DefaultXPath.java ++++ /dev/null +@@ -1,409 +0,0 @@ +-/* +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- * +- * This software is open source. +- * See the bottom of this file for the licence. +- */ +- +-package org.dom4j.xpath; +- +-import java.io.Serializable; +-import java.util.Collections; +-import java.util.Comparator; +-import java.util.HashMap; +-import java.util.HashSet; +-import java.util.Iterator; +-import java.util.List; +-import java.util.Map; +- +-import org.dom4j.InvalidXPathException; +-import org.dom4j.Node; +-import org.dom4j.NodeFilter; +-import org.dom4j.XPathException; +- +-import org.jaxen.FunctionContext; +-import org.jaxen.JaxenException; +-import org.jaxen.NamespaceContext; +-import org.jaxen.SimpleNamespaceContext; +-import org.jaxen.VariableContext; +-import org.jaxen.XPath; +-import org.jaxen.dom4j.Dom4jXPath; +- +-/** +- *

+- * Default implementation of {@link org.dom4j.XPath}which uses the Jaxen project. +- *

+- * +- * @author bob mcwhirter +- * @author James Strachan +- */ +-public class DefaultXPath implements org.dom4j.XPath, NodeFilter, Serializable { +- private String text; +- +- private XPath xpath; +- +- private NamespaceContext namespaceContext; +- +- /** +- * Construct an XPath +- * +- * @param text +- * DOCUMENT ME! +- * +- * @throws InvalidXPathException +- * DOCUMENT ME! +- */ +- public DefaultXPath(String text) throws InvalidXPathException { +- this.text = text; +- this.xpath = parse(text); +- } +- +- public String toString() { +- return "[XPath: " + xpath + "]"; +- } +- +- // XPath interface +- +- /** +- * Retrieve the textual XPath string used to initialize this Object +- * +- * @return The XPath string +- */ +- public String getText() { +- return text; +- } +- +- public FunctionContext getFunctionContext() { +- return xpath.getFunctionContext(); +- } +- +- public void setFunctionContext(FunctionContext functionContext) { +- xpath.setFunctionContext(functionContext); +- } +- +- public NamespaceContext getNamespaceContext() { +- return namespaceContext; +- } +- +- public void setNamespaceURIs(Map map) { +- setNamespaceContext(new SimpleNamespaceContext(map)); +- } +- +- public void setNamespaceContext(NamespaceContext namespaceContext) { +- this.namespaceContext = namespaceContext; +- xpath.setNamespaceContext(namespaceContext); +- } +- +- public VariableContext getVariableContext() { +- return xpath.getVariableContext(); +- } +- +- public void setVariableContext(VariableContext variableContext) { +- xpath.setVariableContext(variableContext); +- } +- +- public Object evaluate(Object context) { +- try { +- setNSContext(context); +- +- List answer = xpath.selectNodes(context); +- +- if ((answer != null) && (answer.size() == 1)) { +- return answer.get(0); +- } +- +- return answer; +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public Object selectObject(Object context) { +- return evaluate(context); +- } +- +- public List selectNodes(Object context) { +- try { +- setNSContext(context); +- +- return (List) xpath.selectNodes(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return Collections.emptyList(); +- } +- } +- +- public List selectNodes(Object context, org.dom4j.XPath sortXPath) { +- List answer = selectNodes(context); +- sortXPath.sort(answer); +- +- return answer; +- } +- +- public List selectNodes(Object context, org.dom4j.XPath sortXPath, +- boolean distinct) { +- List answer = selectNodes(context); +- sortXPath.sort(answer, distinct); +- +- return answer; +- } +- +- public Node selectSingleNode(Object context) { +- try { +- setNSContext(context); +- +- Object answer = xpath.selectSingleNode(context); +- +- if (answer instanceof Node) { +- return (Node) answer; +- } +- +- if (answer == null) { +- return null; +- } +- +- throw new XPathException("The result of the XPath expression is " +- + "not a Node. It was: " + answer + " of type: " +- + answer.getClass().getName()); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public String valueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.stringValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return ""; +- } +- } +- +- public Number numberValueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.numberValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public boolean booleanValueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.booleanValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- /** +- *

+- * sort sorts the given List of Nodes using this XPath +- * expression as a {@link Comparator}. +- *

+- * +- * @param list +- * is the list of Nodes to sort +- */ +- public void sort(List list) { +- sort(list, false); +- } +- +- /** +- *

+- * sort sorts the given List of Nodes using this XPath +- * expression as a {@link Comparator}and optionally removing duplicates. +- *

+- * +- * @param list +- * is the list of Nodes to sort +- * @param distinct +- * if true then duplicate values (using the sortXPath for +- * comparisions) will be removed from the List +- */ +- public void sort(List list, boolean distinct) { +- if ((list != null) && !list.isEmpty()) { +- int size = list.size(); +- HashMap sortValues = new HashMap(size); +- +- for (Node node : list) { +- Object expression = getCompareValue(node); +- sortValues.put(node, expression); +- } +- +- sort(list, sortValues); +- +- if (distinct) { +- removeDuplicates(list, sortValues); +- } +- } +- } +- +- public boolean matches(Node node) { +- try { +- setNSContext(node); +- +- List answer = xpath.selectNodes(node); +- +- if ((answer != null) && (answer.size() > 0)) { +- Object item = answer.get(0); +- +- if (item instanceof Boolean) { +- return (Boolean) item; +- } +- +- return answer.contains(node); +- } +- +- return false; +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- /** +- * Sorts the list based on the sortValues for each node +- * +- * @param list +- * DOCUMENT ME! +- * @param sortValues +- * DOCUMENT ME! +- */ +- protected void sort(List list, final Map sortValues) { +- Collections.sort(list, new Comparator() { +- public int compare(Node n1, Node n2) { +- Object o1 = sortValues.get(n1); +- Object o2 = sortValues.get(n2); +- +- if (o1 == o2) { +- return 0; +- } else if (o1 instanceof Comparable) { +- Comparable c1 = (Comparable) o1; +- +- return c1.compareTo(o2); +- } else if (o1 == null) { +- return 1; +- } else if (o2 == null) { +- return -1; +- } else { +- return o1.equals(o2) ? 0 : (-1); +- } +- } +- }); +- } +- +- // Implementation methods +- +- /** +- * Removes items from the list which have duplicate values +- * +- * @param list +- * DOCUMENT ME! +- * @param sortValues +- * DOCUMENT ME! +- */ +- protected void removeDuplicates(List list, Map sortValues) { +- // remove distinct +- HashSet distinctValues = new HashSet(); +- +- for (Iterator iter = list.iterator(); iter.hasNext();) { +- Node node = iter.next(); +- Object value = sortValues.get(node); +- +- if (distinctValues.contains(value)) { +- iter.remove(); +- } else { +- distinctValues.add(value); +- } +- } +- } +- +- /** +- * DOCUMENT ME! +- * +- * @param node +- * DOCUMENT ME! +- * +- * @return the node expression used for sorting comparisons +- */ +- protected Object getCompareValue(Node node) { +- return valueOf(node); +- } +- +- protected static XPath parse(String text) { +- try { +- return new Dom4jXPath(text); +- } catch (JaxenException e) { +- throw new InvalidXPathException(text, e.getMessage()); +- } catch (RuntimeException e) { +- } +- +- throw new InvalidXPathException(text); +- } +- +- protected void setNSContext(Object context) { +- if (namespaceContext == null) { +- xpath.setNamespaceContext(DefaultNamespaceContext.create(context)); +- } +- } +- +- protected void handleJaxenException(JaxenException exception) +- throws XPathException { +- throw new XPathException(text, exception); +- } +-} +- +-/* +- * Redistribution and use of this software and associated documentation +- * ("Software"), with or without modification, are permitted provided that the +- * following conditions are met: +- * +- * 1. Redistributions of source code must retain copyright statements and +- * notices. Redistributions must also contain a copy of this document. +- * +- * 2. Redistributions in binary form must reproduce the above copyright notice, +- * this list of conditions and the following disclaimer in the documentation +- * and/or other materials provided with the distribution. +- * +- * 3. The name "DOM4J" must not be used to endorse or promote products derived +- * from this Software without prior written permission of MetaStuff, Ltd. For +- * written permission, please contact dom4j-info@metastuff.com. +- * +- * 4. Products derived from this Software may not be called "DOM4J" nor may +- * "DOM4J" appear in their names without prior written permission of MetaStuff, +- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. +- * +- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org +- * +- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE +- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +- * POSSIBILITY OF SUCH DAMAGE. +- * +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +diff --git a/src/main/java/org/dom4j/xpath/XPathPattern.java b/src/main/java/org/dom4j/xpath/XPathPattern.java +deleted file mode 100644 +index 65d656b..0000000 +--- a/src/main/java/org/dom4j/xpath/XPathPattern.java ++++ /dev/null +@@ -1,164 +0,0 @@ +-/* +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- * +- * This software is open source. +- * See the bottom of this file for the licence. +- */ +- +-package org.dom4j.xpath; +- +-import java.util.ArrayList; +-import java.util.Collections; +- +-import org.dom4j.InvalidXPathException; +-import org.dom4j.Node; +-import org.dom4j.XPathException; +- +-import org.jaxen.Context; +-import org.jaxen.ContextSupport; +-import org.jaxen.JaxenException; +-import org.jaxen.SimpleNamespaceContext; +-import org.jaxen.SimpleVariableContext; +-import org.jaxen.VariableContext; +-import org.jaxen.XPathFunctionContext; +-import org.jaxen.dom4j.DocumentNavigator; +-import org.jaxen.pattern.Pattern; +-import org.jaxen.pattern.PatternParser; +-import org.jaxen.saxpath.SAXPathException; +- +-/** +- *

+- * XPathPattern is an implementation of Pattern which uses an +- * XPath xpath. +- *

+- * +- * @author James Strachan +- * @version $Revision: 1.18 $ +- */ +-public class XPathPattern implements org.dom4j.rule.Pattern { +- private String text; +- +- private Pattern pattern; +- +- private Context context; +- +- public XPathPattern(Pattern pattern) { +- this.pattern = pattern; +- this.text = pattern.getText(); +- this.context = new Context(getContextSupport()); +- } +- +- public XPathPattern(String text) { +- this.text = text; +- this.context = new Context(getContextSupport()); +- +- try { +- this.pattern = PatternParser.parse(text); +- } catch (SAXPathException e) { +- throw new InvalidXPathException(text, e.getMessage()); +- } catch (RuntimeException e) { +- throw new InvalidXPathException(text); +- } +- } +- +- public boolean matches(Node node) { +- try { +- context.setNodeSet(Collections.singletonList(node)); +- +- return pattern.matches(node, context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- public String getText() { +- return text; +- } +- +- public double getPriority() { +- return pattern.getPriority(); +- } +- +- public org.dom4j.rule.Pattern[] getUnionPatterns() { +- Pattern[] patterns = pattern.getUnionPatterns(); +- +- if (patterns != null) { +- int size = patterns.length; +- XPathPattern[] answer = new XPathPattern[size]; +- +- for (int i = 0; i < size; i++) { +- answer[i] = new XPathPattern(patterns[i]); +- } +- +- return answer; +- } +- +- return null; +- } +- +- public short getMatchType() { +- return pattern.getMatchType(); +- } +- +- public String getMatchesNodeName() { +- return pattern.getMatchesNodeName(); +- } +- +- public void setVariableContext(VariableContext variableContext) { +- context.getContextSupport().setVariableContext(variableContext); +- } +- +- public String toString() { +- return "[XPathPattern: text: " + text + " Pattern: " + pattern + "]"; +- } +- +- protected ContextSupport getContextSupport() { +- return new ContextSupport(new SimpleNamespaceContext(), +- XPathFunctionContext.getInstance(), +- new SimpleVariableContext(), DocumentNavigator.getInstance()); +- } +- +- protected void handleJaxenException(JaxenException exception) +- throws XPathException { +- throw new XPathException(text, exception); +- } +-} +- +-/* +- * Redistribution and use of this software and associated documentation +- * ("Software"), with or without modification, are permitted provided that the +- * following conditions are met: +- * +- * 1. Redistributions of source code must retain copyright statements and +- * notices. Redistributions must also contain a copy of this document. +- * +- * 2. Redistributions in binary form must reproduce the above copyright notice, +- * this list of conditions and the following disclaimer in the documentation +- * and/or other materials provided with the distribution. +- * +- * 3. The name "DOM4J" must not be used to endorse or promote products derived +- * from this Software without prior written permission of MetaStuff, Ltd. For +- * written permission, please contact dom4j-info@metastuff.com. +- * +- * 4. Products derived from this Software may not be called "DOM4J" nor may +- * "DOM4J" appear in their names without prior written permission of MetaStuff, +- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. +- * +- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org +- * +- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE +- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +- * POSSIBILITY OF SUCH DAMAGE. +- * +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +-- +2.41.0 + diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..655ec81 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + bootstrap + diff --git a/dom4j.spec b/dom4j.spec index 60b278f..ed1b1db 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -1,5 +1,5 @@ # -# spec file for package dom4j +# spec file # # Copyright (c) 2023 SUSE LLC # Copyright (c) 2000-2007, JPackage Project @@ -17,32 +17,53 @@ # -Name: dom4j +%global base_name dom4j +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "bootstrap" +%bcond_without bootstrap +%else +%bcond_with bootstrap +%endif Version: 2.1.4 Release: 0 Summary: Open Source XML framework for Java License: BSD-3-Clause URL: https://dom4j.github.io/ -Source0: %{name}-%{version}.tar.xz -Source1: https://repo1.maven.org/maven2/org/%{name}/%{name}/%{version}/%{name}-%{version}.pom -Source2: %{name}-build.xml +Source0: %{base_name}-%{version}.tar.xz +Source1: https://repo1.maven.org/maven2/org/%{base_name}/%{base_name}/%{version}/%{base_name}-%{version}.pom +Source2: %{base_name}-build.xml +Patch0: 0001-no-jaxen-dom4.patch BuildRequires: ant BuildRequires: fdupes BuildRequires: glassfish-jaxb-api BuildRequires: javapackages-local >= 6 -BuildRequires: jaxen-bootstrap -Obsoletes: %{name}-manual < %{version} +Obsoletes: %{base_name}-manual < %{version} BuildArch: noarch +%if %{with bootstrap} +Name: %{base_name}-bootstrap +%else +Name: %{base_name} +%endif +%if %{without bootstrap} +BuildRequires: fdupes +BuildRequires: jaxen +Conflicts: %{base_name}-bootstrap +Obsoletes: %{base_name}-bootstrap +%else +BuildRequires: jaxen-bootstrap +Conflicts: %{base_name} +%endif %description dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. +%if %{without bootstrap} %package demo Summary: Open Source XML framework for Java - demo Group: Development/Libraries/Java -Requires: %{name} = %{version} +Requires: %{base_name} = %{version} %description demo dom4j is an Open Source XML framework for Java. dom4j allows you to read, @@ -50,13 +71,17 @@ write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. %package javadoc -Summary: Javadoc for %{name} +Summary: Javadoc for %{base_name} %description javadoc -Javadoc for %{name}. +Javadoc for %{base_name}. +%endif %prep -%autosetup -p1 +%setup -q -n %{base_name}-%{version} +%if %{with bootstrap} +%patch0 -p1 +%endif cp %{SOURCE1} pom.xml cp %{SOURCE2} build.xml @@ -84,33 +109,37 @@ build-jar-repository -s lib jaxen glassfish-jaxb-api # jar install -dm 0755 %{buildroot}%{_javadir} -install -pm 0644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar +install -pm 0644 target/%{base_name}-%{version}.jar %{buildroot}%{_javadir}/%{base_name}.jar # pom install -dm 0755 %{buildroot}%{_mavenpomdir} -%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom -%add_maven_depmap %{name}.pom %{name}.jar -a %{name}:%{name} +%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}.pom +%add_maven_depmap %{base_name}.pom %{base_name}.jar -a %{base_name}:%{base_name} +%if %{without bootstrap} # javadoc -install -dm 0755 %{buildroot}%{_javadocdir}/%{name} -cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{name} +install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name} +cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{base_name} %fdupes -s %{buildroot}%{_javadocdir} # demo -install -dm 0755 %{buildroot}%{_datadir}/%{name}/src -cp -pr xml %{buildroot}%{_datadir}/%{name} -cp -pr src/example %{buildroot}%{_datadir}/%{name}/src -%fdupes -s %{buildroot}%{_datadir}/%{name} +install -dm 0755 %{buildroot}%{_datadir}/%{base_name}/src +cp -pr xml %{buildroot}%{_datadir}/%{base_name} +cp -pr src/example %{buildroot}%{_datadir}/%{base_name}/src +%fdupes -s %{buildroot}%{_datadir}/%{base_name} +%endif %files -f .mfiles %license LICENSE %doc README.md +%if %{without bootstrap} %files demo -%{_datadir}/%{name} +%{_datadir}/%{base_name} %files javadoc %license LICENSE -%{_javadocdir}/%{name} +%{_javadocdir}/%{base_name} +%endif %changelog From acfe1ce57a32bffb56343fe571080afa1925230d41b62ddf6a526d914e92bdad Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Wed, 23 Aug 2023 19:21:46 +0000 Subject: [PATCH 5/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=46 --- dom4j.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dom4j.spec b/dom4j.spec index ed1b1db..4f0c72d 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -111,12 +111,12 @@ build-jar-repository -s lib jaxen glassfish-jaxb-api install -dm 0755 %{buildroot}%{_javadir} install -pm 0644 target/%{base_name}-%{version}.jar %{buildroot}%{_javadir}/%{base_name}.jar +%if %{without bootstrap} # pom install -dm 0755 %{buildroot}%{_mavenpomdir} %{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}.pom %add_maven_depmap %{base_name}.pom %{base_name}.jar -a %{base_name}:%{base_name} -%if %{without bootstrap} # javadoc install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name} cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{base_name} @@ -127,19 +127,23 @@ install -dm 0755 %{buildroot}%{_datadir}/%{base_name}/src cp -pr xml %{buildroot}%{_datadir}/%{base_name} cp -pr src/example %{buildroot}%{_datadir}/%{base_name}/src %fdupes -s %{buildroot}%{_datadir}/%{base_name} -%endif %files -f .mfiles %license LICENSE %doc README.md -%if %{without bootstrap} %files demo %{_datadir}/%{base_name} %files javadoc %license LICENSE %{_javadocdir}/%{base_name} + +%else + +%files +%{_javadir}/%{base_name}.jar + %endif %changelog From bd17263ce94b6972f66e882a9f29b66d1a436ec7decfaded860ab1957482d0f1 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 24 Aug 2023 04:58:49 +0000 Subject: [PATCH 6/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=47 --- 0001-no-jaxen-dom4.patch | 713 --------------------------------------- _multibuild | 3 - dom4j.spec | 77 ++--- 3 files changed, 22 insertions(+), 771 deletions(-) delete mode 100644 0001-no-jaxen-dom4.patch delete mode 100644 _multibuild diff --git a/0001-no-jaxen-dom4.patch b/0001-no-jaxen-dom4.patch deleted file mode 100644 index 553a7f7..0000000 --- a/0001-no-jaxen-dom4.patch +++ /dev/null @@ -1,713 +0,0 @@ -From b494798add23c21d68b1dd54e8929095396516bb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fridrich=20=C5=A0trba?= -Date: Wed, 23 Aug 2023 20:33:23 +0200 -Subject: [PATCH] no-jaxen-dom4 - ---- - src/main/java/org/dom4j/DocumentFactory.java | 22 +- - src/main/java/org/dom4j/DocumentHelper.java | 16 - - .../java/org/dom4j/tree/AbstractNode.java | 4 - - .../org/dom4j/util/ProxyDocumentFactory.java | 4 - - .../java/org/dom4j/xpath/DefaultXPath.java | 409 ------------------ - .../java/org/dom4j/xpath/XPathPattern.java | 164 ------- - 6 files changed, 2 insertions(+), 617 deletions(-) - delete mode 100644 src/main/java/org/dom4j/xpath/DefaultXPath.java - delete mode 100644 src/main/java/org/dom4j/xpath/XPathPattern.java - -diff --git a/src/main/java/org/dom4j/DocumentFactory.java b/src/main/java/org/dom4j/DocumentFactory.java -index 9aaaa11..fa2bbb8 100644 ---- a/src/main/java/org/dom4j/DocumentFactory.java -+++ b/src/main/java/org/dom4j/DocumentFactory.java -@@ -27,8 +27,6 @@ import org.dom4j.tree.DefaultText; - import org.dom4j.tree.QNameCache; - import org.dom4j.util.SimpleSingleton; - import org.dom4j.util.SingletonStrategy; --import org.dom4j.xpath.DefaultXPath; --import org.dom4j.xpath.XPathPattern; - import org.jaxen.VariableContext; - - /** -@@ -219,7 +217,7 @@ public class DocumentFactory implements Serializable { - */ - public XPath createXPath(String xpathExpression) - throws InvalidXPathException { -- DefaultXPath xpath = new DefaultXPath(xpathExpression); -+ XPath xpath = createXPath(xpathExpression); - - if (xpathNamespaceURIs != null) { - xpath.setNamespaceURIs(xpathNamespaceURIs); -@@ -291,22 +289,6 @@ public class DocumentFactory implements Serializable { - // return new DefaultXPath( xpathFilterExpression ); - } - -- /** -- *

-- * createPattern parses the given XPath expression to create -- * an XSLT style {@link Pattern}instance which can then be used in an XSLT -- * processing model. -- *

-- * -- * @param xpathPattern -- * is the XPath pattern expression to create -- * -- * @return a new Pattern instance -- */ -- public Pattern createPattern(String xpathPattern) { -- return new XPathPattern(xpathPattern); -- } -- - // Properties - // ------------------------------------------------------------------------- - -@@ -445,4 +427,4 @@ public class DocumentFactory implements Serializable { - * POSSIBILITY OF SUCH DAMAGE. - * - * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. -- */ -\ No newline at end of file -+ */ -diff --git a/src/main/java/org/dom4j/DocumentHelper.java b/src/main/java/org/dom4j/DocumentHelper.java -index 865a51a..040770c 100644 ---- a/src/main/java/org/dom4j/DocumentHelper.java -+++ b/src/main/java/org/dom4j/DocumentHelper.java -@@ -160,22 +160,6 @@ public final class DocumentHelper { - return getDocumentFactory().createXPathFilter(xpathFilterExpression); - } - -- /** -- *

-- * createPattern parses the given XPath expression to create -- * an XSLT style {@link Pattern}instance which can then be used in an XSLT -- * processing model. -- *

-- * -- * @param xpathPattern -- * is the XPath pattern expression to create -- * -- * @return a new Pattern instance -- */ -- public static Pattern createPattern(String xpathPattern) { -- return getDocumentFactory().createPattern(xpathPattern); -- } -- - /** - *

- * selectNodes performs the given XPath expression on the -diff --git a/src/main/java/org/dom4j/tree/AbstractNode.java b/src/main/java/org/dom4j/tree/AbstractNode.java -index 3957c29..e8b14c7 100644 ---- a/src/main/java/org/dom4j/tree/AbstractNode.java -+++ b/src/main/java/org/dom4j/tree/AbstractNode.java -@@ -206,10 +206,6 @@ public abstract class AbstractNode implements Node, Cloneable, Serializable { - return getDocumentFactory().createXPathFilter(patternText); - } - -- public Pattern createPattern(String patternText) { -- return getDocumentFactory().createPattern(patternText); -- } -- - public Node asXPathResult(Element parent) { - if (supportsParent()) { - return this; -diff --git a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java -index 65624be..8bf7e57 100644 ---- a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java -+++ b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java -@@ -146,10 +146,6 @@ public abstract class ProxyDocumentFactory { - return proxy.createXPathFilter(xpathFilterExpression); - } - -- public Pattern createPattern(String xpathPattern) { -- return proxy.createPattern(xpathPattern); -- } -- - // Implementation methods - // ------------------------------------------------------------------------- - protected DocumentFactory getProxy() { -diff --git a/src/main/java/org/dom4j/xpath/DefaultXPath.java b/src/main/java/org/dom4j/xpath/DefaultXPath.java -deleted file mode 100644 -index f81eec5..0000000 ---- a/src/main/java/org/dom4j/xpath/DefaultXPath.java -+++ /dev/null -@@ -1,409 +0,0 @@ --/* -- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. -- * -- * This software is open source. -- * See the bottom of this file for the licence. -- */ -- --package org.dom4j.xpath; -- --import java.io.Serializable; --import java.util.Collections; --import java.util.Comparator; --import java.util.HashMap; --import java.util.HashSet; --import java.util.Iterator; --import java.util.List; --import java.util.Map; -- --import org.dom4j.InvalidXPathException; --import org.dom4j.Node; --import org.dom4j.NodeFilter; --import org.dom4j.XPathException; -- --import org.jaxen.FunctionContext; --import org.jaxen.JaxenException; --import org.jaxen.NamespaceContext; --import org.jaxen.SimpleNamespaceContext; --import org.jaxen.VariableContext; --import org.jaxen.XPath; --import org.jaxen.dom4j.Dom4jXPath; -- --/** -- *

-- * Default implementation of {@link org.dom4j.XPath}which uses the Jaxen project. -- *

-- * -- * @author bob mcwhirter -- * @author James Strachan -- */ --public class DefaultXPath implements org.dom4j.XPath, NodeFilter, Serializable { -- private String text; -- -- private XPath xpath; -- -- private NamespaceContext namespaceContext; -- -- /** -- * Construct an XPath -- * -- * @param text -- * DOCUMENT ME! -- * -- * @throws InvalidXPathException -- * DOCUMENT ME! -- */ -- public DefaultXPath(String text) throws InvalidXPathException { -- this.text = text; -- this.xpath = parse(text); -- } -- -- public String toString() { -- return "[XPath: " + xpath + "]"; -- } -- -- // XPath interface -- -- /** -- * Retrieve the textual XPath string used to initialize this Object -- * -- * @return The XPath string -- */ -- public String getText() { -- return text; -- } -- -- public FunctionContext getFunctionContext() { -- return xpath.getFunctionContext(); -- } -- -- public void setFunctionContext(FunctionContext functionContext) { -- xpath.setFunctionContext(functionContext); -- } -- -- public NamespaceContext getNamespaceContext() { -- return namespaceContext; -- } -- -- public void setNamespaceURIs(Map map) { -- setNamespaceContext(new SimpleNamespaceContext(map)); -- } -- -- public void setNamespaceContext(NamespaceContext namespaceContext) { -- this.namespaceContext = namespaceContext; -- xpath.setNamespaceContext(namespaceContext); -- } -- -- public VariableContext getVariableContext() { -- return xpath.getVariableContext(); -- } -- -- public void setVariableContext(VariableContext variableContext) { -- xpath.setVariableContext(variableContext); -- } -- -- public Object evaluate(Object context) { -- try { -- setNSContext(context); -- -- List answer = xpath.selectNodes(context); -- -- if ((answer != null) && (answer.size() == 1)) { -- return answer.get(0); -- } -- -- return answer; -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return null; -- } -- } -- -- public Object selectObject(Object context) { -- return evaluate(context); -- } -- -- public List selectNodes(Object context) { -- try { -- setNSContext(context); -- -- return (List) xpath.selectNodes(context); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return Collections.emptyList(); -- } -- } -- -- public List selectNodes(Object context, org.dom4j.XPath sortXPath) { -- List answer = selectNodes(context); -- sortXPath.sort(answer); -- -- return answer; -- } -- -- public List selectNodes(Object context, org.dom4j.XPath sortXPath, -- boolean distinct) { -- List answer = selectNodes(context); -- sortXPath.sort(answer, distinct); -- -- return answer; -- } -- -- public Node selectSingleNode(Object context) { -- try { -- setNSContext(context); -- -- Object answer = xpath.selectSingleNode(context); -- -- if (answer instanceof Node) { -- return (Node) answer; -- } -- -- if (answer == null) { -- return null; -- } -- -- throw new XPathException("The result of the XPath expression is " -- + "not a Node. It was: " + answer + " of type: " -- + answer.getClass().getName()); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return null; -- } -- } -- -- public String valueOf(Object context) { -- try { -- setNSContext(context); -- -- return xpath.stringValueOf(context); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return ""; -- } -- } -- -- public Number numberValueOf(Object context) { -- try { -- setNSContext(context); -- -- return xpath.numberValueOf(context); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return null; -- } -- } -- -- public boolean booleanValueOf(Object context) { -- try { -- setNSContext(context); -- -- return xpath.booleanValueOf(context); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return false; -- } -- } -- -- /** -- *

-- * sort sorts the given List of Nodes using this XPath -- * expression as a {@link Comparator}. -- *

-- * -- * @param list -- * is the list of Nodes to sort -- */ -- public void sort(List list) { -- sort(list, false); -- } -- -- /** -- *

-- * sort sorts the given List of Nodes using this XPath -- * expression as a {@link Comparator}and optionally removing duplicates. -- *

-- * -- * @param list -- * is the list of Nodes to sort -- * @param distinct -- * if true then duplicate values (using the sortXPath for -- * comparisions) will be removed from the List -- */ -- public void sort(List list, boolean distinct) { -- if ((list != null) && !list.isEmpty()) { -- int size = list.size(); -- HashMap sortValues = new HashMap(size); -- -- for (Node node : list) { -- Object expression = getCompareValue(node); -- sortValues.put(node, expression); -- } -- -- sort(list, sortValues); -- -- if (distinct) { -- removeDuplicates(list, sortValues); -- } -- } -- } -- -- public boolean matches(Node node) { -- try { -- setNSContext(node); -- -- List answer = xpath.selectNodes(node); -- -- if ((answer != null) && (answer.size() > 0)) { -- Object item = answer.get(0); -- -- if (item instanceof Boolean) { -- return (Boolean) item; -- } -- -- return answer.contains(node); -- } -- -- return false; -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return false; -- } -- } -- -- /** -- * Sorts the list based on the sortValues for each node -- * -- * @param list -- * DOCUMENT ME! -- * @param sortValues -- * DOCUMENT ME! -- */ -- protected void sort(List list, final Map sortValues) { -- Collections.sort(list, new Comparator() { -- public int compare(Node n1, Node n2) { -- Object o1 = sortValues.get(n1); -- Object o2 = sortValues.get(n2); -- -- if (o1 == o2) { -- return 0; -- } else if (o1 instanceof Comparable) { -- Comparable c1 = (Comparable) o1; -- -- return c1.compareTo(o2); -- } else if (o1 == null) { -- return 1; -- } else if (o2 == null) { -- return -1; -- } else { -- return o1.equals(o2) ? 0 : (-1); -- } -- } -- }); -- } -- -- // Implementation methods -- -- /** -- * Removes items from the list which have duplicate values -- * -- * @param list -- * DOCUMENT ME! -- * @param sortValues -- * DOCUMENT ME! -- */ -- protected void removeDuplicates(List list, Map sortValues) { -- // remove distinct -- HashSet distinctValues = new HashSet(); -- -- for (Iterator iter = list.iterator(); iter.hasNext();) { -- Node node = iter.next(); -- Object value = sortValues.get(node); -- -- if (distinctValues.contains(value)) { -- iter.remove(); -- } else { -- distinctValues.add(value); -- } -- } -- } -- -- /** -- * DOCUMENT ME! -- * -- * @param node -- * DOCUMENT ME! -- * -- * @return the node expression used for sorting comparisons -- */ -- protected Object getCompareValue(Node node) { -- return valueOf(node); -- } -- -- protected static XPath parse(String text) { -- try { -- return new Dom4jXPath(text); -- } catch (JaxenException e) { -- throw new InvalidXPathException(text, e.getMessage()); -- } catch (RuntimeException e) { -- } -- -- throw new InvalidXPathException(text); -- } -- -- protected void setNSContext(Object context) { -- if (namespaceContext == null) { -- xpath.setNamespaceContext(DefaultNamespaceContext.create(context)); -- } -- } -- -- protected void handleJaxenException(JaxenException exception) -- throws XPathException { -- throw new XPathException(text, exception); -- } --} -- --/* -- * Redistribution and use of this software and associated documentation -- * ("Software"), with or without modification, are permitted provided that the -- * following conditions are met: -- * -- * 1. Redistributions of source code must retain copyright statements and -- * notices. Redistributions must also contain a copy of this document. -- * -- * 2. Redistributions in binary form must reproduce the above copyright notice, -- * this list of conditions and the following disclaimer in the documentation -- * and/or other materials provided with the distribution. -- * -- * 3. The name "DOM4J" must not be used to endorse or promote products derived -- * from this Software without prior written permission of MetaStuff, Ltd. For -- * written permission, please contact dom4j-info@metastuff.com. -- * -- * 4. Products derived from this Software may not be called "DOM4J" nor may -- * "DOM4J" appear in their names without prior written permission of MetaStuff, -- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. -- * -- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org -- * -- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND -- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE -- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -- * POSSIBILITY OF SUCH DAMAGE. -- * -- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. -- */ -diff --git a/src/main/java/org/dom4j/xpath/XPathPattern.java b/src/main/java/org/dom4j/xpath/XPathPattern.java -deleted file mode 100644 -index 65d656b..0000000 ---- a/src/main/java/org/dom4j/xpath/XPathPattern.java -+++ /dev/null -@@ -1,164 +0,0 @@ --/* -- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. -- * -- * This software is open source. -- * See the bottom of this file for the licence. -- */ -- --package org.dom4j.xpath; -- --import java.util.ArrayList; --import java.util.Collections; -- --import org.dom4j.InvalidXPathException; --import org.dom4j.Node; --import org.dom4j.XPathException; -- --import org.jaxen.Context; --import org.jaxen.ContextSupport; --import org.jaxen.JaxenException; --import org.jaxen.SimpleNamespaceContext; --import org.jaxen.SimpleVariableContext; --import org.jaxen.VariableContext; --import org.jaxen.XPathFunctionContext; --import org.jaxen.dom4j.DocumentNavigator; --import org.jaxen.pattern.Pattern; --import org.jaxen.pattern.PatternParser; --import org.jaxen.saxpath.SAXPathException; -- --/** -- *

-- * XPathPattern is an implementation of Pattern which uses an -- * XPath xpath. -- *

-- * -- * @author James Strachan -- * @version $Revision: 1.18 $ -- */ --public class XPathPattern implements org.dom4j.rule.Pattern { -- private String text; -- -- private Pattern pattern; -- -- private Context context; -- -- public XPathPattern(Pattern pattern) { -- this.pattern = pattern; -- this.text = pattern.getText(); -- this.context = new Context(getContextSupport()); -- } -- -- public XPathPattern(String text) { -- this.text = text; -- this.context = new Context(getContextSupport()); -- -- try { -- this.pattern = PatternParser.parse(text); -- } catch (SAXPathException e) { -- throw new InvalidXPathException(text, e.getMessage()); -- } catch (RuntimeException e) { -- throw new InvalidXPathException(text); -- } -- } -- -- public boolean matches(Node node) { -- try { -- context.setNodeSet(Collections.singletonList(node)); -- -- return pattern.matches(node, context); -- } catch (JaxenException e) { -- handleJaxenException(e); -- -- return false; -- } -- } -- -- public String getText() { -- return text; -- } -- -- public double getPriority() { -- return pattern.getPriority(); -- } -- -- public org.dom4j.rule.Pattern[] getUnionPatterns() { -- Pattern[] patterns = pattern.getUnionPatterns(); -- -- if (patterns != null) { -- int size = patterns.length; -- XPathPattern[] answer = new XPathPattern[size]; -- -- for (int i = 0; i < size; i++) { -- answer[i] = new XPathPattern(patterns[i]); -- } -- -- return answer; -- } -- -- return null; -- } -- -- public short getMatchType() { -- return pattern.getMatchType(); -- } -- -- public String getMatchesNodeName() { -- return pattern.getMatchesNodeName(); -- } -- -- public void setVariableContext(VariableContext variableContext) { -- context.getContextSupport().setVariableContext(variableContext); -- } -- -- public String toString() { -- return "[XPathPattern: text: " + text + " Pattern: " + pattern + "]"; -- } -- -- protected ContextSupport getContextSupport() { -- return new ContextSupport(new SimpleNamespaceContext(), -- XPathFunctionContext.getInstance(), -- new SimpleVariableContext(), DocumentNavigator.getInstance()); -- } -- -- protected void handleJaxenException(JaxenException exception) -- throws XPathException { -- throw new XPathException(text, exception); -- } --} -- --/* -- * Redistribution and use of this software and associated documentation -- * ("Software"), with or without modification, are permitted provided that the -- * following conditions are met: -- * -- * 1. Redistributions of source code must retain copyright statements and -- * notices. Redistributions must also contain a copy of this document. -- * -- * 2. Redistributions in binary form must reproduce the above copyright notice, -- * this list of conditions and the following disclaimer in the documentation -- * and/or other materials provided with the distribution. -- * -- * 3. The name "DOM4J" must not be used to endorse or promote products derived -- * from this Software without prior written permission of MetaStuff, Ltd. For -- * written permission, please contact dom4j-info@metastuff.com. -- * -- * 4. Products derived from this Software may not be called "DOM4J" nor may -- * "DOM4J" appear in their names without prior written permission of MetaStuff, -- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. -- * -- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org -- * -- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND -- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE -- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -- * POSSIBILITY OF SUCH DAMAGE. -- * -- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. -- */ --- -2.41.0 - diff --git a/_multibuild b/_multibuild deleted file mode 100644 index 655ec81..0000000 --- a/_multibuild +++ /dev/null @@ -1,3 +0,0 @@ - - bootstrap - diff --git a/dom4j.spec b/dom4j.spec index 4f0c72d..60b278f 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -1,5 +1,5 @@ # -# spec file +# spec file for package dom4j # # Copyright (c) 2023 SUSE LLC # Copyright (c) 2000-2007, JPackage Project @@ -17,53 +17,32 @@ # -%global base_name dom4j -%global flavor @BUILD_FLAVOR@%{nil} -%if "%{flavor}" == "bootstrap" -%bcond_without bootstrap -%else -%bcond_with bootstrap -%endif +Name: dom4j Version: 2.1.4 Release: 0 Summary: Open Source XML framework for Java License: BSD-3-Clause URL: https://dom4j.github.io/ -Source0: %{base_name}-%{version}.tar.xz -Source1: https://repo1.maven.org/maven2/org/%{base_name}/%{base_name}/%{version}/%{base_name}-%{version}.pom -Source2: %{base_name}-build.xml -Patch0: 0001-no-jaxen-dom4.patch +Source0: %{name}-%{version}.tar.xz +Source1: https://repo1.maven.org/maven2/org/%{name}/%{name}/%{version}/%{name}-%{version}.pom +Source2: %{name}-build.xml BuildRequires: ant BuildRequires: fdupes BuildRequires: glassfish-jaxb-api BuildRequires: javapackages-local >= 6 -Obsoletes: %{base_name}-manual < %{version} -BuildArch: noarch -%if %{with bootstrap} -Name: %{base_name}-bootstrap -%else -Name: %{base_name} -%endif -%if %{without bootstrap} -BuildRequires: fdupes -BuildRequires: jaxen -Conflicts: %{base_name}-bootstrap -Obsoletes: %{base_name}-bootstrap -%else BuildRequires: jaxen-bootstrap -Conflicts: %{base_name} -%endif +Obsoletes: %{name}-manual < %{version} +BuildArch: noarch %description dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. -%if %{without bootstrap} %package demo Summary: Open Source XML framework for Java - demo Group: Development/Libraries/Java -Requires: %{base_name} = %{version} +Requires: %{name} = %{version} %description demo dom4j is an Open Source XML framework for Java. dom4j allows you to read, @@ -71,17 +50,13 @@ write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. %package javadoc -Summary: Javadoc for %{base_name} +Summary: Javadoc for %{name} %description javadoc -Javadoc for %{base_name}. -%endif +Javadoc for %{name}. %prep -%setup -q -n %{base_name}-%{version} -%if %{with bootstrap} -%patch0 -p1 -%endif +%autosetup -p1 cp %{SOURCE1} pom.xml cp %{SOURCE2} build.xml @@ -109,41 +84,33 @@ build-jar-repository -s lib jaxen glassfish-jaxb-api # jar install -dm 0755 %{buildroot}%{_javadir} -install -pm 0644 target/%{base_name}-%{version}.jar %{buildroot}%{_javadir}/%{base_name}.jar +install -pm 0644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar -%if %{without bootstrap} # pom install -dm 0755 %{buildroot}%{_mavenpomdir} -%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}.pom -%add_maven_depmap %{base_name}.pom %{base_name}.jar -a %{base_name}:%{base_name} +%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom +%add_maven_depmap %{name}.pom %{name}.jar -a %{name}:%{name} # javadoc -install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name} -cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{base_name} +install -dm 0755 %{buildroot}%{_javadocdir}/%{name} +cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{name} %fdupes -s %{buildroot}%{_javadocdir} # demo -install -dm 0755 %{buildroot}%{_datadir}/%{base_name}/src -cp -pr xml %{buildroot}%{_datadir}/%{base_name} -cp -pr src/example %{buildroot}%{_datadir}/%{base_name}/src -%fdupes -s %{buildroot}%{_datadir}/%{base_name} +install -dm 0755 %{buildroot}%{_datadir}/%{name}/src +cp -pr xml %{buildroot}%{_datadir}/%{name} +cp -pr src/example %{buildroot}%{_datadir}/%{name}/src +%fdupes -s %{buildroot}%{_datadir}/%{name} %files -f .mfiles %license LICENSE %doc README.md %files demo -%{_datadir}/%{base_name} +%{_datadir}/%{name} %files javadoc %license LICENSE -%{_javadocdir}/%{base_name} - -%else - -%files -%{_javadir}/%{base_name}.jar - -%endif +%{_javadocdir}/%{name} %changelog From 96b275ece5d27118d13e5c45b3862734fbf6418eed8bf4b30e53218c31d06243 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 24 Aug 2023 05:14:44 +0000 Subject: [PATCH 7/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=48 --- dom4j.changes | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/dom4j.changes b/dom4j.changes index 1566f65..dc36af5 100644 --- a/dom4j.changes +++ b/dom4j.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Thu Aug 24 04:59:20 UTC 2023 - Fridrich Strba + +- Upgrade to upstream version 2.1.4 + * Improvements and potentially breaking changes + + Added new factory method + org.dom4j.io.SAXReader.createDefault(). It has more secure + defaults than new SAXReader(), which uses system + XMLReaderFactory.createXMLReader() or + SAXParserFactory.newInstance().newSAXParser(). + + If you use some optional dependency of dom4j (for example + Jaxen, xsdlib etc.), you need to specify an explicit + dependency on it in your project. They are no longer marked as + a mandatory transitive dependency by dom4j. + + Following SAX parser features are disabled by default in + DocumentHelper.parse() for security reasons (they were enabled + in previous versions): + ° http://xml.org/sax/properties/external-general-entities + ° http://xml.org/sax/properties/external-parameter-entities + * Other changes: + + updated pull-parser version + + Reuse the writeAttribute method in writeAttributes + + support build on OS with non-UTF8 as default charset + + Gradle: add an automatic module name + + Use Correct License Name "Plexus" + + Possible vulnerability of DocumentHelper.parseText() to XML + injection + + CVS directories left in the source tree + + XMLWriter does not escape supplementary unicode characters + correctly + + writer.writeOpen(x) doesn't write namespaces + + concurrency problem with QNameCache + + all dependencies are optional + + SAXReader: hardcoded namespace features + + validate QNames + + StringIndexOutOfBoundsException in + XMLWriter.writeElementContent() + + TreeNode has grown some generics + + QName serialization fix + + DocumentException initialize with nested exception + + Accidentally occurring error in a multi-threaded test + + compatibility with W3C DOM Level 3 + + use Java generics +- Removed patches: + * dom4j-1.6.1-bug1618750.patch + * dom4j-CVE-2018-1000632.patch + * dom4j-CVE-2020-10683.patch + * dom4j-enable-stax-datatypes.patch + * dom4j-javadoc.patch + * dom4j-sourcetarget.patch + + not needed with this version + ------------------------------------------------------------------- Mon Jul 24 19:38:26 UTC 2023 - Fridrich Strba @@ -32,7 +84,7 @@ Fri Jan 25 11:10:16 UTC 2019 - Cédric Bosdonnat - Build STAXEventReader, STAXEventWriter and the data types. [bsc#1123158] - * Added patch dom4j-enable-stax-datatypes.patch + * Added patch dom4j-enable-stax-datatypes.patch ------------------------------------------------------------------- Tue Sep 18 10:31:28 UTC 2018 - pmonrealgonzalez@suse.com From 2825dcdbea55122f07b865ba3cdedfea547134497a6c4776c608b6de9f67ccb0 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 24 Aug 2023 05:16:24 +0000 Subject: [PATCH 8/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=49 --- 0001-no-jaxen-dom4.patch | 713 +++++++++++++++++++++++++++++++++++++++ _multibuild | 3 + dom4j.spec | 77 +++-- 3 files changed, 771 insertions(+), 22 deletions(-) create mode 100644 0001-no-jaxen-dom4.patch create mode 100644 _multibuild diff --git a/0001-no-jaxen-dom4.patch b/0001-no-jaxen-dom4.patch new file mode 100644 index 0000000..553a7f7 --- /dev/null +++ b/0001-no-jaxen-dom4.patch @@ -0,0 +1,713 @@ +From b494798add23c21d68b1dd54e8929095396516bb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fridrich=20=C5=A0trba?= +Date: Wed, 23 Aug 2023 20:33:23 +0200 +Subject: [PATCH] no-jaxen-dom4 + +--- + src/main/java/org/dom4j/DocumentFactory.java | 22 +- + src/main/java/org/dom4j/DocumentHelper.java | 16 - + .../java/org/dom4j/tree/AbstractNode.java | 4 - + .../org/dom4j/util/ProxyDocumentFactory.java | 4 - + .../java/org/dom4j/xpath/DefaultXPath.java | 409 ------------------ + .../java/org/dom4j/xpath/XPathPattern.java | 164 ------- + 6 files changed, 2 insertions(+), 617 deletions(-) + delete mode 100644 src/main/java/org/dom4j/xpath/DefaultXPath.java + delete mode 100644 src/main/java/org/dom4j/xpath/XPathPattern.java + +diff --git a/src/main/java/org/dom4j/DocumentFactory.java b/src/main/java/org/dom4j/DocumentFactory.java +index 9aaaa11..fa2bbb8 100644 +--- a/src/main/java/org/dom4j/DocumentFactory.java ++++ b/src/main/java/org/dom4j/DocumentFactory.java +@@ -27,8 +27,6 @@ import org.dom4j.tree.DefaultText; + import org.dom4j.tree.QNameCache; + import org.dom4j.util.SimpleSingleton; + import org.dom4j.util.SingletonStrategy; +-import org.dom4j.xpath.DefaultXPath; +-import org.dom4j.xpath.XPathPattern; + import org.jaxen.VariableContext; + + /** +@@ -219,7 +217,7 @@ public class DocumentFactory implements Serializable { + */ + public XPath createXPath(String xpathExpression) + throws InvalidXPathException { +- DefaultXPath xpath = new DefaultXPath(xpathExpression); ++ XPath xpath = createXPath(xpathExpression); + + if (xpathNamespaceURIs != null) { + xpath.setNamespaceURIs(xpathNamespaceURIs); +@@ -291,22 +289,6 @@ public class DocumentFactory implements Serializable { + // return new DefaultXPath( xpathFilterExpression ); + } + +- /** +- *

+- * createPattern parses the given XPath expression to create +- * an XSLT style {@link Pattern}instance which can then be used in an XSLT +- * processing model. +- *

+- * +- * @param xpathPattern +- * is the XPath pattern expression to create +- * +- * @return a new Pattern instance +- */ +- public Pattern createPattern(String xpathPattern) { +- return new XPathPattern(xpathPattern); +- } +- + // Properties + // ------------------------------------------------------------------------- + +@@ -445,4 +427,4 @@ public class DocumentFactory implements Serializable { + * POSSIBILITY OF SUCH DAMAGE. + * + * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +\ No newline at end of file ++ */ +diff --git a/src/main/java/org/dom4j/DocumentHelper.java b/src/main/java/org/dom4j/DocumentHelper.java +index 865a51a..040770c 100644 +--- a/src/main/java/org/dom4j/DocumentHelper.java ++++ b/src/main/java/org/dom4j/DocumentHelper.java +@@ -160,22 +160,6 @@ public final class DocumentHelper { + return getDocumentFactory().createXPathFilter(xpathFilterExpression); + } + +- /** +- *

+- * createPattern parses the given XPath expression to create +- * an XSLT style {@link Pattern}instance which can then be used in an XSLT +- * processing model. +- *

+- * +- * @param xpathPattern +- * is the XPath pattern expression to create +- * +- * @return a new Pattern instance +- */ +- public static Pattern createPattern(String xpathPattern) { +- return getDocumentFactory().createPattern(xpathPattern); +- } +- + /** + *

+ * selectNodes performs the given XPath expression on the +diff --git a/src/main/java/org/dom4j/tree/AbstractNode.java b/src/main/java/org/dom4j/tree/AbstractNode.java +index 3957c29..e8b14c7 100644 +--- a/src/main/java/org/dom4j/tree/AbstractNode.java ++++ b/src/main/java/org/dom4j/tree/AbstractNode.java +@@ -206,10 +206,6 @@ public abstract class AbstractNode implements Node, Cloneable, Serializable { + return getDocumentFactory().createXPathFilter(patternText); + } + +- public Pattern createPattern(String patternText) { +- return getDocumentFactory().createPattern(patternText); +- } +- + public Node asXPathResult(Element parent) { + if (supportsParent()) { + return this; +diff --git a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java +index 65624be..8bf7e57 100644 +--- a/src/main/java/org/dom4j/util/ProxyDocumentFactory.java ++++ b/src/main/java/org/dom4j/util/ProxyDocumentFactory.java +@@ -146,10 +146,6 @@ public abstract class ProxyDocumentFactory { + return proxy.createXPathFilter(xpathFilterExpression); + } + +- public Pattern createPattern(String xpathPattern) { +- return proxy.createPattern(xpathPattern); +- } +- + // Implementation methods + // ------------------------------------------------------------------------- + protected DocumentFactory getProxy() { +diff --git a/src/main/java/org/dom4j/xpath/DefaultXPath.java b/src/main/java/org/dom4j/xpath/DefaultXPath.java +deleted file mode 100644 +index f81eec5..0000000 +--- a/src/main/java/org/dom4j/xpath/DefaultXPath.java ++++ /dev/null +@@ -1,409 +0,0 @@ +-/* +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- * +- * This software is open source. +- * See the bottom of this file for the licence. +- */ +- +-package org.dom4j.xpath; +- +-import java.io.Serializable; +-import java.util.Collections; +-import java.util.Comparator; +-import java.util.HashMap; +-import java.util.HashSet; +-import java.util.Iterator; +-import java.util.List; +-import java.util.Map; +- +-import org.dom4j.InvalidXPathException; +-import org.dom4j.Node; +-import org.dom4j.NodeFilter; +-import org.dom4j.XPathException; +- +-import org.jaxen.FunctionContext; +-import org.jaxen.JaxenException; +-import org.jaxen.NamespaceContext; +-import org.jaxen.SimpleNamespaceContext; +-import org.jaxen.VariableContext; +-import org.jaxen.XPath; +-import org.jaxen.dom4j.Dom4jXPath; +- +-/** +- *

+- * Default implementation of {@link org.dom4j.XPath}which uses the Jaxen project. +- *

+- * +- * @author bob mcwhirter +- * @author James Strachan +- */ +-public class DefaultXPath implements org.dom4j.XPath, NodeFilter, Serializable { +- private String text; +- +- private XPath xpath; +- +- private NamespaceContext namespaceContext; +- +- /** +- * Construct an XPath +- * +- * @param text +- * DOCUMENT ME! +- * +- * @throws InvalidXPathException +- * DOCUMENT ME! +- */ +- public DefaultXPath(String text) throws InvalidXPathException { +- this.text = text; +- this.xpath = parse(text); +- } +- +- public String toString() { +- return "[XPath: " + xpath + "]"; +- } +- +- // XPath interface +- +- /** +- * Retrieve the textual XPath string used to initialize this Object +- * +- * @return The XPath string +- */ +- public String getText() { +- return text; +- } +- +- public FunctionContext getFunctionContext() { +- return xpath.getFunctionContext(); +- } +- +- public void setFunctionContext(FunctionContext functionContext) { +- xpath.setFunctionContext(functionContext); +- } +- +- public NamespaceContext getNamespaceContext() { +- return namespaceContext; +- } +- +- public void setNamespaceURIs(Map map) { +- setNamespaceContext(new SimpleNamespaceContext(map)); +- } +- +- public void setNamespaceContext(NamespaceContext namespaceContext) { +- this.namespaceContext = namespaceContext; +- xpath.setNamespaceContext(namespaceContext); +- } +- +- public VariableContext getVariableContext() { +- return xpath.getVariableContext(); +- } +- +- public void setVariableContext(VariableContext variableContext) { +- xpath.setVariableContext(variableContext); +- } +- +- public Object evaluate(Object context) { +- try { +- setNSContext(context); +- +- List answer = xpath.selectNodes(context); +- +- if ((answer != null) && (answer.size() == 1)) { +- return answer.get(0); +- } +- +- return answer; +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public Object selectObject(Object context) { +- return evaluate(context); +- } +- +- public List selectNodes(Object context) { +- try { +- setNSContext(context); +- +- return (List) xpath.selectNodes(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return Collections.emptyList(); +- } +- } +- +- public List selectNodes(Object context, org.dom4j.XPath sortXPath) { +- List answer = selectNodes(context); +- sortXPath.sort(answer); +- +- return answer; +- } +- +- public List selectNodes(Object context, org.dom4j.XPath sortXPath, +- boolean distinct) { +- List answer = selectNodes(context); +- sortXPath.sort(answer, distinct); +- +- return answer; +- } +- +- public Node selectSingleNode(Object context) { +- try { +- setNSContext(context); +- +- Object answer = xpath.selectSingleNode(context); +- +- if (answer instanceof Node) { +- return (Node) answer; +- } +- +- if (answer == null) { +- return null; +- } +- +- throw new XPathException("The result of the XPath expression is " +- + "not a Node. It was: " + answer + " of type: " +- + answer.getClass().getName()); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public String valueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.stringValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return ""; +- } +- } +- +- public Number numberValueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.numberValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return null; +- } +- } +- +- public boolean booleanValueOf(Object context) { +- try { +- setNSContext(context); +- +- return xpath.booleanValueOf(context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- /** +- *

+- * sort sorts the given List of Nodes using this XPath +- * expression as a {@link Comparator}. +- *

+- * +- * @param list +- * is the list of Nodes to sort +- */ +- public void sort(List list) { +- sort(list, false); +- } +- +- /** +- *

+- * sort sorts the given List of Nodes using this XPath +- * expression as a {@link Comparator}and optionally removing duplicates. +- *

+- * +- * @param list +- * is the list of Nodes to sort +- * @param distinct +- * if true then duplicate values (using the sortXPath for +- * comparisions) will be removed from the List +- */ +- public void sort(List list, boolean distinct) { +- if ((list != null) && !list.isEmpty()) { +- int size = list.size(); +- HashMap sortValues = new HashMap(size); +- +- for (Node node : list) { +- Object expression = getCompareValue(node); +- sortValues.put(node, expression); +- } +- +- sort(list, sortValues); +- +- if (distinct) { +- removeDuplicates(list, sortValues); +- } +- } +- } +- +- public boolean matches(Node node) { +- try { +- setNSContext(node); +- +- List answer = xpath.selectNodes(node); +- +- if ((answer != null) && (answer.size() > 0)) { +- Object item = answer.get(0); +- +- if (item instanceof Boolean) { +- return (Boolean) item; +- } +- +- return answer.contains(node); +- } +- +- return false; +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- /** +- * Sorts the list based on the sortValues for each node +- * +- * @param list +- * DOCUMENT ME! +- * @param sortValues +- * DOCUMENT ME! +- */ +- protected void sort(List list, final Map sortValues) { +- Collections.sort(list, new Comparator() { +- public int compare(Node n1, Node n2) { +- Object o1 = sortValues.get(n1); +- Object o2 = sortValues.get(n2); +- +- if (o1 == o2) { +- return 0; +- } else if (o1 instanceof Comparable) { +- Comparable c1 = (Comparable) o1; +- +- return c1.compareTo(o2); +- } else if (o1 == null) { +- return 1; +- } else if (o2 == null) { +- return -1; +- } else { +- return o1.equals(o2) ? 0 : (-1); +- } +- } +- }); +- } +- +- // Implementation methods +- +- /** +- * Removes items from the list which have duplicate values +- * +- * @param list +- * DOCUMENT ME! +- * @param sortValues +- * DOCUMENT ME! +- */ +- protected void removeDuplicates(List list, Map sortValues) { +- // remove distinct +- HashSet distinctValues = new HashSet(); +- +- for (Iterator iter = list.iterator(); iter.hasNext();) { +- Node node = iter.next(); +- Object value = sortValues.get(node); +- +- if (distinctValues.contains(value)) { +- iter.remove(); +- } else { +- distinctValues.add(value); +- } +- } +- } +- +- /** +- * DOCUMENT ME! +- * +- * @param node +- * DOCUMENT ME! +- * +- * @return the node expression used for sorting comparisons +- */ +- protected Object getCompareValue(Node node) { +- return valueOf(node); +- } +- +- protected static XPath parse(String text) { +- try { +- return new Dom4jXPath(text); +- } catch (JaxenException e) { +- throw new InvalidXPathException(text, e.getMessage()); +- } catch (RuntimeException e) { +- } +- +- throw new InvalidXPathException(text); +- } +- +- protected void setNSContext(Object context) { +- if (namespaceContext == null) { +- xpath.setNamespaceContext(DefaultNamespaceContext.create(context)); +- } +- } +- +- protected void handleJaxenException(JaxenException exception) +- throws XPathException { +- throw new XPathException(text, exception); +- } +-} +- +-/* +- * Redistribution and use of this software and associated documentation +- * ("Software"), with or without modification, are permitted provided that the +- * following conditions are met: +- * +- * 1. Redistributions of source code must retain copyright statements and +- * notices. Redistributions must also contain a copy of this document. +- * +- * 2. Redistributions in binary form must reproduce the above copyright notice, +- * this list of conditions and the following disclaimer in the documentation +- * and/or other materials provided with the distribution. +- * +- * 3. The name "DOM4J" must not be used to endorse or promote products derived +- * from this Software without prior written permission of MetaStuff, Ltd. For +- * written permission, please contact dom4j-info@metastuff.com. +- * +- * 4. Products derived from this Software may not be called "DOM4J" nor may +- * "DOM4J" appear in their names without prior written permission of MetaStuff, +- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. +- * +- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org +- * +- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE +- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +- * POSSIBILITY OF SUCH DAMAGE. +- * +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +diff --git a/src/main/java/org/dom4j/xpath/XPathPattern.java b/src/main/java/org/dom4j/xpath/XPathPattern.java +deleted file mode 100644 +index 65d656b..0000000 +--- a/src/main/java/org/dom4j/xpath/XPathPattern.java ++++ /dev/null +@@ -1,164 +0,0 @@ +-/* +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- * +- * This software is open source. +- * See the bottom of this file for the licence. +- */ +- +-package org.dom4j.xpath; +- +-import java.util.ArrayList; +-import java.util.Collections; +- +-import org.dom4j.InvalidXPathException; +-import org.dom4j.Node; +-import org.dom4j.XPathException; +- +-import org.jaxen.Context; +-import org.jaxen.ContextSupport; +-import org.jaxen.JaxenException; +-import org.jaxen.SimpleNamespaceContext; +-import org.jaxen.SimpleVariableContext; +-import org.jaxen.VariableContext; +-import org.jaxen.XPathFunctionContext; +-import org.jaxen.dom4j.DocumentNavigator; +-import org.jaxen.pattern.Pattern; +-import org.jaxen.pattern.PatternParser; +-import org.jaxen.saxpath.SAXPathException; +- +-/** +- *

+- * XPathPattern is an implementation of Pattern which uses an +- * XPath xpath. +- *

+- * +- * @author James Strachan +- * @version $Revision: 1.18 $ +- */ +-public class XPathPattern implements org.dom4j.rule.Pattern { +- private String text; +- +- private Pattern pattern; +- +- private Context context; +- +- public XPathPattern(Pattern pattern) { +- this.pattern = pattern; +- this.text = pattern.getText(); +- this.context = new Context(getContextSupport()); +- } +- +- public XPathPattern(String text) { +- this.text = text; +- this.context = new Context(getContextSupport()); +- +- try { +- this.pattern = PatternParser.parse(text); +- } catch (SAXPathException e) { +- throw new InvalidXPathException(text, e.getMessage()); +- } catch (RuntimeException e) { +- throw new InvalidXPathException(text); +- } +- } +- +- public boolean matches(Node node) { +- try { +- context.setNodeSet(Collections.singletonList(node)); +- +- return pattern.matches(node, context); +- } catch (JaxenException e) { +- handleJaxenException(e); +- +- return false; +- } +- } +- +- public String getText() { +- return text; +- } +- +- public double getPriority() { +- return pattern.getPriority(); +- } +- +- public org.dom4j.rule.Pattern[] getUnionPatterns() { +- Pattern[] patterns = pattern.getUnionPatterns(); +- +- if (patterns != null) { +- int size = patterns.length; +- XPathPattern[] answer = new XPathPattern[size]; +- +- for (int i = 0; i < size; i++) { +- answer[i] = new XPathPattern(patterns[i]); +- } +- +- return answer; +- } +- +- return null; +- } +- +- public short getMatchType() { +- return pattern.getMatchType(); +- } +- +- public String getMatchesNodeName() { +- return pattern.getMatchesNodeName(); +- } +- +- public void setVariableContext(VariableContext variableContext) { +- context.getContextSupport().setVariableContext(variableContext); +- } +- +- public String toString() { +- return "[XPathPattern: text: " + text + " Pattern: " + pattern + "]"; +- } +- +- protected ContextSupport getContextSupport() { +- return new ContextSupport(new SimpleNamespaceContext(), +- XPathFunctionContext.getInstance(), +- new SimpleVariableContext(), DocumentNavigator.getInstance()); +- } +- +- protected void handleJaxenException(JaxenException exception) +- throws XPathException { +- throw new XPathException(text, exception); +- } +-} +- +-/* +- * Redistribution and use of this software and associated documentation +- * ("Software"), with or without modification, are permitted provided that the +- * following conditions are met: +- * +- * 1. Redistributions of source code must retain copyright statements and +- * notices. Redistributions must also contain a copy of this document. +- * +- * 2. Redistributions in binary form must reproduce the above copyright notice, +- * this list of conditions and the following disclaimer in the documentation +- * and/or other materials provided with the distribution. +- * +- * 3. The name "DOM4J" must not be used to endorse or promote products derived +- * from this Software without prior written permission of MetaStuff, Ltd. For +- * written permission, please contact dom4j-info@metastuff.com. +- * +- * 4. Products derived from this Software may not be called "DOM4J" nor may +- * "DOM4J" appear in their names without prior written permission of MetaStuff, +- * Ltd. DOM4J is a registered trademark of MetaStuff, Ltd. +- * +- * 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org +- * +- * THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND +- * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE +- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +- * POSSIBILITY OF SUCH DAMAGE. +- * +- * Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved. +- */ +-- +2.41.0 + diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..655ec81 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + bootstrap + diff --git a/dom4j.spec b/dom4j.spec index 60b278f..4f0c72d 100644 --- a/dom4j.spec +++ b/dom4j.spec @@ -1,5 +1,5 @@ # -# spec file for package dom4j +# spec file # # Copyright (c) 2023 SUSE LLC # Copyright (c) 2000-2007, JPackage Project @@ -17,32 +17,53 @@ # -Name: dom4j +%global base_name dom4j +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "bootstrap" +%bcond_without bootstrap +%else +%bcond_with bootstrap +%endif Version: 2.1.4 Release: 0 Summary: Open Source XML framework for Java License: BSD-3-Clause URL: https://dom4j.github.io/ -Source0: %{name}-%{version}.tar.xz -Source1: https://repo1.maven.org/maven2/org/%{name}/%{name}/%{version}/%{name}-%{version}.pom -Source2: %{name}-build.xml +Source0: %{base_name}-%{version}.tar.xz +Source1: https://repo1.maven.org/maven2/org/%{base_name}/%{base_name}/%{version}/%{base_name}-%{version}.pom +Source2: %{base_name}-build.xml +Patch0: 0001-no-jaxen-dom4.patch BuildRequires: ant BuildRequires: fdupes BuildRequires: glassfish-jaxb-api BuildRequires: javapackages-local >= 6 -BuildRequires: jaxen-bootstrap -Obsoletes: %{name}-manual < %{version} +Obsoletes: %{base_name}-manual < %{version} BuildArch: noarch +%if %{with bootstrap} +Name: %{base_name}-bootstrap +%else +Name: %{base_name} +%endif +%if %{without bootstrap} +BuildRequires: fdupes +BuildRequires: jaxen +Conflicts: %{base_name}-bootstrap +Obsoletes: %{base_name}-bootstrap +%else +BuildRequires: jaxen-bootstrap +Conflicts: %{base_name} +%endif %description dom4j is an Open Source XML framework for Java. dom4j allows you to read, write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. +%if %{without bootstrap} %package demo Summary: Open Source XML framework for Java - demo Group: Development/Libraries/Java -Requires: %{name} = %{version} +Requires: %{base_name} = %{version} %description demo dom4j is an Open Source XML framework for Java. dom4j allows you to read, @@ -50,13 +71,17 @@ write, navigate, create and modify XML documents. dom4j integrates with DOM and SAX and is seamlessly integrated with full XPath support. %package javadoc -Summary: Javadoc for %{name} +Summary: Javadoc for %{base_name} %description javadoc -Javadoc for %{name}. +Javadoc for %{base_name}. +%endif %prep -%autosetup -p1 +%setup -q -n %{base_name}-%{version} +%if %{with bootstrap} +%patch0 -p1 +%endif cp %{SOURCE1} pom.xml cp %{SOURCE2} build.xml @@ -84,33 +109,41 @@ build-jar-repository -s lib jaxen glassfish-jaxb-api # jar install -dm 0755 %{buildroot}%{_javadir} -install -pm 0644 target/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}.jar +install -pm 0644 target/%{base_name}-%{version}.jar %{buildroot}%{_javadir}/%{base_name}.jar +%if %{without bootstrap} # pom install -dm 0755 %{buildroot}%{_mavenpomdir} -%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{name}.pom -%add_maven_depmap %{name}.pom %{name}.jar -a %{name}:%{name} +%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{base_name}.pom +%add_maven_depmap %{base_name}.pom %{base_name}.jar -a %{base_name}:%{base_name} # javadoc -install -dm 0755 %{buildroot}%{_javadocdir}/%{name} -cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{name} +install -dm 0755 %{buildroot}%{_javadocdir}/%{base_name} +cp -r target/site/apidocs %{buildroot}%{_javadocdir}/%{base_name} %fdupes -s %{buildroot}%{_javadocdir} # demo -install -dm 0755 %{buildroot}%{_datadir}/%{name}/src -cp -pr xml %{buildroot}%{_datadir}/%{name} -cp -pr src/example %{buildroot}%{_datadir}/%{name}/src -%fdupes -s %{buildroot}%{_datadir}/%{name} +install -dm 0755 %{buildroot}%{_datadir}/%{base_name}/src +cp -pr xml %{buildroot}%{_datadir}/%{base_name} +cp -pr src/example %{buildroot}%{_datadir}/%{base_name}/src +%fdupes -s %{buildroot}%{_datadir}/%{base_name} %files -f .mfiles %license LICENSE %doc README.md %files demo -%{_datadir}/%{name} +%{_datadir}/%{base_name} %files javadoc %license LICENSE -%{_javadocdir}/%{name} +%{_javadocdir}/%{base_name} + +%else + +%files +%{_javadir}/%{base_name}.jar + +%endif %changelog From 8da072584a68775581aa9745eaa40888465d13ceedaf0f8211c1ed5a20f01aeb Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 24 Aug 2023 10:11:41 +0000 Subject: [PATCH 9/9] OBS-URL: https://build.opensuse.org/package/show/Java:packages/dom4j?expand=0&rev=50 --- dom4j.changes | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dom4j.changes b/dom4j.changes index dc36af5..3871fda 100644 --- a/dom4j.changes +++ b/dom4j.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Thu Aug 24 10:08:25 UTC 2023 - Fridrich Strba + +- Make a separate flavour for a minimal dom4j-bootstrap package + used to build jaxen and full dom4j +- Added patch: + * 0001-no-jaxen-dom4.patch + * for the bootstrap package, patch out the code that requires + jaxen with dom4j support to build + ------------------------------------------------------------------- Thu Aug 24 04:59:20 UTC 2023 - Fridrich Strba