/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.configuration.testutils;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.FileUtils;
import de.rcenvironment.core.configuration.ConfigurationSegment;
import de.rcenvironment.core.configuration.internal.ConfigurationStore;
import de.rcenvironment.core.configuration.internal.ConfigurationStoreImpl;
import de.rcenvironment.core.utils.common.TempFileServiceAccess;
/**
* Common utilities for internal {@link ConfigurationSegment} handling.
*
* @author Robert Mischke
*/
public final class ConfigurationSegmentUtils {
private ConfigurationSegmentUtils() {}
/**
* Creates an empty configuration object, equal to the return value of {@link ConfigurationStore#createEmptyPlaceholder()}.
*
* @return the configuration object
*/
public static ConfigurationSegment createEmptySegment() {
return new ConfigurationStoreImpl(null).createEmptyPlaceholder();
}
/**
* Reads a JSON configuration file.
*
* @param file the file to read
* @return the configuration object
* @throws IOException on uncaught errors
*/
public static ConfigurationSegment readTestConfigurationFile(File file) throws IOException {
return new ConfigurationStoreImpl(file).getSnapshotOfRootSegment();
}
/**
* Reads a JSON configuration file created from the stream's data.
*
* @param is the stream providing the test file's data
* @return the configuration object
* @throws IOException on uncaught errors
*/
public static ConfigurationSegment readTestConfigurationFromStream(InputStream is) throws IOException {
if (is == null) {
throw new IOException("InputStream is null - most likely, a test resource was not found");
}
File tempFile = TempFileServiceAccess.getInstance().createTempFileFromPattern("*.json");
FileUtils.copyInputStreamToFile(is, tempFile);
ConfigurationSegment segment = new ConfigurationStoreImpl(tempFile).getSnapshotOfRootSegment();
TempFileServiceAccess.getInstance().disposeManagedTempDirOrFile(tempFile);
return segment;
}
/**
* Reads a JSON configuration file created from the given content.
*
* @param data the JSON data to read
* @return the configuration object
* @throws IOException on uncaught errors
*/
public static ConfigurationSegment readTestConfigurationFromString(String data) throws IOException {
if (data == null) {
throw new IOException("JSON content cannot be null");
}
File tempFile = TempFileServiceAccess.getInstance().createTempFileFromPattern("*.json");
FileUtils.write(tempFile, data);
ConfigurationSegment segment = new ConfigurationStoreImpl(tempFile).getSnapshotOfRootSegment();
TempFileServiceAccess.getInstance().disposeManagedTempDirOrFile(tempFile);
return segment;
}
}