poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1442148 - in /poi/trunk/src/ooxml: java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java testcases/org/apache/poi/openxml4j/opc/TestRelationships.java
Date Mon, 04 Feb 2013 15:06:47 GMT
Author: nick
Date: Mon Feb  4 15:06:46 2013
New Revision: 1442148

URL: http://svn.apache.org/viewvc?rev=1442148&view=rev
Log:
Improve the number of steps when generating an ID of a new relationship, and add more tests,
bug #53904

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java?rev=1442148&r1=1442147&r2=1442148&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
Mon Feb  4 15:06:46 2013
@@ -72,6 +72,12 @@ public final class PackageRelationshipCo
 	 * Reference to the package.
 	 */
 	private OPCPackage container;
+	
+	/**
+	 * The ID number of the next rID# to generate, or -1
+	 *  if that is still to be determined.
+	 */
+	private int nextRelationshipId = -1;
 
 	/**
 	 * Constructor.
@@ -206,14 +212,17 @@ public final class PackageRelationshipCo
 	 */
 	public PackageRelationship addRelationship(URI targetUri,
 			TargetMode targetMode, String relationshipType, String id) {
-
-		if (id == null) {
-			// Generate a unique ID is id parameter is null.
-			int i = 0;
-			do {
-				id = "rId" + ++i;
-			} while (relationshipsByID.get(id) != null);
-		}
+      if (id == null) {
+         // Generate a unique ID is id parameter is null.
+         if (nextRelationshipId == -1) {
+            nextRelationshipId = size() + 1;
+         }
+
+         // Work up until we find a unique number (there could be gaps etc)
+         do {
+            id = "rId" + nextRelationshipId++;
+         } while (relationshipsByID.get(id) != null);
+      }
 
 		PackageRelationship rel = new PackageRelationship(container,
 				sourcePart, targetUri, targetMode, relationshipType, id);

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java?rev=1442148&r1=1442147&r2=1442148&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java Mon
Feb  4 15:06:46 2013
@@ -254,6 +254,25 @@ public class TestRelationships extends T
     	// Check core too
     	assertEquals("/docProps/core.xml",
     			pkg.getRelationshipsByType("http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties").getRelationship(0).getTargetURI().toString());
+    	
+    	
+    	// Add some more
+      partB.addExternalRelationship("http://poi.apache.org/new", "http://example/poi/new");
+      partB.addExternalRelationship("http://poi.apache.org/alt", "http://example/poi/alt");
+      
+      // Check the relations
+      assertEquals(2, partA.getRelationships().size());
+      assertEquals(3, partB.getRelationships().size());
+      
+      assertEquals("/partB", partA.getRelationship("rId1").getTargetURI().toString());
+      assertEquals("http://poi.apache.org/", 
+            partA.getRelationship("rId2").getTargetURI().toString());
+      assertEquals("http://poi.apache.org/ss/", 
+            partB.getRelationship("rId1").getTargetURI().toString());
+      assertEquals("http://poi.apache.org/new", 
+            partB.getRelationship("rId2").getTargetURI().toString());
+      assertEquals("http://poi.apache.org/alt", 
+            partB.getRelationship("rId3").getTargetURI().toString());
     }
 
 



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


Mime
View raw message