Browse Source

[github-145] issue in PackagingURIHelper.encode. Thanks to @greedbell. This closes #145

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1859160 13f79535-47bb-0310-9956-ffa450edef68
pull/148/head
PJ Fanning 5 years ago
parent
commit
a805c30efb

+ 573
- 573
src/ooxml/java/org/apache/poi/openxml4j/opc/PackagingURIHelper.java
File diff suppressed because it is too large
View File


+ 66
- 65
src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java View File

@@ -25,36 +25,36 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

public class TestPackagingURIHelper extends TestCase {

/**
* Test relativizePartName() method.
*/
public void testRelativizeURI() throws Exception {
URI uri1 = new URI("/word/document.xml");
URI uri2 = new URI("/word/media/image1.gif");
/**
* Test relativizePartName() method.
*/
public void testRelativizeURI() throws Exception {
URI uri1 = new URI("/word/document.xml");
URI uri2 = new URI("/word/media/image1.gif");
URI uri3 = new URI("/word/media/image1.gif#Sheet1!A1");
URI uri4 = new URI("#'My%20Sheet1'!A1");

// Document to image is down a directory
URI retURI1to2 = PackagingURIHelper.relativizeURI(uri1, uri2);
assertEquals("media/image1.gif", retURI1to2.getPath());
// Image to document is up a directory
URI retURI2to1 = PackagingURIHelper.relativizeURI(uri2, uri1);
assertEquals("../document.xml", retURI2to1.getPath());
// Document and CustomXML parts totally different [Julien C.]
URI uriCustomXml = new URI("/customXml/item1.xml");
URI uriRes = PackagingURIHelper.relativizeURI(uri1, uriCustomXml);
assertEquals("../customXml/item1.xml", uriRes.toString());
// Document to itself is the same place (empty URI)
URI retURI2 = PackagingURIHelper.relativizeURI(uri1, uri1);
// YK: the line below used to assert empty string which is wrong
// Document to image is down a directory
URI retURI1to2 = PackagingURIHelper.relativizeURI(uri1, uri2);
assertEquals("media/image1.gif", retURI1to2.getPath());
// Image to document is up a directory
URI retURI2to1 = PackagingURIHelper.relativizeURI(uri2, uri1);
assertEquals("../document.xml", retURI2to1.getPath());
// Document and CustomXML parts totally different [Julien C.]
URI uriCustomXml = new URI("/customXml/item1.xml");
URI uriRes = PackagingURIHelper.relativizeURI(uri1, uriCustomXml);
assertEquals("../customXml/item1.xml", uriRes.toString());
// Document to itself is the same place (empty URI)
URI retURI2 = PackagingURIHelper.relativizeURI(uri1, uri1);
// YK: the line below used to assert empty string which is wrong
// if source and target are the same they should be relaitivized as the last segment,
// see Bugzilla 51187
assertEquals("document.xml", retURI2.getPath());

// relativization against root
URI root = new URI("/");
// relativization against root
URI root = new URI("/");
uriRes = PackagingURIHelper.relativizeURI(root, uri1);
assertEquals("/word/document.xml", uriRes.toString());

@@ -69,48 +69,48 @@ public class TestPackagingURIHelper extends TestCase {
assertEquals("#'My%20Sheet1'!A1", uriRes.toString());
}

/**
* Test createPartName(String, y)
*/
public void testCreatePartNameRelativeString()
throws InvalidFormatException {
PackagePartName partNameToValid = PackagingURIHelper
.createPartName("/word/media/image1.gif");
OPCPackage pkg = OPCPackage.create("DELETEIFEXISTS.docx");
// Base part
PackagePartName nameBase = PackagingURIHelper
.createPartName("/word/document.xml");
PackagePart partBase = pkg.createPart(nameBase, ContentTypes.XML);
// Relative part name
PackagePartName relativeName = PackagingURIHelper.createPartName(
"media/image1.gif", partBase);
assertTrue("The part name must be equal to "
+ partNameToValid.getName(), partNameToValid
.equals(relativeName));
pkg.revert();
}
/**
* Test createPartName(URI, y)
*/
public void testCreatePartNameRelativeURI() throws Exception {
PackagePartName partNameToValid = PackagingURIHelper
.createPartName("/word/media/image1.gif");
OPCPackage pkg = OPCPackage.create("DELETEIFEXISTS.docx");
// Base part
PackagePartName nameBase = PackagingURIHelper
.createPartName("/word/document.xml");
PackagePart partBase = pkg.createPart(nameBase, ContentTypes.XML);
// Relative part name
PackagePartName relativeName = PackagingURIHelper.createPartName(
new URI("media/image1.gif"), partBase);
assertTrue("The part name must be equal to "
+ partNameToValid.getName(), partNameToValid
.equals(relativeName));
pkg.revert();
}
/**
* Test createPartName(String, y)
*/
public void testCreatePartNameRelativeString()
throws InvalidFormatException {
PackagePartName partNameToValid = PackagingURIHelper
.createPartName("/word/media/image1.gif");
OPCPackage pkg = OPCPackage.create("DELETEIFEXISTS.docx");
// Base part
PackagePartName nameBase = PackagingURIHelper
.createPartName("/word/document.xml");
PackagePart partBase = pkg.createPart(nameBase, ContentTypes.XML);
// Relative part name
PackagePartName relativeName = PackagingURIHelper.createPartName(
"media/image1.gif", partBase);
assertTrue("The part name must be equal to "
+ partNameToValid.getName(), partNameToValid
.equals(relativeName));
pkg.revert();
}
/**
* Test createPartName(URI, y)
*/
public void testCreatePartNameRelativeURI() throws Exception {
PackagePartName partNameToValid = PackagingURIHelper
.createPartName("/word/media/image1.gif");
OPCPackage pkg = OPCPackage.create("DELETEIFEXISTS.docx");
// Base part
PackagePartName nameBase = PackagingURIHelper
.createPartName("/word/document.xml");
PackagePart partBase = pkg.createPart(nameBase, ContentTypes.XML);
// Relative part name
PackagePartName relativeName = PackagingURIHelper.createPartName(
new URI("media/image1.gif"), partBase);
assertTrue("The part name must be equal to "
+ partNameToValid.getName(), partNameToValid
.equals(relativeName));
pkg.revert();
}

public void testCreateURIFromString() throws Exception {
String[] href = {
@@ -119,6 +119,7 @@ public class TestPackagingURIHelper extends TestCase {
"file:///D:\\seva\\1981\\r810102ns.mp3",
"..\\cygwin\\home\\yegor\\dinom\\%5baccess%5d.2010-10-26.log",
"#'Instructions (Text)'!B21",
"#'性'!B21",
"javascript://"
};
for(String s : href){

Loading…
Cancel
Save