001package com.typesafe.config; 002 003import java.net.URL; 004 005import com.typesafe.config.impl.ConfigImpl; 006 007/** 008 * This class contains some static factory methods for building a {@link 009 * ConfigOrigin}. {@code ConfigOrigin}s are automatically created when you 010 * call other API methods to get a {@code ConfigValue} or {@code Config}. 011 * But you can also set the origin of an existing {@code ConfigValue}, using 012 * {@link ConfigValue#withOrigin(ConfigOrigin)}. 013 * 014 * @since 1.3.0 015 */ 016public final class ConfigOriginFactory { 017 private ConfigOriginFactory() { 018 } 019 020 /** 021 * Returns the default origin for values when no other information is 022 * provided. This is the origin used in {@link ConfigValueFactory 023 * #fromAnyRef(Object)}. 024 * 025 * @since 1.3.0 026 * 027 * @return the default origin 028 */ 029 public static ConfigOrigin newSimple() { 030 return newSimple(null); 031 } 032 033 /** 034 * Returns an origin with the given description. 035 * 036 * @since 1.3.0 037 * 038 * @param description brief description of what the origin is 039 * @return a new origin 040 */ 041 public static ConfigOrigin newSimple(String description) { 042 return ConfigImpl.newSimpleOrigin(description); 043 } 044 045 /** 046 * Creates a file origin with the given filename. 047 * 048 * @since 1.3.0 049 * 050 * @param filename the filename of this origin 051 * @return a new origin 052 */ 053 public static ConfigOrigin newFile(String filename) { 054 return ConfigImpl.newFileOrigin(filename); 055 } 056 057 /** 058 * Creates a url origin with the given URL object. 059 * 060 * @since 1.3.0 061 * 062 * @param url the url of this origin 063 * @return a new origin 064 */ 065 public static ConfigOrigin newURL(URL url) { 066 return ConfigImpl.newURLOrigin(url); 067 } 068}