Removing deprecated DMAAP library
[policy/drools-pdp.git] / policy-core / src / main / java / org / onap / policy / drools / core / lock / AlwaysFailLock.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2024 Nordix Foundation.
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.onap.policy.drools.core.lock;
23
24 import java.io.Serial;
25 import lombok.NoArgsConstructor;
26
27 /**
28  * Lock implementation whose operations always fail.
29  */
30 @NoArgsConstructor
31 public class AlwaysFailLock extends LockImpl {
32     @Serial
33     private static final long serialVersionUID = 1L;
34
35     /**
36      * Constructs the object.
37      *
38      * @param resourceId identifier of the resource to be locked
39      * @param ownerKey information identifying the owner requesting the lock
40      * @param holdSec amount of time, in seconds, for which the lock should be held once
41      *        it has been granted, after which it will automatically be released
42      * @param callback callback to be invoked once the lock is granted, or subsequently
43      *        lost; must not be {@code null}
44      */
45     public AlwaysFailLock(String resourceId, String ownerKey, int holdSec, LockCallback callback) {
46         super(LockState.UNAVAILABLE, resourceId, ownerKey, holdSec, callback);
47     }
48
49     /**
50      * Always returns false.
51      */
52     @Override
53     public synchronized boolean free() {
54         return false;
55     }
56
57     /**
58      * Always fails and invokes {@link LockCallback#lockUnavailable(Lock)}.
59      */
60     @Override
61     public void extend(int holdSec, LockCallback callback) {
62         synchronized (this) {
63             setHoldSec(holdSec);
64             setCallback(callback);
65         }
66
67         notifyUnavailable();
68     }
69 }