* ============LICENSE_START=======================================================
* Integrity Monitor
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017, 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.
package org.onap.policy.common.im;
-import java.util.Observable;
-import java.util.Observer;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/*
+/*
* This is implementing the Observer interface to make it specific for
* state management.
- *
- * It saves the StateManagement object and a String message that is
- * passed in when notifyObservers is called by the Observable
- * host class.
- *
- * It provides an abstract method for handling the state change
- * so this class must be overwritten and made concrete for the
- * Observer who is monitoring the state changes.
+ *
+ * It saves the StateManagement object and a String message that is
+ * passed in when notifyObservers is called by the Observable
+ * host class.
+ *
+ * It provides an abstract method for handling the state change
+ * so this class must be overwritten and made concrete for the
+ * Observer who is monitoring the state changes.
*/
* StateManagement class.
*
*/
-public class StateChangeNotifier implements Observer {
+public class StateChangeNotifier {
private static final Logger logger = LoggerFactory.getLogger(StateChangeNotifier.class);
// The observable class
StateManagement stateManagement;
// A string argument passed by the observable class when
- // Observable:notifyObservers(Object arg) is called
+ // StateManagement:notifyObservers(String changed) is called
String message;
- @Override
- public void update(Observable observable, Object arg) {
- this.stateManagement = (StateManagement) observable;
- this.message = (String) arg;
+ /**
+ * Invoked to indicate that something observed by this notifier has changed.
+ * @param observable item that has changed
+ * @param changed message indicating what change was made
+ */
+ public void update(StateManagement observable, String changed) {
+ this.stateManagement = observable;
+ this.message = changed;
handleStateChange();
}
* ============LICENSE_START=======================================================
* Integrity Monitor
* ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-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.
package org.onap.policy.common.im;
+import java.util.Collection;
import java.util.List;
-import java.util.Observable;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import javax.persistence.EntityManager;
* notified.
*
*/
-public class StateManagement extends Observable {
+public class StateManagement {
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 Object SYNCLOCK = new Object();
private static final Object FLUSHLOCK = new Object();
+ /**
+ * Observers to be notified when this object changes state.
+ */
+ private final Collection<StateChangeNotifier> observers = new ConcurrentLinkedQueue<>();
+
/**
* StateManagement constructor.
*
et.commit();
if (changed != null) {
- setChanged();
notifyObservers(changed);
}
}
}
+ /**
+ * Adds an observer to list of those to be notified when this changes.
+ * @param observer observer to be added
+ */
+ public void addObserver(StateChangeNotifier observer) {
+ observers.add(observer);
+ }
+
+ private void notifyObservers(String changed) {
+ for (StateChangeNotifier obs : observers) {
+ obs.update(this, changed);
+ }
+ }
+
private void setStateUsingTable(String actionName, String resourceName, String changeName)
throws StateManagementException {
* ============LICENSE_START=======================================================
* Integrity Monitor
* ================================================================================
- * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-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.
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(mockedQuery.setFlushMode(Mockito.any())).thenReturn(mockedQuery);
+ when(mockedQuery.setLockMode(Mockito.any())).thenReturn(mockedQuery);
when(mockedEm.createQuery(anyString(), any(StateManagementEntity.class.getClass()))).thenReturn(mockedQuery);
doThrow(QueryTimeoutException.class).when(mockedQuery).getResultList();
* ============LICENSE_START=======================================================
* ONAP
* ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-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.
package org.onap.policy.common.utils.gson;
+import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
data.setId(600);
data.setText(HELLO);
- utils.compareGson(data, "{'id': ${obj.id}, 'text': '${obj.text}'}".replace('\'', '"'));
+ assertThatCode(() -> utils.compareGson(data, "{'id': ${obj.id}, 'text': '${obj.text}'}".replace('\'', '"')))
+ .doesNotThrowAnyException();
}
@Test
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
+ * Modifications 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.
@Test
public void testValidateIntParameter() {
assertTrue(ParameterValidationUtils.validateIntParameter(5555));
- assertTrue(ParameterValidationUtils.validateIntParameter(new Integer(7777)));
+ assertTrue(ParameterValidationUtils.validateIntParameter(Integer.valueOf(7777)));
assertFalse(ParameterValidationUtils.validateIntParameter(0));
assertFalse(ParameterValidationUtils.validateIntParameter(-1));
}
@Test
public void testValidateLongParameter() {
assertTrue(ParameterValidationUtils.validateLongParameter(5555L));
- assertTrue(ParameterValidationUtils.validateLongParameter(new Long(7777L)));
+ assertTrue(ParameterValidationUtils.validateLongParameter(Long.valueOf(7777L)));
assertFalse(ParameterValidationUtils.validateLongParameter(0L));
assertFalse(ParameterValidationUtils.validateLongParameter(-1L));
}