Fix CS warnings in sal-remoterpc-connector and enable enforcement
[controller.git] / opendaylight / md-sal / sal-remoterpc-connector / src / main / java / org / opendaylight / controller / remote / rpc / RemoteRpcProviderConfig.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.remote.rpc;
9
10 import akka.util.Timeout;
11 import com.typesafe.config.Config;
12 import java.util.concurrent.TimeUnit;
13 import org.opendaylight.controller.cluster.common.actor.CommonConfig;
14 import scala.concurrent.duration.FiniteDuration;
15
16 public class RemoteRpcProviderConfig extends CommonConfig {
17
18     protected static final String TAG_RPC_BROKER_NAME = "rpc-broker-name";
19     protected static final String TAG_RPC_REGISTRY_NAME = "registry-name";
20     protected static final String TAG_RPC_MGR_NAME = "rpc-manager-name";
21     protected static final String TAG_RPC_BROKER_PATH = "rpc-broker-path";
22     protected static final String TAG_RPC_REGISTRY_PATH = "rpc-registry-path";
23     protected static final String TAG_RPC_MGR_PATH = "rpc-manager-path";
24     protected static final String TAG_ASK_DURATION = "ask-duration";
25     private static final String TAG_GOSSIP_TICK_INTERVAL = "gossip-tick-interval";
26
27     //locally cached values
28     private Timeout cachedAskDuration;
29     private FiniteDuration cachedGossipTickInterval;
30
31     public RemoteRpcProviderConfig(Config config) {
32         super(config);
33     }
34
35     public String getRpcBrokerName() {
36         return get().getString(TAG_RPC_BROKER_NAME);
37     }
38
39     public String getRpcRegistryName() {
40         return get().getString(TAG_RPC_REGISTRY_NAME);
41     }
42
43     public String getRpcManagerName() {
44         return get().getString(TAG_RPC_MGR_NAME);
45     }
46
47     public String getRpcBrokerPath() {
48         return get().getString(TAG_RPC_BROKER_PATH);
49     }
50
51     public String getRpcRegistryPath() {
52         return get().getString(TAG_RPC_REGISTRY_PATH);
53
54     }
55
56     public String getRpcManagerPath() {
57         return get().getString(TAG_RPC_MGR_PATH);
58     }
59
60     public Timeout getAskDuration() {
61         if (cachedAskDuration != null) {
62             return cachedAskDuration;
63         }
64
65         cachedAskDuration = new Timeout(new FiniteDuration(
66                 get().getDuration(TAG_ASK_DURATION, TimeUnit.NANOSECONDS), TimeUnit.NANOSECONDS));
67
68         return cachedAskDuration;
69     }
70
71     public FiniteDuration getGossipTickInterval() {
72         if (cachedGossipTickInterval != null) {
73             return cachedGossipTickInterval;
74         }
75
76         cachedGossipTickInterval = new FiniteDuration(
77                 get().getDuration(TAG_GOSSIP_TICK_INTERVAL, TimeUnit.NANOSECONDS), TimeUnit.NANOSECONDS);
78
79         return cachedGossipTickInterval;
80     }
81
82     /**
83      * This is called via blueprint xml as the builder pattern can't be used.
84      */
85     public static RemoteRpcProviderConfig newInstance(String actorSystemName, boolean metricCaptureEnabled,
86             int mailboxCapacity) {
87         return new Builder(actorSystemName).metricCaptureEnabled(metricCaptureEnabled)
88                 .mailboxCapacity(mailboxCapacity).build();
89     }
90
91     public static class Builder extends CommonConfig.Builder<Builder> {
92
93         public Builder(String actorSystemName) {
94             super(actorSystemName);
95
96             //Actor names
97             configHolder.put(TAG_RPC_BROKER_NAME, "broker");
98             configHolder.put(TAG_RPC_REGISTRY_NAME, "registry");
99             configHolder.put(TAG_RPC_MGR_NAME, "rpc");
100
101             //Actor paths
102             configHolder.put(TAG_RPC_BROKER_PATH, "/user/rpc/broker");
103             configHolder.put(TAG_RPC_REGISTRY_PATH, "/user/rpc/registry");
104             configHolder.put(TAG_RPC_MGR_PATH, "/user/rpc");
105
106             //durations
107             configHolder.put(TAG_ASK_DURATION, "15s");
108             configHolder.put(TAG_GOSSIP_TICK_INTERVAL, "500ms");
109
110         }
111
112         public Builder gossipTickInterval(String interval) {
113             configHolder.put(TAG_GOSSIP_TICK_INTERVAL, interval);
114             return this;
115         }
116
117         @Override
118         public RemoteRpcProviderConfig build() {
119             return new RemoteRpcProviderConfig(merge());
120         }
121     }
122 }