xmlgraphics-fop-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jukka Matilainen (Jira)" <j...@apache.org>
Subject [jira] [Comment Edited] (FOP-2857) [PATCH] FontCache.toDirectory() and FontCache.getDefaultCacheFile() not working correctly
Date Tue, 05 May 2020 14:55:00 GMT

    [ https://issues.apache.org/jira/browse/FOP-2857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17099956#comment-17099956
] 

Jukka Matilainen edited comment on FOP-2857 at 5/5/20, 2:54 PM:
----------------------------------------------------------------

I have the same problem: {{FontCache.getDefaultCacheFile(true)}} returns an unexpected value
if the home directory is not set or points to a non-existing directory.

When running FOP in the AWS Lambda Java runtime, the {{user.home}} system property points
to a non-existent directory and {{FontCache.getUserHome()}} returns {{null}} due to the existence
test in {{FontCache.toDirectory()}} failing. 

Now when {{FontCache.getDefaultCacheFile(true)}} gets called it returns {{new File(".fop")}}
as the font cache location instead of the expected  {{new File("/tmp/.fop/fop-fonts.cache")}},
which would be the return value if the home directory existed but was read-only.

This won't work in AWS Lambda, as the current working directory is not writable (in fact,
/tmp directory is the only writable directory).

 


was (Author: jkmatila):
I have the same problem: {{FontCache.getDefaultCacheFile(true)}} returns an unexpected value
if the home directory is not set points to a non-existing directory.

When running FOP in the AWS Lambda Java runtime, the {{user.home}} system property points
to a non-existent directory and {{FontCache.getUserHome()}} returns {{null}} due to the existence
test in {{FontCache.toDirectory()}} failing. 

Now when {{FontCache.getDefaultCacheFile(true)}} gets called it returns {{new File(".fop")}}
as the font cache location instead of the expected  {{new File("/tmp/.fop/fop-fonts.cache")}},
which would be the return value if the home directory existed but was read-only.

This won't work in AWS Lambda, as the current working directory is not writable (in fact,
/tmp directory is the only writable directory).

 

> [PATCH] FontCache.toDirectory() and FontCache.getDefaultCacheFile() not working correctly
> -----------------------------------------------------------------------------------------
>
>                 Key: FOP-2857
>                 URL: https://issues.apache.org/jira/browse/FOP-2857
>             Project: FOP
>          Issue Type: Bug
>          Components: font/unqualified
>    Affects Versions: 2.3
>            Reporter: Vera Straube
>            Priority: Critical
>         Attachments: FontCache.java.patch, FontCache.java.patch2
>
>
> The function getDefaultCacheFile() of the class FontCache should work like this:
> [1] case:       select user_dir
> -> user_dir:    'C:\Users\strv'
> -> temp_dir:    'C:\Users\strv\AppData\Local\Temp\'
> -> cache_file:  'C:\Users\strv\.fop\fop-fonts.cache'
> [2] case:       select temp_dir
> -> user_dir:    ''
> -> temp_dir:    'C:\Users\strv\AppData\Local\Temp\'
> -> cache_file:  'C:\Users\strv\AppData\Local\Temp\.fop\fop-fonts.cache'
> [3] case:       select curr_dir
> -> user_dir:    ''
> -> temp_dir:    ''
> -> cache_file:  'fop-fonts.cache'
> Actually it works uncorrectly like this:
> [1] case:       select user_dir
> -> user_dir:    'C:\Users\strv'
> -> temp_dir:    'C:\Users\strv\AppData\Local\Temp\'
> -> cache_file:  'C:\Users\strv\.fop\fop-fonts.cache'
> [2] case:       select temp_dir
> -> user_dir:    ''
> -> temp_dir:    'C:\Users\strv\AppData\Local\Temp\'
> -> cache_file:  '.fop'  --> wrong behavior !!!
> [3] case:       select curr_dir
> -> user_dir:    ''
> -> temp_dir:    ''
> -> cache_file:  '.fop'  --> wrong behavior !!!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message