/******************************************************************************* | |
* 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)); | |
} | |
} |