View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.imaging;
18  
19  /**
20   * A custom exception thrown when an ImageParser or other utility
21   * encounters a format-violation, non-supported element, or other
22   * condition that renders image data unwritable.
23   */
24  public class ImageWriteException extends ImagingException {
25      private static final long serialVersionUID = -1L;
26  
27      public ImageWriteException(final String message) {
28          super(message);
29      }
30  
31      public ImageWriteException(final String message, final Throwable cause) {
32          super(message, cause);
33      }
34  
35      public ImageWriteException(final String message, final Object data) {
36          super(message + ": " + data + " (" + getType(data) + ")");
37      }
38  
39      private static String getType(final Object value) {
40          if (value == null) {
41              return "null";
42          }
43          if (value instanceof Object[]) {
44              return "[Object[]: " + ((Object[]) value).length + "]";
45          }
46          if (value instanceof char[]) {
47              return "[char[]: " + ((char[]) value).length + "]";
48          }
49          if (value instanceof byte[]) {
50              return "[byte[]: " + ((byte[]) value).length + "]";
51          }
52          if (value instanceof short[]) {
53              return "[short[]: " + ((short[]) value).length + "]";
54          }
55          if (value instanceof int[]) {
56              return "[int[]: " + ((int[]) value).length + "]";
57          }
58          if (value instanceof long[]) {
59              return "[long[]: " + ((long[]) value).length + "]";
60          }
61          if (value instanceof float[]) {
62              return "[float[]: " + ((float[]) value).length + "]";
63          }
64          if (value instanceof double[]) {
65              return "[double[]: " + ((double[]) value).length + "]";
66          }
67          if (value instanceof boolean[]) {
68              return "[boolean[]: " + ((boolean[]) value).length + "]";
69          }
70          return value.getClass().getName();
71      }
72  }