Skip to content

Commit e7628e4

Browse files
introfogiText-CI
authored andcommitted
Fix finger print logic
DEVSIX-5902
1 parent 9da3a43 commit e7628e4

File tree

5 files changed

+52
-52
lines changed

5 files changed

+52
-52
lines changed

commons/src/main/java/com/itextpdf/commons/actions/data/CommonsProductData.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ This file is part of the iText (R) project.
2626
* Stores an instance of {@link ProductData} related to iText commons module.
2727
*/
2828
public final class CommonsProductData {
29-
private static final String COMMONS_PUBLIC_PRODUCT_NAME = "Commons";
30-
private static final String COMMONS_PRODUCT_NAME = "commons";
31-
private static final String COMMONS_VERSION = "7.2.0-SNAPSHOT";
32-
private static final int COMMONS_COPYRIGHT_SINCE = 2000;
33-
private static final int COMMONS_COPYRIGHT_TO = 2021;
29+
static final String COMMONS_PUBLIC_PRODUCT_NAME = "Commons";
30+
static final String COMMONS_PRODUCT_NAME = "commons";
31+
static final String COMMONS_VERSION = "7.2.0-SNAPSHOT";
32+
static final int COMMONS_COPYRIGHT_SINCE = 2000;
33+
static final int COMMONS_COPYRIGHT_TO = 2021;
3434

3535
private static final ProductData COMMONS_PRODUCT_DATA = new ProductData(COMMONS_PUBLIC_PRODUCT_NAME,
3636
COMMONS_PRODUCT_NAME, COMMONS_VERSION, COMMONS_COPYRIGHT_SINCE, COMMONS_COPYRIGHT_TO);

commons/src/test/java/com/itextpdf/commons/actions/data/CommonsProductDataTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ This file is part of the iText (R) project.
2424

2525
import com.itextpdf.test.ExtendedITextTest;
2626
import com.itextpdf.test.annotations.type.UnitTest;
27+
2728
import org.junit.Assert;
2829
import org.junit.Test;
2930
import org.junit.experimental.categories.Category;
@@ -34,10 +35,10 @@ public class CommonsProductDataTest extends ExtendedITextTest {
3435
public void getInstanceTest() {
3536
ProductData commonsProductData = CommonsProductData.getInstance();
3637

37-
Assert.assertEquals("Commons", commonsProductData.getPublicProductName());
38-
Assert.assertEquals("commons", commonsProductData.getProductName());
39-
Assert.assertEquals("7.2.0-SNAPSHOT", commonsProductData.getVersion());
40-
Assert.assertEquals(2000, commonsProductData.getSinceCopyrightYear());
41-
Assert.assertEquals(2021, commonsProductData.getToCopyrightYear());
38+
Assert.assertEquals(CommonsProductData.COMMONS_PUBLIC_PRODUCT_NAME, commonsProductData.getPublicProductName());
39+
Assert.assertEquals(CommonsProductData.COMMONS_PRODUCT_NAME, commonsProductData.getProductName());
40+
Assert.assertEquals(CommonsProductData.COMMONS_VERSION, commonsProductData.getVersion());
41+
Assert.assertEquals(CommonsProductData.COMMONS_COPYRIGHT_SINCE, commonsProductData.getSinceCopyrightYear());
42+
Assert.assertEquals(CommonsProductData.COMMONS_COPYRIGHT_TO, commonsProductData.getToCopyrightYear());
4243
}
4344
}

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,24 @@ This file is part of the iText (R) project.
4343
*/
4444
package com.itextpdf.kernel.pdf;
4545

46+
import com.itextpdf.commons.actions.EventManager;
47+
import com.itextpdf.commons.actions.confirmations.ConfirmEvent;
48+
import com.itextpdf.commons.actions.confirmations.EventConfirmationType;
4649
import com.itextpdf.commons.actions.data.ProductData;
50+
import com.itextpdf.commons.actions.sequence.SequenceId;
51+
import com.itextpdf.commons.utils.MessageFormatUtil;
4752
import com.itextpdf.io.logs.IoLogMessageConstant;
4853
import com.itextpdf.io.source.ByteUtils;
4954
import com.itextpdf.io.source.RandomAccessFileOrArray;
50-
import com.itextpdf.commons.utils.MessageFormatUtil;
51-
import com.itextpdf.kernel.exceptions.PdfException;
52-
import com.itextpdf.commons.actions.EventManager;
5355
import com.itextpdf.kernel.actions.data.ITextCoreProductData;
54-
import com.itextpdf.commons.actions.confirmations.ConfirmEvent;
55-
import com.itextpdf.commons.actions.confirmations.EventConfirmationType;
5656
import com.itextpdf.kernel.actions.events.FlushPdfDocumentEvent;
57-
import com.itextpdf.commons.actions.sequence.SequenceId;
5857
import com.itextpdf.kernel.actions.events.ITextCoreProductEvent;
59-
import com.itextpdf.kernel.exceptions.BadPasswordException;
6058
import com.itextpdf.kernel.events.EventDispatcher;
6159
import com.itextpdf.kernel.events.IEventDispatcher;
6260
import com.itextpdf.kernel.events.PdfDocumentEvent;
61+
import com.itextpdf.kernel.exceptions.BadPasswordException;
6362
import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant;
63+
import com.itextpdf.kernel.exceptions.PdfException;
6464
import com.itextpdf.kernel.font.PdfFont;
6565
import com.itextpdf.kernel.font.PdfFontFactory;
6666
import com.itextpdf.kernel.geom.PageSize;
@@ -885,7 +885,7 @@ public void close() {
885885
}
886886

887887
PdfObject crypto = null;
888-
Set<PdfIndirectReference> forbiddenToFlush = new HashSet<>();
888+
final Set<PdfIndirectReference> forbiddenToFlush = new HashSet<>();
889889
if (properties.appendMode) {
890890
if (structTreeRoot != null) {
891891
tryFlushTagStructure(true);
@@ -2311,7 +2311,7 @@ private void copyLinkAnnotations(PdfDocument toDocument, Map<PdfPage, PdfPage> p
23112311
// Link annotation may have associated action. If it is GoTo type, we try to copy it's destination.
23122312
// GoToR and GoToE also contain destinations, but they point not to pages of the current document,
23132313
// so we just copy them as is. If it is action of any other type, it is also just copied as is.
2314-
PdfDictionary action = annot.getAction();
2314+
final PdfDictionary action = annot.getAction();
23152315
if (action != null) {
23162316
if (PdfName.GoTo.equals(action.get(PdfName.S))) {
23172317
copiedAction = action.copyTo(toDocument, Arrays.asList(PdfName.D), false);
@@ -2350,7 +2350,7 @@ private void copyLinkAnnotations(PdfDocument toDocument, Map<PdfPage, PdfPage> p
23502350
*/
23512351
private void copyOutlines(Set<PdfOutline> outlines, PdfDocument toDocument, Map<PdfPage, PdfPage> page2page) {
23522352

2353-
Set<PdfOutline> outlinesToCopy = new HashSet<>();
2353+
final Set<PdfOutline> outlinesToCopy = new HashSet<>();
23542354
outlinesToCopy.addAll(outlines);
23552355

23562356
for (PdfOutline outline : outlines) {
@@ -2373,7 +2373,7 @@ private void copyOutlines(Set<PdfOutline> outlines, PdfDocument toDocument, Map<
23732373
* @param outlinesToCopy a Set of outlines to be copied
23742374
*/
23752375
private void getAllOutlinesToCopy(PdfOutline outline, Set<PdfOutline> outlinesToCopy) {
2376-
PdfOutline parent = outline.getParent();
2376+
final PdfOutline parent = outline.getParent();
23772377
//note there's no need to continue recursion if the current outline parent is root (first condition) or
23782378
// if it is already in the Set of outlines to be copied (second condition)
23792379
if ("Outlines".equals(parent.getTitle()) || outlinesToCopy.contains(parent)) {
@@ -2442,7 +2442,7 @@ private void updatePdfVersionFromCatalog() {
24422442
}
24432443

24442444
private void readDocumentIds() {
2445-
PdfArray id = reader.trailer.getAsArray(PdfName.ID);
2445+
final PdfArray id = reader.trailer.getAsArray(PdfName.ID);
24462446

24472447
if (id != null) {
24482448
if (id.size() == 2) {

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfXrefTable.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,21 @@ This file is part of the iText (R) project.
4444
package com.itextpdf.kernel.pdf;
4545

4646
import com.itextpdf.commons.actions.data.ProductData;
47+
import com.itextpdf.commons.utils.MessageFormatUtil;
4748
import com.itextpdf.io.logs.IoLogMessageConstant;
4849
import com.itextpdf.io.source.ByteUtils;
49-
import com.itextpdf.commons.utils.MessageFormatUtil;
5050
import com.itextpdf.kernel.actions.data.ITextCoreProductData;
5151

52-
import org.slf4j.Logger;
53-
import org.slf4j.LoggerFactory;
54-
5552
import java.io.IOException;
5653
import java.util.ArrayList;
5754
import java.util.Arrays;
55+
import java.util.Collection;
5856
import java.util.List;
5957
import java.util.Map;
6058
import java.util.TreeMap;
6159
import java.util.TreeSet;
60+
import org.slf4j.Logger;
61+
import org.slf4j.LoggerFactory;
6262

6363
/**
6464
* A representation of a cross-referenced table of a PDF document.
@@ -512,13 +512,13 @@ private int getOffsetSize(long startxref) {
512512
*/
513513
protected static void writeKeyInfo(PdfDocument document) {
514514
PdfWriter writer = document.getWriter();
515-
FingerPrint fingerPrint = document.getFingerPrint();
516515

517-
if (fingerPrint.getProducts().isEmpty()) {
516+
final Collection<ProductData> products = document.getFingerPrint().getProducts();
517+
if (products.isEmpty()) {
518518
writer.writeString(MessageFormatUtil
519-
.format("%iText-{0}-no-registered-products", ITextCoreProductData.getInstance().getVersion()));
519+
.format("%iText-{0}-no-registered-products\n", ITextCoreProductData.getInstance().getVersion()));
520520
} else {
521-
for (ProductData productData : fingerPrint.getProducts()) {
521+
for (ProductData productData : products) {
522522
writer.writeString(MessageFormatUtil
523523
.format("%iText-{0}-{1}\n", productData.getPublicProductName(), productData.getVersion()));
524524
}

kernel/src/test/java/com/itextpdf/kernel/pdf/TrailerTest.java

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ This file is part of the iText (R) project.
4545
import com.itextpdf.commons.actions.data.ProductData;
4646
import com.itextpdf.commons.utils.FileUtil;
4747
import com.itextpdf.commons.utils.MessageFormatUtil;
48+
import com.itextpdf.kernel.actions.data.ITextCoreProductData;
4849
import com.itextpdf.kernel.font.PdfFontFactory;
4950
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
5051
import com.itextpdf.test.ExtendedITextTest;
@@ -98,33 +99,31 @@ public void trailerFingerprintTest() throws IOException {
9899
}
99100

100101
private boolean doesTrailerContainFingerprint(File file, String fingerPrint) throws IOException {
101-
RandomAccessFile raf = FileUtil.getRandomAccessFile(file);
102+
try (RandomAccessFile raf = FileUtil.getRandomAccessFile(file)) {
102103

103-
// put the pointer at the end of the file
104-
raf.seek(raf.length());
104+
// put the pointer at the end of the file
105+
raf.seek(raf.length());
105106

106-
// look for coreProductData
107-
String coreProductData = "%iText-Core-7.2.0-SNAPSHOT";
108-
String templine = "";
107+
// look for coreProductData
108+
String coreProductData = "%iText-Core-" + ITextCoreProductData.getInstance().getVersion();
109+
String templine = "";
109110

110-
while (!templine.contains(coreProductData)) {
111-
templine = (char) raf.read() + templine;
112-
raf.seek(raf.getFilePointer() - 2);
113-
}
111+
while (!templine.contains(coreProductData)) {
112+
templine = (char) raf.read() + templine;
113+
raf.seek(raf.getFilePointer() - 2);
114+
}
114115

115-
// look for fingerprint
116-
char read = ' ';
117-
templine = "";
116+
// look for fingerprint
117+
char read = ' ';
118+
templine = "";
118119

119-
while (read != '%') {
120-
read = (char) raf.read();
121-
templine = read + templine;
122-
raf.seek(raf.getFilePointer() - 2);
123-
}
120+
while (read != '%') {
121+
read = (char) raf.read();
122+
templine = read + templine;
123+
raf.seek(raf.getFilePointer() - 2);
124+
}
124125

125-
boolean output = templine.contains(fingerPrint);
126-
raf.close();
127-
return output;
126+
return templine.contains(fingerPrint);
127+
}
128128
}
129-
130129
}

0 commit comments

Comments
 (0)