[
https://issues.apache.org/jira/browse/IMAGING-159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14295804#comment-14295804
]
Michael Groß edited comment on IMAGING-159 at 1/28/15 9:30 PM:
---------------------------------------------------------------
How about provide options as an enum rather than a Map? Like:
{noformat}
Options.PARAM_KEY_COMPRESSION.getInt()
{noformat}
But there is a problem in it. If the value of another option is something else
than an int, maybe a Byte, and then caller calls
{noformat}
Options.PARAM_KEY_ANOTHER_IS_A_BYTE.getInt()
{noformat}
instead of
{noformat}
Options.PARAM_KEY_ANOTHER_IS_A_BYTE.getByte()
{noformat}
then - what then?
was (Author: mgmechanics):
What about provide options as an enum rather than a Map? Like:
{noformat}
Options.PARAM_KEY_COMPRESSION.getInt()
{noformat}
But there is a problem in it. If the value of another option is something else
than an int, maybe a Byte, and then caller calls
{noformat}
Options.PARAM_KEY_ANOTHER_IS_A_BYTE.getInt()
{noformat}
instead of
{noformat}
Options.PARAM_KEY_ANOTHER_IS_A_BYTE.getByte()
{noformat}
then - what then?
> There should be a Parameters class
> ----------------------------------
>
> Key: IMAGING-159
> URL: https://issues.apache.org/jira/browse/IMAGING-159
> Project: Commons Imaging
> Issue Type: Improvement
> Components: imaging.*
> Reporter: Benedikt Ritter
> Fix For: Patch Needed
>
>
> Currently options for image I/O are defined as Maps. The leads to the problem
> that our code has to validate parameter types when they are used:
> {code:java}
> final Object value = params.get(PARAM_KEY_COMPRESSION);
> if (value != null) {
> if (!(value instanceof Number)) {
> throw new ImageWriteException(
> "Invalid compression parameter, must be numeric: "
> + value);
> }
> compression = ((Number) value).intValue();
> }
> {code}
> This can be simplified if we define a Parameters class that provides
> additional methods like {{public int getInt(String key)}}. The implementation
> could then look up the value from the map through an exception if it is null
> or not a number.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)