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 vs...@apache.org on 2009/06/04 01:04:33 UTC

svn commit: r781614 - in /maven/doxia: doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/

Author: vsiveton
Date: Wed Jun  3 23:04:33 2009
New Revision: 781614

URL: http://svn.apache.org/viewvc?rev=781614&view=rev
Log:
DOXIA-331: Unable to renderer images on iText module

o added a temp system property for the rendering

Modified:
    maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java

Modified: maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java?rev=781614&r1=781613&r2=781614&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java Wed Jun  3 23:04:33 2009
@@ -190,14 +190,23 @@
     private void parse( String fullDocPath, SiteModule module, File iTextFile )
         throws DocumentRendererException, IOException
     {
-        Writer writer = WriterFactory.newXmlWriter( iTextFile );
-        ITextSink sink = (ITextSink) new ITextSinkFactory().createSink( writer );
+        System.setProperty( "itext.basedir", iTextFile.getParentFile().getAbsolutePath() );
 
-        sink.setClassLoader( new URLClassLoader( new URL[] { iTextFile.getParentFile().toURI().toURL() } ) );
+        try
+        {
+            Writer writer = WriterFactory.newXmlWriter( iTextFile );
+            ITextSink sink = (ITextSink) new ITextSinkFactory().createSink( writer );
+
+            sink.setClassLoader( new URLClassLoader( new URL[] { iTextFile.getParentFile().toURI().toURL() } ) );
 
-        parse( fullDocPath, module.getParserId(), sink );
+            parse( fullDocPath, module.getParserId(), sink );
 
-        sink.close();
+            sink.close();
+        }
+        finally
+        {
+            System.getProperties().remove( "itext.basedir" );
+        }
     }
 
     /**

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java?rev=781614&r1=781613&r2=781614&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java Wed Jun  3 23:04:33 2009
@@ -24,6 +24,7 @@
 import com.lowagie.text.Image;
 
 import java.awt.Color;
+import java.io.File;
 import java.io.IOException;
 import java.io.LineNumberReader;
 import java.io.StringReader;
@@ -1128,29 +1129,48 @@
         actionContext.setAction( SinkActionContext.FIGURE_CAPTION );
     }
 
-    /** {@inheritDoc} */
+    /**
+     * If the <code>name</code> is a relative link, the internal link will used a System property <code>itext.basedir</code>,
+     * or the class loader.
+     * {@inheritDoc} */
     public void figureGraphics( String name )
     {
         String urlName = null;
+        File nameFile = null;
         if ( ( name.toLowerCase( Locale.ENGLISH ).startsWith( "http://" ) )
-                        || ( name.toLowerCase( Locale.ENGLISH ).startsWith( "https://" ) ) )
+            || ( name.toLowerCase( Locale.ENGLISH ).startsWith( "https://" ) ) )
         {
             urlName = name;
         }
         else
         {
-            if ( getClassLoader() != null )
+            if ( System.getProperty( "itext.basedir" ) != null )
             {
-                if ( getClassLoader().getResource( name ) != null )
+                try
+                {
+                    nameFile = new File( System.getProperty( "itext.basedir" ), name );
+                    urlName = nameFile.toURL().toString();
+                }
+                catch ( MalformedURLException e )
                 {
-                    urlName = getClassLoader().getResource( name ).toString();
+                    getLog().error( "MalformedURLException: " + e.getMessage(), e );
                 }
             }
             else
             {
-                if ( ITextSink.class.getClassLoader().getResource( name ) != null )
+                if ( getClassLoader() != null )
                 {
-                    urlName = ITextSink.class.getClassLoader().getResource( name ).toString();
+                    if ( getClassLoader().getResource( name ) != null )
+                    {
+                        urlName = getClassLoader().getResource( name ).toString();
+                    }
+                }
+                else
+                {
+                    if ( ITextSink.class.getClassLoader().getResource( name ) != null )
+                    {
+                        urlName = ITextSink.class.getClassLoader().getResource( name ).toString();
+                    }
                 }
             }
         }
@@ -1165,6 +1185,16 @@
             return;
         }
 
+        if ( nameFile != null && !nameFile.exists() )
+        {
+            String msg = "No image '" + nameFile + "' found in your system, check the path.";
+            logMessage( "imageNotFound", msg );
+
+            return;
+        }
+
+        figure();
+
         float width = 0;
         float height = 0;
         try
@@ -1176,15 +1206,15 @@
         }
         catch ( BadElementException e )
         {
-            // nop
+            getLog().error( "BadElementException: " + e.getMessage(), e );
         }
         catch ( MalformedURLException e )
         {
-            // nop
+            getLog().error( "MalformedURLException: " + e.getMessage(), e );
         }
         catch ( IOException e )
         {
-            // nop
+            getLog().error( "IOException: " + e.getMessage(), e );
         }
 
         writeAddAttribute( ElementTags.URL, urlName );
@@ -1193,6 +1223,8 @@
         writeAddAttribute( ElementTags.PLAINHEIGHT, String.valueOf( height ) );
 
         actionContext.setAction( SinkActionContext.FIGURE_GRAPHICS );
+
+        figure_();
     }
 
     // ----------------------------------------------------------------------