/******************************************************************************* * Copyright (c) 2011, 2016 Eurotech and/or its affiliates * * 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: Eurotech *******************************************************************************/ package org.eclipse.kura.emulator; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import org.apache.commons.io.IOUtils; import org.osgi.service.component.ComponentContext; public class Emulator { private static final String KURA_SNAPSHOTS_PATH = "kura.snapshots"; private static final String EMULATOR = "emulator"; private static final String KURA_MODE = "org.eclipse.kura.mode"; private static final String SNAPSHOT_0_NAME = "snapshot_0.xml"; private ComponentContext m_componentContext; protected void activate(ComponentContext componentContext) { this.m_componentContext = componentContext; try { // Properties props = System.getProperties(); String mode = System.getProperty(KURA_MODE); if (EMULATOR.equals(mode)) { System.out.println("Framework is running in emulation mode"); final String snapshotFolderPath = System.getProperty(KURA_SNAPSHOTS_PATH); if (snapshotFolderPath == null || snapshotFolderPath.isEmpty()) { throw new IllegalStateException("System property 'kura.snapshots' is not set"); } final File snapshotFolder = new File(snapshotFolderPath); if (!snapshotFolder.exists() || snapshotFolder.list().length == 0) { snapshotFolder.mkdirs(); copySnapshot(snapshotFolderPath); } } else { System.out.println("Framework is not running in emulation mode"); } } catch (Exception e) { System.out .println("Framework is not running in emulation mode or initialization failed!: " + e.getMessage()); } } protected void deactivate(ComponentContext componentContext) { this.m_componentContext = null; } private void copySnapshot(String snapshotFolderPath) throws IOException { InputStream fileInput = null; OutputStream fileOutput = null; try { URL internalSnapshotURL = this.m_componentContext.getBundleContext().getBundle() .getResource(SNAPSHOT_0_NAME); fileInput = internalSnapshotURL.openStream(); fileOutput = new FileOutputStream(snapshotFolderPath + File.separator + SNAPSHOT_0_NAME); if (fileInput != null) { IOUtils.copy(fileInput, fileOutput); } } finally { if (fileOutput != null) { fileOutput.close(); } if (fileInput != null) { fileInput.close(); } } } }