/* * Copyright © 2014 Cask Data, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package co.cask.cdap; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * Class for deploying to standalone. */ public final class StartStandaloneAndDeployApplicationHelper { public static final String ARG_APPFABRIC_STANDALONE_DEPLOY_COMMAND = "appfabric.standalone.deploy.command"; public static void main(String[] args) throws IOException, InterruptedException { // Starting Standalone StandaloneMain.main(args); String deployCmd = System.getProperty(ARG_APPFABRIC_STANDALONE_DEPLOY_COMMAND); System.out.println("Deploying application..."); Process proc = Runtime.getRuntime().exec(deployCmd); // any error message? StreamTailer errorTailer = new StreamTailer(proc.getErrorStream(), "ERROR"); // any output? StreamTailer outputTailer = new StreamTailer(proc.getInputStream(), "OUTPUT"); errorTailer.start(); outputTailer.start(); System.out.println("Finished deploy, exit code: " + proc.waitFor()); } private static final class StreamTailer extends Thread { private InputStream is; private String type; StreamTailer(InputStream is, String type) { this.is = is; this.type = type; } public void run() { try { InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { System.out.println(type + " > " + line); } } catch (IOException ioe) { System.out.println("Tailing output failed for type: " + type + ". You may not see new output from this stream"); ioe.printStackTrace(); // DO NOTHING } } } }