Some bug fixes and Minor Chages.
[music.git] / src / main / java / org / onap / music / service / MusicCoreService.java
index affdc7f..9bbef9c 100644 (file)
@@ -29,6 +29,7 @@ import org.onap.music.datastore.PreparedQueryObject;
 import org.onap.music.exceptions.MusicLockingException;
 import org.onap.music.exceptions.MusicQueryException;
 import org.onap.music.exceptions.MusicServiceException;
+import org.onap.music.lockingservice.cassandra.LockType;
 import org.onap.music.lockingservice.cassandra.MusicLockState;
 import org.onap.music.main.ResultType;
 import org.onap.music.main.ReturnType;
@@ -47,47 +48,73 @@ public interface MusicCoreService {
     public  ReturnType eventualPut_nb(PreparedQueryObject queryObject,String keyspace,String tablename,String primaryKey);
 
     public ReturnType criticalPut(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject, String lockId, Condition conditionInfo);
+        PreparedQueryObject queryObject, String lockId, Condition conditionInfo);
 
     public ResultType nonKeyRelatedPut(PreparedQueryObject queryObject, String consistency)
-            throws MusicServiceException;
+        throws MusicServiceException,MusicQueryException;
 
     public ResultSet get(PreparedQueryObject queryObject) throws MusicServiceException;
 
     public ResultSet atomicGet(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject) throws MusicServiceException, MusicLockingException, MusicQueryException;
+        PreparedQueryObject queryObject) throws MusicServiceException, MusicLockingException, MusicQueryException;
 
     public ReturnType atomicPutWithDeleteLock(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject, Condition conditionInfo) throws MusicLockingException;
+        PreparedQueryObject queryObject, Condition conditionInfo) throws MusicLockingException;
     
     public  ResultSet atomicGetWithDeleteLock(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject) throws MusicServiceException, MusicLockingException;
+        PreparedQueryObject queryObject) throws MusicServiceException, MusicLockingException;
 
     public ReturnType atomicPut(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject, Condition conditionInfo)
-            throws MusicLockingException, MusicQueryException, MusicServiceException;
+        PreparedQueryObject queryObject, Condition conditionInfo)
+        throws MusicLockingException, MusicQueryException, MusicServiceException;
 
     public ResultSet criticalGet(String keyspaceName, String tableName, String primaryKey,
-            PreparedQueryObject queryObject, String lockId) throws MusicServiceException;
+        PreparedQueryObject queryObject, String lockId) throws MusicServiceException;
 
     // Core Music Locking Service Methods
 
-    public String createLockReference(String fullyQualifiedKey); // lock name
-
+    /**
+     * Create a lock ref in the music lock store.
+     * Default is write as this is the safest semantically
+     * 
+     * @param fullyQualifiedKey the key to create a lock on
+     * @see {@link #creatLockReference(String, LockType)}
+     */
+    public String createLockReference(String fullyQualifiedKey) throws MusicLockingException; // lock name
+
+    /**
+     * Create a lock ref in the music lock store
+     * @param fullyQualifiedKey the key to create a lock on
+     * @param locktype the type of lock create, see {@link LockType}
+     */
+    public String createLockReference(String fullyQualifiedKey, LockType locktype) throws MusicLockingException;
+    
     public ReturnType acquireLockWithLease(String key, String lockReference, long leasePeriod)
-            throws MusicLockingException, MusicQueryException, MusicServiceException; // key,lock id,time
+        throws MusicLockingException, MusicQueryException, MusicServiceException; // key,lock id,time
 
     public ReturnType acquireLock(String key, String lockReference)
-            throws MusicLockingException, MusicQueryException, MusicServiceException; // key,lock id
+        throws MusicLockingException, MusicQueryException, MusicServiceException; // key,lock id
 
     public ResultType createTable(String keyspace, String table, PreparedQueryObject tableQueryObject,
-            String consistency) throws MusicServiceException;
+        String consistency) throws MusicServiceException;
 
     public ResultSet quorumGet(PreparedQueryObject query);
 
+    /**
+     * Gets top of queue for fullyQualifiedKey
+     * @param fullyQualifiedKey
+     * @return
+     */
     public String whoseTurnIsIt(String fullyQualifiedKey);// lock name
-
-    public void destroyLockRef(String lockId);
+    
+    /**
+     * Gets the current lockholder(s) for lockName
+     * @param lockName
+     * @return
+     */
+    public List<String> getCurrentLockHolders(String fullyQualifiedKey);
+
+    public void destroyLockRef(String lockId) throws MusicLockingException;
     
     //public MusicLockState destroyLockRef(String fullyQualifiedKey, String lockReference); // lock name, lock id
 
@@ -99,12 +126,13 @@ public interface MusicCoreService {
     //public MusicLockState  forciblyReleaseLock(String fullyQualifiedKey, String lockReference) throws MusicLockingException, MusicServiceException, MusicQueryException;
 
     public List<String> getLockQueue(String fullyQualifiedKey)
-            throws MusicServiceException, MusicQueryException, MusicLockingException;
+        throws MusicServiceException, MusicQueryException, MusicLockingException;
     
-     public long getLockQueueSize(String fullyQualifiedKey)
-                throws MusicServiceException, MusicQueryException, MusicLockingException;
+    public long getLockQueueSize(String fullyQualifiedKey)
+        throws MusicServiceException, MusicQueryException, MusicLockingException;
 
     public Map<String, Object> validateLock(String lockName);
 
-    public MusicLockState releaseLock(String lockId, boolean voluntaryRelease);
+    public MusicLockState releaseLock(String lockId, boolean voluntaryRelease) throws MusicLockingException;
+
 }