You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlgraphics.apache.org by ss...@apache.org on 2024/10/24 13:31:53 UTC

(xmlgraphics-commons) branch main updated: XGC-145: Avoid parsing uri to read page number

This is an automated email from the ASF dual-hosted git repository.

ssteiner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/xmlgraphics-commons.git


The following commit(s) were added to refs/heads/main by this push:
     new 7c3111c  XGC-145: Avoid parsing uri to read page number
7c3111c is described below

commit 7c3111caff2db5bed171d5d870633aea03356e90
Author: Simon Steiner <ss...@apache.org>
AuthorDate: Thu Oct 24 14:31:38 2024 +0100

    XGC-145: Avoid parsing uri to read page number
---
 .../xmlgraphics/image/loader/util/ImageUtil.java   | 43 ++++++++--------------
 .../image/loader/ImageUtilTestCase.java            | 20 +++++-----
 2 files changed, 25 insertions(+), 38 deletions(-)

diff --git a/src/main/java/org/apache/xmlgraphics/image/loader/util/ImageUtil.java b/src/main/java/org/apache/xmlgraphics/image/loader/util/ImageUtil.java
index f658041..12ee840 100644
--- a/src/main/java/org/apache/xmlgraphics/image/loader/util/ImageUtil.java
+++ b/src/main/java/org/apache/xmlgraphics/image/loader/util/ImageUtil.java
@@ -25,8 +25,6 @@ import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.Map;
 import java.util.zip.GZIPInputStream;
 
@@ -267,33 +265,24 @@ public final class ImageUtil {
         if (uri.indexOf('#') < 0) {
             return null;
         }
-        try {
-            URI u = new URI(uri);
-            String fragment = u.getFragment();
-            if (fragment != null) {
-                int pos = fragment.indexOf(PAGE_INDICATOR);
-                if (pos >= 0) {
-                    pos += PAGE_INDICATOR.length();
-                    StringBuffer sb = new StringBuffer();
-                    while (pos < fragment.length()) {
-                        char c = fragment.charAt(pos);
-                        if (c >= '0' && c <= '9') {
-                            sb.append(c);
-                        } else {
-                            break;
-                        }
-                        pos++;
-                    }
-                    if (sb.length() > 0) {
-                        int pageIndex = Integer.parseInt(sb.toString()) - 1;
-                        pageIndex = Math.max(0, pageIndex);
-                        return pageIndex;
-                    }
+        int pos = uri.indexOf(PAGE_INDICATOR);
+        if (pos >= 0) {
+            pos += PAGE_INDICATOR.length();
+            StringBuilder sb = new StringBuilder();
+            while (pos < uri.length()) {
+                char c = uri.charAt(pos);
+                if (c >= '0' && c <= '9') {
+                    sb.append(c);
+                } else {
+                    break;
                 }
+                pos++;
+            }
+            if (sb.length() > 0) {
+                int pageIndex = Integer.parseInt(sb.toString()) - 1;
+                pageIndex = Math.max(0, pageIndex);
+                return pageIndex;
             }
-        } catch (URISyntaxException e) {
-            throw new IllegalArgumentException("URI is invalid: "
-                    + e.getLocalizedMessage());
         }
         return null;
     }
diff --git a/src/test/java/org/apache/xmlgraphics/image/loader/ImageUtilTestCase.java b/src/test/java/org/apache/xmlgraphics/image/loader/ImageUtilTestCase.java
index eaaa068..944a2a9 100644
--- a/src/test/java/org/apache/xmlgraphics/image/loader/ImageUtilTestCase.java
+++ b/src/test/java/org/apache/xmlgraphics/image/loader/ImageUtilTestCase.java
@@ -23,7 +23,6 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
 
 import org.apache.xmlgraphics.image.loader.util.ImageUtil;
 
@@ -34,10 +33,9 @@ public class ImageUtilTestCase {
 
     /**
      * Tests {@link ImageUtil.needPageIndexFromURI(String)}.
-     * @throws Exception if an error occurs
      */
     @Test
-    public void testNeedPageIndex() throws Exception {
+    public void testNeedPageIndex() {
         int pageIndex;
 
         pageIndex = ImageUtil.needPageIndexFromURI("http://localhost/images/scan1.tif");
@@ -56,23 +54,23 @@ public class ImageUtilTestCase {
         assertEquals(1, pageIndex);
 
         //Not a valid URI
-        try {
-            pageIndex = ImageUtil.needPageIndexFromURI("C:\\images\\scan1.tif#page=44");
-            fail("Invalid URI. Method must fail.");
-        } catch (IllegalArgumentException e) {
-            //expected
-        }
+        pageIndex = ImageUtil.needPageIndexFromURI("C:\\images\\scan1.tif#page=44");
+        assertEquals(43, pageIndex);
+
         //Valid URI
         pageIndex = ImageUtil.needPageIndexFromURI("file:///C:/images/scan1.tif#page=44");
         assertEquals(43, pageIndex);
+
+        pageIndex = ImageUtil.needPageIndexFromURI(
+                "Balesetbiztosítás_ kötvénycsomag - e-mail_3000000637_Biztosítási kötvény melléklettel.pdf#page=1");
+        assertEquals(0, pageIndex);
     }
 
     /**
      * Tests {@link ImageUtil.getPageIndexFromURI(String)}.
-     * @throws Exception if an error occurs
      */
     @Test
-    public void testGetPageIndex() throws Exception {
+    public void testGetPageIndex() {
         Integer pageIndex;
 
         pageIndex = ImageUtil.getPageIndexFromURI("http://localhost/images/scan1.tif");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: commits-help@xmlgraphics.apache.org