import java.util.Date;
import java.util.List;
import java.util.Observable;
-
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.FlushModeType;
import javax.persistence.LockModeType;
-import javax.persistence.Query;
-
+import javax.persistence.TypedQuery;
+import org.onap.policy.common.im.exceptions.EntityRetrievalException;
import org.onap.policy.common.im.jpa.StateManagementEntity;
import org.onap.policy.common.utils.jpa.EntityMgrCloser;
import org.onap.policy.common.utils.jpa.EntityTransCloser;
*
*/
public class StateManagement extends Observable {
+ private static final String RESOURCE_NAME = "resource";
+ private static final String GET_STATE_MANAGEMENT_ENTITY_QUERY =
+ "Select p from StateManagementEntity p where p.resourceName=:" + RESOURCE_NAME;
private static final Logger logger = LoggerFactory.getLogger(StateManagement.class);
public static final String LOCKED = "locked";
public static final String UNLOCKED = "unlocked";
private String opState = null;
private String availStatus = null;
private String standbyStatus = null;
- private EntityManagerFactory emf;
+ private final EntityManagerFactory emf;
private StateTransition st = null;
/*
* @param resourceName
* @throws StateManagementException
*/
- public StateManagement(EntityManagerFactory entityManagerFactory, String resourceName) throws StateManagementException
+ public StateManagement(final EntityManagerFactory entityManagerFactory, final String resourceName) throws StateManagementException
{
emf = entityManagerFactory;
if(logger.isDebugEnabled()){
logger.debug("StateManagement: constructor, resourceName: {}", resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
//persist the administrative state
- if (sm != null) {
- if(logger.isDebugEnabled()){
+ if(logger.isDebugEnabled()){
logger.debug("Persist adminstrative state, resourceName = {}", this.resourceName);
- }
- em.persist(sm);
}
+ em.persist(sm);
et.commit();
//Load the StateTransition hash table
if(logger.isDebugEnabled()){
logger.debug("StateManagement: constructor end, resourceName: {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement: constructor caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement: Exception: " + ex.toString(), ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK initializeState() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK initializeState() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: initializeState() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
// set state
sm.setAdminState(sm.getAdminState()); //preserve the Admin state
sm.setOpState(StateManagement.ENABLED);
if(logger.isDebugEnabled()){
logger.debug("StateManagement: initializeState() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.initializeState() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.initializeState() Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK lock() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK lock() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: lock() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), LOCK);
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: lock() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.lock() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.lock() Exception: " + ex.toString());
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK unlock() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK unlock() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: unlock() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), UNLOCK);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: unlock() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.unlock() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.unlock() Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK enabledNotFailed() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK enabledNotFailed() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: enableNotFailed() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), ENABLE_NOT_FAILED);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement enableNotFailed() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.enableNotFailed() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.enableNotFailed() Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK disabledFailed() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK disabledFailed() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: disableFailed() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), DISABLE_FAILED);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: disableFailed() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.disableFailed() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.disableFailed() Exception: " + ex);
}
* that remote resource has failed but its state is still showing that it is viable.
* @throws StateManagementException
*/
- public void disableFailed(String otherResourceName) throws StateManagementException
+ public void disableFailed(final String otherResourceName) throws StateManagementException
{
synchronized (SYNCLOCK){
if(otherResourceName == null){
return;
}
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK disabledFailed(otherResourceName) operation for resourceName = {}\n",
- otherResourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK disabledFailed(otherResourceName) operation for resourceName = {}\n",
+ otherResourceName);
logger.debug("StateManagement: disableFailed(otherResourceName) operation started, resourceName = {}",
otherResourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for " + otherResourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, otherResourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, otherResourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), DISABLE_FAILED);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
logger.debug("StateManagement: disableFailed(otherResourceName) operation completed, resourceName = {}",
otherResourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.disableFailed(otherResourceName) caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.disableFailed(otherResourceName) Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK disableDependency() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK disableDependency() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: disableDependency() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), DISABLE_DEPENDENCY);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: disableDependency() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.disableDependency() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.disableDependency() Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK enableNoDependency() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK enableNoDependency() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: enableNoDependency() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), ENABLE_NO_DEPENDENCY);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: enableNoDependency() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.enableNoDependency() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.enableNoDependency() Exception: " + ex);
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK promote() operation for resourceName = {}\n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK promote() operation for resourceName = {}\n", this.resourceName);
logger.debug("StateManagement: promote() operation started, resourceName = {}", this.resourceName);
}
StateManagementEntity sm;
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), PROMOTE);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
et.commit();
setChanged();
notifyObservers(STANDBY_STATUS);
- }catch(Exception ex){
+ }catch(final Exception ex){
logger.error("StateManagement.promote() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.promote() Exception: " + ex);
}
logger.debug("StateManagement: promote() operation completed, resourceName = ", this.resourceName);
}
if (sm.getStandbyStatus().equals(StateManagement.COLD_STANDBY)){
- String msg = "Failure to promote " + this.resourceName + " StandbyStatus = " + StateManagement.COLD_STANDBY;
+ final String msg = "Failure to promote " + this.resourceName + " StandbyStatus = " + StateManagement.COLD_STANDBY;
throw new StandbyStatusException(msg);
}
}
{
synchronized (SYNCLOCK){
if(logger.isDebugEnabled()){
- logger.debug("\nStateManagement: SYNCLOCK demote() operation for resourceName = \n", this.resourceName);
- }
- if(logger.isDebugEnabled()){
+ logger.debug("\nStateManagement: SYNCLOCK demote() operation for resourceName = \n", this.resourceName);
logger.debug("StateManagement: demote() operation started, resourceName = {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("findStateManagementEntity for {}", this.resourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, this.resourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), DEMOTE);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: demote() operation completed, resourceName = {}", this.resourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.demote() caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.demote() Exception: " + ex);
}
* @param otherResourceName
* @throws StateManagementException
*/
- public void demote(String otherResourceName) throws StateManagementException
+ public void demote(final String otherResourceName) throws StateManagementException
{
synchronized (SYNCLOCK){
if(otherResourceName==null){
if(logger.isDebugEnabled()){
logger.debug("\nStateManagement: SYNCLOCK demote(otherResourceName) operation for resourceName = {}\n", otherResourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
if(logger.isDebugEnabled()){
logger.debug("StateManagement: SYNCLOCK demote(otherResourceName) findStateManagementEntity for {}", otherResourceName);
}
- StateManagementEntity sm = findStateManagementEntity(em, otherResourceName);
- StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
+ final StateManagementEntity sm = findStateManagementEntity(em, otherResourceName);
+ final StateElement stateElement = st.getEndingState(sm.getAdminState(), sm.getOpState(),
sm.getAvailStatus(), sm.getStandbyStatus(), DEMOTE);
// set transition state
sm.setAdminState(stateElement.getEndingAdminState());
if(logger.isDebugEnabled()){
logger.debug("StateManagement: demote(otherResourceName) operation completed, resourceName = {}", otherResourceName);
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement.demote(otherResourceName) caught unexpected exception: ", ex);
throw new StateManagementException("StateManagement.demote(otherResourceName) Exception: " + ex);
}
logger.debug("StateManagement(6/1/16): getAdminState for resourceName {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
- try(EntityMgrCloser emc = new EntityMgrCloser(em)) {
- Query query = em.createQuery("Select p from StateManagementEntity p where p.resourceName=:resource");
+ final EntityManager em = emf.createEntityManager();
+ try(final EntityMgrCloser emc = new EntityMgrCloser(em)) {
+ final TypedQuery<StateManagementEntity> query = em.createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
- query.setParameter("resource", this.resourceName);
+ query.setParameter(RESOURCE_NAME, this.resourceName);
//Just test that we are retrieving the right object
- @SuppressWarnings("rawtypes")
- List resourceList = query.setLockMode(
+ final
+ List<StateManagementEntity> resourceList = query.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if (!resourceList.isEmpty()) {
// exist
- StateManagementEntity stateManagementEntity = (StateManagementEntity) resourceList.get(0);
+ final StateManagementEntity stateManagementEntity = resourceList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(stateManagementEntity);
this.adminState = stateManagementEntity.getAdminState();
} else {
this.adminState = null;
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement: getAdminState exception: {}", ex.toString(), ex);
}
logger.debug("StateManagement(6/1/16): getOpState for resourceName {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em)) {
- Query query = em.createQuery("Select p from StateManagementEntity p where p.resourceName=:resource");
+ final TypedQuery<StateManagementEntity> query = em.createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
- query.setParameter("resource", this.resourceName);
+ query.setParameter(RESOURCE_NAME, this.resourceName);
//Just test that we are retrieving the right object
- @SuppressWarnings("rawtypes")
- List resourceList = query.setLockMode(
+ final
+ List<StateManagementEntity> resourceList = query.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if (!resourceList.isEmpty()) {
// exist
- StateManagementEntity stateManagementEntity = (StateManagementEntity) resourceList.get(0);
+ final StateManagementEntity stateManagementEntity = resourceList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(stateManagementEntity);
this.opState = stateManagementEntity.getOpState();
} else {
this.opState = null;
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement: getOpState exception: {}", ex.toString(), ex);
}
logger.debug("StateManagement(6/1/16): getAvailStatus for resourceName {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em)) {
- Query query = em.createQuery("Select p from StateManagementEntity p where p.resourceName=:resource");
+ final TypedQuery<StateManagementEntity> query = em.createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
- query.setParameter("resource", this.resourceName);
+ query.setParameter(RESOURCE_NAME, this.resourceName);
//Just test that we are retrieving the right object
- @SuppressWarnings("rawtypes")
- List resourceList = query.setLockMode(
+ final
+ List<StateManagementEntity> resourceList = query.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if (!resourceList.isEmpty()) {
// exist
- StateManagementEntity stateManagementEntity = (StateManagementEntity) resourceList.get(0);
+ final StateManagementEntity stateManagementEntity = resourceList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(stateManagementEntity);
this.availStatus = stateManagementEntity.getAvailStatus();
} else {
this.availStatus = null;
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement: getAvailStatus exception: {}", ex.toString(), ex);
}
logger.debug("StateManagement(6/1/16): getStandbyStatus for resourceName {}", this.resourceName);
}
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em)) {
- Query query = em.createQuery("Select p from StateManagementEntity p where p.resourceName=:resource");
+ final TypedQuery<StateManagementEntity> query = em.createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
- query.setParameter("resource", this.resourceName);
+ query.setParameter(RESOURCE_NAME, this.resourceName);
//Just test that we are retrieving the right object
- @SuppressWarnings("rawtypes")
- List resourceList = query.setLockMode(
+ final
+ List<StateManagementEntity> resourceList = query.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if (!resourceList.isEmpty()) {
// exist
- StateManagementEntity stateManagementEntity = (StateManagementEntity) resourceList.get(0);
+ final StateManagementEntity stateManagementEntity = resourceList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(stateManagementEntity);
this.standbyStatus = stateManagementEntity.getStandbyStatus();
} else {
this.standbyStatus = null;
}
- } catch(Exception ex) {
+ } catch(final Exception ex) {
logger.error("StateManagement: getStandbyStatus exception: {}", ex.toString(), ex);
}
* @param otherResourceName
* @return
*/
- private static StateManagementEntity findStateManagementEntity(EntityManager em, String otherResourceName)
+ private static StateManagementEntity findStateManagementEntity(final EntityManager em, final String otherResourceName)
{
if(logger.isDebugEnabled()){
logger.debug("StateManagementEntity: findStateManagementEntity: Entry");
}
- StateManagementEntity stateManagementEntity = null;
try {
- Query query = em.createQuery("Select p from StateManagementEntity p where p.resourceName=:resource");
-
- query.setParameter("resource", otherResourceName);
+ final TypedQuery<StateManagementEntity> query =
+ em.createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
+
+ query.setParameter(RESOURCE_NAME, otherResourceName);
//Just test that we are retrieving the right object
- @SuppressWarnings("rawtypes")
- List resourceList = query.setLockMode(
+ final
+ List<StateManagementEntity> resourceList = query.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if (!resourceList.isEmpty()) {
- // exist
- stateManagementEntity = (StateManagementEntity) resourceList.get(0);
- // refresh the object from DB in case cached data was returned
- em.refresh(stateManagementEntity);
- stateManagementEntity.setModifiedDate(new Date());
+ // exist
+ final StateManagementEntity stateManagementEntity = resourceList.get(0);
+ // refresh the object from DB in case cached data was returned
+ em.refresh(stateManagementEntity);
+ stateManagementEntity.setModifiedDate(new Date());
+ return stateManagementEntity;
} else {
// not exist - create one
- stateManagementEntity = new StateManagementEntity();
+ final StateManagementEntity stateManagementEntity = new StateManagementEntity();
stateManagementEntity.setResourceName(otherResourceName);
stateManagementEntity.setAdminState(UNLOCKED);
stateManagementEntity.setOpState(ENABLED);
stateManagementEntity.setAvailStatus(NULL_VALUE);
stateManagementEntity.setStandbyStatus(NULL_VALUE); // default
+ return stateManagementEntity;
}
- } catch(Exception ex) {
- logger.error("findStateManagementEntity exception: {}", ex.toString(), ex);
+ } catch(final Exception ex) {
+ final String message = "findStateManagementEntity exception";
+ logger.error("{}: {}", message, ex.toString(), ex);
+ throw new EntityRetrievalException(message, ex);
}
- return stateManagementEntity;
}
/**
* @param otherResourceName
* @return
*/
- public String getStandbyStatus(String otherResourceName) {
+ public String getStandbyStatus(final String otherResourceName) {
if (logger.isDebugEnabled()) {
logger.debug("StateManagement: getStandbyStatus: Entering, resourceName='{}'", otherResourceName);
String tempStandbyStatus = null;
// The transaction is required for the LockModeType
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
- Query stateManagementListQuery = em
- .createQuery("SELECT p FROM StateManagementEntity p WHERE p.resourceName=:resource");
- stateManagementListQuery.setParameter("resource", otherResourceName);
- List<?> stateManagementList = stateManagementListQuery.setLockMode(
+ final TypedQuery<StateManagementEntity> stateManagementListQuery = em
+ .createQuery(GET_STATE_MANAGEMENT_ENTITY_QUERY, StateManagementEntity.class);
+ stateManagementListQuery.setParameter(RESOURCE_NAME, otherResourceName);
+ final List<StateManagementEntity> stateManagementList = stateManagementListQuery.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
- if (stateManagementList.size() == 1
- && stateManagementList.get(0) instanceof StateManagementEntity) {
- StateManagementEntity stateManagementEntity = (StateManagementEntity) stateManagementList
- .get(0);
+ if (!stateManagementList.isEmpty()) {
+ final StateManagementEntity stateManagementEntity = stateManagementList.get(0);
// refresh the object from DB in case cached data was returned
em.refresh(stateManagementEntity);
tempStandbyStatus = stateManagementEntity.getStandbyStatus();
}
et.commit();
- } catch (Exception e) {
+ } catch (final Exception e) {
logger.error("getStandbyStatus: Caught Exception attempting to get statemanagemententity record, message='{}'", e.getMessage(), e);
}
if (logger.isDebugEnabled()) {
/*
* Start transaction
*/
- EntityManager em = emf.createEntityManager();
+ final EntityManager em = emf.createEntityManager();
try(EntityMgrCloser emc = new EntityMgrCloser(em);
MyTransaction et = new MyTransaction(em)) {
- Query stateManagementEntityListQuery = em
- .createQuery("SELECT p FROM StateManagementEntity p");
- @SuppressWarnings("unchecked")
+ final TypedQuery<StateManagementEntity> stateManagementEntityListQuery = em
+ .createQuery("SELECT p FROM StateManagementEntity p", StateManagementEntity.class);
+ final
List<StateManagementEntity> stateManagementEntityList = stateManagementEntityListQuery.setLockMode(
LockModeType.NONE).setFlushMode(FlushModeType.COMMIT).getResultList();
if(logger.isDebugEnabled()){
logger.debug("deleteAllStateManagementEntities: Deleting {} StateManagementEntity records", stateManagementEntityList.size());
}
- for (StateManagementEntity stateManagementEntity : stateManagementEntityList) {
+ for (final StateManagementEntity stateManagementEntity : stateManagementEntityList) {
if(logger.isDebugEnabled()){
logger.debug("deleteAllStateManagementEntities: Deleting statemanagemententity with resourceName={} and standbyStatus={}",
stateManagementEntity.getResourceName(),
}
et.commit();
- }catch(Exception ex){
+ }catch(final Exception ex){
logger.error("StateManagement.deleteAllStateManagementEntities() caught Exception: ", ex);
}
if(logger.isDebugEnabled()){
/**
* @param em
*/
- public MyTransaction(EntityManager em) {
+ public MyTransaction(final EntityManager em) {
super(em.getTransaction());
}
package org.onap.policy.common.im;
import static org.junit.Assert.assertEquals;
-
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.PersistenceException;
+import javax.persistence.QueryTimeoutException;
+import javax.persistence.TypedQuery;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.policy.common.im.jpa.StateManagementEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/*
- * All JUnits are designed to run in the local development environment
- * where they have write privileges and can execute time-sensitive
- * tasks.
+ * All JUnits are designed to run in the local development environment where they have write
+ * privileges and can execute time-sensitive tasks.
*/
public class StateManagementTest extends IntegrityMonitorTestBase {
- private static Logger logger = LoggerFactory.getLogger(StateManagementTest.class);
- //
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- IntegrityMonitorTestBase.setUpBeforeClass(DEFAULT_DB_URL_PREFIX + StateManagementTest.class.getSimpleName());
-
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- IntegrityMonitorTestBase.tearDownAfterClass();
- }
-
- @Before
- public void setUp() {
- super.setUpTest();
- }
-
- @After
- public void tearDown() {
- super.tearDownTest();
- }
-
- @Test
- public void test() throws Exception {
- logger.info("\n\nlogger.infor StateManagementTest: Entering\n\n");
- String resourceName = "test_resource1";
-
- // These parameters are in a properties file
- try {
- StateManagement sm = new StateManagement(emf, resourceName);
-
- logger.info("\n??? initial state");
- assertEquals("unlocked,enabled,null,null", makeString(sm));
-
- logger.info("\n??? test lock()");
- sm.lock();
- assertEquals("locked,enabled,null,null", makeString(sm));
-
- logger.info("\n??? test unlock()");
- sm.unlock();
- assertEquals("unlocked,enabled,null,null", makeString(sm));
-
- logger.info("\n??? test enableNotFailed()");
- sm.enableNotFailed();
- assertEquals("unlocked,enabled,null,null", makeString(sm));
-
- logger.info("\n??? test disableFailed()");
- sm.disableFailed();
- assertEquals("unlocked,disabled,failed,null", makeString(sm));
-
- // P4 If promote() is called while either the opState is disabled or
- // the adminState is locked,
- // the standbystatus shall transition to coldstandby and a
- // StandbyStatusException shall be thrown
- logger.info("\n??? promote() test case P4");
- assertException(sm, smx -> {
- sm.disableFailed();
- sm.lock();
-
- sm.promote();
- });
- assertEquals("locked,disabled,failed,coldstandby", makeString(sm));
-
- // P3 If promote() is called while standbyStatus is coldstandby, the
- // state shall not transition
- // and a StandbyStatusException shall be thrown
- logger.info("\n??? promote() test case P3");
- assertException(sm, smx -> {
- sm.promote();
- });
- assertEquals("locked,disabled,failed,coldstandby", makeString(sm));
-
- // P2 If promote() is called while the standbyStatus is null and the
- // opState is enabled and adminState is unlocked,
- // the state shall transition to providingservice
- logger.info("\n??? promote() test case P2");
- resourceName = "test_resource2";
- StateManagement sm2 = new StateManagement(emf, resourceName);
- sm2.enableNotFailed();
- sm2.unlock();
- assertEquals("unlocked,enabled,null,null", makeString(sm2));
- sm2.promote();
- assertEquals("unlocked,enabled,null,providingservice", makeString(sm2));
-
- // P5 If promote() is called while standbyStatus is
- // providingservice, no action is taken
- logger.info("\n??? promote() test case P5");
- sm2.promote();
- assertEquals("unlocked,enabled,null,providingservice", makeString(sm2));
-
- // D1 If demote() is called while standbyStatus is providingservice,
- // the state shall transition to hotstandby
- logger.info("\n??? demote() test case D1");
- sm2.demote();
- assertEquals("unlocked,enabled,null,hotstandby", makeString(sm2));
-
- // D4 If demote() is called while standbyStatus is hotstandby, no
- // action is taken
- logger.info("\n??? demote() test case D4");
- sm2.demote();
- assertEquals("unlocked,enabled,null,hotstandby", makeString(sm2));
-
- // D3 If demote() is called while standbyStatus is null and
- // adminState is locked or opState is disabled,
- // the state shall transition to coldstandby
- logger.info("\n??? demote() test case D3");
- resourceName = "test_resource3";
- StateManagement sm3 = new StateManagement(emf, resourceName);
- sm3.lock();
- sm3.disableFailed();
- sm3.demote();
- assertEquals("locked,disabled,failed,coldstandby", makeString(sm3));
-
- // D5 If demote() is called while standbyStatus is coldstandby, no
- // action is taken
- logger.info("\n??? demote() test case D5");
- sm3.demote();
- assertEquals("locked,disabled,failed,coldstandby", makeString(sm3));
-
- // D2 If demote() is called while standbyStatus is null and
- // adminState is unlocked and opState is enabled,
- // the state shall transition to hotstandby
- logger.info("\n??? demote() test case D2");
- resourceName = "test_resource4";
- StateManagement sm4 = new StateManagement(emf, resourceName);
- sm4.unlock();
- sm4.enableNotFailed();
- assertEquals("unlocked,enabled,null,null", makeString(sm4));
- sm4.demote();
- assertEquals("unlocked,enabled,null,hotstandby", makeString(sm4));
-
- // P1 If promote() is called while standbyStatus is hotstandby, the
- // state shall transition to providingservice.
- logger.info("\n??? promote() test case P1");
- sm4.promote();
- assertEquals("unlocked,enabled,null,providingservice", makeString(sm4));
-
- // State change notification
- logger.info("\n??? State change notification test case 1 - lock()");
- StateChangeNotifier stateChangeNotifier = new StateChangeNotifier();
- sm.addObserver(stateChangeNotifier);
- sm.lock();
- assertEquals("locked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
-
- logger.info("\n??? State change notification test case 2 - unlock()");
- sm.unlock();
- assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
-
- logger.info("\n??? State change notification test case 3 - enabled()");
- sm.enableNotFailed();
- assertEquals("unlocked,enabled,null,hotstandby", makeString(stateChangeNotifier.getStateManagement()));
-
- logger.info("\n??? State change notification test case 4 - disableFailed()");
- sm.disableFailed();
- assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
-
- logger.info("\n??? State change notification test case 5 - demote()");
- sm.demote();
- assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
-
- logger.info("\n??? State change notification test case 6 - promote()");
- assertException(sm, smx -> {
- sm.promote();
- });
- assertEquals("unlocked,disabled,failed,coldstandby", makeString(sm));
-
- } catch (Exception ex) {
- logger.error("Exception: {}", ex.toString());
- throw ex;
- }
-
- logger.info("\n\nStateManagementTest: Exit\n\n");
- }
-
- /**
- * Converts a state element to a comma-separated string.
- *
- * @param se
- * element to be converted
- * @return a string representing the element
- */
- private String makeString(StateManagement sm) {
- if (sm == null) {
- return null;
- }
-
- StringBuilder b = new StringBuilder();
-
- b.append(sm.getAdminState());
- b.append(',');
- b.append(sm.getOpState());
- b.append(',');
- b.append(sm.getAvailStatus());
- b.append(',');
- b.append(sm.getStandbyStatus());
-
- return b.toString();
- }
+ private static final String TEST_RESOURCE_NAME = "test_resource1";
+ private static Logger logger = LoggerFactory.getLogger(StateManagementTest.class);
+ //
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ IntegrityMonitorTestBase.setUpBeforeClass(DEFAULT_DB_URL_PREFIX + StateManagementTest.class.getSimpleName());
+
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ IntegrityMonitorTestBase.tearDownAfterClass();
+ }
+
+ @Before
+ public void setUp() {
+ super.setUpTest();
+ }
+
+ @After
+ public void tearDown() {
+ super.tearDownTest();
+ }
+
+ @Test
+ public void test() throws Exception {
+ logger.info("\n\nlogger.infor StateManagementTest: Entering\n\n");
+ String resourceName = TEST_RESOURCE_NAME;
+
+ // These parameters are in a properties file
+ try {
+ final StateManagement sm = new StateManagement(emf, resourceName);
+
+ logger.info("\n??? initial state");
+ assertEquals("unlocked,enabled,null,null", makeString(sm));
+
+ logger.info("\n??? test lock()");
+ sm.lock();
+ assertEquals("locked,enabled,null,null", makeString(sm));
+
+ logger.info("\n??? test unlock()");
+ sm.unlock();
+ assertEquals("unlocked,enabled,null,null", makeString(sm));
+
+ logger.info("\n??? test enableNotFailed()");
+ sm.enableNotFailed();
+ assertEquals("unlocked,enabled,null,null", makeString(sm));
+
+ logger.info("\n??? test disableFailed()");
+ sm.disableFailed();
+ assertEquals("unlocked,disabled,failed,null", makeString(sm));
+
+ // P4 If promote() is called while either the opState is disabled or
+ // the adminState is locked,
+ // the standbystatus shall transition to coldstandby and a
+ // StandbyStatusException shall be thrown
+ logger.info("\n??? promote() test case P4");
+ assertException(sm, smx -> {
+ sm.disableFailed();
+ sm.lock();
+
+ sm.promote();
+ });
+ assertEquals("locked,disabled,failed,coldstandby", makeString(sm));
+
+ // P3 If promote() is called while standbyStatus is coldstandby, the
+ // state shall not transition
+ // and a StandbyStatusException shall be thrown
+ logger.info("\n??? promote() test case P3");
+ assertException(sm, smx -> {
+ sm.promote();
+ });
+ assertEquals("locked,disabled,failed,coldstandby", makeString(sm));
+
+ // P2 If promote() is called while the standbyStatus is null and the
+ // opState is enabled and adminState is unlocked,
+ // the state shall transition to providingservice
+ logger.info("\n??? promote() test case P2");
+ resourceName = "test_resource2";
+ final StateManagement sm2 = new StateManagement(emf, resourceName);
+ sm2.enableNotFailed();
+ sm2.unlock();
+ assertEquals("unlocked,enabled,null,null", makeString(sm2));
+ sm2.promote();
+ assertEquals("unlocked,enabled,null,providingservice", makeString(sm2));
+
+ // P5 If promote() is called while standbyStatus is
+ // providingservice, no action is taken
+ logger.info("\n??? promote() test case P5");
+ sm2.promote();
+ assertEquals("unlocked,enabled,null,providingservice", makeString(sm2));
+
+ // D1 If demote() is called while standbyStatus is providingservice,
+ // the state shall transition to hotstandby
+ logger.info("\n??? demote() test case D1");
+ sm2.demote();
+ assertEquals("unlocked,enabled,null,hotstandby", makeString(sm2));
+
+ // D4 If demote() is called while standbyStatus is hotstandby, no
+ // action is taken
+ logger.info("\n??? demote() test case D4");
+ sm2.demote();
+ assertEquals("unlocked,enabled,null,hotstandby", makeString(sm2));
+
+ // D3 If demote() is called while standbyStatus is null and
+ // adminState is locked or opState is disabled,
+ // the state shall transition to coldstandby
+ logger.info("\n??? demote() test case D3");
+ resourceName = "test_resource3";
+ final StateManagement sm3 = new StateManagement(emf, resourceName);
+ sm3.lock();
+ sm3.disableFailed();
+ sm3.demote();
+ assertEquals("locked,disabled,failed,coldstandby", makeString(sm3));
+
+ // D5 If demote() is called while standbyStatus is coldstandby, no
+ // action is taken
+ logger.info("\n??? demote() test case D5");
+ sm3.demote();
+ assertEquals("locked,disabled,failed,coldstandby", makeString(sm3));
+
+ // D2 If demote() is called while standbyStatus is null and
+ // adminState is unlocked and opState is enabled,
+ // the state shall transition to hotstandby
+ logger.info("\n??? demote() test case D2");
+ resourceName = "test_resource4";
+ final StateManagement sm4 = new StateManagement(emf, resourceName);
+ sm4.unlock();
+ sm4.enableNotFailed();
+ assertEquals("unlocked,enabled,null,null", makeString(sm4));
+ sm4.demote();
+ assertEquals("unlocked,enabled,null,hotstandby", makeString(sm4));
+
+ // P1 If promote() is called while standbyStatus is hotstandby, the
+ // state shall transition to providingservice.
+ logger.info("\n??? promote() test case P1");
+ sm4.promote();
+ assertEquals("unlocked,enabled,null,providingservice", makeString(sm4));
+
+ // State change notification
+ logger.info("\n??? State change notification test case 1 - lock()");
+ final StateChangeNotifier stateChangeNotifier = new StateChangeNotifier();
+ sm.addObserver(stateChangeNotifier);
+ sm.lock();
+ assertEquals("locked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
+
+ logger.info("\n??? State change notification test case 2 - unlock()");
+ sm.unlock();
+ assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
+
+ logger.info("\n??? State change notification test case 3 - enabled()");
+ sm.enableNotFailed();
+ assertEquals("unlocked,enabled,null,hotstandby", makeString(stateChangeNotifier.getStateManagement()));
+
+ logger.info("\n??? State change notification test case 4 - disableFailed()");
+ sm.disableFailed();
+ assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
+
+ logger.info("\n??? State change notification test case 5 - demote()");
+ sm.demote();
+ assertEquals("unlocked,disabled,failed,coldstandby", makeString(stateChangeNotifier.getStateManagement()));
+
+ logger.info("\n??? State change notification test case 6 - promote()");
+ assertException(sm, smx -> {
+ sm.promote();
+ });
+ assertEquals("unlocked,disabled,failed,coldstandby", makeString(sm));
+
+ } catch (final Exception ex) {
+ logger.error("Exception: {}", ex.toString());
+ throw ex;
+ }
+
+ logger.info("\n\nStateManagementTest: Exit\n\n");
+ }
+
+ @Test(expected = StateManagementException.class)
+ @SuppressWarnings("unchecked")
+ public void test_StateManagementInitialization_ThrowStateManagementException_ifEntityManagerCreateQuerythrowsAnyException()
+ throws Exception {
+ final EntityManager mockedEm = getMockedEntityManager();
+ final EntityManagerFactory mockedEmf = getMockedEntityManagerFactory(mockedEm);
+
+ doThrow(PersistenceException.class).when(mockedEm).createQuery(anyString(),
+ any(StateManagementEntity.class.getClass()));
+
+ new StateManagement(mockedEmf, TEST_RESOURCE_NAME);
+
+ }
+
+ @Test(expected = StateManagementException.class)
+ @SuppressWarnings("unchecked")
+ public void test_StateManagementInitialization_ThrowStateManagementException_ifEntityManagerthrowsAnyException()
+ throws Exception {
+ final EntityManager mockedEm = getMockedEntityManager();
+ final EntityManagerFactory mockedEmf = getMockedEntityManagerFactory(mockedEm);
+ final TypedQuery<StateManagementEntity> mockedQuery = mock(TypedQuery.class);
+
+ when(mockedQuery.setFlushMode(Mockito.anyObject())).thenReturn(mockedQuery);
+ when(mockedQuery.setLockMode(Mockito.anyObject())).thenReturn(mockedQuery);
+ when(mockedEm.createQuery(anyString(), any(StateManagementEntity.class.getClass()))).thenReturn(mockedQuery);
+
+ doThrow(QueryTimeoutException.class).when(mockedQuery).getResultList();
+
+ new StateManagement(mockedEmf, TEST_RESOURCE_NAME);
+
+ }
+
+ private EntityManager getMockedEntityManager() {
+ final EntityManager mockedEm = mock(EntityManager.class);
+ final EntityTransaction mockedTransaction = mock(EntityTransaction.class);
+
+ when(mockedEm.getTransaction()).thenReturn(mockedTransaction);
+ return mockedEm;
+ }
+
+ private EntityManagerFactory getMockedEntityManagerFactory(final EntityManager entityManager) {
+ final EntityManagerFactory mockedEmf = mock(EntityManagerFactory.class);
+ when(mockedEmf.createEntityManager()).thenReturn(entityManager);
+
+ return mockedEmf;
+
+ }
+
+ /**
+ * Converts a state element to a comma-separated string.
+ *
+ * @param se element to be converted
+ * @return a string representing the element
+ */
+ private String makeString(final StateManagement sm) {
+ if (sm == null) {
+ return null;
+ }
+
+ final StringBuilder b = new StringBuilder();
+
+ b.append(sm.getAdminState());
+ b.append(',');
+ b.append(sm.getOpState());
+ b.append(',');
+ b.append(sm.getAvailStatus());
+ b.append(',');
+ b.append(sm.getStandbyStatus());
+
+ return b.toString();
+ }
}