MeasuringWrapper.java
biz/hammurapi/metrics/MeasuringWrapper.java
Violations
Inspector |
Message |
Severity |
Location |
Java Inspector 048 |
Copyrights information should be present in each file. |
1 |
|
Java Inspector 089 |
Constructor is not properly documented |
2 |
45:9
|
Java Inspector 089 |
Undocumented parameter consumer |
2 |
45:9
|
Java Inspector 089 |
Undocumented method |
2 |
70:41
|
Java Inspector 026 |
Avoid hardwired string literals. Allowed literals: [] |
3 |
76:107
|
Java Inspector 051 |
It is good practice to call in any case super() in a constructor. |
3 |
45:9
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23package biz.hammurapi.metrics;
24
25import java.lang.reflect.InvocationHandler;
26import java.lang.reflect.Method;
27import java.lang.reflect.Proxy;
28
29import biz.hammurapi.wrap.WrapperHandler;
30
31
32
33
34
35
36
37
38public class MeasuringWrapper {
39
40 private MeasurementConsumer consumer;
41
42
43
44
45 public MeasuringWrapper(MeasurementConsumer consumer) {
46 this.consumer=consumer;
47 }
48
49
50
51
52
53
54 public Object wrap(final Object obj) {
55 return wrap(obj, consumer);
56 }
57
58
59
60
61
62
63
64 public static Object wrap(final Object obj, final MeasurementConsumer consumer) {
65 return Proxy.newProxyInstance(
66 obj.getClass().getClassLoader(),
67 WrapperHandler.getClassInterfaces(obj.getClass()),
68 new InvocationHandler() {
69
70 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
71 long start=System.currentTimeMillis();
72 try {
73 return method.invoke(obj, args);
74 } finally {
75 long finish=System.currentTimeMillis();
76 consumer.addMeasurement(obj.getClass().toString()+": "+method, finish-start, finish);
77 }
78 }
79
80 });
81 }
82
83}
84