[Git][java-team/libsejda-java][master] 6 commits: Drop disable-coobird.patch.

Markus Koschany (@apo) gitlab at salsa.debian.org
Sat Nov 20 21:55:56 GMT 2021



Markus Koschany pushed to branch master at Debian Java Maintainers / libsejda-java


Commits:
cbad4668 by Markus Koschany at 2021-11-20T22:48:47+01:00
Drop disable-coobird.patch.

- - - - -
b39a75c5 by Markus Koschany at 2021-11-20T22:49:07+01:00
Build-depend on libthumbnailator-java.

- - - - -
82934d0d by Markus Koschany at 2021-11-20T22:49:38+01:00
New upstream version 4.2.9
- - - - -
6640531f by Markus Koschany at 2021-11-20T22:50:12+01:00
Update upstream source from tag 'upstream/4.2.9'

Update to upstream version '4.2.9'
with Debian dir e28e076bef9628f62ddad1a7621ac2525287eb94
- - - - -
891c3911 by Markus Koschany at 2021-11-20T22:52:02+01:00
Update changelog

- - - - -
ad053f08 by Markus Koschany at 2021-11-20T22:53:23+01:00
Update maven.ignoreRules.

- - - - -


22 changed files:

- debian/changelog
- debian/control
- debian/maven.ignoreRules
- − debian/patches/disable-coobird.patch
- − debian/patches/series
- pom.xml
- sejda-conversion/pom.xml
- sejda-core/pom.xml
- sejda-core/src/test/java/org/sejda/core/service/AlternateMixTaskTest.java
- sejda-distribution/pom.xml
- sejda-docs/pom.xml
- sejda-fonts/pom.xml
- sejda-image-writers/pom.xml
- sejda-model/pom.xml
- sejda-model/src/main/java/org/sejda/common/RomanNumbersUtils.java
- sejda-model/src/main/java/org/sejda/model/input/PdfMixInput.java
- sejda-model/src/test/java/org/sejda/common/RomanNumbersUtilsTest.java
- sejda-sambox/pom.xml
- sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java
- sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PdfAlternateMixer.java
- sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PdfMixFragment.java
- sejda-sambox/src/test/java/org/sejda/impl/sambox/component/PageImageWriterTest.java


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+libsejda-java (4.2.9-1) unstable; urgency=medium
+
+  * New upstream version 4.2.9.
+  * Drop disable-coobird.patch.
+  * Build-depend on libthumbnailator-java.
+
+ -- Markus Koschany <apo at debian.org>  Sat, 20 Nov 2021 22:51:44 +0100
+
 libsejda-java (4.2.6-1) unstable; urgency=medium
 
   * New upstream version 4.2.6.


=====================================
debian/control
=====================================
@@ -23,6 +23,7 @@ Build-Depends:
  libsejda-java,
  libsejda-commons-java,
  libslf4j-java,
+ libthumbnailator-java,
  libtwelvemonkeys-java,
  libxmlgraphics-commons-java,
  maven-debian-helper (>= 2.1)


=====================================
debian/maven.ignoreRules
=====================================
@@ -20,4 +20,3 @@ org.mockito mockito-core * * * *
 org.powermock powermock-module-junit4 * * * *
 org.powermock powermock-api-mockito * * * *
 org.codehaus.mojo appassembler-maven-plugin * * * *
-net.coobird thumbnailator * * * *


=====================================
debian/patches/disable-coobird.patch deleted
=====================================
@@ -1,39 +0,0 @@
-From: Markus Koschany <apo at debian.org>
-Date: Tue, 7 Sep 2021 09:49:02 +0200
-Subject: disable coobird
-
-Necessary until thumbnailator has been packaged.
----
- .../main/java/org/sejda/impl/sambox/component/PageImageWriter.java  | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java b/sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java
-index c762e2a..ee36edd 100644
---- a/sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java
-+++ b/sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java
-@@ -59,7 +59,7 @@ import org.sejda.sambox.util.filetypedetector.FileTypeDetector;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
--import net.coobird.thumbnailator.Thumbnails;
-+//import net.coobird.thumbnailator.Thumbnails;
- 
- public class PageImageWriter {
-     private static final Logger LOG = LoggerFactory.getLogger(PageImageWriter.class);
-@@ -201,14 +201,14 @@ public class PageImageWriter {
-         int degrees = ExifHelper.getRotationBasedOnExifOrientation(source.asNewInputStream());
- 
-         BufferedImage image = ImageIO.read(source.asNewInputStream());
--        if (degrees > 0) {
-+        /*if (degrees > 0) {
-             BufferedImage result = Thumbnails.of(image).scale(1).rotate(degrees).asBufferedImage();
- 
-             File tmpFile = IOUtils.createTemporaryBuffer();
-             ImageIO.write(result, getImageIOSaveFormat(source), tmpFile);
-             return Optional.of(SeekableSources.seekableSourceFrom(tmpFile));
- 
--        }
-+        }*/
-         return Optional.empty();
-     }
- 


=====================================
debian/patches/series deleted
=====================================
@@ -1 +0,0 @@
-disable-coobird.patch


=====================================
pom.xml
=====================================
@@ -6,7 +6,7 @@
 	<artifactId>sejda-parent</artifactId>
 	<packaging>pom</packaging>
 	<name>sejda</name>
-	<version>4.2.6</version>
+	<version>4.2.9</version>
 	<description>An extendible and configurable PDF manipulation layer library. A ready to use java library to perform PDF documents manipulation without having to deal with the low level API. Sejda offers many "ready to go" manipulations implemented using the SAMBox but it can be extended to use other implementations.</description>
 
 	<organization>
@@ -32,7 +32,7 @@
 		<connection>scm:git:git at github.com:torakiki/sejda.git</connection>
 		<developerConnection>scm:git:git at github.com:torakiki/sejda.git</developerConnection>
 		<url>scm:git:git at github.com:torakiki/sejda.git</url>
-		<tag>v4.2.6</tag>
+		<tag>v4.2.9</tag>
 	</scm>
 
 	<developers>
@@ -352,9 +352,9 @@
 	</distributionManagement>
 
 	<properties>
-		<sejda.commons.version>1.1.4</sejda.commons.version>
+		<sejda.commons.version>1.1.7</sejda.commons.version>
 		<junit.version>4.13.1</junit.version>
-		<slf4j.version>1.7.29</slf4j.version>
+		<slf4j.version>1.7.30</slf4j.version>
 		<commons.lang.version>3.9</commons.lang.version>
 		<commons.io.version>2.7</commons.io.version>
 		<validation.api.version>1.0.0.GA</validation.api.version>
@@ -363,9 +363,9 @@
 		<jdepend.version>2.9.1</jdepend.version>
 		<hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
 		<hamcrest.version>1.3</hamcrest.version>
-		<sambox.version>2.2.15</sambox.version>
+		<sambox.version>2.3.1</sambox.version>
 		<sejda.io.version>2.1.3</sejda.io.version>
-		<bouncycastle.version>1.66</bouncycastle.version>
+		<bouncycastle.version>1.69</bouncycastle.version>
 		<twelvemonkeys.version>3.4.2</twelvemonkeys.version>
 		<metadata-extractor.version>2.15.0</metadata-extractor.version>
 		<thumbnailator.version>0.4.13</thumbnailator.version>


=====================================
sejda-conversion/pom.xml
=====================================
@@ -10,7 +10,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 	


=====================================
sejda-core/pom.xml
=====================================
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-core/src/test/java/org/sejda/core/service/AlternateMixTaskTest.java
=====================================
@@ -124,5 +124,31 @@ public abstract class AlternateMixTaskTest extends BaseTaskTest<AlternateMixMult
         testContext.assertPages(8);
     }
 
+    @Test
+    public void repeatForeverExplicitlyMarkedInputs() throws IOException {
+        AlternateMixMultipleInputParameters params = new AlternateMixMultipleInputParameters();
+        params.addInput(new PdfMixInput(shortInput()));
+        params.addInput(new PdfMixInput(customInput("pdf/one_page.pdf")));
+        
+        for(PdfMixInput input :params.getInputList()) {
+            input.setRepeatForever(true);
+        }
+        
+        setUpParameters(params);
+        testContext.pdfOutputTo(params);
+        execute(params);
+        testContext.assertTaskCompleted();
+        testContext.assertPages(8).forPdfOutput(d -> {
+            assertHeaderContains(d.getPage(0), "Pagina 1 di 4");
+            assertPageTextContains(d.getPage(1), "First page");
+            assertHeaderContains(d.getPage(2), "Pagina 2 di 4");
+            assertPageTextContains(d.getPage(3), "First page");
+            assertHeaderContains(d.getPage(4), "Pagina 3 di 4");
+            assertPageTextContains(d.getPage(5), "First page");
+            assertHeaderContains(d.getPage(6), "Pagina 4 di 4");
+            assertPageTextContains(d.getPage(7), "First page");
+        });
+    }
+
     protected abstract void assertHeaderContains(PDPage page, String expectedText);
 }


=====================================
sejda-distribution/pom.xml
=====================================
@@ -10,7 +10,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-docs/pom.xml
=====================================
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-fonts/pom.xml
=====================================
@@ -10,7 +10,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 	


=====================================
sejda-image-writers/pom.xml
=====================================
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-model/pom.xml
=====================================
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-model/src/main/java/org/sejda/common/RomanNumbersUtils.java
=====================================
@@ -37,9 +37,13 @@ public final class RomanNumbersUtils {
      */
     public static String toRoman(long toConvert) {
 
-        if (toConvert <= 0) {
+        if (toConvert < 0) {
             throw new IllegalArgumentException();
         }
+        
+        if (toConvert == 0) {
+            return "nulla";
+        }
 
         long n = toConvert;
         StringBuilder buf = new StringBuilder();


=====================================
sejda-model/src/main/java/org/sejda/model/input/PdfMixInput.java
=====================================
@@ -39,6 +39,7 @@ public class PdfMixInput extends PdfMergeInput {
     private boolean reverse = false;
     @Min(value = 1)
     private int step = 1;
+    private boolean repeatForever = false;
 
     public PdfMixInput(PdfSource<?> source, boolean reverse, int step) {
         super(source);
@@ -63,6 +64,14 @@ public class PdfMixInput extends PdfMergeInput {
         return step;
     }
 
+    public boolean isRepeatForever() {
+        return repeatForever;
+    }
+
+    public void setRepeatForever(boolean repeatForever) {
+        this.repeatForever = repeatForever;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this).appendSuper(super.toString()).append(reverse).append(step).toString();
@@ -70,7 +79,8 @@ public class PdfMixInput extends PdfMergeInput {
 
     @Override
     public int hashCode() {
-        return new HashCodeBuilder().appendSuper(super.hashCode()).append(reverse).append(step).toHashCode();
+        return new HashCodeBuilder().appendSuper(super.hashCode()).append(reverse).append(step).append(repeatForever)
+                .toHashCode();
     }
 
     @Override
@@ -83,7 +93,7 @@ public class PdfMixInput extends PdfMergeInput {
         }
         PdfMixInput input = (PdfMixInput) other;
         return new EqualsBuilder().appendSuper(super.equals(other)).append(reverse, input.reverse)
-                .append(step, input.step).isEquals();
+                .append(step, input.step).append(repeatForever, input.repeatForever).isEquals();
     }
 
 }


=====================================
sejda-model/src/test/java/org/sejda/common/RomanNumbersUtilsTest.java
=====================================
@@ -42,9 +42,8 @@ public class RomanNumbersUtilsTest {
         RomanNumbersUtils.toRoman(-1);
     }
 
-    @Test(expected = IllegalArgumentException.class)
     public void testFailingZero() {
-        RomanNumbersUtils.toRoman(0);
+        assertEquals("nulla", RomanNumbersUtils.toRoman(0));
     }
 
 }


=====================================
sejda-sambox/pom.xml
=====================================
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.sejda</groupId>
 		<artifactId>sejda-parent</artifactId>
-		<version>4.2.6</version>
+		<version>4.2.9</version>
 		<relativePath>../pom.xml</relativePath>
 	</parent>
 


=====================================
sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PageImageWriter.java
=====================================
@@ -200,9 +200,9 @@ public class PageImageWriter {
             throws IOException, TaskIOException {
         int degrees = ExifHelper.getRotationBasedOnExifOrientation(source.asNewInputStream());
 
-        BufferedImage image = ImageIO.read(source.asNewInputStream());
         if (degrees > 0) {
-            BufferedImage result = Thumbnails.of(image).scale(1).rotate(degrees).asBufferedImage();
+            BufferedImage result = Thumbnails.of(ImageIO.read(source.asNewInputStream())).scale(1).rotate(degrees)
+                    .asBufferedImage();
 
             File tmpFile = IOUtils.createTemporaryBuffer();
             ImageIO.write(result, getImageIOSaveFormat(source), tmpFile);


=====================================
sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PdfAlternateMixer.java
=====================================
@@ -38,8 +38,8 @@ import org.sejda.sambox.pdmodel.PDPage;
  */
 public class PdfAlternateMixer extends PDDocumentHandler {
 
+
     private List<PdfMixFragment> mixFragments = new ArrayList<>();
-    private int currentStep = 0;
 
     /**
      * Perform the alternate mix on the given {@link PdfMixInput}s.
@@ -52,18 +52,32 @@ public class PdfAlternateMixer extends PDDocumentHandler {
         for (PdfMixInput input : inputs) {
             mixFragments.add(PdfMixFragment.newInstance(input));
         }
-        int totalSteps = mixFragments.stream().map(PdfMixFragment::getNumberOfPages).reduce(0,
-                (curr, value) -> curr + value);
+        
+        int maxNumberOfPages = 0;
+        for(PdfMixFragment fragment: mixFragments) {
+            maxNumberOfPages = Math.max(fragment.getNumberOfPages(), maxNumberOfPages);
+        }
+        
+        int currentStep = 0;
+        int maxSteps = mixFragments.size() * maxNumberOfPages + 1;
+
+        // to properly calculate the expected total number of steps we'd have to look at page numbers, steps, reverse
+        notifyEvent(executionContext.notifiableTaskMetadata()).progressUndetermined();
 
-        while (mixFragments.stream().anyMatch(PdfMixFragment::hasNextPage)) {
+        while (mixFragments.stream().anyMatch(PdfMixFragment::hasNotReachedTheEnd)) {
             mixFragments.stream().filter(PdfMixFragment::hasNextPage).forEach(f -> {
                 for (int i = 0; i < f.getStep() && f.hasNextPage(); i++) {
                     PDPage current = f.nextPage();
                     f.addLookupEntry(current, importPage(current));
-                    notifyEvent(executionContext.notifiableTaskMetadata()).stepsCompleted(++currentStep)
-                            .outOf(totalSteps);
                 }
             });
+            
+            currentStep++;
+            
+            // a safety net so we don't loop here forever due to a bug and fill up the disk
+            if(currentStep > maxSteps) {
+                throw new RuntimeException("Too many loops, currentStep: " + currentStep + ", maxSteps: " + maxSteps);
+            }
         }
 
         mixFragments.stream().forEach(PdfMixFragment::saintizeAnnotations);
@@ -74,7 +88,6 @@ public class PdfAlternateMixer extends PDDocumentHandler {
         super.close();
         mixFragments.stream().forEach(IOUtils::closeQuietly);
         mixFragments.clear();
-        currentStep = 0;
     }
 
 }


=====================================
sejda-sambox/src/main/java/org/sejda/impl/sambox/component/PdfMixFragment.java
=====================================
@@ -41,29 +41,53 @@ import org.slf4j.LoggerFactory;
  */
 class PdfMixFragment implements Closeable {
 
-    private static final Logger LOG = LoggerFactory.getLogger(PdfAlternateMixer.class);
+    private static final Logger LOG = LoggerFactory.getLogger(PdfMixFragment.class);
 
     private LookupTable<PDPage> lookups = new LookupTable<>();
     private PDDocumentHandler handler;
     private PdfMixInput input;
     private LinkedList<Integer> pages;
+    private boolean hasNotReachedTheEnd = true;
 
     private PdfMixFragment(PdfMixInput input, PDDocumentHandler handler) {
-        this.pages = new LinkedList<>(input.getPages(handler.getNumberOfPages()));
         this.handler = handler;
         this.input = input;
+        populatePages();
+    }
+    
+    private void populatePages() {
+        this.pages = new LinkedList<>(input.getPages(handler.getNumberOfPages()));
+    }
+
+    private void populatePagesIfRequired() {
+        if(pages.isEmpty()) {
+            this.hasNotReachedTheEnd = false;
+            if(input.isRepeatForever()) {
+                populatePages();    
+            }
+        }
     }
 
     public PDPage nextPage() {
+        PDPage result;
+        
         if (input.isReverse()) {
-            return handler.getPage(pages.removeLast());
+            result = handler.getPage(pages.removeLast());
+        } else {
+            result = handler.getPage(pages.removeFirst());
         }
-        return handler.getPage(pages.removeFirst());
+        
+        populatePagesIfRequired();
+        return result;
     }
 
     public boolean hasNextPage() {
         return !pages.isEmpty();
     }
+    
+    public boolean hasNotReachedTheEnd() {
+        return this.hasNotReachedTheEnd;
+    }
 
     public int getNumberOfPages() {
         return handler.getNumberOfPages();


=====================================
sejda-sambox/src/test/java/org/sejda/impl/sambox/component/PageImageWriterTest.java
=====================================
@@ -118,7 +118,7 @@ public class PageImageWriterTest {
     }
 
     @Test
-    public void testExifRotated() throws TaskIOException, IOException {
+    public void testExifRotated() throws TaskIOException {
 
         PDImageXObject result = PageImageWriter.toPDXImageObject(customNonPdfInput("image/with_exif_orientation.JPG"));
         assertThat(result.getHeight(), is(3264));



View it on GitLab: https://salsa.debian.org/java-team/libsejda-java/-/compare/a6355b039766616ff7d02371e2099efc124b4527...ad053f0887d69e572e2f8a6d2717317126d71623

-- 
View it on GitLab: https://salsa.debian.org/java-team/libsejda-java/-/compare/a6355b039766616ff7d02371e2099efc124b4527...ad053f0887d69e572e2f8a6d2717317126d71623
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20211120/cf047ffc/attachment.htm>


More information about the pkg-java-commits mailing list