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 ) )
- | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+ | <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 ) )
- | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+ | <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 ) )
- | $i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}
+ | <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">©#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version )</div>
+ <div class="xright">Copyright ©#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"