Integrate netconf-mapping-api into netconf-server
[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.nettyutil.AbstractNetconfSessionNegotiator;
18 import org.opendaylight.netconf.server.api.SessionIdProvider;
19 import org.opendaylight.netconf.server.api.operations.NetconfOperationServiceFactory;
20
21 public class NetconfServerSessionNegotiatorFactoryBuilder {
22     private Timer timer;
23     private SessionIdProvider idProvider;
24     private NetconfOperationServiceFactory aggregatedOpService;
25     private long connectionTimeoutMillis;
26     private NetconfMonitoringService monitoringService;
27     private Set<String> baseCapabilities;
28     private @NonNegative int maximumIncomingChunkSize =
29         AbstractNetconfSessionNegotiator.DEFAULT_MAXIMUM_INCOMING_CHUNK_SIZE;
30
31     public NetconfServerSessionNegotiatorFactoryBuilder() {
32     }
33
34     public NetconfServerSessionNegotiatorFactoryBuilder setTimer(final Timer timer) {
35         this.timer = timer;
36         return this;
37     }
38
39     public NetconfServerSessionNegotiatorFactoryBuilder setIdProvider(final SessionIdProvider idProvider) {
40         this.idProvider = idProvider;
41         return this;
42     }
43
44     public NetconfServerSessionNegotiatorFactoryBuilder setAggregatedOpService(
45             final NetconfOperationServiceFactory aggregatedOpService) {
46         this.aggregatedOpService = aggregatedOpService;
47         return this;
48     }
49
50     public NetconfServerSessionNegotiatorFactoryBuilder setConnectionTimeoutMillis(final long connectionTimeoutMillis) {
51         this.connectionTimeoutMillis = connectionTimeoutMillis;
52         return this;
53     }
54
55     public NetconfServerSessionNegotiatorFactoryBuilder setMonitoringService(
56             final NetconfMonitoringService monitoringService) {
57         this.monitoringService = monitoringService;
58         return this;
59     }
60
61     public NetconfServerSessionNegotiatorFactoryBuilder setBaseCapabilities(final Set<String> baseCapabilities) {
62         this.baseCapabilities = baseCapabilities;
63         return this;
64     }
65
66     public NetconfServerSessionNegotiatorFactoryBuilder setMaximumIncomingChunkSize(
67             final @NonNegative int maximumIncomingChunkSize) {
68         checkArgument(maximumIncomingChunkSize > 0);
69         this.maximumIncomingChunkSize = maximumIncomingChunkSize;
70         return this;
71     }
72
73     public NetconfServerSessionNegotiatorFactory build() {
74         validate();
75         return new NetconfServerSessionNegotiatorFactory(timer, aggregatedOpService, idProvider,
76                 connectionTimeoutMillis, monitoringService, baseCapabilities, maximumIncomingChunkSize);
77     }
78
79     private void validate() {
80         requireNonNull(timer, "timer not initialized");
81         requireNonNull(aggregatedOpService, "NetconfOperationServiceFactory not initialized");
82         requireNonNull(idProvider, "SessionIdProvider not initialized");
83         checkArgument(connectionTimeoutMillis > 0, "connection time out <=0");
84         requireNonNull(monitoringService, "NetconfMonitoringService not initialized");
85
86         if (baseCapabilities == null) {
87             baseCapabilities = NetconfServerSessionNegotiatorFactory.DEFAULT_BASE_CAPABILITIES;
88         }
89     }
90 }