summaryrefslogtreecommitdiffstats
path: root/controlloop/m2/lock
diff options
context:
space:
mode:
Diffstat (limited to 'controlloop/m2/lock')
-rw-r--r--controlloop/m2/lock/pom.xml50
-rw-r--r--controlloop/m2/lock/src/main/java/org/onap/policy/drools/m2/lock/LockAdjunct.java158
-rw-r--r--controlloop/m2/lock/src/test/java/org/onap/policy/drools/m2/lock/LockAdjunctTest.java90
3 files changed, 0 insertions, 298 deletions
diff --git a/controlloop/m2/lock/pom.xml b/controlloop/m2/lock/pom.xml
deleted file mode 100644
index a6aa87a50..000000000
--- a/controlloop/m2/lock/pom.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
- ============LICENSE_START=======================================================
- ONAP Policy Engine - Drools PDP
- ================================================================================
- Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- ================================================================================
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ============LICENSE_END=========================================================
- -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>m2</artifactId>
- <groupId>org.onap.policy.drools-applications.controlloop.m2</groupId>
- <version>1.7.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>lock</artifactId>
- <name>lock</name>
- <description>Generic Lock used for Locking Target Entities</description>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.policy.drools-applications.controlloop.m2</groupId>
- <artifactId>base</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.onap.policy.drools-pdp</groupId>
- <artifactId>policy-management</artifactId>
- <version>${version.policy.drools-pdp}</version>
- <scope>provided</scope>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/controlloop/m2/lock/src/main/java/org/onap/policy/drools/m2/lock/LockAdjunct.java b/controlloop/m2/lock/src/main/java/org/onap/policy/drools/m2/lock/LockAdjunct.java
deleted file mode 100644
index 937317cfa..000000000
--- a/controlloop/m2/lock/src/main/java/org/onap/policy/drools/m2/lock/LockAdjunct.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * m2/lock
- * ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.drools.m2.lock;
-
-import java.io.Serializable;
-import org.onap.policy.drools.core.lock.Lock;
-import org.onap.policy.drools.core.lock.LockCallback;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.m2.base.Transaction;
-
-/*
- * Adjunct data placed within the transaction, to contain locks
- * on control loop use case basis. This same instance is shared
- * among all actor operation instances within the transaction
- * regardless of what actor is in the policy chain. As a result,
- * the lock gets passed from one to the next, and is only freed
- * when the transaction completes.
- */
-public class LockAdjunct implements Transaction.Adjunct, LockCallback,
- Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * This is the callback interface, which is only used if the lock is
- * initially not available, and we end up waiting for it.
- */
- public interface Requestor {
- /**
- * This method is called once the lock has been acquired.
- */
- void lockAvailable();
-
- /**
- * This method is called to notify the requestor that the lock could not
- * be obtained.
- */
- void lockUnavailable();
- }
-
- // lock associated with all of the AOTS and SDNR operations
- // within the transaction
- private Lock lock = null;
-
- // the initial requestor of the lock
- // (only set if we don't immediately acquire the lock)
- private Requestor requestor = null;
-
- /**
- * allocate a lock on behalf of the requestor.
- *
- * @param requestor
- * the AOTS or SDNR operation requesting the lock
- * @param key
- * string key identifying the lock
- * @param ownerKey
- * string key identifying the owner
- * @param waitForLock
- * used to determine if an operation should wait for a lock to
- * become available or fail immediately
- * @return 'true' if we immediately acquired the lock, 'false' if the lock
- * is currently in use by another transaction, and we need to wait
- */
- public boolean getLock(Requestor requestor, String key, String ownerKey,
- boolean waitForLock) {
- if (lock != null) {
- if (lock.isActive()) {
- // we already have an active lock
- return true;
- }
-
- // We may have timed out earlier waiting for the lock, or
- // we may have lost the lock after persistent restore. In
- // any case, free the lock we have now, and allocate a new one.
- lock.free();
- }
-
- // register the requestor in case the lockUnavailable() callback runs
- // immediately. Previously the requestor would be set after the
- // lock constructor ran but now the lockUnavailable() callback
- // could be executed while the constructor is still on the stack which
- // would result in a null requestor, thus the callback never
- // notifying the requestor that the lock was unavailable.
- this.requestor = requestor;
-
- // try to allocate a new lock
- lock = PolicyEngineConstants.getManager().createLock(
- key, ownerKey, 600, this, waitForLock);
- // return the boolean value of the lock.isactive
- return lock.isActive();
- }
-
- /*=================================*/
- /* 'Transaction.Adjunct' interface */
- /*=================================*/
-
- /**
- * Notification that the transaction has completed.
- *
- * {@inheritDoc}
- */
- @Override
- public void cleanup(Transaction transaction) {
- if (lock != null) {
- // free the lock or cancel the reservation
- lock.free();
- }
- }
-
- /*==========================*/
- /* 'LockCallback' interface */
- /*==========================*/
-
- /**
- * Notification that the lock is available.
- *
- * {@inheritDoc}
- */
- @Override
- public void lockAvailable(Lock lock) {
- this.lock = lock;
- if (requestor != null) {
- // notify requestor
- requestor.lockAvailable();
- }
- }
-
- /**
- * Notification that the lock is not available.
- *
- * {@inheritDoc}
- */
- @Override
- public void lockUnavailable(Lock lock) {
- this.lock = lock;
- if (requestor != null) {
- // notify requestor
- requestor.lockUnavailable();
- }
- }
-}
diff --git a/controlloop/m2/lock/src/test/java/org/onap/policy/drools/m2/lock/LockAdjunctTest.java b/controlloop/m2/lock/src/test/java/org/onap/policy/drools/m2/lock/LockAdjunctTest.java
deleted file mode 100644
index 2b4a29b34..000000000
--- a/controlloop/m2/lock/src/test/java/org/onap/policy/drools/m2/lock/LockAdjunctTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * m2/lock
- * ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.drools.m2.lock;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Properties;
-import java.util.UUID;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.drools.core.lock.Lock;
-import org.onap.policy.drools.core.lock.LockCallback;
-import org.onap.policy.drools.system.PolicyEngineConstants;
-import org.onap.policy.m2.base.Transaction;
-
-public class LockAdjunctTest {
-
- public class TestOwner implements LockCallback {
-
- @Override
- public void lockAvailable(Lock arg0) {
- return;
- }
-
- @Override
- public void lockUnavailable(Lock arg0) {
- return;
- }
- }
-
- private LockCallback owner;
- private Lock lock;
-
- @BeforeClass
- public static void start() {
- PolicyEngineConstants.getManager().configure(new Properties());
- PolicyEngineConstants.getManager().start();
- }
-
- @AfterClass
- public static void stop() {
- PolicyEngineConstants.getManager().stop();
- }
-
- @Test
- public void testLockAdjunct() {
- owner = new TestOwner();
- lock = PolicyEngineConstants.getManager().createLock("key", "ownerKey", 60, owner, false);
- LockAdjunct lockA = new LockAdjunct();
-
- assertNotNull(lockA);
-
- lockA.lockUnavailable(lock);
- assertTrue(lock.isActive());
- assertTrue(lockA.getLock(null, "key", "ownerKey", false));
- LockAdjunct lockB = new LockAdjunct();
- assertFalse(lockB.getLock(null, "key", "ownerKey", false));
- assertTrue(lock.free());
-
- lockB.lockAvailable(lock);
- assertFalse(lock.isActive());
- assertTrue(lockB.getLock(null, "key", "ownerKey", false));
- assertFalse(lock.free());
-
- UUID uuid = UUID.randomUUID();
- Transaction transaction = new Transaction(null, "1111", uuid, null);
- lockA.cleanup(transaction);
- }
-}