r720 - in trunk: doxia-module-jrst doxia-module-jrst/src/main/java/org/nuiton/jrst doxia-module-jrst/src/main/resources/META-INF doxia-module-jrst/src/main/resources/META-INF/maven doxia-module-jrst/src/main/resources/META-INF/plexus jrst-doc
Author: jpages Date: 2012-06-14 18:10:29 +0200 (Thu, 14 Jun 2012) New Revision: 720 Url: http://nuiton.org/repositories/revision/jrst/720 Log: Ajout dans le module doxia de m?\195?\169thodes pour g?\195?\169n?\195?\169rer un document RST avec velocity (pas encore termin?\195?\169) Added: trunk/doxia-module-jrst/src/main/resources/META-INF/maven/ trunk/doxia-module-jrst/src/main/resources/META-INF/maven/RstAggregation.vm Modified: trunk/doxia-module-jrst/pom.xml trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstSiteRenderer.java trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/ReflectUtil.java trunk/doxia-module-jrst/src/main/resources/META-INF/plexus/components.xml trunk/jrst-doc/pom.xml Modified: trunk/doxia-module-jrst/pom.xml =================================================================== --- trunk/doxia-module-jrst/pom.xml 2012-06-14 09:27:46 UTC (rev 719) +++ trunk/doxia-module-jrst/pom.xml 2012-06-14 16:10:29 UTC (rev 720) @@ -153,7 +153,8 @@ <build> <plugins> - <plugin> + <!-- Fix me merge descriptor --> + <!--plugin> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-maven-plugin</artifactId> <version>1.3.8</version> @@ -164,7 +165,7 @@ </goals> </execution> </executions> - </plugin> + </plugin--> </plugins> </build> Modified: trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstSiteRenderer.java =================================================================== --- trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstSiteRenderer.java 2012-06-14 09:27:46 UTC (rev 719) +++ trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/JrstSiteRenderer.java 2012-06-14 16:10:29 UTC (rev 720) @@ -1,6 +1,14 @@ package org.nuiton.jrst; +import java.io.FileNotFoundException; +import java.io.Reader; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.maven.doxia.sink.render.RenderingContext; import org.apache.maven.doxia.siterenderer.DefaultSiteRenderer; import org.apache.maven.doxia.siterenderer.DocumentRenderer; import org.apache.maven.doxia.siterenderer.RendererException; @@ -8,7 +16,7 @@ import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink; import org.apache.maven.doxia.tools.SiteTool; import org.apache.maven.project.MavenProject; -import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.context.Context; import java.io.File; @@ -19,6 +27,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.velocity.SiteResourceLoader; +import org.codehaus.plexus.velocity.VelocityComponent; /** * Override of the DefaultSiteRenderer to add pdf generation of the site. @@ -30,6 +41,8 @@ */ public class JrstSiteRenderer extends DefaultSiteRenderer { + protected static Log log = LogFactory.getLog(JrstSiteRenderer.class); + /** * SiteTool. * @@ -51,16 +64,8 @@ private MavenProject mavenProject; - private String scmwebeditorPrefixURL; + private boolean pdfGenerationEnabled; - private String siteXmlScmwebeditorURL; - - private boolean scmwebeditorEnabled; - - private boolean piwikEnabled; - - private String piwikSiteId; - protected Method getWriteTemplateMethod() { if (writeTemplateMethod == null) { writeTemplateMethod = ReflectUtil.getMethod( @@ -100,112 +105,76 @@ Map<String, ?> templateProperties = siteRenderingContext.getTemplateProperties(); - scmwebeditorEnabled = getBooleanProperty( - (String) templateProperties.get("scmwebeditorEnabled")); - mavenProject = (MavenProject) templateProperties.get("project"); - piwikEnabled = getBooleanProperty( - (String) mavenProject.getProperties().get("piwikEnabled")); + pdfGenerationEnabled = getBooleanProperty( + (String) mavenProject.getProperties().get("pdfGenerationEnabled")); - if (scmwebeditorEnabled) { + if (pdfGenerationEnabled) { + File file = new File("./main/resources/META-INF/maven/"); + String documentName = "RstAggregation"; + RenderingContext renderingContext = new RenderingContext(file, documentName); + renderDocument(documents, renderingContext, siteRenderingContext); + } + super.render(documents, siteRenderingContext, outputDirectory); + } - // get locales (defined in pom) - String localesAsStr = (String) templateProperties.get("locales"); + /** {@inheritDoc} */ + public void renderDocument(Collection<DocumentRenderer> documents, RenderingContext renderingContext, SiteRenderingContext context) + throws RendererException, FileNotFoundException, UnsupportedEncodingException + { + SiteRendererSink sink = new SiteRendererSink( renderingContext ); - // get locales as a list - List<Locale> locales = siteTool.getAvailableLocales(localesAsStr); + File doc = new File( renderingContext.getBasedir(), renderingContext.getInputName() ); - this.locales = locales; + Reader reader = null; + try { + String resource = doc.getAbsolutePath(); - siteSourcesType = (String) - mavenProject.getProperties().get("siteSourcesType"); + if ( renderingContext.getAttribute( "velocity" ) != null ) + { + try { + SiteResourceLoader.setResource(resource); - String scm = mavenProject.getScm().getDeveloperConnection(); - String scmURL = scm.substring(8); + createContextMethod = getCreateContextMethod(); + Context vc = ReflectUtil.invokeMethod(createContextMethod, this, sink, context); - String scmwebeditorUrl = (String) mavenProject.getProperties().get("scmwebeditorUrl"); - scmwebeditorPrefixURL = scmwebeditorUrl + "?address=" + scmURL + '/'; + StringWriter sw = new StringWriter(); + Field velocityField = ReflectUtil.getField(DefaultSiteRenderer.class, "velocity"); - getLogger().info("SCMWebeditor prefix url = " + scmwebeditorPrefixURL); + VelocityComponent velocity = (VelocityComponent)velocityField.get(this); + VelocityEngine engine = velocity.getEngine(); + String inputEncoding = context.getInputEncoding(); - //FIXME tchemit 2011-08-19 must test if file exists (if first locale) to respect maven - // default loayout src/site/site.xml - String editFile = "src/site/site_" + locale + ".xml"; - siteXmlScmwebeditorURL = scmwebeditorPrefixURL + editFile; + String chaine = ""; + for (DocumentRenderer document : documents) { + RenderingContext renderingContextDoc = document.getRenderingContext(); + String inputName = renderingContextDoc.getInputName(); - getLogger().debug("[" + editFile + "] scmwebeditor url = " + siteXmlScmwebeditorURL); - } + chaine += ".. include:: " + inputName + "\n\n"; + } - if (piwikEnabled) { + vc.put("content", chaine); - String piwikId = (String) mavenProject.getProperties().get("piwikId"); - if (StringUtils.isEmpty(piwikId)) { + engine.mergeTemplate(resource, inputEncoding, vc, sw); - // try to use piwikId from platform - String platform = (String) mavenProject.getProperties().get("platform"); - - if ("nuiton.org".equals(platform)) { - piwikSiteId = "2"; - } else if ("chorem.org".equals(platform)) { - piwikSiteId = "3"; - } else if ("forge.codelutin.com".equals(platform)) { - piwikSiteId = "4"; - } else { - getLogger().warn( - "No piwik id known for this platform " + - platform + - ", please fill yourself a piwikId in your pom"); - - // disable piwik - piwikEnabled = false; + } catch ( Exception e ) { + if (getLogger().isDebugEnabled()) { + getLogger().error( "Error parsing " + resource + " as a velocity template, using as text.", e ); + } else { + getLogger().error( "Error parsing " + resource + " as a velocity template, using as text." ); + } } - } else { - - // use given id - piwikSiteId = piwikId; } + } catch (Exception e) { + log.error("", e); + } finally { + sink.flush(); + sink.close(); + IOUtil.close(reader); } - if (piwikEnabled) { - getLogger().info("piwik is enabled, will use piwikiId : " + - piwikSiteId); - } - super.render(documents, siteRenderingContext, outputDirectory); } - @Override - public void generateDocument(Writer writer, - SiteRendererSink sink, - SiteRenderingContext siteRenderingContext) - throws RendererException { - - if (getLogger().isDebugEnabled()) { - getLogger().debug("Will generate document " + - sink.getRenderingContext().getOutputName()); - } - Context context = createContext(sink, siteRenderingContext); - - writeTemplate(writer, context, siteRenderingContext); - } - - protected Context createContext(SiteRendererSink sink, - SiteRenderingContext siteRenderingContext) { - Method m = getCreateContextMethod(); - VelocityContext context = - ReflectUtil.invokeMethod(m, this, sink, siteRenderingContext); - - return context; - } - - protected void writeTemplate(Writer writer, - Context context, - SiteRenderingContext siteContext) - throws RendererException { - - Method m = getWriteTemplateMethod(); - ReflectUtil.invokeMethod(m, this, writer, context, siteContext); - } - protected boolean getBooleanProperty(String value) { boolean result = StringUtils.isNotEmpty(value) && !"false".equals(value); return result; Modified: trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/ReflectUtil.java =================================================================== --- trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/ReflectUtil.java 2012-06-14 09:27:46 UTC (rev 719) +++ trunk/doxia-module-jrst/src/main/java/org/nuiton/jrst/ReflectUtil.java 2012-06-14 16:10:29 UTC (rev 720) @@ -24,6 +24,7 @@ */ package org.nuiton.jrst; +import java.lang.reflect.Field; import java.lang.reflect.Method; /** @@ -46,6 +47,17 @@ } + public static Field getField(Class<?> klass, String fieldName) { + try { + Field declaredField = klass.getField(fieldName); + declaredField.setAccessible(true); + return declaredField; + } catch (Exception e) { + throw new IllegalStateException("Could not get field [" + fieldName + "] from parent class :(... ", e); + } + + } + public static <O> O invokeMethod(Method m, Object o, Object... params) { try { O result = (O) m.invoke(o, params); Added: trunk/doxia-module-jrst/src/main/resources/META-INF/maven/RstAggregation.vm =================================================================== --- trunk/doxia-module-jrst/src/main/resources/META-INF/maven/RstAggregation.vm (rev 0) +++ trunk/doxia-module-jrst/src/main/resources/META-INF/maven/RstAggregation.vm 2012-06-14 16:10:29 UTC (rev 720) @@ -0,0 +1,30 @@ +.. - +.. * #%L +.. * JRst :: Documentation +.. * +.. * $Id: index.rst 700 2012-06-07 15:40:15Z maven-release $ +.. * $HeadURL: http://svn.nuiton.org/svn/jrst/trunk/jrst-doc/src/site/rst/index.rst $ +.. * %% +.. * Copyright (C) 2009 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - + +=================================== +Parseur reStructuredText_ : le JRst +=================================== + +$content \ No newline at end of file Modified: trunk/doxia-module-jrst/src/main/resources/META-INF/plexus/components.xml =================================================================== --- trunk/doxia-module-jrst/src/main/resources/META-INF/plexus/components.xml 2012-06-14 09:27:46 UTC (rev 719) +++ trunk/doxia-module-jrst/src/main/resources/META-INF/plexus/components.xml 2012-06-14 16:10:29 UTC (rev 720) @@ -27,6 +27,23 @@ <component-set> <components> <component> + <role>org.apache.maven.doxia.parser.Parser</role> + <role-hint>jrst</role-hint> + <implementation>org.nuiton.jrst.JrstParser</implementation> + <description>Parse an RST model, transform it into xdoc model and emit events into the + specified doxia Sink. + </description> + <isolated-realm>false</isolated-realm> + </component> + <component> + <role>org.apache.maven.doxia.module.site.SiteModule</role> + <role-hint>jrst</role-hint> + <implementation>org.nuiton.jrst.JrstSiteModule</implementation> + <description>JrstSiteModule.</description> + <isolated-realm>false</isolated-realm> + </component> + + <component> <role>org.apache.maven.doxia.siterenderer.Renderer</role> <role-hint>default</role-hint> <implementation>org.nuiton.jrst.JrstSiteRenderer</implementation> Modified: trunk/jrst-doc/pom.xml =================================================================== --- trunk/jrst-doc/pom.xml 2012-06-14 09:27:46 UTC (rev 719) +++ trunk/jrst-doc/pom.xml 2012-06-14 16:10:29 UTC (rev 720) @@ -47,6 +47,12 @@ <artifactId>doxia-module-jrst</artifactId> <version>${project.version}</version> </dependency> + + <dependency> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-site-plugin</artifactId> + <version>${sitePluginVersion}</version> + </dependency> </dependencies> <!-- ************************************************************* --> <!-- *** Project Information ************************************* -->
participants (1)
-
jpages@users.nuiton.org