|
16 | 16 | import java.io.IOException;
|
17 | 17 | import java.io.InputStream;
|
18 | 18 | import java.util.Properties;
|
| 19 | +import java.util.concurrent.atomic.AtomicReference; |
19 | 20 |
|
20 | 21 | public final class Version {
|
21 | 22 |
|
22 |
| - private static String sdkVersion = null; |
| 23 | + private static volatile AtomicReference<String> sdkVersion = new AtomicReference<>(); |
23 | 24 |
|
24 | 25 | /**
|
25 | 26 | * Retrieves sdk version from resources.
|
26 | 27 | *
|
27 | 28 | * @return String version of sdk.
|
28 | 29 | */
|
29 | 30 | public static String getSdkVersion() {
|
| 31 | + var version = sdkVersion.get(); |
30 | 32 |
|
31 |
| - if (sdkVersion != null) { |
32 |
| - return sdkVersion; |
| 33 | + if ((version != null) && !version.isBlank()) { |
| 34 | + return version; |
33 | 35 | }
|
34 | 36 |
|
35 |
| - try (InputStream input = Version.class.getResourceAsStream("/sdk_version.properties");) { |
| 37 | + try (InputStream input = Version.class.getResourceAsStream("/sdk_version.properties")) { |
36 | 38 | Properties properties = new Properties();
|
37 | 39 | properties.load(input);
|
38 |
| - sdkVersion = "dapr-sdk-java/v" + properties.getProperty("sdk_version", "unknown"); |
| 40 | + var v = properties.getProperty("sdk_version", null); |
| 41 | + if (v == null) { |
| 42 | + throw new IllegalStateException("Did not find sdk_version property!"); |
| 43 | + } |
| 44 | + |
| 45 | + if (v.isBlank()) { |
| 46 | + throw new IllegalStateException("Property sdk_version cannot be blank."); |
| 47 | + } |
| 48 | + |
| 49 | + version = "dapr-sdk-java/v" + v; |
| 50 | + sdkVersion.set(version); |
39 | 51 | } catch (IOException e) {
|
40 |
| - sdkVersion = "unknown"; |
| 52 | + throw new IllegalStateException("Could not load sdk_version property!", e); |
41 | 53 | }
|
42 | 54 |
|
43 |
| - return sdkVersion; |
| 55 | + return version; |
44 | 56 | }
|
45 | 57 |
|
46 | 58 | }
|
0 commit comments