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 * https://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
18 package org.apache.commons.io.output;
19
20 import java.io.IOException;
21 import java.io.UncheckedIOException;
22
23 /**
24 * An {@link Appendable} that throws {@link UncheckedIOException} instead of {@link IOException}.
25 *
26 * @see Appendable
27 * @see IOException
28 * @see UncheckedIOException
29 * @since 2.12.0
30 */
31 public interface UncheckedAppendable extends Appendable {
32
33 /**
34 * Constructs a new instance on the given Appendable.
35 *
36 * @param appendable The Appendable to uncheck.
37 * @return a new instance.
38 */
39 static UncheckedAppendable on(final Appendable appendable) {
40 return new UncheckedAppendableImpl(appendable);
41 }
42
43 /**
44 * Appends per {@link Appendable#append(char)} but rethrows {@link IOException} as {@link UncheckedIOException}.
45 */
46 @Override
47 UncheckedAppendable append(char c);
48
49 /**
50 * Appends per {@link Appendable#append(CharSequence)} but rethrows {@link IOException} as {@link UncheckedIOException}.
51 */
52 @Override
53 UncheckedAppendable append(CharSequence csq);
54
55 /**
56 * Appends per {@link Appendable#append(CharSequence, int, int)} but rethrows {@link IOException} as
57 * {@link UncheckedIOException}.
58 */
59 @Override
60 UncheckedAppendable append(CharSequence csq, int start, int end);
61 }