001/* 002 * #%L 003 * Netarchivesuite - common - test 004 * %% 005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library, 006 * the National Library of France and the Austrian National Library. 007 * %% 008 * This program is free software: you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation, either version 2.1 of the 011 * License, or (at your option) any later version. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Lesser Public License for more details. 017 * 018 * You should have received a copy of the GNU General Lesser Public 019 * License along with this program. If not, see 020 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 021 * #L% 022 */ 023package dk.netarkivet.testutils.preconfigured; 024 025import java.io.ByteArrayOutputStream; 026import java.io.InputStream; 027import java.io.PrintStream; 028 029import dk.netarkivet.common.exceptions.PermissionDenied; 030 031public class PreserveStdStreams implements TestConfigurationIF { 032 private InputStream origStdIn; 033 private PrintStream origStdOut; 034 private PrintStream origStdErr; 035 private ByteArrayOutputStream myOut; 036 private ByteArrayOutputStream myErr; 037 private boolean overwrite; 038 039 public PreserveStdStreams(boolean andOverwrite) { 040 overwrite = andOverwrite; 041 } 042 043 public PreserveStdStreams() { 044 this(false); 045 } 046 047 public void setUp() { 048 origStdIn = System.in; 049 origStdOut = System.out; 050 origStdErr = System.err; 051 if (overwrite) { 052 myOut = new ByteArrayOutputStream(); 053 System.setOut(new PrintStream(myOut)); 054 } 055 if (overwrite) { 056 myErr = new ByteArrayOutputStream(); 057 System.setErr(new PrintStream(myErr)); 058 } 059 } 060 061 public void tearDown() { 062 System.setIn(origStdIn); 063 System.setOut(origStdOut); 064 System.setErr(origStdErr); 065 } 066 067 public String getOut() { 068 if (overwrite) { 069 return myOut.toString(); 070 } 071 throw new PermissionDenied("Set overwrite to true to use this facility"); 072 } 073 074 public String getErr() { 075 if (overwrite) { 076 return myErr.toString(); 077 } 078 throw new PermissionDenied("Set overwrite to true to use this facility"); 079 } 080}