mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-04 03:55:28 -04:00
#439: Unclear exception message when passing image metadata as stream metadata
(cherry picked from commit 6018093)
This commit is contained in:
parent
83adf121e2
commit
3b68d676f3
@ -130,7 +130,7 @@ public abstract class AbstractMetadata extends IIOMetadata implements Cloneable
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException(
|
||||
String.format("Bad format name: \"%s\". Expected one of %s", formatName, Arrays.toString(metadataFormatNames))
|
||||
String.format("Unsupported format name: \"%s\". Expected one of %s", formatName, Arrays.toString(metadataFormatNames))
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,12 @@ import javax.imageio.metadata.IIOMetadata;
|
||||
import javax.imageio.metadata.IIOMetadataNode;
|
||||
import javax.imageio.stream.ImageOutputStream;
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static com.twelvemonkeys.lang.Validate.notNull;
|
||||
import static java.lang.String.format;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static java.util.Arrays.asList;
|
||||
|
||||
/**
|
||||
* TIFFStreamMetadata.
|
||||
@ -113,7 +116,7 @@ public final class TIFFStreamMetadata extends IIOMetadata {
|
||||
}
|
||||
}
|
||||
|
||||
private ByteOrder getByteOrder(final String value) throws IIOInvalidTreeException {
|
||||
private ByteOrder getByteOrder(final String value) {
|
||||
switch (value) {
|
||||
case "BIG_ENDIAN":
|
||||
return ByteOrder.BIG_ENDIAN;
|
||||
@ -138,6 +141,11 @@ public final class TIFFStreamMetadata extends IIOMetadata {
|
||||
}
|
||||
else if (streamMetadata != null) {
|
||||
TIFFStreamMetadata metadata = new TIFFStreamMetadata();
|
||||
|
||||
Validate.isTrue(asList(streamMetadata.getMetadataFormatNames()).contains(metadata.nativeMetadataFormatName),
|
||||
format("Unsupported stream metadata format, expected %s: %s", metadata.nativeMetadataFormatName,
|
||||
Arrays.toString(streamMetadata.getMetadataFormatNames())));
|
||||
|
||||
// Will throw exception if stream format differs from native
|
||||
metadata.mergeTree(metadata.nativeMetadataFormatName, streamMetadata.getAsTree(metadata.nativeMetadataFormatName));
|
||||
imageOutput.setByteOrder(metadata.byteOrder);
|
||||
|
@ -40,6 +40,7 @@ import javax.imageio.metadata.IIOMetadataNode;
|
||||
import javax.imageio.stream.ImageOutputStream;
|
||||
import java.nio.ByteOrder;
|
||||
|
||||
import static com.twelvemonkeys.imageio.plugins.tiff.TIFFMedataFormat.SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME;
|
||||
import static com.twelvemonkeys.imageio.plugins.tiff.TIFFStreamMetadata.SUN_NATIVE_STREAM_METADATA_FORMAT_NAME;
|
||||
import static java.nio.ByteOrder.BIG_ENDIAN;
|
||||
import static java.nio.ByteOrder.LITTLE_ENDIAN;
|
||||
@ -85,9 +86,10 @@ public class TIFFStreamMetadataTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConfigureStreamForegin() throws IIOInvalidTreeException {
|
||||
public void testConfigureStreamForeign() throws IIOInvalidTreeException {
|
||||
ImageOutputStream stream = mock(ImageOutputStream.class);
|
||||
IIOMetadata metadata = mock(IIOMetadata.class);
|
||||
when(metadata.getMetadataFormatNames()).thenReturn(new String[]{SUN_NATIVE_STREAM_METADATA_FORMAT_NAME, "com_foo_supertiff_9.42"});
|
||||
when(metadata.getAsTree(eq(SUN_NATIVE_STREAM_METADATA_FORMAT_NAME))).thenReturn(createForeignTree(LITTLE_ENDIAN));
|
||||
|
||||
TIFFStreamMetadata.configureStreamByteOrder(metadata, stream);
|
||||
@ -95,6 +97,24 @@ public class TIFFStreamMetadataTest {
|
||||
verify(stream, only()).setByteOrder(LITTLE_ENDIAN);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConfigureStreamImageMetadata() throws IIOInvalidTreeException {
|
||||
ImageOutputStream stream = mock(ImageOutputStream.class);
|
||||
IIOMetadata metadata = mock(IIOMetadata.class);
|
||||
when(metadata.getMetadataFormatNames()).thenReturn(new String[]{SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME});
|
||||
|
||||
try {
|
||||
TIFFStreamMetadata.configureStreamByteOrder(metadata, stream);
|
||||
fail("Expected IllegalArgumentException");
|
||||
}
|
||||
catch (IllegalArgumentException expected) {
|
||||
assertNotNull(expected.getMessage());
|
||||
assertTrue(expected.getMessage().toLowerCase().contains("unsupported stream metadata format"));
|
||||
assertTrue(expected.getMessage().contains("expected " + SUN_NATIVE_STREAM_METADATA_FORMAT_NAME));
|
||||
assertTrue(expected.getMessage().contains(SUN_NATIVE_IMAGE_METADATA_FORMAT_NAME));
|
||||
}
|
||||
}
|
||||
|
||||
private IIOMetadataNode createForeignTree(ByteOrder order) {
|
||||
IIOMetadataNode root = new IIOMetadataNode(SUN_NATIVE_STREAM_METADATA_FORMAT_NAME);
|
||||
IIOMetadataNode byteOrder = new IIOMetadataNode("ByteOrder");
|
||||
|
Loading…
x
Reference in New Issue
Block a user