RunModeProvider.java
01 /*
02  * Copyright 2008-2015 the original author or authors.
03  *
04  * Licensed under the Apache License, Version 2.0 (the "License");
05  * you may not use this file except in compliance with the License.
06  * You may obtain a copy of the License at
07  *
08  *     http://www.apache.org/licenses/LICENSE-2.0
09  *
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 package org.codehaus.griffon.runtime.core.env;
17 
18 import griffon.core.env.Metadata;
19 import griffon.core.env.RunMode;
20 
21 import javax.inject.Inject;
22 import javax.inject.Provider;
23 
24 /**
25  @author Andres Almiray
26  @since 2.2.0
27  */
28 public class RunModeProvider implements Provider<RunMode> {
29     @Inject
30     private Metadata metadata;
31 
32     private static boolean isBlank(String value) {
33         return value == null || value.trim().length() == 0;
34     }
35 
36     @Override
37     public RunMode get() {
38         String modeName = System.getProperty(RunMode.KEY);
39         if (metadata != null && isBlank(modeName)) {
40             modeName = metadata.getRunMode();
41         }
42 
43         if (isBlank(modeName)) {
44             return RunMode.STANDALONE;
45         }
46 
47         RunMode mode = RunMode.resolveRunMode(modeName);
48         if (mode == null) {
49             try {
50                 mode = RunMode.valueOf(modeName.toUpperCase());
51             catch (IllegalArgumentException e) {
52                 // ignore
53             }
54         }
55         if (mode == null) {
56             mode = RunMode.CUSTOM;
57             mode.setName(modeName);
58         }
59         return mode;
60     }
61 }