View Javadoc
1   /*
2    * Copyright 2023 Adrian Herscu
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package dev.aherscu.qa.testing.utils;
18  
19  import static dev.aherscu.qa.testing.utils.ObjectUtilsExtensions.*;
20  
21  import java.io.*;
22  
23  import org.apache.commons.lang3.*;
24  
25  import lombok.experimental.*;
26  
27  @UtilityClass
28  public class ClassUtilsExtensions extends ClassUtils {
29      /**
30       * Retrieves a resource relative to specified class.
31       *
32       * @param clazz
33       *            the class from which the relative look-up should work
34       * @param resourceName
35       *            the resource name to look-up for
36       * @return the resource as an input stream
37       * @throws IllegalArgumentException
38       *             if the resource was not found
39       * @throws NullPointerException
40       *             if the resource name is {@code null}
41       */
42      public static InputStream getRelativeResourceAsStream(
43          final Class<?> clazz,
44          final String resourceName) {
45          return requireNonNull(clazz.getResourceAsStream(resourceName),
46              new IllegalArgumentException(resourceName + " file not found"));
47      }
48  }