/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.commons.test;
import java.util.HashMap;
import java.util.Map;
/**
* Example of usage in tests:
* <pre>
* {@code
* SystemPropertiesHelper systemPropertiesHelper;
*
* public void setUp() {
* systemPropertiesHelper = SystemPropertiesHelper.overrideSystemProperties()
* .property("name1", "value1")
* .property("name2", "value2");
* }
*
* public void tearDown() {
* systemPropertiesHelper.restoreFromBackup();
* }
* }
* </pre>
*/
public class SystemPropertiesHelper {
private Map<String, String> backup;
private SystemPropertiesHelper() {
backup = new HashMap<>();
}
public static SystemPropertiesHelper overrideSystemProperties() {
return new SystemPropertiesHelper();
}
public SystemPropertiesHelper property(String name, String value) {
backupCurrentValue(name);
System.setProperty(name, value);
return this;
}
public SystemPropertiesHelper restoreFromBackup() {
for (Map.Entry<String, String> entry : backup.entrySet()) {
if (entry.getValue() == null) {
System.clearProperty(entry.getKey());
} else {
System.setProperty(entry.getKey(), entry.getValue());
}
}
backup.clear();
return this;
}
private void backupCurrentValue(String name) {
String value = System.getProperty(name);
backup.put(name, value);
}
}