1919import java .nio .file .Files ;
2020import java .nio .file .Path ;
2121import java .nio .file .Paths ;
22+ import java .util .Arrays ;
23+ import java .util .List ;
2224
25+ /**
26+ * Available environment options.
27+ *
28+ * @author edgar
29+ * @since 2.0.0
30+ */
2331public class EnvironmentOptions {
2432 private static final String ENV = "application.env" ;
2533 private String basedir ;
@@ -30,55 +38,117 @@ public class EnvironmentOptions {
3038
3139 private String [] activeNames ;
3240
41+ /**
42+ * Creates environment options. Default application file name is: <code>application.conf</code>.
43+ */
3344 public EnvironmentOptions () {
3445 setBasedir (defaultDir ());
3546 setFilename ("application.conf" );
3647 }
3748
38- public String [] getActiveNames () {
39- return activeNames == null ? defaultEnvironmentNames () : activeNames ;
49+ /**
50+ * Active environment names or fallback and read them from system property:
51+ * <code>application.env</code>.
52+ *
53+ * @return Active environment names.
54+ */
55+ public List <String > getActiveNames () {
56+ return activeNames == null ? defaultEnvironmentNames () : Arrays .asList (activeNames );
4057 }
4158
59+ /**
60+ * Set active environment names.
61+ *
62+ * @param activeNames Active environment names.
63+ * @return This options.
64+ */
4265 public @ Nonnull EnvironmentOptions setActiveNames (@ Nonnull String ... activeNames ) {
4366 this .activeNames = activeNames ;
4467 return this ;
4568 }
4669
47- private static @ Nonnull String [] defaultEnvironmentNames () {
48- return System .getProperty (ENV , System .getenv ().getOrDefault (ENV , "dev" )).split ("," );
70+ private static @ Nonnull List <String > defaultEnvironmentNames () {
71+ return Arrays .asList (
72+ System .getProperty (ENV , System .getenv ().getOrDefault (ENV , "dev" )).split ("\\ s*,\\ s*" ));
4973 }
5074
75+ /**
76+ * Class loader.
77+ *
78+ * @return Class loader.
79+ */
5180 public @ Nonnull ClassLoader getClassLoader () {
5281 return classLoader == null ? getClass ().getClassLoader () : classLoader ;
5382 }
5483
84+ /**
85+ * Class loader.
86+ *
87+ * @param defaultClassLoader Default classloader is none was set.
88+ * @return Class loader.
89+ */
5590 public @ Nonnull ClassLoader getClassLoader (@ Nonnull ClassLoader defaultClassLoader ) {
5691 return classLoader == null ? defaultClassLoader : classLoader ;
5792 }
5893
94+ /**
95+ * Set class loader.
96+ *
97+ * @param classLoader Class loader.
98+ * @return This options.
99+ */
59100 public @ Nonnull EnvironmentOptions setClassLoader (@ Nonnull ClassLoader classLoader ) {
60101 this .classLoader = classLoader ;
61102 return this ;
62103 }
63104
105+ /**
106+ * Base directory.
107+ *
108+ * @return Base directory.
109+ */
64110 public @ Nonnull String getBasedir () {
65111 return basedir ;
66112 }
67113
114+ /**
115+ * Configuration file name.
116+ *
117+ * @return Configuration file name.
118+ */
68119 public @ Nonnull String getFilename () {
69120 return filename ;
70121 }
71122
123+ /**
124+ * Set base dir.
125+ *
126+ * @param basedir Base dir. Classpath folder or file system directory.
127+ * @return This options.
128+ */
72129 public @ Nonnull EnvironmentOptions setBasedir (@ Nonnull String basedir ) {
73130 this .basedir = basedir ;
74131 return this ;
75132 }
76133
134+ /**
135+ * Set base dir.
136+ *
137+ * @param basedir Base dir.
138+ * @return This options.
139+ */
77140 public @ Nonnull EnvironmentOptions setBasedir (@ Nonnull Path basedir ) {
78141 this .basedir = basedir .toAbsolutePath ().toString ();
79142 return this ;
80143 }
81144
145+ /**
146+ * Set file name.
147+ *
148+ * @param filename File name with extension. Supported extensions are: <code>.properties</code>,
149+ * <code>.conf</code> and <code>.json</code>.
150+ * @return This environment.
151+ */
82152 public @ Nonnull EnvironmentOptions setFilename (@ Nonnull String filename ) {
83153 this .filename = filename ;
84154 return this ;
0 commit comments