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="u...@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"