1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.common.util;
17
18 public class Counter {
19
20 int count;
21
22 public Counter() {
23 this(0);
24 }
25
26 public Counter(int startValue) {
27 super();
28 this.count = startValue;
29 }
30
31 public synchronized int increment() {
32 return increment(1);
33 }
34
35 public synchronized int increment(int amount) {
36 Assert.isTrue(amount > 0, "amount must be > 0");
37 Assert.isTrue(count <= Integer.MAX_VALUE - amount, "max value exceeded");
38 return count += amount;
39 }
40
41 public synchronized int decrement() {
42 return decrement(1);
43 }
44
45 public synchronized int decrement(int amount) {
46 Assert.isTrue(amount > 0, "amount must be > 0");
47 Assert.isTrue(count >= Integer.MIN_VALUE + amount, "min value exceeded");
48 return count -= amount;
49 }
50
51 public synchronized int getValue() {
52 return count;
53 }
54 }