git: 860aa846f7d9 - main - textproc/xincluder: Fix processing using JDOM

From: Fernando Apesteguía <fernape_at_FreeBSD.org>
Date: Sat, 22 Jul 2023 11:26:07 UTC
The branch main has been updated by fernape:

URL: https://cgit.FreeBSD.org/ports/commit/?id=860aa846f7d9b756fc020b7efa4ed086d9675c21

commit 860aa846f7d9b756fc020b7efa4ed086d9675c21
Author:     Marcin Cieślak <saper@saper.info>
AuthorDate: 2023-07-21 14:59:58 +0000
Commit:     Fernando Apesteguía <fernape@FreeBSD.org>
CommitDate: 2023-07-22 11:25:48 +0000

    textproc/xincluder: Fix processing using JDOM
    
    JDOM could not be used due to mismatch with the included JDOM.
    
    PR:             272559
    Reported by:    saper@saper.info
---
 textproc/xincluder/Makefile                        | 18 +++++++++++++---
 ...-src_com_elharo_xml_xinclude_JDOMXIncluder.java | 24 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/textproc/xincluder/Makefile b/textproc/xincluder/Makefile
index d882781a5a81..247ce5c9a7df 100644
--- a/textproc/xincluder/Makefile
+++ b/textproc/xincluder/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	xincluder
 PORTVERSION=	1.0.d11
-PORTREVISION=	6
+PORTREVISION=	7
 CATEGORIES=	textproc java
 MASTER_SITES=	ftp://ftp.ibiblio.org/pub/languages/java/javafaq/
 DISTNAME=	${PORTNAME}-1.0d11
@@ -12,22 +12,34 @@ WWW=		http://xincluder.sourceforge.net/
 LICENSE=	LGPL21
 LICENSE_FILE=	${WRKSRC}/lgpl.txt
 
+BUILD_DEPENDS=	${JAVALIBDIR}/jdom.jar:java/jdom \
+		${JAVALIBDIR}/xercesImpl.jar:textproc/xerces-j
 RUN_DEPENDS=	${JAVALIBDIR}/jdom.jar:java/jdom \
 		${JAVALIBDIR}/xercesImpl.jar:textproc/xerces-j
 
 USE_JAVA=	yes
-NO_BUILD=	yes
+USE_ANT=	yes
+ALL_TARGET=	clean jar
 NO_ARCH=	yes
 
 WRKSRC=		${WRKDIR}/${PORTNAME}
 
 SUFFIXES=	-sax -dom -jdom
-PLIST_FILES=	%%JAVAJARDIR%%/${PORTNAME}.jar bin/xincluder ${SUFFIXES:S,^,bin/xincluder,}
+PLIST_FILES=	${JAVAJARDIR}/${PORTNAME}.jar bin/xincluder ${SUFFIXES:S,^,bin/xincluder,}
 PORTDOCS=	apidoc index.html
 SUB_FILES=	xincluder.sh
 
 OPTIONS_DEFINE=	DOCS
 
+post-patch:
+	@${REINPLACE_CMD} \
+		-e "s,\./lib/jdom-1.0b9rc.jar,${JAVAJARDIR}/jdom.jar," \
+		-e "s,\./lib/xercesImpl-2.0.2.jar,${JAVAJARDIR}/xercesImpl.jar," \
+		-e "s,\./lib/xmlParserAPIs-2.0.2.jar,${JAVAJARDIR}/xml-apis.jar," \
+		-e 's,<javac srcdir,<javac source="1.8" target="1.8" debug="true" \
+			includeantruntime="false" srcdir,' \
+		${WRKSRC}/build.xml
+
 do-install:
 	@${MKDIR} ${STAGEDIR}${JAVAJARDIR}
 	${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.jar ${STAGEDIR}${JAVAJARDIR}/
diff --git a/textproc/xincluder/files/patch-src_com_elharo_xml_xinclude_JDOMXIncluder.java b/textproc/xincluder/files/patch-src_com_elharo_xml_xinclude_JDOMXIncluder.java
new file mode 100644
index 000000000000..6f0ff222e753
--- /dev/null
+++ b/textproc/xincluder/files/patch-src_com_elharo_xml_xinclude_JDOMXIncluder.java
@@ -0,0 +1,24 @@
+--- src/com/elharo/xml/xinclude/JDOMXIncluder.java.orig	2003-03-09 16:01:34 UTC
++++ src/com/elharo/xml/xinclude/JDOMXIncluder.java
+@@ -54,6 +54,7 @@ import org.jdom.CDATA;
+ import org.jdom.Namespace;
+ import org.jdom.Comment;
+ import org.jdom.CDATA;
++import org.jdom.DocType;
+ import org.jdom.Text;
+ import org.jdom.JDOMException;
+ import org.jdom.Attribute;
+@@ -404,6 +405,13 @@ public class JDOMXIncluder {
+                 // I need to return the full document child list including comments and PIs, 
+                 // not just the resolved root
+                 List topLevelNodes = doc.getContent();
++                for (int i = 0; i < topLevelNodes.size(); i++) {
++                    Object o = topLevelNodes.get(i);
++                    if (o instanceof DocType) {
++                      DocType docType = (DocType) o;
++                      docType.detach();     
++                    } 
++                }
+                 int rootPosition = topLevelNodes.indexOf(root);
+                 List beforeRoot = topLevelNodes.subList(0, rootPosition);
+                 List afterRoot = topLevelNodes.subList(rootPosition+1, topLevelNodes.size());