Moving all files to root directory
[appc.git] / appc-dispatcher / appc-dispatcher-common / lock-manager-lib / lock-manager-impl / src / test / java / org / openecomp / appc / lockmanager / impl / sql / Synchronizer.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : APP-C
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                                              reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.openecomp.appc.lockmanager.impl.sql;
23
24 public class Synchronizer {
25
26     private int participantNo;
27     private int participantCount;
28
29     public Synchronizer(int participantNo) {
30         this.participantNo = participantNo;
31     }
32
33     public int getParticipantCount() {
34         return participantCount;
35     }
36
37     public void postLoadLockRecord(String resource, String owner) {
38         synchronized(this) {
39             waitForAllParticipants(this, participantNo, ++participantCount);
40         }
41     }
42
43     public void preAddLockRecord(String resource, String owner) {
44     }
45
46     public void postAddLockRecord(String resource, String owner) {
47     }
48
49     public void preUpdateLockRecord(String resource, String owner) {
50     }
51
52     public void postUpdateLockRecord(String resource, String owner) {
53     }
54
55     public void releaseWait() {
56         synchronized(this) {
57             this.notifyAll();
58         }
59     }
60
61     protected void waitOn(Object obj, long timeout) {
62         try {
63             obj.wait(timeout);
64         } catch(InterruptedException e) {
65             throw new RuntimeException(e);
66         }
67     }
68
69     protected void waitOn(Object obj) {
70         waitOn(obj, 0);
71     }
72
73     protected void waitForAllParticipants(Object waitObj, int totalParticipantsNo, int currentParticipantsNo) {
74         if(totalParticipantsNo > currentParticipantsNo) {
75             waitOn(waitObj);
76         } else {
77             waitObj.notifyAll();
78         }
79     }
80 }