| 20 | import com.google.common.base.Strings; |
| 21 | |
| 22 | class FeatureFlags { |
| 23 | private static boolean enableRfc3986Uris = getFlag("GRPC_ENABLE_RFC3986_URIS", false); |
| 24 | |
| 25 | /** Whether to parse targets as RFC 3986 URIs (true), or use {@link java.net.URI} (false). */ |
| 26 | @VisibleForTesting |
| 27 | static boolean setRfc3986UrisEnabled(boolean value) { |
| 28 | boolean prevValue = enableRfc3986Uris; |
| 29 | enableRfc3986Uris = value; |
| 30 | return prevValue; |
| 31 | } |
| 32 | |
| 33 | /** Whether to parse targets as RFC 3986 URIs (true), or use {@link java.net.URI} (false). */ |
| 34 | static boolean getRfc3986UrisEnabled() { |
| 35 | return enableRfc3986Uris; |
| 36 | } |
| 37 | |
| 38 | static boolean getFlag(String envVarName, boolean enableByDefault) { |
| 39 | String envVar = System.getenv(envVarName); |
| 40 | if (envVar == null) { |
| 41 | envVar = System.getProperty(envVarName); |
| 42 | } |
| 43 | if (envVar != null) { |
| 44 | envVar = envVar.trim(); |
| 45 | } |
| 46 | if (enableByDefault) { |
| 47 | return Strings.isNullOrEmpty(envVar) || Boolean.parseBoolean(envVar); |
| 48 | } else { |
| 49 | return !Strings.isNullOrEmpty(envVar) && Boolean.parseBoolean(envVar); |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | private FeatureFlags() {} |
| 54 | } |