PDFBOX-4636: refactor by replacing Map with Set

git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1866097 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
index 1098857..1a37532 100644
--- a/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
+++ b/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
@@ -20,9 +20,11 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -295,12 +297,12 @@
         // the content stream to write to
         PDPageContentStream contentStream;
 
-        Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> pagesWidgetsMap = buildPagesWidgetsMap(fields);
+        Map<COSDictionary,Set<COSDictionary>> pagesWidgetsMap = buildPagesWidgetsMap(fields);
         
         // preserve all non widget annotations
         for (PDPage page : document.getPages())
         {
-            Map<COSDictionary, PDAnnotationWidget> widgetsForPageMap = pagesWidgetsMap.get(page.getCOSObject());
+            Set<COSDictionary> widgetsForPageMap = pagesWidgetsMap.get(page.getCOSObject());
 
             // indicates if the original content stream
             // has been wrapped in a q...Q pair.
@@ -310,7 +312,7 @@
                        
             for (PDAnnotation annotation: page.getAnnotations())
             {                
-                if (widgetsForPageMap != null && widgetsForPageMap.get(annotation.getCOSObject()) == null)
+                if (widgetsForPageMap != null && !widgetsForPageMap.contains(annotation.getCOSObject()))
                 {
                     annotations.add(annotation);                 
                 }
@@ -812,9 +814,9 @@
         }
     }
     
-    private Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> buildPagesWidgetsMap(List<PDField> fields) throws IOException
+    private Map<COSDictionary,Set<COSDictionary>> buildPagesWidgetsMap(List<PDField> fields) throws IOException
     {
-        Map<COSDictionary,Map<COSDictionary,PDAnnotationWidget>> pagesAnnotationsMap = new HashMap<>();
+        Map<COSDictionary,Set<COSDictionary>> pagesAnnotationsMap = new HashMap<>();
         boolean hasMissingPageRef = false;
         
         for (PDField field : fields)
@@ -856,19 +858,19 @@
         return pagesAnnotationsMap;
     }
 
-    private void fillPagesAnnotationMap(Map<COSDictionary, Map<COSDictionary, PDAnnotationWidget>> pagesAnnotationsMap,
+    private void fillPagesAnnotationMap(Map<COSDictionary, Set<COSDictionary>> pagesAnnotationsMap,
             PDPage page, PDAnnotationWidget widget)
     {
         if (pagesAnnotationsMap.get(page.getCOSObject()) == null)
         {
-            Map<COSDictionary,PDAnnotationWidget> widgetsForPage = new HashMap<>();
-            widgetsForPage.put(widget.getCOSObject(), widget);
+            Set<COSDictionary> widgetsForPage = new HashSet<>();
+            widgetsForPage.add(widget.getCOSObject());
             pagesAnnotationsMap.put(page.getCOSObject(), widgetsForPage);
         }
         else
         {
-            Map<COSDictionary,PDAnnotationWidget> widgetsForPage = pagesAnnotationsMap.get(page.getCOSObject());
-            widgetsForPage.put(widget.getCOSObject(), widget);
+            Set<COSDictionary> widgetsForPage = pagesAnnotationsMap.get(page.getCOSObject());
+            widgetsForPage.add(widget.getCOSObject());
         }
     }