View Javadoc

1   package com.atlassian.cache.hazelcast;
2   
3   import java.util.Map;
4   
5   import com.hazelcast.map.AbstractEntryProcessor;
6   
7   class IncrementVersionEntryProcessor<K> extends AbstractEntryProcessor<K, Long>
8   {
9       private static final IncrementVersionEntryProcessor<Object> INSTANCE =
10              new IncrementVersionEntryProcessor<Object>(false);
11      private static final IncrementVersionEntryProcessor<Object> UPDATING_INSTANCE =
12              new IncrementVersionEntryProcessor<Object>(true);
13  
14      protected static <T> IncrementVersionEntryProcessor<T> getInstance()
15      {
16          return (IncrementVersionEntryProcessor<T>) INSTANCE;
17      }
18  
19      protected static <T> IncrementVersionEntryProcessor<T> getUpdatingInstance()
20      {
21          return (IncrementVersionEntryProcessor<T>) UPDATING_INSTANCE;
22      }
23  
24      private final boolean update;
25  
26      private IncrementVersionEntryProcessor(boolean update)
27      {
28          this.update = update;
29      }
30  
31      @Override
32      public Object process(Map.Entry<K, Long> entry)
33      {
34          Long value = entry.getValue();
35          value = value == null ? 1L : value + 1L;
36          if (update)
37          {
38              entry.setValue(value);
39          }
40          return value;
41      }
42  }