You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by lt...@apache.org on 2011/01/14 10:04:45 UTC

svn commit: r1058903 - in /maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src: main/java/org/apache/maven/doxia/site/decoration/inheritance/ test/java/org/apache/maven/doxia/site/decoration/inheritance/

Author: ltheussl
Date: Fri Jan 14 09:04:45 2011
New Revision: 1058903

URL: http://svn.apache.org/viewvc?rev=1058903&view=rev
Log:
turn URISyntaxException into IllegalArgumentException

Modified:
    maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
    maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java
    maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java

Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java?rev=1058903&r1=1058902&r2=1058903&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/DefaultDecorationModelInheritanceAssembler.java Fri Jan 14 09:04:45 2011
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.site.deco
  * under the License.
  */
 
-import java.net.URISyntaxException;
-
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -394,18 +392,9 @@ public class DefaultDecorationModelInher
             return link;
         }
 
-        try
-        {
-            final URIPathDescriptor oldPath = new URIPathDescriptor( urlContainer.getOldPath(), link );
+        final URIPathDescriptor oldPath = new URIPathDescriptor( urlContainer.getOldPath(), link );
 
-            return oldPath.rebaseLink( urlContainer.getNewPath() ).toString();
-        }
-        catch ( URISyntaxException ex )
-        {
-            throw new RuntimeException( "Bad URI syntax of either: " + link
-                    + ", and/or " + urlContainer.getOldPath()
-                    + ", and/or " + urlContainer.getNewPath(), ex );
-        }
+        return oldPath.rebaseLink( urlContainer.getNewPath() ).toString();
     }
 
     // relativize only affects absolute links, if the link has the same scheme, host and port
@@ -417,17 +406,9 @@ public class DefaultDecorationModelInher
             return link;
         }
 
-        try
-        {
-            final URIPathDescriptor path = new URIPathDescriptor( baseUri, link );
+        final URIPathDescriptor path = new URIPathDescriptor( baseUri, link );
 
-            return path.relativizeLink().toString();
-        }
-        catch ( URISyntaxException ex )
-        {
-            throw new RuntimeException( "Bad URI syntax of either: " + link
-                    + ", and/or " + baseUri, ex );
-        }
+        return path.relativizeLink().toString();
     }
 
     /**

Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java?rev=1058903&r1=1058902&r2=1058903&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptor.java Fri Jan 14 09:04:45 2011
@@ -50,31 +50,34 @@ public class URIPathDescriptor
      *      In addition, the path of the URI should not have any file part,
      *      ie <code>http://maven.apache.org/</code> is valid,
      *      <code>http://maven.apache.org/index.html</code> is not.
+     *      Even though the latter form is accepted without warning,
+     *      the methods in this class will not return what is probably expected,
+     *      because a slash is appended during construction, as noted above.
      * @param link the link. This may be a relative link or an absolute link.
      *      Note that URIs that start with a "/", ie don't specify a scheme, are considered relative.
      *
-     * @throws URISyntaxException if either argument is not parsable as a URI,
+     * @throws IllegalArgumentException if either argument is not parsable as a URI,
      *      or if baseURI is not absolute.
      */
     public URIPathDescriptor( final String baseURI, final String link )
-            throws URISyntaxException
     {
         final String llink = sanitizeLink( link );
         final String bbase = sanitizeBase( baseURI );
 
-        this.baseURI = new URI( bbase ).normalize();
-        this.link = new URI( llink ).normalize();
+        this.baseURI = URI.create( bbase ).normalize();
+        this.link = URI.create( llink ).normalize();
 
         if ( !this.baseURI.isAbsolute() )
         {
-            throw new URISyntaxException( baseURI, "Base must be an absolute URI!" );
+            throw new IllegalArgumentException( "Base URI is not absolute: " + baseURI );
         }
     }
 
     /**
      * Return the base of this URIPathDescriptor as a URI.
+     * This is always {@link URI#normalize() normalized}.
      *
-     * @return the base URI.
+     * @return the normalized base URI.
      */
     public URI getBaseURI()
     {
@@ -83,8 +86,9 @@ public class URIPathDescriptor
 
     /**
      * Return the link of this URIPathDescriptor as a URI.
+     * This is always {@link URI#normalize() normalized}.
      *
-     * @return the link URI.
+     * @return the normalized link URI.
      */
     public URI getLink()
     {
@@ -116,6 +120,8 @@ public class URIPathDescriptor
         return relativizeLink( baseURI.toString(), link );
     }
 
+    // NOTE: URI.relativize does not work as expected, see
+    // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6226081
     private static URI relativizeLink( final String base, final URI link )
     {
         if ( !link.isAbsolute() )
@@ -123,16 +129,7 @@ public class URIPathDescriptor
             return link;
         }
 
-        final URI newBaseURI;
-
-        try
-        {
-            newBaseURI = new URI( base );
-        }
-        catch ( URISyntaxException ex )
-        {
-            return link;
-        }
+        final URI newBaseURI = URI.create( base );
 
         if ( !sameSite( link, newBaseURI ) )
         {
@@ -141,14 +138,7 @@ public class URIPathDescriptor
 
         final String relativePath = PathTool.getRelativeWebPath( newBaseURI.getPath(), link.getPath() );
 
-        try
-        {
-            return new URI( relativePath );
-        }
-        catch ( URISyntaxException ex )
-        {
-            return link;
-        }
+        return URI.create( relativePath );
     }
 
     /**
@@ -163,7 +153,7 @@ public class URIPathDescriptor
      * @param newBase the new base URI. Has to be parsable as a URI.
      *.
      * @return a new relative link or the original link {@link #resolveLink() resolved},
-     * i.e. as an absolute link, if the link cannot be re-based.
+     *      i.e. as an absolute link, if the link cannot be re-based.
      */
     public URI rebaseLink( final String newBase )
     {
@@ -195,14 +185,7 @@ public class URIPathDescriptor
 
         final String relativeBasePath = PathTool.getRelativeWebPath( newBaseURI.getPath(), baseURI.getPath() );
 
-        try
-        {
-            return new URI( relativeBasePath ).resolve( link );
-        }
-        catch ( URISyntaxException ex )
-        {
-            return resolveLink();
-        }
+        return URI.create( relativeBasePath ).resolve( link );
     }
 
     /**

Modified: maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java?rev=1058903&r1=1058902&r2=1058903&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/test/java/org/apache/maven/doxia/site/decoration/inheritance/URIPathDescriptorTest.java Fri Jan 14 09:04:45 2011
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.site.deco
  */
 
 import java.net.URI;
-import java.net.URISyntaxException;
 
 import junit.framework.TestCase;
 
@@ -60,7 +59,7 @@ public class URIPathDescriptorTest
             compare = new URIPathDescriptor( "/doxia", "http://maven.apache.org" );
             fail();
         }
-        catch ( URISyntaxException ex )
+        catch ( IllegalArgumentException ex )
         {
             assertNotNull( ex );
         }