blob: 2ee2f5419a6b8cb52f9e1bf43768c411cf777629 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.hop.pipeline.transforms.ssh;
import com.trilead.ssh2.Session;
import org.apache.hop.core.exception.HopException;
import org.apache.hop.core.util.Utils;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class SessionResult {
private String stdOut;
private String stdErr;
private boolean stdErrorType;
public SessionResult(Session session) throws HopException {
readStd(session);
}
private void setStdErr(String value) {
this.stdErr = value;
if (!Utils.isEmpty(getStdErr())) {
setStdTypeErr(true);
}
}
public String getStdErr() {
return this.stdErr;
}
public String getStd() {
return getStdOut() + getStdErr();
}
private void setStdOut(String value) {
this.stdOut = value;
}
public String getStdOut() {
return this.stdOut;
}
private void setStdTypeErr(boolean value) {
this.stdErrorType = value;
}
public boolean isStdTypeErr() {
return this.stdErrorType;
}
private void readStd(Session session) throws HopException {
InputStream isOut = null;
InputStream isErr = null;
try {
isOut = session.getStdout();
isErr = session.getStderr();
setStdOut(readInputStream(isOut));
setStdErr(readInputStream(isErr));
} catch (Exception e) {
throw new HopException(e);
} finally {
try {
if (isOut != null) {
isOut.close();
}
if (isErr != null) {
isErr.close();
}
} catch (Exception e) {
/* Ignore */
}
}
}
private String readInputStream(InputStream std) throws HopException {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(std));
String line = "";
StringBuilder stringStdout = new StringBuilder();
if ((line = br.readLine()) != null) {
stringStdout.append(line);
}
while ((line = br.readLine()) != null) {
stringStdout.append("\n" + line);
}
return stringStdout.toString();
} catch (Exception e) {
throw new HopException(e);
} finally {
try {
if (br != null) {
br.close();
}
} catch (Exception e) {
/* Ignore */
}
}
}
}