View Javadoc
1   package org.kuali.common.util.spring.env.model;
2   
3   import java.util.Properties;
4   
5   import org.kuali.common.util.Assert;
6   import org.kuali.common.util.Mode;
7   import org.kuali.common.util.spring.env.EnvUtils;
8   import org.kuali.common.util.spring.env.PropertiesEnvironment;
9   import org.springframework.core.env.Environment;
10  
11  public final class EnvironmentServiceContext {
12  
13  	public Environment getEnv() {
14  		return env;
15  	}
16  
17  	public boolean isCheckEnvironmentVariables() {
18  		return checkEnvironmentVariables;
19  	}
20  
21  	public boolean isResolveStrings() {
22  		return resolveStrings;
23  	}
24  
25  	public Mode getMissingPropertyMode() {
26  		return missingPropertyMode;
27  	}
28  
29  	private final Environment env;
30  	private final boolean checkEnvironmentVariables;
31  	private final boolean resolveStrings;
32  	private final Mode missingPropertyMode;
33  
34  	private EnvironmentServiceContext(Builder builder) {
35  		this.env = builder.env;
36  		this.checkEnvironmentVariables = builder.checkEnvironmentVariables;
37  		this.resolveStrings = builder.resolveStrings;
38  		this.missingPropertyMode = builder.missingPropertyMode;
39  	}
40  
41  	public static class Builder {
42  
43  		private Environment env = EnvUtils.getDefaultEnvironment();
44  		private boolean checkEnvironmentVariables = true;
45  		private boolean resolveStrings = true;
46  		private Mode missingPropertyMode = Mode.ERROR;
47  
48  		private static final String CHECK_ENVIRONMENT_VARIABLES_KEY = "env.checkEnvironmentVariables";
49  		private static final String RESOLVE_STRINGS_KEY = "env.resolveStrings";
50  		private static final String MISSING_PROPERTY_MODE_KEY = "env.missingPropertyMode";
51  
52  		public Builder env(Properties properties) {
53  			return env(new PropertiesEnvironment(properties));
54  		}
55  
56  		public Builder env(Environment env) {
57  			this.env = env;
58  			return this;
59  		}
60  
61  		public Builder checkEnvironmentVariables(boolean checkEnvironmentVariables) {
62  			this.checkEnvironmentVariables = checkEnvironmentVariables;
63  			return this;
64  		}
65  
66  		public Builder resolveStrings(boolean resolveStrings) {
67  			this.resolveStrings = resolveStrings;
68  			return this;
69  		}
70  
71  		public Builder missingPropertyMode(Mode missingPropertyMode) {
72  			this.missingPropertyMode = missingPropertyMode;
73  			return this;
74  		}
75  
76  		private void override() {
77  			Assert.noNulls(env);
78  			checkEnvironmentVariables(env.getProperty(CHECK_ENVIRONMENT_VARIABLES_KEY, Boolean.class, checkEnvironmentVariables));
79  			resolveStrings(env.getProperty(RESOLVE_STRINGS_KEY, Boolean.class, resolveStrings));
80  			missingPropertyMode(env.getProperty(MISSING_PROPERTY_MODE_KEY, Mode.class, missingPropertyMode));
81  		}
82  
83  		protected void validate(EnvironmentServiceContext ctx) {
84  			Assert.notNull(ctx.getEnv(), "'env' cannot be null");
85  			Assert.notNull(ctx.getMissingPropertyMode(), "'missingPropertyMode' cannot be null");
86  		}
87  
88  		protected EnvironmentServiceContext getInstance() {
89  			return new EnvironmentServiceContext(this);
90  		}
91  
92  		public EnvironmentServiceContext build() {
93  			override();
94  			EnvironmentServiceContext ctx = new EnvironmentServiceContext(this);
95  			validate(ctx);
96  			return ctx;
97  		}
98  
99  	}
100 
101 }