163887870a4f19db182ea45c451359dc110c2e53
[netconf.git] / restconf / sal-rest-connector / src / main / java / org / opendaylight / netconf / sal / restconf / impl / StatisticsRestconfServiceWrapper.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.netconf.sal.restconf.impl;
9
10 import java.math.BigInteger;
11 import java.util.concurrent.atomic.AtomicLong;
12 import javax.ws.rs.core.Response;
13 import javax.ws.rs.core.Response.Status;
14 import javax.ws.rs.core.UriInfo;
15 import org.opendaylight.netconf.sal.rest.api.RestconfService;
16
17 public class StatisticsRestconfServiceWrapper implements RestconfService {
18
19     AtomicLong operationalGet = new AtomicLong();
20     AtomicLong configGet = new AtomicLong();
21     AtomicLong rpc = new AtomicLong();
22     AtomicLong configPost = new AtomicLong();
23     AtomicLong configPut = new AtomicLong();
24     AtomicLong configDelete = new AtomicLong();
25     AtomicLong successGetConfig = new AtomicLong();
26     AtomicLong successGetOperational = new AtomicLong();
27     AtomicLong successPost = new AtomicLong();
28     AtomicLong successPut = new AtomicLong();
29     AtomicLong successDelete = new AtomicLong();
30     AtomicLong failureGetConfig = new AtomicLong();
31     AtomicLong failureGetOperational = new AtomicLong();
32     AtomicLong failurePost = new AtomicLong();
33     AtomicLong failurePut = new AtomicLong();
34     AtomicLong failureDelete = new AtomicLong();
35
36     private static final StatisticsRestconfServiceWrapper INSTANCE =
37             new StatisticsRestconfServiceWrapper(RestconfImpl.getInstance());
38
39     final RestconfService delegate;
40
41     private StatisticsRestconfServiceWrapper(final RestconfService delegate) {
42         this.delegate = delegate;
43     }
44
45     public static StatisticsRestconfServiceWrapper getInstance() {
46         return INSTANCE;
47     }
48
49     @Override
50     public Object getRoot() {
51         return this.delegate.getRoot();
52     }
53
54     @Override
55     public NormalizedNodeContext getModules(final UriInfo uriInfo) {
56         return this.delegate.getModules(uriInfo);
57     }
58
59     @Override
60     public NormalizedNodeContext getModules(final String identifier, final UriInfo uriInfo) {
61         return this.delegate.getModules(identifier, uriInfo);
62     }
63
64     @Override
65     public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) {
66         return this.delegate.getModule(identifier, uriInfo);
67     }
68
69     @Override
70     public NormalizedNodeContext getOperations(final UriInfo uriInfo) {
71         return this.delegate.getOperations(uriInfo);
72     }
73
74     @Override
75     public NormalizedNodeContext getOperations(final String identifier, final UriInfo uriInfo) {
76         return this.delegate.getOperations(identifier, uriInfo);
77     }
78
79     @Override
80     public NormalizedNodeContext invokeRpc(final String identifier, final NormalizedNodeContext payload,
81             final UriInfo uriInfo) {
82         this.rpc.incrementAndGet();
83         return this.delegate.invokeRpc(identifier, payload, uriInfo);
84     }
85
86     @Override
87     public NormalizedNodeContext invokeRpc(final String identifier, final String noPayload, final UriInfo uriInfo) {
88         this.rpc.incrementAndGet();
89         return this.delegate.invokeRpc(identifier, noPayload, uriInfo);
90     }
91
92     @Override
93     public NormalizedNodeContext readConfigurationData(final String identifier, final UriInfo uriInfo) {
94         this.configGet.incrementAndGet();
95         NormalizedNodeContext normalizedNodeContext = null;
96         try {
97             normalizedNodeContext = this.delegate.readConfigurationData(identifier, uriInfo);
98             if (normalizedNodeContext.getData() != null) {
99                 this.successGetConfig.incrementAndGet();
100             }
101             else {
102                 this.failureGetConfig.incrementAndGet();
103             }
104         } catch (final Exception e) {
105             this.failureGetConfig.incrementAndGet();
106             throw e;
107         }
108         return normalizedNodeContext;
109     }
110
111     @Override
112     public NormalizedNodeContext readOperationalData(final String identifier, final UriInfo uriInfo) {
113         this.operationalGet.incrementAndGet();
114         NormalizedNodeContext normalizedNodeContext = null;
115         try {
116             normalizedNodeContext = this.delegate.readOperationalData(identifier, uriInfo);
117             if (normalizedNodeContext.getData() != null) {
118                 this.successGetOperational.incrementAndGet();
119             }
120             else {
121                 this.failureGetOperational.incrementAndGet();
122             }
123         } catch (final Exception e) {
124             this.failureGetOperational.incrementAndGet();
125             throw e;
126         }
127         return normalizedNodeContext;
128     }
129
130     @Override
131     public Response updateConfigurationData(final String identifier, final NormalizedNodeContext payload) {
132         this.configPut.incrementAndGet();
133         Response response = null;
134         try {
135             response = this.delegate.updateConfigurationData(identifier, payload);
136             if (response.getStatus() == Status.OK.getStatusCode()) {
137                 this.successPut.incrementAndGet();
138             }
139             else {
140                 this.failurePut.incrementAndGet();
141             }
142         } catch (final Exception e) {
143             this.failurePut.incrementAndGet();
144             throw e;
145         }
146         return response;
147     }
148
149     @Override
150     public Response createConfigurationData(final String identifier, final NormalizedNodeContext payload,
151             final UriInfo uriInfo) {
152         this.configPost.incrementAndGet();
153         Response response = null;
154         try {
155             response = this.delegate.createConfigurationData(identifier, payload, uriInfo);
156             if (response.getStatus() == Status.OK.getStatusCode()) {
157                 this.successPost.incrementAndGet();
158             }
159             else {
160                 this.failurePost.incrementAndGet();
161             }
162         } catch (final Exception e) {
163             this.failurePost.incrementAndGet();
164             throw e;
165         }
166         return response;
167     }
168
169     @Override
170     public Response createConfigurationData(final NormalizedNodeContext payload, final UriInfo uriInfo) {
171         this.configPost.incrementAndGet();
172         Response response = null;
173         try {
174             response = this.delegate.createConfigurationData(payload, uriInfo);
175             if (response.getStatus() == Status.OK.getStatusCode()) {
176                 this.successPost.incrementAndGet();
177             }
178             else {
179                 this.failurePost.incrementAndGet();
180             }
181         }catch (final Exception e) {
182             this.failurePost.incrementAndGet();
183             throw e;
184         }
185         return response;
186     }
187
188     @Override
189     public Response deleteConfigurationData(final String identifier) {
190         this.configDelete.incrementAndGet();
191         Response response = null;
192         try {
193             response = this.delegate.deleteConfigurationData(identifier);
194             if (response.getStatus() == Status.OK.getStatusCode()) {
195                 this.successDelete.incrementAndGet();
196             }
197             else {
198                 this.failureDelete.incrementAndGet();
199             }
200         } catch (final Exception e) {
201             this.failureDelete.incrementAndGet();
202             throw e;
203         }
204         return response;
205     }
206
207     @Override
208     public NormalizedNodeContext subscribeToStream(final String identifier, final UriInfo uriInfo) {
209         return this.delegate.subscribeToStream(identifier, uriInfo);
210     }
211
212     @Override
213     public NormalizedNodeContext getAvailableStreams(final UriInfo uriInfo) {
214         return this.delegate.getAvailableStreams(uriInfo);
215     }
216
217     @Override
218     public PATCHStatusContext patchConfigurationData(final String identifier, final PATCHContext payload,
219             final UriInfo uriInfo) {
220         return this.delegate.patchConfigurationData(identifier, payload, uriInfo);
221     }
222
223     @Override
224     public PATCHStatusContext patchConfigurationData(final PATCHContext payload, final UriInfo uriInfo) {
225         return this.delegate.patchConfigurationData(payload, uriInfo);
226     }
227
228     public BigInteger getConfigDelete() {
229         return BigInteger.valueOf(this.configDelete.get());
230     }
231
232     public BigInteger getConfigGet() {
233         return BigInteger.valueOf(this.configGet.get());
234     }
235
236     public BigInteger getConfigPost() {
237         return BigInteger.valueOf(this.configPost.get());
238     }
239
240     public BigInteger getConfigPut() {
241         return BigInteger.valueOf(this.configPut.get());
242     }
243
244     public BigInteger getOperationalGet() {
245         return BigInteger.valueOf(this.operationalGet.get());
246     }
247
248     public BigInteger getRpc() {
249         return BigInteger.valueOf(this.rpc.get());
250     }
251
252     public BigInteger getSuccessGetConfig() {
253         return BigInteger.valueOf(this.successGetConfig.get());
254     }
255
256     public BigInteger getSuccessGetOperational() {
257         return BigInteger.valueOf(this.successGetOperational.get());
258     }
259
260     public BigInteger getSuccessPost() {
261         return BigInteger.valueOf(this.successPost.get());
262     }
263
264     public BigInteger getSuccessPut() {
265         return BigInteger.valueOf(this.successPut.get());
266     }
267
268     public BigInteger getSuccessDelete() {
269         return BigInteger.valueOf(this.successDelete.get());
270     }
271
272     public BigInteger getFailureGetConfig() {
273         return BigInteger.valueOf(this.failureGetConfig.get());
274     }
275
276     public BigInteger getFailureGetOperational() {
277         return BigInteger.valueOf(this.failureGetOperational.get());
278     }
279
280     public BigInteger getFailurePost() {
281         return BigInteger.valueOf(this.failurePost.get());
282     }
283
284     public BigInteger getFailurePut() {
285         return BigInteger.valueOf(this.failurePut.get());
286     }
287
288     public BigInteger getFailureDelete() {
289         return BigInteger.valueOf(this.failureDelete.get());
290     }
291 }