Skip to content

Commit a326b21

Browse files
author
Liudmila Molkova
authored
DefaultLogger: make log level static (read it once) (Azure#27193)
* cache missing env value and neven re-read it
1 parent 8779723 commit a326b21

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

sdk/core/azure-core/src/main/java/com/azure/core/implementation/logging/DefaultLogger.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ public DefaultLogger(String className) {
6767
classPath = className;
6868
}
6969
this.classPath = classPath;
70-
int configuredLogLevel =
71-
LogLevel.fromString(Configuration.getGlobalConfiguration().get(Configuration.PROPERTY_AZURE_LOG_LEVEL))
72-
.getLogLevel();
70+
int configuredLogLevel = LogLevel.fromString(Configuration.getGlobalConfiguration().get(Configuration.PROPERTY_AZURE_LOG_LEVEL))
71+
.getLogLevel();
7372

7473
isTraceEnabled = LogLevel.VERBOSE.getLogLevel() > configuredLogLevel;
7574
isDebugEnabled = LogLevel.VERBOSE.getLogLevel() >= configuredLogLevel;

sdk/core/azure-core/src/main/java/com/azure/core/util/Configuration.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package com.azure.core.util;
55

6+
import java.util.Optional;
67
import java.util.concurrent.ConcurrentHashMap;
78
import java.util.concurrent.ConcurrentMap;
89
import java.util.function.Function;
@@ -214,7 +215,7 @@ public class Configuration implements Cloneable {
214215
@SuppressWarnings("StaticInitializerReferencesSubClass")
215216
public static final Configuration NONE = new NoopConfiguration();
216217

217-
private final ConcurrentMap<String, String> configurations;
218+
private final ConcurrentMap<String, Optional<String>> configurations;
218219

219220
/**
220221
* Constructs a configuration containing the known Azure properties constants.
@@ -224,7 +225,7 @@ public Configuration() {
224225
loadBaseConfiguration(this);
225226
}
226227

227-
private Configuration(ConcurrentMap<String, String> configurations) {
228+
private Configuration(ConcurrentMap<String, Optional<String>> configurations) {
228229
this.configurations = new ConcurrentHashMap<>(configurations);
229230
}
230231

@@ -300,18 +301,15 @@ public <T> T get(String name, Function<String, T> converter) {
300301
* variable, in that order, if found, otherwise null.
301302
*/
302303
private String getOrLoad(String name) {
303-
String value = configurations.get(name);
304-
if (value != null) {
305-
return value;
304+
Optional<String> cached = configurations.get(name);
305+
if (cached != null) {
306+
return cached.orElse(null);
306307
}
307308

308-
value = load(name);
309-
if (value != null) {
310-
configurations.put(name, value);
311-
return value;
312-
}
309+
String value = load(name);
310+
configurations.put(name, Optional.ofNullable(value));
313311

314-
return null;
312+
return value;
315313
}
316314

317315
/*
@@ -350,7 +348,7 @@ String loadFromProperties(String name) {
350348
* @return The updated Configuration object.
351349
*/
352350
public Configuration put(String name, String value) {
353-
configurations.put(name, value);
351+
configurations.put(name, Optional.of(value));
354352
return this;
355353
}
356354

@@ -363,7 +361,8 @@ public Configuration put(String name, String value) {
363361
* @return The configuration if it previously existed, otherwise null.
364362
*/
365363
public String remove(String name) {
366-
return configurations.remove(name);
364+
Optional<String> value = configurations.remove(name);
365+
return (value != null && value.isPresent()) ? value.get() : null;
367366
}
368367

369368
/**
@@ -376,7 +375,8 @@ public String remove(String name) {
376375
* @return True if the configuration exists, otherwise false.
377376
*/
378377
public boolean contains(String name) {
379-
return configurations.containsKey(name);
378+
Optional<String> value = configurations.get(name);
379+
return value != null && value.isPresent();
380380
}
381381

382382
/**

sdk/core/azure-core/src/test/java/com/azure/core/util/ConfigurationTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import static com.azure.core.util.Configuration.PROPERTY_AZURE_TRACING_DISABLED;
1414
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
import static org.junit.jupiter.api.Assertions.assertFalse;
1516
import static org.junit.jupiter.api.Assertions.assertNull;
1617
import static org.junit.jupiter.api.Assertions.assertTrue;
1718
import static org.mockito.Mockito.spy;
@@ -57,6 +58,7 @@ public void environmentConfigurationFound() {
5758
public void configurationNotFound() {
5859
Configuration configuration = new Configuration();
5960
assertNull(configuration.get(MY_CONFIGURATION));
61+
assertFalse(configuration.contains(MY_CONFIGURATION));
6062
}
6163

6264
/**

0 commit comments

Comments
 (0)