You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Sean Bridges (JIRA)" <ji...@apache.org> on 2009/05/15 23:19:45 UTC

[jira] Updated: (PDFBOX-402) Bug when using PDF Box in a threaded environment.

     [ https://issues.apache.org/jira/browse/PDFBOX-402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Bridges updated PDFBOX-402:
--------------------------------

    Attachment: patch

This is a pretty serious issue.  This patch fixes this issue and another issue of the same type in  in the same file.

> Bug when using PDF Box in a threaded environment.
> -------------------------------------------------
>
>                 Key: PDFBOX-402
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-402
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Utilities
>         Environment: Multi Thread usage, like in an Application Server using PDFBox to parse documents.
>            Reporter: Peter_Lenahan@ibi.com
>         Attachments: patch
>
>
> I will be using PDFBox in a thread environment
> I ran the Findbugs tool (http://findbugs.sourceforge.net/) 
> against the package and an issue occurred in : org.apache.pdfbox.util.DateConverter;
> It shows this problem in two places.
> [H M STCAL] Call to static DateFormat
> [STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE]
> As the JavaDoc states, DateFormats are inherently unsafe for multithreaded use. The detector has found a call to an instance of DateFormat that has been obtained via a static field. This looks suspicious.
> For more information on this see Sun Bug #6231579 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6231579>  and Sun Bug #6178997 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6178997> . 
> There was only one call to the toString*(date) method
> I changed the following lines to resolve the issue.
> public DateConverter() {}  // allows the class to be created.
>      // next I removed the static from the method.
>     public  String toString( Calendar date )
>     {
>         String retval = null;
>         if( date != null )
>         {
>             StringBuffer buffer = new StringBuffer();
>             TimeZone zone = date.getTimeZone();
>             long offsetInMinutes = zone.getOffset(
> date.getTimeInMillis() )/1000/60;
>             long hours = Math.abs( offsetInMinutes/60 );
>             long minutes = Math.abs( offsetInMinutes%60 );
>             buffer.append( "D:" );
>             // this had to be create here, it couldn't be static 
> // because of the bug description
>             SimpleDateFormat PDF_DATE_FORMAT = new SimpleDateFormat( "yyyyMMddHHmmss" );
>             buffer.append( PDF_DATE_FORMAT.format( date.getTime() )
> Lastly, I change the call to the method in COSDictionary.
>     public void setDate( COSName key, Calendar date )
>     {
>         setString( key, new DateConverter().toString( date ) );
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.