[ 
https://issues.apache.org/jira/browse/IMAGING-159?focusedWorklogId=690569&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-690569
 ]

ASF GitHub Bot logged work on IMAGING-159:
------------------------------------------

                Author: ASF GitHub Bot
            Created on: 04/Dec/21 23:42
            Start Date: 04/Dec/21 23:42
    Worklog Time Spent: 10m 
      Work Description: darkma773r commented on pull request #116:
URL: https://github.com/apache/commons-imaging/pull/116#issuecomment-986136369


   @kinow, I have a couple of concerns about the API still. That being said, I 
don't want to single-handedly delay progress on the release, so please feel 
free to disagree with me. My main concerns are
   1. the ease of `ClassCastExceptions` being thrown on `Imaging` methods that 
accept `ImagingParameters` as arguments, and
   2. the way `JpegImagingParameters` extends`TiffImagingParameters`.
   
   We've discussed both of these before. For the first item, the simplest case 
is to just remove the methods that accept `ImagingParameters`. If we want to 
keep them, there might be promise in using the configurer callback approach, 
where the user passes a callback that accepts a parameters instance of the 
correct type (created by `ImageParser.getDefaultParameters()`) and configures 
it. Ex:
   ```java
   // ImagingParametersConfigurer.java
   @FunctionalInterface
   public ImagingParametersConfigurer {
       void configure(ImagingParameters p);
   }
   
   // Imaging.java
   public static ImageInfo getImageInfo(ByteSource bs, 
ImagingParametersConfigurer configurer) { ... }
   
   // user code
   ImageInfo info  = Imaging.getImageInfo(bs, p -> p.setStrict(true));
   ```
   
   Thanks for your tireless work on this!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 690569)
    Time Spent: 15h 40m  (was: 15.5h)

> 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.*
>    Affects Versions: 1.0-alpha2
>            Reporter: Benedikt Ritter
>            Assignee: Bruno P. Kinoshita
>            Priority: Major
>              Labels: github
>             Fix For: 1.0-alpha3
>
>          Time Spent: 15h 40m
>  Remaining Estimate: 0h
>
> 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
(v8.20.1#820001)

Reply via email to