Read lock promotion
[music.git] / src / main / java / org / onap / music / service / MusicCoreService.java
index 61e4905..b322690 100644 (file)
@@ -25,14 +25,24 @@ package org.onap.music.service;
 import java.util.List;
 import java.util.Map;
 
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.onap.music.datastore.Condition;
 import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.datastore.jsonobjects.JsonDelete;
+import org.onap.music.datastore.jsonobjects.JsonIndex;
+import org.onap.music.datastore.jsonobjects.JsonInsert;
+import org.onap.music.datastore.jsonobjects.JsonKeySpace;
+import org.onap.music.datastore.jsonobjects.JsonSelect;
+import org.onap.music.datastore.jsonobjects.JsonTable;
+import org.onap.music.datastore.jsonobjects.JsonUpdate;
 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;
-import org.onap.music.datastore.*;
 
 import com.datastax.driver.core.ResultSet;
 
@@ -50,7 +60,7 @@ public interface MusicCoreService {
         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;
 
@@ -72,8 +82,30 @@ public interface MusicCoreService {
 
     // Core Music Locking Service Methods
 
+    /**
+     * 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;
+    
+    /**
+     * 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}
+     * @param owner the owner of the lock, for deadlock prevention
+     */
+    public String createLockReference(String fullyQualifiedKey, LockType locktype, String owner) throws MusicLockingException;
+
     public ReturnType acquireLockWithLease(String key, String lockReference, long leasePeriod)
         throws MusicLockingException, MusicQueryException, MusicServiceException; // key,lock id,time
 
@@ -85,19 +117,26 @@ public interface MusicCoreService {
 
     public ResultSet quorumGet(PreparedQueryObject query);
 
+    /**
+     * Gets top of queue for fullyQualifiedKey
+     * @param fullyQualifiedKey
+     * @return
+     */
     public String whoseTurnIsIt(String fullyQualifiedKey);// lock name
+    
+    /**
+     * 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
-
-    //public MusicLockState voluntaryReleaseLock(String fullyQualifiedKey, String lockReference)
-    //        throws MusicLockingException;// lock name,lock id
-
     public void deleteLock(String lockName) throws MusicLockingException;
     
-    //public MusicLockState  forciblyReleaseLock(String fullyQualifiedKey, String lockReference) throws MusicLockingException, MusicServiceException, MusicQueryException;
-
+    public ReturnType promoteLock(String lockIdToPromote) throws MusicLockingException;
+    
     public List<String> getLockQueue(String fullyQualifiedKey)
         throws MusicServiceException, MusicQueryException, MusicLockingException;
     
@@ -107,4 +146,36 @@ public interface MusicCoreService {
     public Map<String, Object> validateLock(String lockName);
 
     public MusicLockState releaseLock(String lockId, boolean voluntaryRelease) throws MusicLockingException;
+
+       public List<String> releaseAllLocksForOwner(String ownerId, String keyspace, String table) throws MusicLockingException, MusicServiceException, MusicQueryException;
+
+    
+    //Methods added for orm
+    
+
+    public ResultType createTable(JsonTable jsonTableObject, String consistencyInfo) throws MusicServiceException,MusicQueryException;
+    
+    public ResultType dropTable(JsonTable jsonTableObject, String consistencyInfo) 
+            throws MusicServiceException,MusicQueryException;
+    
+    public ResultType createKeyspace(JsonKeySpace jsonKeySpaceObject,String consistencyInfo) throws MusicServiceException,MusicQueryException;
+    
+    public ResultType dropKeyspace(JsonKeySpace jsonKeySpaceObject, String consistencyInfo) 
+            throws MusicServiceException,MusicQueryException;
+    
+    public ResultType createIndex(JsonIndex jsonIndexObject, String consistencyInfo) throws MusicServiceException,MusicQueryException;
+    
+    public ResultSet select(JsonSelect jsonSelect, MultivaluedMap<String, String> rowParams) throws MusicServiceException, MusicQueryException;
+    
+    public ResultSet selectCritical(JsonInsert jsonInsertObj, MultivaluedMap<String, String> rowParams) 
+            throws MusicLockingException, MusicQueryException, MusicServiceException;
+    
+    public ReturnType insertIntoTable(JsonInsert jsonInsert) throws MusicLockingException, MusicQueryException, MusicServiceException;
+    
+    public ReturnType updateTable(JsonUpdate jsonUpdateObj,MultivaluedMap<String, String> rowParams) 
+            throws MusicLockingException, MusicQueryException, MusicServiceException;
+    
+    public ReturnType deleteFromTable(JsonDelete jsonDeleteObj,MultivaluedMap<String, String> rowParams) 
+            throws MusicLockingException, MusicQueryException, MusicServiceException;
+
 }