All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ratpack.server.BaseDir Maven / Gradle / Ivy

/*
 * Copyright 2015 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package ratpack.server;

import ratpack.server.internal.BaseDirFinder;

import java.nio.file.Path;

public abstract class BaseDir {

  /**
   * The default name for the base dir sentinel properties file.
   * 

* Value: {@value} * * @see #find() */ public static final String DEFAULT_BASE_DIR_MARKER_FILE_PATH = ".ratpack"; private BaseDir() { } /** * Finds the “directory” on the classpath that contains a file called {@code .ratpack}. *

* Calling this method is equivalent to calling {@link #find(String) findBaseDir(".ratpack")}. * * @return a base dir * @see #find(String) */ public static Path find() { return find(DEFAULT_BASE_DIR_MARKER_FILE_PATH); } /** * Finds the “directory” on the classpath that contains the marker file at the given path. *

* The classpath search is performed using {@link ClassLoader#getResource(String)} using the current thread's {@link Thread#getContextClassLoader() context class loader}. *

* If the resource is not found, an {@link IllegalStateException} will be thrown. *

* If the resource is found, the enclosing directory of the resource will be converted to a {@link Path} and returned. * This allows a directory within side a JAR (that is on the classpath) to be used as the base dir potentially. * * @param markerFilePath the path to the marker file on the classpath * @return the base dir */ public static Path find(String markerFilePath) { return BaseDirFinder.find(Thread.currentThread().getContextClassLoader(), markerFilePath) .map(BaseDirFinder.Result::getBaseDir) .orElseThrow(() -> new IllegalStateException("Could not find marker file '" + markerFilePath + "' via context class loader")); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy