SONAR suggestions - concurrent access to static fields
Change-Id: I368c17d988ce70365b090bb420f59d50ff4eff67
diff --git a/apps/acl/src/main/java/org/onosproject/acl/AclRule.java b/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
index ff01aa4..02b7025 100644
--- a/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
+++ b/apps/acl/src/main/java/org/onosproject/acl/AclRule.java
@@ -44,6 +44,7 @@
private final Action action;
protected static IdGenerator idGenerator;
+ private static final Object ID_GENERATOR_LOCK = new Object();
/**
* Enum type for ACL rule's action.
@@ -75,8 +76,10 @@
*/
private AclRule(Ip4Prefix srcIp, Ip4Prefix dstIp, byte ipProto,
short dstTpPort, Action action) {
- checkState(idGenerator != null, "Id generator is not bound.");
- this.id = RuleId.valueOf(idGenerator.getNewId());
+ synchronized (ID_GENERATOR_LOCK) {
+ checkState(idGenerator != null, "Id generator is not bound.");
+ this.id = RuleId.valueOf(idGenerator.getNewId());
+ }
this.srcIp = srcIp;
this.dstIp = dstIp;
this.ipProto = ipProto;
@@ -225,8 +228,10 @@
* @param newIdGenerator id generator
*/
public static void bindIdGenerator(IdGenerator newIdGenerator) {
- checkState(idGenerator == null, "Id generator is already bound.");
- idGenerator = checkNotNull(newIdGenerator);
+ synchronized (ID_GENERATOR_LOCK) {
+ checkState(idGenerator == null, "Id generator is already bound.");
+ idGenerator = checkNotNull(newIdGenerator);
+ }
}
public RuleId id() {
diff --git a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
index e5ed60e..b515259 100644
--- a/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
+++ b/apps/simplefabric/src/main/java/org/onosproject/simplefabric/SimpleFabricCommand.java
@@ -26,8 +26,6 @@
description = "Manages the SimpleFabric application")
public class SimpleFabricCommand extends AbstractShellCommand {
- protected static SimpleFabricService simpleFabric;
-
@Argument(index = 0, name = "command",
description = "Command: show|intents|reactive-intents|refresh|flush",
required = true, multiValued = false)
@@ -35,9 +33,9 @@
@Override
protected void execute() {
- if (simpleFabric == null) {
- simpleFabric = get(SimpleFabricService.class);
- }
+
+ SimpleFabricService simpleFabric = get(SimpleFabricService.class);
+
if (command == null) {
print("command not found", command);
return;
diff --git a/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java b/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
index 468d7d6..d3ffb33 100644
--- a/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
+++ b/apps/vpls/src/main/java/org/onosproject/vpls/cli/completer/VplsNameCompleter.java
@@ -30,7 +30,7 @@
*/
public class VplsNameCompleter extends AbstractChoicesCompleter {
- protected static Vpls vpls;
+ protected Vpls vpls;
@Override
public List<String> choices() {