001: /*BEGIN_COPYRIGHT_BLOCK
002: *
003: * Copyright (c) 2001-2007, JavaPLT group at Rice University (javaplt@rice.edu)
004: * All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions are met:
008: * * Redistributions of source code must retain the above copyright
009: * notice, this list of conditions and the following disclaimer.
010: * * Redistributions in binary form must reproduce the above copyright
011: * notice, this list of conditions and the following disclaimer in the
012: * documentation and/or other materials provided with the distribution.
013: * * Neither the names of DrJava, the JavaPLT group, Rice University, nor the
014: * names of its contributors may be used to endorse or promote products
015: * derived from this software without specific prior written permission.
016: *
017: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
018: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
019: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
020: * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
021: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
022: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
023: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
024: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
025: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
026: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028: *
029: * This software is Open Source Initiative approved Open Source Software.
030: * Open Source Initative Approved is a trademark of the Open Source Initiative.
031: *
032: * This file is part of DrJava. Download the current version of this project
033: * from http://www.drjava.org/ or http://sourceforge.net/projects/drjava/
034: *
035: * END_COPYRIGHT_BLOCK*/
036:
037: package edu.rice.cs.drjava.model.repl.newjvm;
038:
039: import java.io.File;
040: import java.rmi.RemoteException;
041: import edu.rice.cs.util.newjvm.*;
042: import edu.rice.cs.drjava.model.junit.JUnitError;
043: import edu.rice.cs.util.classloader.ClassFileError;
044:
045: /**
046: * This interface specifies the methods that the Main JVM exposes
047: * for the InterpreterJVM to call.
048: *
049: * @version $Id: MainJVMRemoteI.java 4255 2007-08-28 19:17:37Z mgricken $
050: */
051: public interface MainJVMRemoteI extends MasterRemote {
052:
053: /**
054: * Forwards a call to System.err from InterpreterJVM to the
055: * MainJVM for output to the user.
056: * @param s String that was printed in the other JVM
057: */
058: public void systemErrPrint(String s) throws RemoteException;
059:
060: /**
061: * Forwards a call to System.out from InterpreterJVM to the
062: * MainJVM for output to the user.
063: * @param s String that was printed in the other JVM
064: */
065: public void systemOutPrint(String s) throws RemoteException;
066:
067: /**
068: * Called when a call to interpret has completed.
069: * @param result The result of the interpretation
070: */
071: public void interpretResult(InterpretResult result)
072: throws RemoteException;
073:
074: /** This method is called by the interpreter JVM if it cannot be exited (likely because of its having a security
075: * manager)
076: * @param th The Throwable thrown by System.exit
077: */
078: public void quitFailed(Throwable th) throws RemoteException;
079:
080: /** Called if JUnit is invoked on a non TestCase class.
081: * @param isTestAll whether or not it was a use of the test all button
082: */
083: public void nonTestCase(boolean isTestAll) throws RemoteException;
084:
085: /** Called if the slave JVM encounters an illegal class file during testing.
086: * @param e the ClassFileError object describing the error when loading the class file.
087: */
088: public void classFileError(ClassFileError e) throws RemoteException;
089:
090: /** Called to indicate that a suite of tests has started running.
091: * @param numTests The number of tests in the suite to be run.
092: */
093: public void testSuiteStarted(int numTests) throws RemoteException;
094:
095: /** Called when a particular test is started.
096: * @param testName The name of the test being started.
097: */
098: public void testStarted(String testName) throws RemoteException;
099:
100: /** Called when a particular test has ended.
101: * @param testName The name of the test that has ended.
102: * @param wasSuccessful Whether the test passed or not.
103: * @param causedError If not successful, whether the test caused an error
104: * or simply failed.
105: */
106: public void testEnded(String testName, boolean wasSuccessful,
107: boolean causedError) throws RemoteException;
108:
109: /**
110: * Called when a full suite of tests has finished running.
111: * @param errors The array of errors from all failed tests in the suite.
112: */
113: public void testSuiteEnded(JUnitError[] errors)
114: throws RemoteException;
115:
116: /**
117: * Called when the JUnitTestManager wants to open a file that is not currently open.
118: * @param className the name of the class for which we want to find the file
119: * @return the file associated with the given class
120: */
121: public File getFileForClassName(String className)
122: throws RemoteException;
123:
124: /**
125: * Notifies the main jvm that an assignment has been made in the given debug
126: * interpreter.
127: * Does not notify on declarations.
128: *
129: * This method is not currently necessary, since we don't copy back
130: * values in a debug interpreter until the thread has resumed.
131: *
132: * @param name the name of the debug interpreter
133: *
134: public void notifyDebugInterpreterAssignment(String name) throws RemoteException;
135: */
136:
137: /**
138: * Asks the main jvm for input from the console.
139: * @return the console input
140: */
141: public String getConsoleInput() throws RemoteException;
142: }
|