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