Author: tilman
Date: Thu Jul 30 14:58:14 2026
New Revision: 1936738
Log:
PDFBOX-6227: add test
Modified:
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
Modified:
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
==============================================================================
---
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
Thu Jul 30 14:48:23 2026 (r1936737)
+++
pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroFormTest.java
Thu Jul 30 14:58:14 2026 (r1936738)
@@ -489,6 +489,48 @@ public class PDAcroFormTest
doc.close();
}
+ /**
+ * PDFBOX-6227: Check that cycle is caught in repair.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testCycle() throws IOException
+ {
+ PDDocument doc = new PDDocument();
+ PDPage page = new PDPage();
+ doc.addPage(page);
+
+ PDAcroForm theAcroForm = new PDAcroForm(doc);
+ theAcroForm.setNeedAppearances(true);
+ doc.getDocumentCatalog().setAcroForm(theAcroForm);
+ theAcroForm.setDefaultResources(new PDResources());
+
+ PDTextField textBox = new PDTextField(theAcroForm);
+ textBox.setPartialName("SampleField");
+
+ textBox.setDefaultAppearance("/Helv 0 Ff 0 g");
+ // field not added to force repair
+
+ PDAnnotationWidget widget = textBox.getWidgets().get(0);
+ PDRectangle rect = new PDRectangle(50, 750, 200, 20);
+ try
+ {
+ widget.setParent(textBox);
+ fail("Should have thrown IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex)
+ {
+ }
+ widget.getCOSObject().setItem(COSName.PARENT, widget.getCOSObject());
+ widget.setRectangle(rect);
+ widget.setPage(page);
+
+ page.getAnnotations().add(widget);
+
assertTrue(doc.getDocumentCatalog().getAcroForm().getFields().isEmpty());
+ doc.close();
+ }
+
@After
public void tearDown() throws IOException
{
@@ -547,4 +589,3 @@ public class PDAcroFormTest
return count;
}
}
-