blob: a7f93abe3d82905afe1283d9431827b34524e7f2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2020 RBEI and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v. 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Adhith Gopal - Initial API and Implementation
*******************************************************************************/
package org.eclipse.blockchain.core.events;
import java.util.ArrayList;
import java.util.List;
/**
* Environment changed Trigger
*/
public class BlockchainEnvironmentChangedTrigger {
private final List<IBlockchainEnvironmentChangedListener> observers = new ArrayList<>();
private static BlockchainEnvironmentChangedTrigger instance;
protected BlockchainEnvironmentChangedTrigger() {
}
/**
* @return - An instance of BlockchainEnvironmentChangedTrigger
*/
public static BlockchainEnvironmentChangedTrigger getInstance() {
if (null == instance) {
instance = new BlockchainEnvironmentChangedTrigger();
}
return instance;
}
/**
* Method used to add blockchain environment changed listener's to the list
* of listener's
*
* @param observer
* - The listener to be added.
*/
public void addBlockchainEnvironmentChangedListener(
final IBlockchainEnvironmentChangedListener observer) {
getInstance().observers.add(observer);
}
protected void triggerEnvironmentChange(final String newEnvironment) {
notifyListeners(new BlockchainEnvironmentChangedEvent(newEnvironment));
}
private void notifyListeners(
final IBlockchainEnvironmentChangedEvent event) {
getInstance().observers
.forEach(o -> o.blockchainEnvironmentChanged(event));
}
}