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/02 11:37:50 UTC
svn commit: r1239529 - in /poi/trunk/src:
documentation/content/xdocs/status.xml
ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java
ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java
Author: yegor
Date: Thu Feb 2 10:37:49 2012
New Revision: 1239529
URL: http://svn.apache.org/viewvc?rev=1239529&view=rev
Log:
validate hyperlink address as discussed on poi-user
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=1239529&r1=1239528&r2=1239529&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Thu Feb 2 10:37:49 2012
@@ -34,6 +34,7 @@
<changes>
<release version="3.8-beta6" date="2012-??-??">
+ <action dev="poi-developers" type="add">Validate address of hyperlinks in XSSF</action>
<action dev="poi-developers" type="fix">52540 - Relax the M4.1 constraint on reading OOXML files, as some Office produced ones do have 2 Core Properties, despite the specification explicitly forbidding this</action>
<action dev="poi-developers" type="add">52462 - Added implementation for SUMIFS()</action>
<action dev="poi-developers" type="add">POIXMLPropertiesTextExtractor support for extracting custom OOXML properties as text</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=1239529&r1=1239528&r2=1239529&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 Thu Feb 2 10:37:49 2012
@@ -17,6 +17,7 @@
package org.apache.poi.xssf.usermodel;
import java.net.URI;
+import java.net.URISyntaxException;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackageRelationship;
@@ -181,18 +182,37 @@ public class XSSFHyperlink implements Hy
}
/**
- * Hypelink address. Depending on the hyperlink type it can be URL, e-mail, path to a file
+ * Hyperlink address. Depending on the hyperlink type it can be URL, e-mail, path to a file
*
* @param address - the address of this hyperlink
*/
public void setAddress(String address) {
- _location = address;
+ validate(address);
+
+ _location = address;
//we must set location for internal hyperlinks
if (_type == Hyperlink.LINK_DOCUMENT) {
setLocation(address);
}
}
+ private void validate(String address) {
+ switch (_type){
+ // email, path to file and url must be valid URIs
+ case Hyperlink.LINK_EMAIL:
+ case Hyperlink.LINK_FILE:
+ case Hyperlink.LINK_URL:
+ try {
+ new URI(address);
+ } catch (URISyntaxException x) {
+ IllegalArgumentException y = new IllegalArgumentException("Address of hyperlink must be a valid URI");
+ y.initCause(x);
+ throw y;
+ }
+ break;
+ }
+ }
+
/**
* Assigns this hyperlink to the given cell reference
*/
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=1239529&r1=1239528&r2=1239529&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 Thu Feb 2 10:37:49 2012
@@ -50,6 +50,35 @@ public final class TestXSSFHyperlink ext
doTestHyperlinkContents(sheet);
}
+ public void testCreate() {
+ XSSFWorkbook workbook = new XSSFWorkbook();
+ XSSFCreationHelper createHelper = workbook.getCreationHelper();
+
+ String[] validURLs = {
+ "http://apache.org",
+ "www.apache.org",
+ "/temp",
+ "c:/temp",
+ "http://apache.org/default.php?s=isTramsformed&submit=Search&la=*&li=*"};
+ for(String s : validURLs){
+ createHelper.createHyperlink(Hyperlink.LINK_URL).setAddress(s);
+ }
+
+ String[] invalidURLs = {
+ "http:\\apache.org",
+ "www.apache .org",
+ "c:\\temp",
+ "\\poi"};
+ for(String s : invalidURLs){
+ try {
+ createHelper.createHyperlink(Hyperlink.LINK_URL).setAddress(s);
+ fail("expected IllegalArgumentException: " + s);
+ } catch (IllegalArgumentException e){
+
+ }
+ }
+ }
+
public void testLoadSave() {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
CreationHelper createHelper = workbook.getCreationHelper();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org