Class SystemIOUtilities


  • public class SystemIOUtilities
    extends Object
    A utility class that provides functions for replacing System I/O streams with helpful alternative implementations to make some testing jobs easier. This class is really for use by infrastructure and support code, and students should never need to use it directly.

    Since this class provides only static methods, clients should not create an instance. As a result, it provides no public constructors.

    • Constructor Detail

      • SystemIOUtilities

        protected SystemIOUtilities()
        Since this class provides only static methods, clients should not create an instance. This constructor is protected only to allow legacy/ deprecated subclass stubs, and it should never actually be called.
        Throws:
        UnsupportedOperationException - Always thrown if this constructor is invoked.
    • Method Detail

      • out

        public static PrintStreamWithHistory out()
        Get a "wrapped" version of System.out that provides history recording functions.
        Returns:
        a version of System.out that provides history features
      • restoreSystemOut

        public static void restoreSystemOut()
        "Unwrap" System.out by removing any history recording wrapper, and return it to its original state.
      • err

        public static PrintStreamWithHistory err()
        Get a "wrapped" version of System.err that provides history recording functions.
        Returns:
        a version of System.err that provides history features
      • restoreSystemErr

        public static void restoreSystemErr()
        "Unwrap" System.err by removing any history recording wrapper, and return it to its original state.
      • replaceSystemInContents

        public static void replaceSystemInContents​(String contents,
                                                   Runnable readCallback)
        Replace System.in with the contents of the given string.
        Parameters:
        contents - The content to read from
        readCallback - will be called before every read operation. This can be used to prevent any reads by failing fast when running out of input data instead of timing out.
      • replaceSystemInContentsLineByLine

        public static void replaceSystemInContentsLineByLine​(String contents,
                                                             Runnable readCallback)
        Replace System.in with the contents of the given string.
        Parameters:
        contents - The content to read from
      • restoreSystemIn

        public static void restoreSystemIn()
        Restore System.in to its original value.
      • isOnServer

        public static boolean isOnServer()
        Checks to see if the calling program is running under the Apache Tomcat servlet container.
        Returns:
        True if running as a servlet
      • isInApplet

        public static boolean isInApplet()
      • assertNotOnServer

        public static void assertNotOnServer()
        Checks to see if the calling program is running under the Apache Tomcat servlet container. When running in such an environment, some behaviors should be avoided. For example, it is not appropriate to modify globally shared resources like those in the class System.