1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * https://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.commons.compress.archivers;
20
21 import java.util.function.Supplier;
22
23 import org.apache.commons.compress.CompressException;
24
25 /**
26 * Signals that an Archive exception of some sort has occurred.
27 */
28 public class ArchiveException extends CompressException {
29
30 /** Serial. */
31 private static final long serialVersionUID = 2772690708123267100L;
32
33 /**
34 * Checks that the specified object reference is not {@code null} and throws a customized {@link ArchiveException} if it is. *
35 *
36 * @param obj the object reference to check for nullity.
37 * @param messageSupplier supplier of the detail message to be used in the event that a {@code ArchiveException} is thrown
38 * @param <T> the type of the reference.
39 * @return {@code obj} if not {@code null}
40 * @throws ArchiveException if {@code obj} is {@code null}
41 * @since 1.28.0
42 */
43 public static <T> T requireNonNull(final T obj, final Supplier<String> messageSupplier) throws ArchiveException {
44 return CompressException.requireNonNull(ArchiveException.class, obj, messageSupplier);
45 }
46
47 /**
48 * Constructs an {@code ArchiveException} with {@code null} as its error detail message.
49 *
50 * @since 1.28.0
51 */
52 public ArchiveException() {
53 // empty
54 }
55
56 /**
57 * Constructs a new exception with the specified detail message. The cause is not initialized.
58 *
59 * @param message The message (which is saved for later retrieval by the {@link #getMessage()} method).
60 */
61 public ArchiveException(final String message) {
62 super(message);
63 }
64
65 /**
66 * Constructs a new exception with the specified detail message and cause.
67 *
68 * @param message The message (which is saved for later retrieval by the {@link #getMessage()} method).
69 * @param cause The cause (which is saved for later retrieval by the {@link #getCause()} method). A null value indicates that the cause is nonexistent or
70 * unknown.
71 * @deprecated Use {@link #ArchiveException(String, Throwable)}.
72 */
73 @Deprecated
74 public ArchiveException(final String message, final Exception cause) {
75 super(message, cause);
76 }
77
78 /**
79 * Constructs a new exception with the specified detail message and cause.
80 *
81 * @param message The message (which is saved for later retrieval by the {@link #getMessage()} method).
82 * @param cause The cause (which is saved for later retrieval by the {@link #getCause()} method). A null value indicates that the cause is nonexistent or
83 * unknown.
84 * @since 1.28.0
85 */
86 public ArchiveException(final String message, final Throwable cause) {
87 super(message, cause);
88 }
89
90 /**
91 * Constructs a {@code ArchiveException} with the specified cause and a detail message.
92 *
93 * @param cause The cause (which is saved for later retrieval by the {@link #getCause()} method). (A null value is permitted, and indicates that the cause
94 * is nonexistent or unknown.)
95 * @since 1.28.0
96 */
97 public ArchiveException(final Throwable cause) {
98 super(cause);
99 }
100 }