commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Damjan Jovanovic (Updated) (JIRA)" <>
Subject [jira] [Updated] (SANSELAN-31) Typesafe, high-level API for setting EXIF fields
Date Wed, 14 Dec 2011 10:20:30 GMT


Damjan Jovanovic updated SANSELAN-31:

    Fix Version/s:     (was: 0.94-incubator)
> Typesafe, high-level API for setting EXIF fields
> ------------------------------------------------
>                 Key: SANSELAN-31
>                 URL:
>             Project: Commons Sanselan
>          Issue Type: Improvement
>    Affects Versions: 0.94-incubator
>         Environment: all
>            Reporter: Lulu winlumski
> The current EXIF API is extremely awkward to use. 
> I. API is not typesafe and poorly documented.
> Currently you have two options:
> 1) Pass values for EXIF tags as java.lang.Object (TiffOutputField.create)
> 2) Pass values for EXIF tags as byte arrays (new TiffOutputField())
> In the first case, there is no way of knowing what kind of Object is required except
looking at the sanselan source or using reflection. 
> In the second case, a large part of the implementation of the EXIF specification remains
with the client. 
> Even if one uses the Object-based API one has to pass around byteorders and needs to
null-terminate strings, which is something that would typically be handled by the library
layer and not by the client.
> A usable API should throw a compile time error when a value is passed that has an incorrect
type. This can be achieved either by subclassing TiffOutputField or by using generics.
> II. Code clarity
> A TiffOutputField is essentially nothing more than a TagInfo + a value. Than why don't
you have a constructor TiffOutputField(TagInfo tag, bytes) ?
> Instead you need to do:
> new TiffOutputField(tag, tag.dataTypes[0], tag.length, bytes);
> III. Code correctness
> Most of e. g. the GPS tags simply do not work:
> GPS_TAG_GPS_VERSION_ID: TiffOutputField.create() fails with ImageWriteException
> GPS_TAG_GPS_MAP_DATUM: TiffOutputField.create() fails b/o bug Sanselan-12
> GPS_TAG_GPS_ALTITUDE_REF: TiffOutputField.create() fails b/o length -1
> GPS_TAG_GPS_ALTITUDE: TiffOutputField.create() fails b/o length -1
> GPS_TAG_GPS_DATE_STAMP: TiffOutputField.create() fails b/o bug Sanselan-12
> This is not 0.94 code quality but 0.01.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message