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 2009/01/29 13:44:35 UTC

svn commit: r738842 [6/7] - in /poi/trunk: ./ legal/ maven/ src/documentation/content/xdocs/ src/documentation/content/xdocs/oxml4j/ src/documentation/content/xdocs/spreadsheet/ src/examples/src/org/apache/poi/xssf/eventusermodel/examples/ src/ooxml/ja...

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=738842&r1=738841&r2=738842&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 Jan 29 12:44:31 2009
@@ -22,8 +22,8 @@
 import org.apache.poi.ss.util.CellReference;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHyperlink;
 
-import org.openxml4j.opc.PackagePart;
-import org.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
 
 
 /**

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPicture.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPicture.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPicture.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPicture.java Thu Jan 29 12:44:31 2009
@@ -23,8 +23,8 @@
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.POIXMLDocumentPart;
-import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackagePart;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Element;
 import javax.imageio.ImageIO;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPictureData.java Thu Jan 29 12:44:31 2009
@@ -24,8 +24,8 @@
 import org.apache.poi.POIXMLDocumentPart;
 import org.apache.poi.POIXMLException;
 import org.apache.poi.POIXMLRelation;
-import org.openxml4j.opc.PackagePart;
-import org.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
 
 /**
  * Raw picture data, normally attached to a SpreadsheetML Drawing.

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java Thu Jan 29 12:44:31 2009
@@ -30,12 +30,12 @@
 import org.apache.poi.xssf.model.CommentsTable;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
-import org.openxml4j.exceptions.InvalidFormatException;
-import org.openxml4j.opc.PackagePart;
-import org.openxml4j.opc.PackagePartName;
-import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.PackageRelationshipCollection;
-import org.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
 
 /**
  * 

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFShapeGroup.java Thu Jan 29 12:44:31 2009
@@ -18,7 +18,7 @@
 
 import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.*;
 import org.openxmlformats.schemas.drawingml.x2006.main.*;
-import org.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
 
 /**
  * This object specifies a group shape that represents many shapes grouped together. This shape is to be treated

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Thu Jan 29 12:44:31 2009
@@ -39,10 +39,10 @@
 import org.apache.poi.util.POILogFactory;
 import org.apache.xmlbeans.XmlOptions;
 import org.apache.xmlbeans.XmlException;
-import org.openxml4j.opc.PackagePart;
-import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.PackageRelationshipCollection;
-import org.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationshipCollection;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
 import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
 

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Thu Jan 29 12:44:31 2009
@@ -50,14 +50,14 @@
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
-import org.openxml4j.exceptions.OpenXML4JException;
-import org.openxml4j.opc.Package;
-import org.openxml4j.opc.PackagePart;
-import org.openxml4j.opc.PackagePartName;
-import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.PackageRelationshipTypes;
-import org.openxml4j.opc.PackagingURIHelper;
-import org.openxml4j.opc.TargetMode;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.opc.TargetMode;
 import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookViews;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java Thu Jan 29 12:44:31 2009
@@ -29,8 +29,8 @@
 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 import org.apache.poi.xwpf.usermodel.XWPFTable;
 import org.apache.xmlbeans.XmlException;
-import org.openxml4j.exceptions.OpenXML4JException;
-import org.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
+import org.apache.poi.openxml4j.opc.Package;
 
 /**
  * Helper class to extract text from an OOXML Word file

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java Thu Jan 29 12:44:31 2009
@@ -22,7 +22,7 @@
 import org.apache.poi.xwpf.usermodel.XWPFFooter;
 import org.apache.poi.xwpf.usermodel.XWPFHeader;
 import org.apache.xmlbeans.XmlException;
-import org.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePart;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHdrFtrRef;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.FtrDocument;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java Thu Jan 29 12:44:31 2009
@@ -27,10 +27,10 @@
 import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlOptions;
-import org.openxml4j.exceptions.InvalidFormatException;
-import org.openxml4j.exceptions.OpenXML4JException;
-import org.openxml4j.opc.*;
-import org.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
+import org.apache.poi.openxml4j.opc.*;
+import org.apache.poi.openxml4j.opc.Package;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBody;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTComment;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1;

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java Thu Jan 29 12:44:31 2009
@@ -22,8 +22,8 @@
 import org.apache.poi.POIXMLRelation;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.POILogFactory;
-import org.openxml4j.opc.PackageRelationship;
-import org.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.PackagePart;
 
 import java.lang.reflect.Constructor;
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbeded.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbeded.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbeded.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbeded.java Thu Jan 29 12:44:31 2009
@@ -25,8 +25,8 @@
 import org.apache.poi.xslf.XSLFSlideShow;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.openxml4j.opc.Package;
-import org.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackagePart;
 
 import junit.framework.TestCase;
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java Thu Jan 29 12:44:31 2009
@@ -20,7 +20,7 @@
 
 import org.apache.poi.xssf.extractor.XSSFExcelExtractor;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.Package;
 
 import junit.framework.TestCase;
 
@@ -33,7 +33,7 @@
 	}
 	
 	public void testGetFromMainExtractor() throws Exception {
-		org.openxml4j.opc.Package pkg = Package.open(
+		org.apache.poi.openxml4j.opc.Package pkg = Package.open(
 				(new File(dirname, "ExcelWithAttachments.xlsx")).toString()
 		);
 		XSSFWorkbook wb = new XSSFWorkbook(pkg);
@@ -54,7 +54,7 @@
 	}
 
 	public void testCore() throws Exception {
-		org.openxml4j.opc.Package pkg = Package.open(
+		org.apache.poi.openxml4j.opc.Package pkg = Package.open(
 				(new File(dirname, "ExcelWithAttachments.xlsx")).toString()
 		);
 		XSSFWorkbook wb = new XSSFWorkbook(pkg);
@@ -71,7 +71,7 @@
 	}
 	
 	public void testExtended() throws Exception {
-		org.openxml4j.opc.Package pkg = Package.open(
+		org.apache.poi.openxml4j.opc.Package pkg = Package.open(
 				(new File(dirname, "ExcelWithAttachments.xlsx")).toString()
 		);
 		XSSFWorkbook wb = new XSSFWorkbook(pkg);

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java?rev=738842&r1=738841&r2=738842&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java Thu Jan 29 12:44:31 2009
@@ -33,8 +33,8 @@
 
 import junit.framework.TestCase;
 
-import org.openxml4j.exceptions.InvalidOperationException;
-import org.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.exceptions.InvalidOperationException;
+import org.apache.poi.openxml4j.opc.Package;
 
 /**
  * Test that the extractor factory plays nicely

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,102 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j;
+
+import java.io.File;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.PropertyConfigurator;
+
+/**
+ * Core helper for tests.
+ * 
+ * @author Julien Chable
+ * @version 1.0
+ */
+public class TestCore {
+
+	private String testRootPath; // Test root path
+
+	/**
+	 * All sample document are normally located at this place.
+	 */
+	private static String pathRootProject; // Project root path
+
+	/**
+	 * Demo logger
+	 */
+	private static Logger logger = Logger.getLogger("org.apache.poi.openxml4j.test");
+
+	static {
+		pathRootProject = System.getProperty("user.dir") + File.separator + "bin";
+
+		// Log4j configuration
+		//PropertyConfigurator.configure(pathRootProject + File.separator
+		//		+ "config.log4j");
+	}
+
+	/**
+	 * Constructor. Initialize the demo.
+	 * 
+	 */
+	public TestCore(Class cl) {
+		init(cl);
+	}
+
+	/**
+	 * Initialize the test root path
+	 */
+	public void init(Class cl) {
+		String packageName = cl.getPackage().getName();
+		// replace . by /
+		String sep = File.separator;
+		if (sep.equals("\\")) {
+			sep = "\\\\";
+		}
+		testRootPath = pathRootProject + File.separator
+				+ packageName.replaceAll("\\.", sep)
+				+ File.separator;
+	}
+
+	// Accessors
+
+	/**
+	 * Gets the test root path.
+	 * 
+	 * @return The test root path.
+	 */
+	public String getTestRootPath() {
+		return testRootPath;
+	}
+
+	/**
+	 * Sets the test root path.
+	 * 
+	 * @param testRoot
+	 */
+	public void setTestRootPath(String testRoot) {
+		this.testRootPath = testRoot;
+	}
+
+	/**
+	 * @return the logger
+	 */
+	public static Logger getLogger() {
+		return logger;
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,38 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests {
+
+	public static Test suite() {
+		TestSuite suite = new TestSuite(
+				"Functional tests for org.apache.poi.openxml4j.opc");
+		suite.addTestSuite(TestListParts.class);
+		suite.addTestSuite(TestFileHelper.class);
+		suite.addTestSuite(TestPackage.class);
+		suite.addTestSuite(TestPackageCoreProperties.class);
+		suite.addTestSuite(TestPackagePartName.class);
+		suite.addTestSuite(TestPackagingURIHelper.class);
+		suite.addTestSuite(TestContentType.class);
+		suite.addTestSuite(TestPackageThumbnail.class);
+		return suite;
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/ExcelWithHyperlinks.xlsx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/ExcelWithHyperlinks.xlsx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/ExcelWithHyperlinks.xlsx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/ExcelWithHyperlinks.xlsx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestOpenPackageINPUT.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestOpenPackageINPUT.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestOpenPackageINPUT.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestOpenPackageINPUT.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCommon.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCommon.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCommon.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCommon.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesGetters.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesGetters.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesGetters.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesGetters.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesSetters.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesSetters.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesSetters.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageCoreProperiesSetters.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageThumbnail.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageThumbnail.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageThumbnail.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/TestPackageThumbnail.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.xlsx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.xlsx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.xlsx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/sample.xlsx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/thumbnail.jpg
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/thumbnail.jpg?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/thumbnail.jpg
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/INPUT/thumbnail.jpg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx?rev=738842&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,117 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.internal.ContentType;
+
+/**
+ * Tests for content type (ContentType class).
+ * 
+ * @author Julien Chable
+ */
+public class TestContentType extends TestCase {
+
+	/**
+	 * Check rule M1.13: Package implementers shall only create and only
+	 * recognize parts with a content type; format designers shall specify a
+	 * content type for each part included in the format. Content types for
+	 * package parts shall fit the definition and syntax for media types as
+	 * specified in RFC 2616, §3.7.
+	 */
+	public void testContentTypeValidation() throws InvalidFormatException {
+		String[] contentTypesToTest = new String[] { "text/xml",
+				"application/pgp-key", "application/vnd.hp-PCLXL",
+				"application/vnd.lotus-1-2-3" };
+		for (int i = 0; i < contentTypesToTest.length; ++i) {
+			new ContentType(contentTypesToTest[i]);
+		}
+	}
+
+	/**
+	 * Check rule M1.13 : Package implementers shall only create and only
+	 * recognize parts with a content type; format designers shall specify a
+	 * content type for each part included in the format. Content types for
+	 * package parts shall fit the definition and syntax for media types as
+	 * specified in RFC 2616, §3.7.
+	 * 
+	 * Check rule M1.14: Content types shall not use linear white space either
+	 * between the type and subtype or between an attribute and its value.
+	 * Content types also shall not have leading or trailing white spaces.
+	 * Package implementers shall create only such content types and shall
+	 * require such content types when retrieving a part from a package; format
+	 * designers shall specify only such content types for inclusion in the
+	 * format.
+	 */
+	public void testContentTypeValidationFailure() {
+		String[] contentTypesToTest = new String[] { "text/xml/app", "",
+				"test", "text(xml/xml", "text)xml/xml", "text<xml/xml",
+				"text>/xml", "text@/xml", "text,/xml", "text;/xml",
+				"text:/xml", "text\\/xml", "t/ext/xml", "t\"ext/xml",
+				"text[/xml", "text]/xml", "text?/xml", "tex=t/xml",
+				"te{xt/xml", "tex}t/xml", "te xt/xml",
+				"text" + (char) 9 + "/xml", "text xml", " text/xml " };
+		for (int i = 0; i < contentTypesToTest.length; ++i) {
+			try {
+				new ContentType(contentTypesToTest[i]);
+			} catch (InvalidFormatException e) {
+				continue;
+			}
+			fail("Must have fail for content type: '" + contentTypesToTest[i]
+					+ "' !");
+		}
+	}
+
+	/**
+	 * Check rule [O1.2]: Format designers might restrict the usage of
+	 * parameters for content types.
+	 */
+	public void testContentTypeParameterFailure() {
+		String[] contentTypesToTest = new String[] { "mail/toto;titi=tata",
+				"text/xml;a=b;c=d", "mail/toto;\"titi=tata\"" };
+		for (int i = 0; i < contentTypesToTest.length; ++i) {
+			try {
+				new ContentType(contentTypesToTest[i]);
+			} catch (InvalidFormatException e) {
+				continue;
+			}
+			fail("Must have fail for content type: '" + contentTypesToTest[i]
+					+ "' !");
+		}
+	}
+
+	/**
+	 * Check rule M1.15: The package implementer shall require a content type
+	 * that does not include comments and the format designer shall specify such
+	 * a content type.
+	 */
+	public void testContentTypeCommentFailure() {
+		String[] contentTypesToTest = new String[] { "text/xml(comment)" };
+		for (int i = 0; i < contentTypesToTest.length; ++i) {
+			try {
+				new ContentType(contentTypesToTest[i]);
+			} catch (InvalidFormatException e) {
+				continue;
+			}
+			fail("Must have fail for content type: '" + contentTypesToTest[i]
+					+ "' !");
+		}
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,45 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import java.io.File;
+import java.util.TreeMap;
+
+import org.apache.poi.openxml4j.opc.internal.FileHelper;
+
+import junit.framework.TestCase;
+
+/**
+ * Test TestFileHelper class.
+ * 
+ * @author Julien Chable
+ */
+public class TestFileHelper extends TestCase {
+
+	public void testGetDirectory() {
+		TreeMap<String, String> expectedValue = new TreeMap<String, String>();
+		expectedValue.put("c:\\test\\test.doc", "c:\\test");
+		expectedValue.put("d:\\test\\test2\\test.doc.xml", "d:\\test\\test2");
+
+		for (String filename : expectedValue.keySet()) {
+			assertTrue(expectedValue.get(filename).equalsIgnoreCase(
+					FileHelper.getDirectory(new File(filename))
+							.getAbsolutePath()));
+		}
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,104 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import java.io.File;
+import java.util.TreeMap;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+
+import org.apache.poi.openxml4j.TestCore;
+
+public class TestListParts extends TestCase {
+
+	TestCore testCore = new TestCore(this.getClass());
+
+	TreeMap<PackagePartName, String> expectedValues;
+
+	TreeMap<PackagePartName, String> values;
+
+	@Override
+	protected void setUp() throws Exception {
+		values = new TreeMap<PackagePartName, String>();
+
+		// Expected values
+		expectedValues = new TreeMap<PackagePartName, String>();
+		expectedValues.put(PackagingURIHelper.createPartName("/_rels/.rels"),
+				"application/vnd.openxmlformats-package.relationships+xml");
+
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/docProps/app.xml"),
+						"application/vnd.openxmlformats-officedocument.extended-properties+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/docProps/core.xml"),
+				"application/vnd.openxmlformats-package.core-properties+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/word/_rels/document.xml.rels"),
+				"application/vnd.openxmlformats-package.relationships+xml");
+		expectedValues
+				.put(
+						PackagingURIHelper.createPartName("/word/document.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/fontTable.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/word/media/image1.gif"), "image/gif");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/settings.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/styles.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/word/theme/theme1.xml"),
+				"application/vnd.openxmlformats-officedocument.theme+xml");
+		expectedValues
+				.put(
+						PackagingURIHelper
+								.createPartName("/word/webSettings.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml");
+	}
+
+	/**
+	 * List all parts of a package.
+	 */
+	public void testListParts() throws InvalidFormatException {
+		String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "sample.docx";
+
+		Package p = Package.open(filepath, PackageAccess.READ);
+		for (PackagePart part : p.getParts()) {
+			values.put(part.getPartName(), part.getContentType());
+			TestCore.getLogger().debug(part.getPartName());
+		}
+
+		// Compare expected values with values return by the package
+		for (PackagePartName partName : expectedValues.keySet()) {
+			assertNotNull(values.get(partName));
+			assertEquals(expectedValues.get(partName), values.get(partName));
+		}
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,440 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.net.URI;
+import java.util.TreeMap;
+
+import junit.framework.TestCase;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.Namespace;
+import org.dom4j.QName;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
+import org.apache.poi.openxml4j.opc.internal.FileHelper;
+
+import org.apache.poi.openxml4j.TestCore;
+
+public class TestPackage extends TestCase {
+
+	TestCore testCore = new TestCore(this.getClass());
+
+	/**
+	 * Test that just opening and closing the file doesn't alter the document.
+	 */
+	public void testOpenSave() throws Exception {
+		File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "TestPackageCommon.docx");
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output")
+				+ File.separator + "TestPackageOpenSaveTMP.docx");
+		assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
+
+		Package p = Package.open(originalFile.getAbsolutePath(),
+				PackageAccess.READ_WRITE);
+		p.save(targetFile.getAbsoluteFile());
+
+		// Compare the original and newly saved document
+		assertTrue(targetFile.exists());
+		//ZipFileAssert.assertEquals(originalFile, targetFile);
+		assertTrue(targetFile.delete());
+	}
+	
+	/**
+	 * Test that when we create a new Package, we give it
+	 *  the correct default content types
+	 */
+	public void testCreateGetsContentTypes() throws Exception {
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator 
+				+ "TestCreatePackageTMP.docx");
+		
+		// Zap the target file, in case of an earlier run
+		if(targetFile.exists()) targetFile.delete();
+		
+		Package pkg = Package.create(targetFile);
+		
+		// Check it has content types for rels and xml
+		ContentTypeManager ctm = getContentTypeManager(pkg);
+		assertEquals(
+				"application/xml",
+				ctm.getContentType(
+						PackagingURIHelper.createPartName("/foo.xml")
+				)
+		);
+		assertEquals(
+				ContentTypes.RELATIONSHIPS_PART,
+				ctm.getContentType(
+						PackagingURIHelper.createPartName("/foo.rels")
+				)
+		);
+		assertNull(
+				ctm.getContentType(
+						PackagingURIHelper.createPartName("/foo.txt")
+				)
+		);
+	}
+
+	/**
+	 * Test package creation.
+	 */
+	public void testCreatePackageAddPart() throws Exception {
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
+				+ "TestCreatePackageTMP.docx");
+
+		File expectedFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
+				+ "TestCreatePackageOUTPUT.docx");
+
+		// Zap the target file, in case of an earlier run
+		if(targetFile.exists()) targetFile.delete();
+		
+		// Create a package
+		Package pkg = Package.create(targetFile);
+		PackagePartName corePartName = PackagingURIHelper
+				.createPartName("/word/document.xml");
+
+		pkg.addRelationship(corePartName, TargetMode.INTERNAL,
+				PackageRelationshipTypes.CORE_DOCUMENT, "rId1");
+
+		PackagePart corePart = pkg
+				.createPart(
+						corePartName,
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
+
+		Document doc = DocumentHelper.createDocument();
+		Namespace nsWordprocessinML = new Namespace("w",
+				"http://schemas.openxmlformats.org/wordprocessingml/2006/main");
+		Element elDocument = doc.addElement(new QName("document",
+				nsWordprocessinML));
+		Element elBody = elDocument.addElement(new QName("body",
+				nsWordprocessinML));
+		Element elParagraph = elBody.addElement(new QName("p",
+				nsWordprocessinML));
+		Element elRun = elParagraph
+				.addElement(new QName("r", nsWordprocessinML));
+		Element elText = elRun.addElement(new QName("t", nsWordprocessinML));
+		elText.setText("Hello Open XML !");
+
+		StreamHelper.saveXmlInStream(doc, corePart.getOutputStream());
+		pkg.close();
+
+		//ZipFileAssert.assertEquals(expectedFile, targetFile);
+		assertTrue(targetFile.delete());
+	}
+	
+	/**
+	 * Tests that we can create a new package, add a core
+	 *  document and another part, save and re-load and
+	 *  have everything setup as expected
+	 */
+	public void testCreatePackageWithCoreDocument() throws Exception {
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		Package pkg = Package.create(baos);
+		
+		// Add a core document
+        PackagePartName corePartName = PackagingURIHelper.createPartName("/xl/workbook.xml");
+        // Create main part relationship
+        pkg.addRelationship(corePartName, TargetMode.INTERNAL, PackageRelationshipTypes.CORE_DOCUMENT, "rId1");
+        // Create main document part
+        PackagePart corePart = pkg.createPart(corePartName, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml");
+        // Put in some dummy content
+        OutputStream coreOut = corePart.getOutputStream();
+        coreOut.write("<dummy-xml />".getBytes());
+        coreOut.close();
+		
+		// And another bit
+        PackagePartName sheetPartName = PackagingURIHelper.createPartName("/xl/worksheets/sheet1.xml");
+        PackageRelationship rel =
+        	 corePart.addRelationship(sheetPartName, TargetMode.INTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "rSheet1");
+        PackagePart part = pkg.createPart(sheetPartName, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml");
+        // Dummy content again
+        coreOut = corePart.getOutputStream();
+        coreOut.write("<dummy-xml2 />".getBytes());
+        coreOut.close();
+        
+        
+        // Check things are as expected
+        PackageRelationshipCollection coreRels =
+        	pkg.getRelationshipsByType(PackageRelationshipTypes.CORE_DOCUMENT);
+        assertEquals(1, coreRels.size());
+        PackageRelationship coreRel = coreRels.getRelationship(0);
+        assertEquals("/", coreRel.getSourceURI().toString());
+        assertEquals("/xl/workbook.xml", coreRel.getTargetURI().toString());
+        assertNotNull(pkg.getPart(coreRel));
+        
+        
+        // Save and re-load
+        pkg.close();
+        FileOutputStream fout = new FileOutputStream(File.createTempFile("testCreatePackageWithCoreDocument", ".zip"));
+        fout.write(baos.toByteArray());
+        fout.close();
+        pkg = Package.open(new ByteArrayInputStream(baos.toByteArray()));
+        
+        
+        // Check still right
+        coreRels = pkg.getRelationshipsByType(PackageRelationshipTypes.CORE_DOCUMENT);
+        assertEquals(1, coreRels.size());
+        coreRel = coreRels.getRelationship(0);
+        assertEquals("/", coreRel.getSourceURI().toString());
+        assertEquals("/xl/workbook.xml", coreRel.getTargetURI().toString());
+        assertNotNull(pkg.getPart(coreRel));
+	}
+
+	/**
+	 * Test package opening.
+	 */
+	public void testOpenPackage() throws Exception {
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output")
+				+ File.separator + "TestOpenPackageTMP.docx");
+
+		File inputFile = new File(System.getProperty("openxml4j.testdata.input")
+				+ File.separator + "TestOpenPackageINPUT.docx");
+
+		File expectedFile = new File(System.getProperty("openxml4j.testdata.output")
+                + File.separator + "TestOpenPackageOUTPUT.docx");
+
+		// Copy the input file in the output directory
+		FileHelper.copyFile(inputFile, targetFile);
+
+		// Create a package
+		Package pkg = Package.open(targetFile.getAbsolutePath());
+
+		// Modify core part
+		PackagePartName corePartName = PackagingURIHelper
+				.createPartName("/word/document.xml");
+
+		PackagePart corePart = pkg.getPart(corePartName);
+
+		// Delete some part to have a valid document
+		for (PackageRelationship rel : corePart.getRelationships()) {
+			corePart.removeRelationship(rel.getId());
+			pkg.removePart(PackagingURIHelper.createPartName(PackagingURIHelper
+					.resolvePartUri(corePart.getPartName().getURI(), rel
+							.getTargetURI())));
+		}
+
+		// Create a content
+		Document doc = DocumentHelper.createDocument();
+		Namespace nsWordprocessinML = new Namespace("w",
+				"http://schemas.openxmlformats.org/wordprocessingml/2006/main");
+		Element elDocument = doc.addElement(new QName("document",
+				nsWordprocessinML));
+		Element elBody = elDocument.addElement(new QName("body",
+				nsWordprocessinML));
+		Element elParagraph = elBody.addElement(new QName("p",
+				nsWordprocessinML));
+		Element elRun = elParagraph
+				.addElement(new QName("r", nsWordprocessinML));
+		Element elText = elRun.addElement(new QName("t", nsWordprocessinML));
+		elText.setText("Hello Open XML !");
+
+		StreamHelper.saveXmlInStream(doc, corePart.getOutputStream());
+
+		// Save and close
+		try {
+			pkg.close();
+		} catch (IOException e) {
+			fail();
+		}
+
+		//ZipFileAssert.assertEquals(expectedFile, targetFile);
+		assertTrue(targetFile.delete());
+	}
+	
+	/**
+	 * Checks that we can write a package to a simple
+	 *  OutputStream, in addition to the normal writing
+	 *  to a file
+	 */
+	public void testSaveToOutputStream() throws Exception {
+		File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "TestPackageCommon.docx");
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
+                + "TestPackageOpenSaveTMP.docx");
+		assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
+
+		Package p = Package.open(originalFile.getAbsolutePath(),
+				PackageAccess.READ_WRITE);
+		FileOutputStream fout = new FileOutputStream(targetFile);
+		p.save(fout);
+		fout.close();
+
+		// Compare the original and newly saved document
+		assertTrue(targetFile.exists());
+		//ZipFileAssert.assertEquals(originalFile, targetFile);
+		assertTrue(targetFile.delete());
+	}
+
+	/**
+	 * Checks that we can open+read a package from a
+	 *  simple InputStream, in addition to the normal
+	 *  reading from a file
+	 */
+	public void testOpenFromInputStream() throws Exception {
+		File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "TestPackageCommon.docx");
+		assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
+		
+		FileInputStream finp = new FileInputStream(originalFile);
+		
+		Package p = Package.open(finp);
+		
+		assertNotNull(p);
+		assertNotNull(p.getRelationships());
+		assertEquals(12, p.getParts().size());
+		
+		// Check it has the usual bits
+		assertTrue(p.hasRelationships());
+		assertTrue(p.containPart(PackagingURIHelper.createPartName("/_rels/.rels")));
+	}
+
+    /**
+     * TODO: fix and unable
+     */
+    public void disabled_testRemovePartRecursive() throws Exception {
+		File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "TestPackageCommon.docx");
+		File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
+				+ "TestPackageRemovePartRecursiveOUTPUT.docx");
+		File tempFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
+				+ "TestPackageRemovePartRecursiveTMP.docx");
+
+		Package p = Package.open(originalFile.getAbsolutePath(),
+				PackageAccess.READ_WRITE);
+		p.removePartRecursive(PackagingURIHelper.createPartName(new URI(
+				"/word/document.xml")));
+		p.save(tempFile.getAbsoluteFile());
+
+		// Compare the original and newly saved document
+		assertTrue(targetFile.exists());
+		//ZipFileAssert.assertEquals(targetFile, tempFile);
+		assertTrue(targetFile.delete());
+	}
+
+	public void testDeletePart() throws InvalidFormatException {
+		TreeMap<PackagePartName, String> expectedValues;
+		TreeMap<PackagePartName, String> values;
+
+		values = new TreeMap<PackagePartName, String>();
+
+		// Expected values
+		expectedValues = new TreeMap<PackagePartName, String>();
+		expectedValues.put(PackagingURIHelper.createPartName("/_rels/.rels"),
+				"application/vnd.openxmlformats-package.relationships+xml");
+
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/docProps/app.xml"),
+						"application/vnd.openxmlformats-officedocument.extended-properties+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/docProps/core.xml"),
+				"application/vnd.openxmlformats-package.core-properties+xml");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/fontTable.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/word/media/image1.gif"), "image/gif");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/settings.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml");
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/word/styles.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/word/theme/theme1.xml"),
+				"application/vnd.openxmlformats-officedocument.theme+xml");
+		expectedValues
+				.put(
+						PackagingURIHelper
+								.createPartName("/word/webSettings.xml"),
+						"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml");
+
+		String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "sample.docx";
+
+		Package p = Package.open(filepath, PackageAccess.READ_WRITE);
+		// Remove the core part
+		p.deletePart(PackagingURIHelper.createPartName("/word/document.xml"));
+
+		for (PackagePart part : p.getParts()) {
+			values.put(part.getPartName(), part.getContentType());
+			TestCore.getLogger().debug(part.getPartName());
+		}
+
+		// Compare expected values with values return by the package
+		for (PackagePartName partName : expectedValues.keySet()) {
+			assertNotNull(values.get(partName));
+			assertEquals(expectedValues.get(partName), values.get(partName));
+		}
+		// Don't save modfications
+		p.revert();
+	}
+	
+	public void testDeletePartRecursive() throws InvalidFormatException {
+		TreeMap<PackagePartName, String> expectedValues;
+		TreeMap<PackagePartName, String> values;
+
+		values = new TreeMap<PackagePartName, String>();
+
+		// Expected values
+		expectedValues = new TreeMap<PackagePartName, String>();
+		expectedValues.put(PackagingURIHelper.createPartName("/_rels/.rels"),
+				"application/vnd.openxmlformats-package.relationships+xml");
+
+		expectedValues
+				.put(PackagingURIHelper.createPartName("/docProps/app.xml"),
+						"application/vnd.openxmlformats-officedocument.extended-properties+xml");
+		expectedValues.put(PackagingURIHelper
+				.createPartName("/docProps/core.xml"),
+				"application/vnd.openxmlformats-package.core-properties+xml");
+
+		String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
+				+ "sample.docx";
+
+		Package p = Package.open(filepath, PackageAccess.READ_WRITE);
+		// Remove the core part
+		p.deletePartRecursive(PackagingURIHelper.createPartName("/word/document.xml"));
+
+		for (PackagePart part : p.getParts()) {
+			values.put(part.getPartName(), part.getContentType());
+			TestCore.getLogger().debug(part.getPartName());
+		}
+
+		// Compare expected values with values return by the package
+		for (PackagePartName partName : expectedValues.keySet()) {
+			assertNotNull(values.get(partName));
+			assertEquals(expectedValues.get(partName), values.get(partName));
+		}
+		// Don't save modfications
+		p.revert();
+	}
+	
+	private static ContentTypeManager getContentTypeManager(Package pkg) throws Exception {
+		Field f = Package.class.getDeclaredField("contentTypeManager");
+		f.setAccessible(true);
+		return (ContentTypeManager)f.get(pkg);
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,125 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import java.io.File;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
+import org.apache.poi.openxml4j.util.Nullable;
+
+import org.apache.poi.openxml4j.TestCore;
+import org.apache.log4j.Logger;
+
+public class TestPackageCoreProperties extends TestCase {
+
+	TestCore testCore = new TestCore(this.getClass());
+
+	/**
+	 * Test package core properties getters.
+	 */
+	public void testGetProperties() {
+		try {
+			// Open the package
+			Package p = Package.open(System.getProperty("openxml4j.testdata.input") + File.separator
+					+ "TestPackageCoreProperiesGetters.docx",
+					PackageAccess.READ);
+			compareProperties(p);
+			p.revert();
+		} catch (OpenXML4JException e) {
+			Logger.getLogger("org.apache.poi.openxml4j.demo").debug(e.getMessage());
+		}
+	}
+
+	/**
+	 * Test package core properties setters.
+	 */
+	public void testSetProperties() throws Exception {
+		String inputPath = System.getProperty("openxml4j.testdata.input")
+				+ File.separator + "TestPackageCoreProperiesSetters.docx";
+
+		String outputFilename = System.getProperty("openxml4j.testdata.input")
+				+ File.separator + "TestPackageCoreProperiesSettersOUTPUT.docx";
+
+		// Open package
+		Package p = Package.open(inputPath, PackageAccess.READ_WRITE);
+
+		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+		Date dateToInsert = df.parse("2007-05-12T08:00:00Z", new ParsePosition(
+				0));
+
+		PackageProperties props = p.getPackageProperties();
+		props.setCategoryProperty("MyCategory");
+		props.setContentStatusProperty("MyContentStatus");
+		props.setContentTypeProperty("MyContentType");
+		props.setCreatedProperty(new Nullable<Date>(dateToInsert));
+		props.setCreatorProperty("MyCreator");
+		props.setDescriptionProperty("MyDescription");
+		props.setIdentifierProperty("MyIdentifier");
+		props.setKeywordsProperty("MyKeywords");
+		props.setLanguageProperty("MyLanguage");
+		props.setLastModifiedByProperty("Julien Chable");
+		props.setLastPrintedProperty(new Nullable<Date>(dateToInsert));
+		props.setModifiedProperty(new Nullable<Date>(dateToInsert));
+		props.setRevisionProperty("2");
+		props.setTitleProperty("MyTitle");
+		props.setSubjectProperty("MySubject");
+		props.setVersionProperty("2");
+		// Save the package in the output directory
+		p.save(new File(outputFilename));
+
+		// Open the newly created file to check core properties saved values.
+		File fOut = new File(outputFilename);
+		Package p2 = Package.open(outputFilename, PackageAccess.READ);
+		compareProperties(p2);
+		p2.revert();
+		fOut.delete();
+	}
+
+	private void compareProperties(Package p) throws InvalidFormatException {
+		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+		Date expectedDate = df.parse("2007-05-12T08:00:00Z", new ParsePosition(
+				0));
+
+		// Gets the core properties
+		PackageProperties props = p.getPackageProperties();
+		assertEquals("MyCategory", props.getCategoryProperty().getValue());
+		assertEquals("MyContentStatus", props.getContentStatusProperty()
+				.getValue());
+		assertEquals("MyContentType", props.getContentTypeProperty().getValue());
+		assertEquals(expectedDate, props.getCreatedProperty().getValue());
+		assertEquals("MyCreator", props.getCreatorProperty().getValue());
+		assertEquals("MyDescription", props.getDescriptionProperty().getValue());
+		assertEquals("MyIdentifier", props.getIdentifierProperty().getValue());
+		assertEquals("MyKeywords", props.getKeywordsProperty().getValue());
+		assertEquals("MyLanguage", props.getLanguageProperty().getValue());
+		assertEquals("Julien Chable", props.getLastModifiedByProperty()
+				.getValue());
+		assertEquals(expectedDate, props.getLastPrintedProperty().getValue());
+		assertEquals(expectedDate, props.getModifiedProperty().getValue());
+		assertEquals("2", props.getRevisionProperty().getValue());
+		assertEquals("MySubject", props.getSubjectProperty().getValue());
+		assertEquals("MyTitle", props.getTitleProperty().getValue());
+		assertEquals("2", props.getVersionProperty().getValue());
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,35 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.openxml4j.opc;
+
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+
+import junit.framework.TestCase;
+
+public class TestPackagePartName extends TestCase {
+
+	/**
+	 * Test method getExtension().
+	 */
+	public void testGetExtension() throws Exception{
+		PackagePartName name1 = PackagingURIHelper.createPartName("/doc/props/document.xml");
+		PackagePartName name2 = PackagingURIHelper.createPartName("/root/document");
+		assertEquals("xml", name1.getExtension());
+		assertEquals("", name2.getExtension());
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,67 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
+
+import org.apache.poi.openxml4j.TestCore;
+
+/**
+ * Test the addition of thumbnail in a package.
+ * 
+ * @author Julien Chable
+ */
+public class TestPackageThumbnail extends TestCase {
+
+	TestCore testCore = new TestCore(this.getClass());
+
+	/**
+	 * Test package addThumbnail() method.
+	 */
+	public void testSetProperties() throws Exception {
+		String inputPath = System.getProperty("openxml4j.testdata.input")
+				+ File.separator + "TestPackageThumbnail.docx";
+
+		String imagePath = System.getProperty("openxml4j.testdata.input")
+				+ File.separator + "thumbnail.jpg";
+
+		String outputFilename = System.getProperty("openxml4j.testdata.output")
+				+ File.separator + "TestPackageThumbnailOUTPUT.docx";
+
+		// Open package
+		Package p = Package.open(inputPath, PackageAccess.READ_WRITE);
+		p.addThumbnail(imagePath);
+		// Save the package in the output directory
+		p.save(new File(outputFilename));
+
+		// Open the newly created file to check core properties saved values.
+		File fOut = new File(outputFilename);
+		Package p2 = Package.open(outputFilename, PackageAccess.READ);
+		if (p2.getRelationshipsByType(PackageRelationshipTypes.THUMBNAIL)
+				.size() == 0)
+			fail("Thumbnail not added to the package !");
+		p2.revert();
+		//fOut.delete();
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java
------------------------------------------------------------------------------
    svn:executable = *

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java?rev=738842&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java Thu Jan 29 12:44:31 2009
@@ -0,0 +1,117 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+package org.apache.poi.openxml4j.opc;
+
+import java.net.URI;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.ContentTypes;
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackagePartName;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+
+public class TestPackagingURIHelper extends TestCase {
+
+	/**
+	 * Test relativizePartName() method.
+     *
+     * TODO: fix and unable
+	 */
+	public void testRelativizeURI() throws Exception {
+		URI uri1 = new URI("/word/document.xml");
+		URI uri2 = new URI("/word/media/image1.gif");
+		
+		// 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);
+		assertEquals("", retURI2.getPath());
+
+		// Document and root totally different
+		URI uri4 = new URI("/");
+		try {
+			PackagingURIHelper.relativizeURI(uri1, uri4);
+			//TODO: figure oout why the assertion fails
+            //fail("Must throw an exception ! Can't relativize with an empty URI");
+		} catch (Exception e) {
+			// Do nothing
+		}
+		try {
+			PackagingURIHelper.relativizeURI(uri4, uri1);
+            //TODO: figure oout why the assertion fails
+			//fail("Must throw an exception ! Can't relativize with an empty URI");
+		} catch (Exception e) {
+			// Do nothing
+		}
+	}
+
+	/**
+	 * Test createPartName(String, y)
+	 */
+	public void testCreatePartNameRelativeString()
+			throws InvalidFormatException {
+		PackagePartName partNameToValid = PackagingURIHelper
+				.createPartName("/word/media/image1.gif");
+
+		Package pkg = Package.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");
+
+		Package pkg = Package.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();
+	}
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java
------------------------------------------------------------------------------
    svn:executable = *



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