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 2009/04/13 13:14:36 UTC

svn commit: r764409 - in /maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src: main/java/org/apache/maven/doxia/siterenderer/ main/java/org/apache/maven/doxia/siterenderer/sink/ main/resources/org/apache/maven/doxia/siterenderer/resources/ test/j...

Author: ltheussl
Date: Mon Apr 13 11:14:36 2009
New Revision: 764409

URL: http://svn.apache.org/viewvc?rev=764409&view=rev
Log:
[DOXIASITETOOLS-19] SiteRendererSink ignores meta info in head

Added:
    maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java   (with props)
    maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml   (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/sink/SiteRendererSink.java
    maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm
    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/resources/default-site.vm

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=764409&r1=764408&r2=764409&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 Mon Apr 13 11:14:36 2009
@@ -449,6 +449,8 @@
 
         context.put( "title", title );
 
+        context.put( "headContent", sink.getHead() );
+
         context.put( "bodyContent", sink.getBody() );
 
         context.put( "decoration", siteRenderingContext.getDecoration() );
@@ -553,7 +555,7 @@
         }
         catch ( Exception e )
         {
-            throw new RendererException( "Could not find the template '" + templateName );
+            throw new RendererException( "Could not find the template '" + templateName, e );
         }
 
         try

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java?rev=764409&r1=764408&r2=764409&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java Mon Apr 13 11:14:36 2009
@@ -50,6 +50,8 @@
 
     private List authors = new ArrayList();
 
+    private final StringWriter headWriter;
+
     private boolean sectionHasID;
 
     private final Writer writer;
@@ -77,6 +79,7 @@
         super( writer );
 
         this.writer = writer;
+        this.headWriter = new StringWriter();
         this.renderingContext = renderingContext;
     }
 
@@ -186,6 +189,18 @@
         return writer.toString();
     }
 
+    /**
+     * <p>getHead</p>
+     *
+     * @return a {@link java.lang.String} object.
+     *
+     * @since 1.1.1
+     */
+    public String getHead()
+    {
+        return headWriter.toString();
+    }
+
     /** {@inheritDoc} */
     public void head_()
     {
@@ -311,6 +326,13 @@
     /** {@inheritDoc} */
     protected void write( String text )
     {
+        if ( isHeadFlag() )
+        {
+            headWriter.write( unifyEOLs( text ) );
+
+            return;
+        }
+
         if ( renderingContext != null )
         {
             String relativePathToBasedir = renderingContext.getRelativePath();

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm?rev=764409&r1=764408&r2=764409&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/resources/org/apache/maven/doxia/siterenderer/resources/default-site.vm Mon Apr 13 11:14:36 2009
@@ -342,6 +342,7 @@
         #end
       #end
     #end
+    $headContent
   </head>
   <body class="composite">
     <div id="banner">

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=764409&r1=764408&r2=764409&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 Mon Apr 13 11:14:36 2009
@@ -105,6 +105,7 @@
         // ----------------------------------------------------------------------
         // Verify specific pages
         // ----------------------------------------------------------------------
+        verifyHeadPage();
         verifyCdcPage();
         verifyNestedItemsPage();
         verifyMultipleBlock();
@@ -121,6 +122,15 @@
     /**
      * @throws Exception if something goes wrong.
      */
+    public void verifyHeadPage()
+        throws Exception
+    {
+        new HeadVerifier().verify( "target/output/head.html" );
+    }
+
+    /**
+     * @throws Exception if something goes wrong.
+     */
     public void verifyCdcPage()
         throws Exception
     {

Added: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java?rev=764409&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java Mon Apr 13 11:14:36 2009
@@ -0,0 +1,91 @@
+package org.apache.maven.doxia.siterenderer;
+
+/*
+ * 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.
+ */
+
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlLink;
+import com.gargoylesoftware.htmlunit.html.HtmlMeta;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlStyle;
+import com.gargoylesoftware.htmlunit.html.HtmlTitle;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Verify correct rendering of <code>site/xdoc/head.xml</code>.
+ *
+ * @author ltheussl
+ * @version $Id$
+ */
+public class HeadVerifier
+    extends AbstractVerifier
+{
+
+    /** {@inheritDoc} */
+    public void verify( String file )
+            throws Exception
+    {
+        HtmlPage page = htmlPage( file );
+        assertNotNull( page );
+
+        HtmlElement html = page.getDocumentHtmlElement();
+        assertNotNull( html );
+
+        List tagNames = new ArrayList();
+        tagNames.add( "head" );
+        List heads = html.getHtmlElementsByTagNames( tagNames );
+        assertEquals( 1, heads.size() );
+        HtmlElement head = (HtmlElement) heads.get( 0 );
+        assertNotNull( head );
+
+        Iterator elementIterator = head.getAllHtmlChildElements();
+
+        // ----------------------------------------------------------------------
+        //
+        // ----------------------------------------------------------------------
+
+        HtmlMeta meta = (HtmlMeta) elementIterator.next();
+        assertEquals( meta.getAttributeValue( "http-equiv" ), "Content-Type" );
+        assertEquals( meta.getAttributeValue( "content" ), "text/html; charset=UTF-8" );
+
+        HtmlTitle title = (HtmlTitle) elementIterator.next();
+        assertNotNull( title );
+
+        HtmlStyle style = (HtmlStyle) elementIterator.next();
+        assertNotNull( style );
+
+        HtmlLink link = (HtmlLink) elementIterator.next();
+        assertNotNull( link );
+
+        meta = (HtmlMeta) elementIterator.next();
+        assertEquals( meta.getAttributeValue( "name" ), "author" );
+        assertEquals( meta.getAttributeValue( "content" ).trim(), "John Doe" );
+
+        meta = (HtmlMeta) elementIterator.next();
+        assertEquals( meta.getAttributeValue( "name" ), "description" );
+        assertEquals( meta.getAttributeValue( "content" ), "Free Web tutorials" );
+
+        meta = (HtmlMeta) elementIterator.next();
+        assertEquals( meta.getAttributeValue( "name" ), "keywords" );
+        assertEquals( meta.getAttributeValue( "content" ), "HTML,CSS,XML,JavaScript" );
+    }
+}

Propchange: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/HeadVerifier.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/default-site.vm
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/default-site.vm?rev=764409&r1=764408&r2=764409&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/default-site.vm (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/default-site.vm Mon Apr 13 11:14:36 2009
@@ -11,9 +11,9 @@
 #macro ( banner $banner $id )
   #if ( $banner )
     #if( $banner.href )
-      <a href="$banner.href" id="$id">
+      <a href="$banner.href" id="$id" #if( $banner.alt ) title="$banner.alt" #end >
     #else
-        <span id="$id">
+        <div id="$id">
     #end
 
     #if( $banner.src )
@@ -25,7 +25,7 @@
         #if ( $banner.alt )
             #set ( $alt = $banner.alt )
         #else
-            #set ( $alt = "" )
+            #set ( $alt = $banner.name )
         #end
         <img src="$src" alt="$alt" />
     #else
@@ -35,7 +35,7 @@
     #if( $banner.href )
         </a>
     #else
-        </span>
+        </div>
     #end
   #end
 #end
@@ -76,7 +76,6 @@
     #foreach( $subitem in $item.items )
       #set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) )
       #set ( $subitemHref = $subitemHref.replaceAll( "\\", "/" ) )
-
       #if ( $alignedFileName == $subitemHref )
         #set ( $display = true )
       #end
@@ -150,16 +149,26 @@
 
 #macro ( copyright )
   #if ( $project )
-    #set ( $currentYear = ${currentDate.year} + 1900 )
+    #if ( ${project.organization} && ${project.organization.name} ) 
+      #set ( $period = "" )
+    #else 
+      #set ( $period = "." )
+   #end
+
+   #set ( $currentYear = ${currentDate.year} + 1900 )
 
     #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) )
-      ${project.inceptionYear}-${currentYear}
+      ${project.inceptionYear}-${currentYear}${period}
     #else
-      ${currentYear}
+      ${currentYear}${period}
     #end
 
-    #if ( ${project.organization} && ${project.organization.name} )
-      ${project.organization.name}
+    #if ( ${project.organization} )
+      #if ( ${project.organization.name} && ${project.organization.url} )
+          <a href="$project.organization.url">${project.organization.name}</a>.
+      #elseif ( ${project.organization.name} )
+        ${project.organization.name}.
+      #end
     #end
   #end
 #end
@@ -187,6 +196,9 @@
     #else
       #set ( $versionPosition = "left" )
     #end
+  #else
+    #set ( $version = "" )
+    #set ( $versionPosition = "left" )
   #end
 
   #set ( $breadcrumbs = $decoration.body.breadcrumbs )
@@ -200,22 +212,22 @@
 
   #if ( $datePosition.equalsIgnoreCase( $position ) )
     #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) )
-      $prefix $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday
+      $prefix <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
       #if ( $versionPosition.equalsIgnoreCase( $position ) )
-        &nbsp;| $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+        &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
       #end
     #elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) )
       <div id="lastPublished">
-        $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday
+        <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
         #if ( $versionPosition.equalsIgnoreCase( $position ) )
-          &nbsp;| $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+          &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
         #end
       </div>
     #elseif ( $datePosition.equalsIgnoreCase("left") )
       <div class="xleft">
-        $i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday
+        <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
         #if ( $versionPosition.equalsIgnoreCase( $position ) )
-          &nbsp;| $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+          &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
         #end
         #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
           | #breadcrumbs( $breadcrumbs )
@@ -224,14 +236,14 @@
     #end
   #elseif ( $versionPosition.equalsIgnoreCase( $position ) )
     #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) )
-      $prefix $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+      $prefix <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
     #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) )
       <div id="lastPublished">
-        $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+        <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
       </div>
     #elseif ( $versionPosition.equalsIgnoreCase("left") )
       <div class="xleft">
-        $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+        <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
         #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
           | #breadcrumbs( $breadcrumbs )
         #end
@@ -272,23 +284,40 @@
             <a href="$href" title="$name" class="poweredBy">
               #set ( $img = $PathTool.calculateLink( $img, $relativePath ) )
               #set ( $img = $img.replaceAll( "\\", "/" ) )
-              <img alt="$name" src="$img" />
+              <img  class="poweredBy"  
+                    alt="$name" 
+                    src="$img" 
+                    width="90"
+                    height="30"
+              />
             </a>
         #end
         #if( $poweredBy.isEmpty() )
           <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
-            <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img>
+            <img class="poweredBy" 
+                 alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" 
+                 src="$relativePath/images/logos/maven-feather.png" 
+                 width="90"
+                 height="30"
+                 border="1" />
           </a>
         #end
     #else
         <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
-          <img alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png"></img>
+          <img class="poweredBy" 
+               alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" 
+               src="$relativePath/images/logos/maven-feather.png" 
+               width="90"
+               height="30"
+               border="1"
+               />
         </a>
     #end
 #end
 
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
     <title>$title</title>
     <style type="text/css" media="all">
       @import url("$relativePath/css/maven-base.css");
@@ -299,16 +328,21 @@
     #foreach( $author in $authors )
       <meta name="author" content="$author" />
     #end
-    <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
     #if ( $decoration.body.head )
       #foreach( $item in $decoration.body.head.getChildren() )
+        ## Workaround for DOXIA-150 due to a non-desired behaviour in p-u
+        ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toString()
+        ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toUnescapedString()
+        #set ( $documentHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" )
+        #set ( $documentHeader = $documentHeader.replaceAll( "\\", "" ) )
         #if ( $item.name == "script" )
-          $item.toUnescapedString()
+          $StringUtils.replace( $item.toUnescapedString(), $documentHeader, "" )
         #else
-          $item.toString()
+          $StringUtils.replace( $item.toString(), $documentHeader, "" )
         #end
       #end
     #end
+    $headContent
   </head>
   <body class="composite">
     <div id="banner">
@@ -342,7 +376,7 @@
       <hr/>
     </div>
     <div id="footer">
-      <div class="xright">&#169;#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version )</div>
+      <div class="xright">Copyright &#169;#copyright()All Rights Reserved.#publishDate( "bottom" $decoration.publishDate $decoration.version )</div>
       <div class="clear">
         <hr/>
       </div>

Added: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml?rev=764409&view=auto
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml (added)
+++ maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml Mon Apr 13 11:14:36 2009
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ISO-8859-2"?>
+<!--
+  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.
+-->
+
+<!-- Voluntarily no XSD -->
+<document>
+
+  <properties>
+    <title>Page Title</title>
+    <author email="user@company.com">John Doe</author>
+  </properties>
+
+  <head>
+    <meta name="description" content="Free Web tutorials" />
+    <meta name="keywords" content="HTML,CSS,XML,JavaScript" />
+  </head>
+
+  <body>
+    <p>Oi!</p>
+  </body>
+
+</document>

Propchange: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/head.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"