Remove CloseableUtil
[netconf.git] / protocol / netconf-server / src / main / java / org / opendaylight / netconf / server / NetconfServerSessionNegotiatorFactoryBuilder.java
1 /*
2  * Copyright (c) 2016 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.netconf.server;
9
10 import static com.google.common.base.Preconditions.checkArgument;
11 import static java.util.Objects.requireNonNull;
12
13 import io.netty.util.Timer;
14 import java.util.Set;
15 import org.checkerframework.checker.index.qual.NonNegative;
16 import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService;
17 import org.opendaylight.netconf.mapping.api.NetconfOperationServiceFactory;
18 import org.opendaylight.netconf.nettyutil.AbstractNetconfSessionNegotiator;
19
20 public class NetconfServerSessionNegotiatorFactoryBuilder {
21     private Timer timer;
22     private SessionIdProvider idProvider;
23     private NetconfOperationServiceFactory aggregatedOpService;
24     private long connectionTimeoutMillis;
25     private NetconfMonitoringService monitoringService;
26     private Set<String> baseCapabilities;
27     private @NonNegative int maximumIncomingChunkSize =
28         AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE;
29
30     public NetconfServerSessionNegotiatorFactoryBuilder() {
31     }
32
33     public NetconfServerSessionNegotiatorFactoryBuilder setTimer(final Timer timer) {
34         this.timer = timer;
35         return this;
36     }
37
38     public NetconfServerSessionNegotiatorFactoryBuilder setIdProvider(final SessionIdProvider idProvider) {
39         this.idProvider = idProvider;
40         return this;
41     }
42
43     public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService(
44             final NetconfOperationServiceFactory aggregatedOpService) {
45         this.aggregatedOpService = aggregatedOpService;
46         return this;
47     }
48
49     public NetconfServerSessionNegotiatorFactoryBuilder setConnectionTimeoutMillis(final long connectionTimeoutMillis) {
50         this.connectionTimeoutMillis = connectionTimeoutMillis;
51         return this;
52     }
53
54     public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService(
55             final NetconfMonitoringService monitoringService) {
56         this.monitoringService = monitoringService;
57         return this;
58     }
59
60     public NetconfServerSessionNegotiatorFactoryBuilder setBaseCapabilities(final Set<String> baseCapabilities) {
61         this.baseCapabilities = baseCapabilities;
62         return this;
63     }
64
65     public NetconfServerSessionNegotiatorFactoryBuilder setMaximumIncomingChunkSize(
66             final @NonNegative int maximumIncomingChunkSize) {
67         checkArgument(maximumIncomingChunkSize > 0);
68         this.maximumIncomingChunkSize = maximumIncomingChunkSize;
69         return this;
70     }
71
72     public NetconfServerSessionNegotiatorFactory build() {
73         validate();
74         return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider,
75                 connectionTimeoutMillis, monitoringService, baseCapabilities, maximumIncomingChunkSize);
76     }
77
78     private void validate() {
79         requireNonNull(timer, "timer not initialized");
80         requireNonNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized");
81         requireNonNull(idProvider, "SessionIdProvider not initialized");
82         checkArgument(connectionTimeoutMillis > 0, "connection time out <=0");
83         requireNonNull(monitoringService, "NetconfMonitoringService not initialized");
84
85         if (baseCapabilities == null) {
86             baseCapabilities = NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES;
87         }
88     }
89 }