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