1
15 package com.amazonaws.monitoring;
16
17 import com.amazonaws.SdkClientException;
18 import com.amazonaws.annotation.ThreadSafe;
19
20 import static com.amazonaws.SDKGlobalConfiguration.AWS_CSM_CLIENT_ID_ENV_VAR;
21 import static com.amazonaws.SDKGlobalConfiguration.AWS_CSM_ENABLED_ENV_VAR;
22 import static com.amazonaws.SDKGlobalConfiguration.AWS_CSM_HOST_ENV_VAR;
23 import static com.amazonaws.SDKGlobalConfiguration.AWS_CSM_PORT_ENV_VAR;
24 import static com.amazonaws.SDKGlobalConfiguration.DEFAULT_AWS_CSM_CLIENT_ID;
25 import static com.amazonaws.SDKGlobalConfiguration.DEFAULT_AWS_CSM_PORT;
26 import static com.amazonaws.SDKGlobalConfiguration.DEFAULT_AWS_CSM_HOST;
27
28
36 @ThreadSafe
37 public final class EnvironmentVariableCsmConfigurationProvider implements CsmConfigurationProvider {
38 @Override
39 public CsmConfiguration getConfiguration() {
40 String enabled = System.getenv(AWS_CSM_ENABLED_ENV_VAR);
41
42 if (enabled == null) {
43 throw new SdkClientException("Unable to load Client Side Monitoring configurations from"
44 + " environment variables!");
45 }
46
47 String host = System.getenv(AWS_CSM_HOST_ENV_VAR);
48 host = host == null ? DEFAULT_AWS_CSM_HOST : host;
49 String port = System.getenv(AWS_CSM_PORT_ENV_VAR);
50 String clientId = System.getenv(AWS_CSM_CLIENT_ID_ENV_VAR);
51 clientId = clientId == null ? DEFAULT_AWS_CSM_CLIENT_ID : clientId;
52
53 try {
54 int portNumber = port == null ? DEFAULT_AWS_CSM_PORT : Integer.parseInt(port);
55 return CsmConfiguration.builder()
56 .withEnabled(Boolean.parseBoolean(enabled))
57 .withHost(host)
58 .withPort(portNumber)
59 .withClientId(clientId)
60 .build();
61 } catch (Exception e) {
62 throw new SdkClientException("Unable to load Client Side Monitoring configurations from"
63 + " environment variables!", e);
64 }
65 }
66 }
67