Author: hboutemy
Date: Sat Dec 19 14:09:41 2015
New Revision: 1720929

URL: http://svn.apache.org/viewvc?rev=1720929&view=rev
Log:
[DOXIASITETOOLS-130] ensure calculations even if ".<extension>" in filename

Added:
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
   (with props)
Modified:
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java?rev=1720929&r1=1720928&r2=1720929&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java
 Sat Dec 19 14:09:41 2015
@@ -929,7 +929,7 @@ public class DefaultSiteRenderer
     }
 
     // TODO replace with StringUtils.endsWithIgnoreCase() from 
maven-shared-utils 0.7
-    private boolean endsWithIgnoreCase( String str, String searchStr )
+    static boolean endsWithIgnoreCase( String str, String searchStr )
     {
         if ( str.length() < searchStr.length() )
         {

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java?rev=1720929&r1=1720928&r2=1720929&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/RenderingContext.java
 Sat Dec 19 14:09:41 2015
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.siterende
 
 import java.io.File;
 import java.util.HashMap;
-import java.util.Locale;
 import java.util.Map;
 
 import org.codehaus.plexus.util.PathTool;
@@ -79,28 +78,28 @@ public class RenderingContext
     {
         this.basedir = basedir;
         this.extension = extension;
+        this.inputName = document;
+        this.parserId = parserId;
+        this.attributes = new HashMap<String, String>();
+
         if ( StringUtils.isNotEmpty( extension ) )
         {
             // here we now the parserId we can play with this
             // index.xml -> index.html
             // index.xml.vm -> index.html
             // download.apt.vm --> download.html
-            int startIndexOfExtension =
-                document.toLowerCase( Locale.ENGLISH ).indexOf( "." + 
extension.toLowerCase( Locale.ENGLISH ) );
-            String fileNameWithoutExt = document.substring( 0, 
startIndexOfExtension );
+            if ( DefaultSiteRenderer.endsWithIgnoreCase( document, ".vm" ) )
+            {
+                document = document.substring( 0, document.length() - 3 );
+            }
+            String fileNameWithoutExt = document.substring( 0, 
document.length() - extension.length() - 1 );
             this.outputName = fileNameWithoutExt + ".html";
         }
         else
         {
-            this.outputName = document.substring( 0, document.indexOf( '.' ) 
).replace( '\\', '/' ) + ".html";
+            this.outputName = document.substring( 0, document.lastIndexOf( '.' 
) ).replace( '\\', '/' ) + ".html";
         }
-        this.relativePath = PathTool.getRelativePath( basedir.getPath(), new 
File( basedir, document ).getPath() );
-
-        this.inputName = document;
-
-        this.parserId = parserId;
-
-        this.attributes = new HashMap<String, String>();
+        this.relativePath = PathTool.getRelativePath( basedir.getPath(), new 
File( basedir, inputName ).getPath() );
     }
 
     /**

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java?rev=1720929&r1=1720928&r2=1720929&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/DefaultSiteRendererTest.java
 Sat Dec 19 14:09:41 2015
@@ -175,6 +175,7 @@ public class DefaultSiteRendererTest
         verifyMisc();
         verifyDocbookPageExists();
         verifyApt();
+        verifyExtensionInFilename();
         verifyNewlines();
 
         // 
----------------------------------------------------------------------
@@ -389,9 +390,9 @@ public class DefaultSiteRendererTest
     public void verifyDocbookPageExists()
         throws Exception
     {
-        File nestedItems = getTestFile( "target/output/docbook.html" );
-        assertNotNull( nestedItems );
-        assertTrue( nestedItems.exists() );
+        File output = getTestFile( "target/output/docbook.html" );
+        assertNotNull( output );
+        assertTrue( output.exists() );
     }
 
     /**
@@ -405,6 +406,17 @@ public class DefaultSiteRendererTest
     }
 
     /**
+     * @throws Exception if something goes wrong.
+     */
+    public void verifyExtensionInFilename()
+        throws Exception
+    {
+        File output = getTestFile( 
"target/output/extension.apt.not.at.end.html" );
+        assertNotNull( output );
+        assertTrue( output.exists() );
+    }
+
+    /**
      * @throws Exception if something goes wrong.
      */
     public void verifyNewlines()

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java?rev=1720929&r1=1720928&r2=1720929&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/RenderingContextTest.java
 Sat Dec 19 14:09:41 2015
@@ -48,6 +48,10 @@ public class RenderingContextTest
         assertEquals( "file.with.dot.in.name.html", 
renderingContext.getOutputName() );
         assertEquals( ".", renderingContext.getRelativePath() );
 
+        renderingContext = new RenderingContext( baseDir, docName );
+        assertEquals( "file.with.dot.in.name.html", 
renderingContext.getOutputName() );
+        assertEquals( ".", renderingContext.getRelativePath() );
+
         docName = "index.xml.vm";
 
         renderingContext = new RenderingContext( baseDir, docName, "", "xml" );

Added: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt?rev=1720929&view=auto
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
 (added)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
 Sat Dec 19 14:09:41 2015
@@ -0,0 +1,32 @@
+-----
+ extension in filename
+ -----
+ Hervé Boutemy
+ -----
+ 2015-12-19
+ -----
+
+~~ 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.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+RenderingContext
+
+  When transforming source file name into output file name, it is important to 
use last ".apt" and not first one
+

Propchange: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/apt/extension.apt.not.at.end.apt
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to