Skip to content

Commit 4099ad7

Browse files
author
Dmitry Radchuk
committed
Deprecate Pair<> class and remove all of its usages
DEVSIX-9068
1 parent 624f517 commit 4099ad7

File tree

4 files changed

+75
-27
lines changed

4 files changed

+75
-27
lines changed

commons/src/main/java/com/itextpdf/commons/utils/Pair.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ This file is part of the iText (R) project.
2727
*
2828
* @param <K> key parameter type.
2929
* @param <V> value parameter type.
30+
*
31+
* @deprecated in favour of {@link com.itextpdf.commons.datastructures.Tuple2}
3032
*/
33+
@Deprecated
3134
public class Pair<K, V> {
3235
private final K key;
3336
private final V value;

sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionsValidator.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ This file is part of the iText (R) project.
2323
package com.itextpdf.signatures.validation;
2424

2525
import com.itextpdf.commons.actions.contexts.IMetaInfo;
26+
import com.itextpdf.commons.datastructures.Tuple2;
2627
import com.itextpdf.commons.utils.MessageFormatUtil;
27-
import com.itextpdf.commons.utils.Pair;
2828
import com.itextpdf.forms.PdfAcroForm;
2929
import com.itextpdf.forms.fields.PdfFormAnnotationUtil;
3030
import com.itextpdf.forms.fields.PdfFormCreator;
@@ -159,7 +159,7 @@ public class DocumentRevisionsValidator {
159159
private Set<PdfDictionary> newlyAddedFields;
160160
private Set<PdfDictionary> removedTaggedObjects;
161161
private Set<PdfDictionary> addedTaggedObjects;
162-
private Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects;
162+
private Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects;
163163

164164
/**
165165
* Creates new instance of {@link DocumentRevisionsValidator}.
@@ -350,7 +350,7 @@ private void mergeRevisionsInLinearizedDocument(PdfDocument document, List<Docum
350350

351351
private boolean validateRevision(ValidationReport validationReport, ValidationContext context,
352352
PdfDocument documentWithoutRevision, PdfDocument documentWithRevision, DocumentRevision currentRevision) {
353-
usuallyModifiedObjects = new Pair<>(createUsuallyModifiedObjectsSet(documentWithoutRevision),
353+
usuallyModifiedObjects = new Tuple2<>(createUsuallyModifiedObjectsSet(documentWithoutRevision),
354354
createUsuallyModifiedObjectsSet(documentWithRevision));
355355
if (!compareCatalogs(documentWithoutRevision, documentWithRevision, validationReport, context)) {
356356
return false;
@@ -1575,19 +1575,19 @@ private void removeAppearanceRelatedProperties(PdfDictionary annotDict) {
15751575
//
15761576

15771577
private static boolean comparePdfObjects(PdfObject pdfObject1, PdfObject pdfObject2,
1578-
Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1578+
Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
15791579
return comparePdfObjects(pdfObject1, pdfObject2, new ArrayList<>(), usuallyModifiedObjects);
15801580
}
15811581

15821582
private static boolean comparePdfObjects(PdfObject pdfObject1, PdfObject pdfObject2,
1583-
List<Pair<PdfObject, PdfObject>> visitedObjects,
1584-
Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1585-
for (Pair<PdfObject, PdfObject> pair : visitedObjects) {
1586-
if (pair.getKey() == pdfObject1) {
1587-
return pair.getValue() == pdfObject2;
1583+
List<Tuple2<PdfObject, PdfObject>> visitedObjects,
1584+
Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1585+
for (Tuple2<PdfObject, PdfObject> pair : visitedObjects) {
1586+
if (pair.getFirst() == pdfObject1) {
1587+
return pair.getSecond() == pdfObject2;
15881588
}
15891589
}
1590-
visitedObjects.add(new Pair<>(pdfObject1, pdfObject2));
1590+
visitedObjects.add(new Tuple2<>(pdfObject1, pdfObject2));
15911591
if (Objects.equals(pdfObject1, pdfObject2)) {
15921592
return true;
15931593
}
@@ -1598,10 +1598,10 @@ private static boolean comparePdfObjects(PdfObject pdfObject1, PdfObject pdfObje
15981598
return false;
15991599
}
16001600
if (pdfObject1.getIndirectReference() != null &&
1601-
usuallyModifiedObjects.getKey().stream().anyMatch(
1601+
usuallyModifiedObjects.getFirst().stream().anyMatch(
16021602
reference -> isSameReference(reference, pdfObject1.getIndirectReference())) &&
16031603
pdfObject2.getIndirectReference() != null &&
1604-
usuallyModifiedObjects.getValue().stream().anyMatch(
1604+
usuallyModifiedObjects.getSecond().stream().anyMatch(
16051605
reference -> isSameReference(reference, pdfObject2.getIndirectReference()))) {
16061606
// These two objects are expected to not be completely equal, we check them independently.
16071607
// However, we still need to make sure those are same instances.
@@ -1638,8 +1638,8 @@ private static boolean comparePdfObjects(PdfObject pdfObject1, PdfObject pdfObje
16381638
}
16391639

16401640
private static boolean comparePdfArrays(PdfArray array1, PdfArray array2,
1641-
List<Pair<PdfObject, PdfObject>> visitedObjects,
1642-
Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1641+
List<Tuple2<PdfObject, PdfObject>> visitedObjects,
1642+
Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
16431643
if (array1.size() != array2.size()) {
16441644
return false;
16451645
}
@@ -1652,8 +1652,8 @@ private static boolean comparePdfArrays(PdfArray array1, PdfArray array2,
16521652
}
16531653

16541654
private static boolean comparePdfDictionaries(PdfDictionary dictionary1, PdfDictionary dictionary2,
1655-
List<Pair<PdfObject, PdfObject>> visitedObjects,
1656-
Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1655+
List<Tuple2<PdfObject, PdfObject>> visitedObjects,
1656+
Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
16571657
Set<Map.Entry<PdfName, PdfObject>> entrySet1 = dictionary1.entrySet();
16581658
Set<Map.Entry<PdfName, PdfObject>> entrySet2 = dictionary2.entrySet();
16591659
if (entrySet1.size() != entrySet2.size()) {
@@ -1669,8 +1669,8 @@ private static boolean comparePdfDictionaries(PdfDictionary dictionary1, PdfDict
16691669
}
16701670

16711671
private static boolean comparePdfStreams(PdfStream stream1, PdfStream stream2,
1672-
List<Pair<PdfObject, PdfObject>> visitedObjects,
1673-
Pair<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
1672+
List<Tuple2<PdfObject, PdfObject>> visitedObjects,
1673+
Tuple2<Set<PdfIndirectReference>, Set<PdfIndirectReference>> usuallyModifiedObjects) {
16741674
return Arrays.equals(stream1.getBytes(), stream2.getBytes()) &&
16751675
comparePdfDictionaries(stream1, stream2, visitedObjects, usuallyModifiedObjects);
16761676
}

sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatus.java

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ This file is part of the iText (R) project.
2222
*/
2323
package com.itextpdf.signatures.validation.report.xml;
2424

25-
import com.itextpdf.commons.utils.Pair;
25+
import com.itextpdf.commons.datastructures.Tuple2;
2626
import com.itextpdf.io.util.EnumUtil;
2727

2828
import java.util.ArrayList;
@@ -31,13 +31,16 @@ This file is part of the iText (R) project.
3131
import java.util.List;
3232
import java.util.Map;
3333

34+
/**
35+
* Class which represents signature validation status.
36+
*/
3437
class SignatureValidationStatus {
3538
private static final Map<MainIndication, String> MAIN_INDICATION_VALUE_MAP =
3639
new HashMap<MainIndication, String>(EnumUtil.getAllValuesOfEnum(MainIndication.class).size());
3740
private static final Map<MessageType, String> MESSAGE_TYPE_VALUE_MAP =
3841
new HashMap<MessageType, String>(EnumUtil.getAllValuesOfEnum(MessageType.class).size());
3942

40-
private final List<Pair<String, String>> messages = new ArrayList<>();
43+
private final List<Tuple2<String, String>> messages = new ArrayList<>();
4144

4245
private MainIndication mainIndication;
4346
private SubIndication subIndication;
@@ -55,43 +58,85 @@ class SignatureValidationStatus {
5558
MESSAGE_TYPE_VALUE_MAP.put(MessageType.ERROR, "urn:cef:dss:message:error");
5659
}
5760

61+
/**
62+
* Creates an empty {@link SignatureValidationStatus} instance.
63+
*/
5864
public SignatureValidationStatus() {
5965
// Declaring default constructor explicitly to avoid removing it unintentionally.
6066
}
6167

68+
/**
69+
* Sets the main status indication.
70+
*
71+
* @param mainIndication {@link MainIndication} value
72+
*/
6273
public void setMainIndication(MainIndication mainIndication) {
6374
this.mainIndication = mainIndication;
6475
}
6576

77+
/**
78+
* Gets the main status indication.
79+
*/
6680
public MainIndication getMainIndication() {
6781
return mainIndication;
6882
}
6983

84+
/**
85+
* Gets URI representation of the validation status (see ETSI TS 119 102 4.3.4.2).
86+
*
87+
* @return validation status as string
88+
*/
7089
public String getMainIndicationAsString() {
7190
return MAIN_INDICATION_VALUE_MAP.get(mainIndication);
7291
}
7392

93+
/**
94+
* Sets sub-indication that shall clearly identify the reason for the main status indication.
95+
*
96+
* @param subIndication {@link SubIndication} value
97+
*/
7498
public void setSubIndication(SubIndication subIndication) {
7599
this.subIndication = subIndication;
76100
this.subIndicationSet = true;
77101
}
78102

103+
/**
104+
* Gets sub-indication that shall clearly identify the reason for the main status indication.
105+
*
106+
* @return {@link SubIndication} value
107+
*/
79108
public SubIndication getSubIndication() {
80109
return subIndication;
81110
}
82111

112+
/**
113+
* Gets sub-indication that shall clearly identify the reason for the main status indication.
114+
*
115+
* @return sub-indication value as string
116+
*/
83117
public String getSubIndicationAsString() {
84118
if (!subIndicationSet) {
85119
return null;
86120
}
87121
return subIndication.toString();
88122
}
89123

124+
/**
125+
* Adds message for validation report data.
126+
*
127+
* @param reason message reason as string
128+
* @param messageType {@link MessageType}
129+
*/
90130
public void addMessage(String reason, MessageType messageType) {
91-
this.messages.add(new Pair<>(reason, MESSAGE_TYPE_VALUE_MAP.get(messageType)));
131+
this.messages.add(new Tuple2<>(reason, MESSAGE_TYPE_VALUE_MAP.get(messageType)));
92132
}
93133

94-
public Collection<Pair<String, String>> getMessages() {
134+
/**
135+
* Gets all reported messages.
136+
*
137+
* @return Collection of reported messages
138+
*/
139+
public Collection<Tuple2<String, String>> getMessages() {
95140
return messages;
96141
}
97142

sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportGenerator.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ This file is part of the iText (R) project.
2222
*/
2323
package com.itextpdf.signatures.validation.report.xml;
2424

25-
import com.itextpdf.commons.utils.Pair;
25+
import com.itextpdf.commons.datastructures.Tuple2;
2626
import org.w3c.dom.Document;
2727
import org.w3c.dom.Element;
2828
import org.w3c.dom.Node;
@@ -137,20 +137,20 @@ private static void addSignatureReport(Document doc, Element root, SignatureVali
137137
subIndicationNode.setTextContent(subIndication);
138138
status.appendChild(subIndicationNode);
139139
}
140-
Collection<Pair<String, String>> messages = signatureValidation.getSignatureValidationStatus().getMessages();
140+
Collection<Tuple2<String, String>> messages = signatureValidation.getSignatureValidationStatus().getMessages();
141141
if (!messages.isEmpty()) {
142142
Node associatedValidationReportData = doc.createElement("AssociatedValidationReportData");
143143
status.appendChild(associatedValidationReportData);
144144
Node additionalValidationReportData = doc.createElement("AdditionalValidationReportData");
145145
associatedValidationReportData.appendChild(additionalValidationReportData);
146-
for (Pair<String, String> message : messages) {
146+
for (Tuple2<String, String> message : messages) {
147147
Node reportData = doc.createElement("ReportData");
148148
Node type = doc.createElement("Type");
149-
type.setTextContent(message.getValue());
149+
type.setTextContent(message.getSecond());
150150
reportData.appendChild(type);
151151
Element value = doc.createElement("Value");
152152
value.setAttribute("xsi:type", "xs:string");
153-
value.setTextContent(message.getKey());
153+
value.setTextContent(message.getFirst());
154154
reportData.appendChild(value);
155155
additionalValidationReportData.appendChild(reportData);
156156
}

0 commit comments

Comments
 (0)