25
25
import java .util .concurrent .locks .Condition ;
26
26
import java .util .concurrent .locks .Lock ;
27
27
28
+ import org .dcache .nfs .util .Opaque ;
29
+
28
30
import com .hazelcast .core .HazelcastInstance ;
29
31
import com .hazelcast .multimap .MultiMap ;
30
32
45
47
*
46
48
* @since 0.16
47
49
*/
48
- public class DistributedLockManager extends AbstractLockManager {
50
+ public class DistributedLockManager extends AbstractLockManager2 {
49
51
50
52
private final MultiMap <String , NlmLock > locks ;
51
53
@@ -61,7 +63,7 @@ public DistributedLockManager(HazelcastInstance hz, String name) {
61
63
}
62
64
63
65
@ Override
64
- protected Lock getObjectLock (byte [] objId ) {
66
+ protected Lock getObjectLock (Opaque objId ) {
65
67
String key = objIdToKey (objId );
66
68
return new Lock () {
67
69
@ Override
@@ -103,40 +105,37 @@ public Condition newCondition() {
103
105
* @return collection of active locks.
104
106
*/
105
107
@ Override
106
- protected Collection <NlmLock > getActiveLocks (byte [] objId ) {
108
+ protected Collection <NlmLock > getActiveLocks (Opaque objId ) {
107
109
String key = objIdToKey (objId );
108
110
return locks .get (key );
109
111
}
110
112
111
113
@ Override
112
- protected void add (byte [] objId , NlmLock lock ) {
114
+ protected void add (Opaque objId , NlmLock lock ) {
113
115
String key = objIdToKey (objId );
114
116
locks .put (key , lock );
115
117
}
116
118
117
119
@ Override
118
- protected boolean remove (byte [] objId , NlmLock lock ) {
120
+ protected boolean remove (Opaque objId , NlmLock lock ) {
119
121
String key = objIdToKey (objId );
120
122
return locks .remove (key , lock );
121
123
}
122
124
123
125
@ Override
124
- protected void addAll (byte [] objId , Collection <NlmLock > locks ) {
126
+ protected void addAll (Opaque objId , Collection <NlmLock > locks ) {
125
127
String key = objIdToKey (objId );
126
128
locks .forEach (l -> this .locks .put (key , l ));
127
129
}
128
130
129
131
@ Override
130
- protected void removeAll (byte [] objId , Collection <NlmLock > locks ) {
132
+ protected void removeAll (Opaque objId , Collection <NlmLock > locks ) {
131
133
String key = objIdToKey (objId );
132
134
locks .forEach (l -> this .locks .remove (key , l ));
133
135
}
134
136
135
- private static String objIdToKey (byte [] objId ) {
136
- return Base64
137
- .getEncoder ()
138
- .withoutPadding ()
139
- .encodeToString (objId );
137
+ private static String objIdToKey (Opaque objId ) {
138
+ return objId .getBase64 ();
140
139
}
141
140
142
141
}
0 commit comments