You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2012/02/22 15:04:17 UTC

svn commit: r1292295 - in /poi/trunk: src/documentation/content/xdocs/status.xml src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java test-data/spreadsheet/52716.xlsx

Author: yegor
Date: Wed Feb 22 14:04:17 2012
New Revision: 1292295

URL: http://svn.apache.org/viewvc?rev=1292295&view=rev
Log:
Bugzilla 52716 - tolerate hyperlinks that have neither location nor relation

Added:
    poi/trunk/test-data/spreadsheet/52716.xlsx   (with props)
Modified:
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=1292295&r1=1292294&r2=1292295&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Wed Feb 22 14:04:17 2012
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.8-beta6" date="2012-??-??">
+           <action dev="poi-developers" type="fix">52716 - tolerate hyperlinks that have neither location nor relation </action>
            <action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action>
            <action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action>
            <action dev="poi-developers" type="fix">51731 - fixed painting shape outlines in HSLF</action>

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java?rev=1292295&r1=1292294&r2=1292295&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java Wed Feb 22 14:04:17 2012
@@ -68,23 +68,27 @@ public class XSSFHyperlink implements Hy
             //  the relation to see how
             if (_externalRel == null) {
                 if (ctHyperlink.getId() != null) {
-                    throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() + " references relation " + ctHyperlink.getId() + ", but that didn't exist!");
+                    throw new IllegalStateException("The hyperlink for cell " + ctHyperlink.getRef() +
+                            " references relation " + ctHyperlink.getId() + ", but that didn't exist!");
+                }
+                // hyperlink is internal and is not related to other parts
+                _type = Hyperlink.LINK_DOCUMENT;
+            } else {
+                URI target = _externalRel.getTargetURI();
+                _location = target.toString();
+
+                // Try to figure out the type
+                if (_location.startsWith("http://") || _location.startsWith("https://")
+                        || _location.startsWith("ftp://")) {
+                    _type = Hyperlink.LINK_URL;
+                } else if (_location.startsWith("mailto:")) {
+                    _type = Hyperlink.LINK_EMAIL;
+                } else {
+                    _type = Hyperlink.LINK_FILE;
                 }
-                throw new IllegalStateException("A sheet hyperlink must either have a location, or a relationship. Found:\n" + ctHyperlink);
             }
 
-            URI target = _externalRel.getTargetURI();
-            _location = target.toString();
 
-            // Try to figure out the type
-            if (_location.startsWith("http://") || _location.startsWith("https://")
-                    || _location.startsWith("ftp://")) {
-                _type = Hyperlink.LINK_URL;
-            } else if (_location.startsWith("mailto:")) {
-                _type = Hyperlink.LINK_EMAIL;
-            } else {
-                _type = Hyperlink.LINK_FILE;
-            }
         }
     }
 
@@ -306,4 +310,18 @@ public class XSSFHyperlink implements Hy
     public void setLastRow(int row) {
         setFirstRow(row);
 	}
+
+    /**
+     * @return additional text to help the user understand more about the hyperlink
+     */
+    public String getTooltip() {
+        return _ctHyperlink.getTooltip();
+    }
+
+    /**
+     * @param text  additional text to help the user understand more about the hyperlink
+     */
+    public void setTooltip(String text) {
+        _ctHyperlink.setTooltip(text);
+    }
 }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java?rev=1292295&r1=1292294&r2=1292295&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java Wed Feb 22 14:04:17 2012
@@ -189,4 +189,24 @@ public final class TestXSSFHyperlink ext
 		assertEquals("mailto:dev@poi.apache.org?subject=XSSF%20Hyperlinks",
 				sheet.getRow(16).getCell(2).getHyperlink().getAddress());
 	}
+
+    public void test52716() {
+        XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("52716.xlsx");
+        XSSFSheet sh1 = wb1.getSheetAt(0);
+
+        XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1);
+        XSSFSheet sh2 = wb2.getSheetAt(0);
+
+        assertEquals(sh1.getNumberOfComments(), sh2.getNumberOfComments());
+        XSSFHyperlink l1 = sh1.getHyperlink(0, 1);
+        assertEquals(XSSFHyperlink.LINK_DOCUMENT, l1.getType());
+        assertEquals("B1", l1.getCellRef());
+        assertEquals("Sort on Titel", l1.getTooltip());
+
+        XSSFHyperlink l2 = sh2.getHyperlink(0, 1);
+        assertEquals(l1.getTooltip(), l2.getTooltip());
+        assertEquals(XSSFHyperlink.LINK_DOCUMENT, l2.getType());
+        assertEquals("B1", l2.getCellRef());
+    }
+
 }

Added: poi/trunk/test-data/spreadsheet/52716.xlsx
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/52716.xlsx?rev=1292295&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/52716.xlsx
------------------------------------------------------------------------------
    svn:mime-type = application/vnd.ms-excel



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