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.rmi.RemoteException;
040: import java.util.List;
041: import java.io.File;
042:
043: import edu.rice.cs.util.newjvm.*;
044:
045: /**
046: * This interface specifies the methods that the interpreter JVM exposes
047: * for the MainJVM to call.
048: *
049: * @version $Id: InterpreterJVMRemoteI.java 4255 2007-08-28 19:17:37Z mgricken $
050: */
051: public interface InterpreterJVMRemoteI extends SlaveRemote {
052:
053: public List<String> findTestClasses(List<String> classNames,
054: List<File> files) throws RemoteException;
055:
056: public boolean runTestSuite() throws RemoteException;
057:
058: public void setPackageScope(String s) throws RemoteException;
059:
060: //public void reset() throws RemoteException;
061:
062: /**
063: * @param show Whether to show a message if a reset operation fails.
064: */
065: public void setShowMessageOnResetFailure(boolean show)
066: throws RemoteException;
067:
068: /**
069: * Adds a named DynamicJavaAdapter to the list of interpreters.
070: * @param name the unique name for the interpreter
071: * @throws IllegalArgumentException if the name is not unique
072: */
073: public void addJavaInterpreter(String name) throws RemoteException;
074:
075: /**
076: * Adds a named JavaDebugInterpreter to the list of interpreters.
077: * @param name the unique name for the interpreter
078: * @param className the fully qualified class name of the class
079: * the debug interpreter is in
080: * @throws IllegalArgumentException if the name is not unique
081: */
082: public void addDebugInterpreter(String name, String className)
083: throws RemoteException;
084:
085: /**
086: * Removes the interpreter with the given name, if it exists.
087: * @param name Name of the interpreter to remove
088: */
089: public void removeInterpreter(String name) throws RemoteException;
090:
091: /** Sets the current interpreter to be the one specified by the given name
092: * @param name the unique name of the interpreter to set active
093: * @return Whether the new interpreter is currently in progress
094: * with an interaction
095: */
096: public boolean setActiveInterpreter(String name)
097: throws RemoteException;
098:
099: /** Sets the default interpreter to be active.
100: * @return Whether the new interpreter is currently in progress
101: * with an interaction
102: */
103: public boolean setToDefaultInterpreter() throws RemoteException;
104:
105: /**
106: * Returns a copy of the list of unique entries on the classpath. (List rather than Iterable to avoid
107: * conflicts between RMI and Retroweaver.)
108: */
109: public List<File> getAugmentedClassPath() throws RemoteException;
110:
111: /** Gets the string representation of the value of a variable in the current interpreter.
112: * @param var the name of the variable
113: */
114: public String getVariableToString(String var)
115: throws RemoteException;
116:
117: /** Gets the class name of a variable in the current interpreter.
118: * @param var the name of the variable
119: */
120: public String getVariableClassName(String var)
121: throws RemoteException;
122:
123: /** Sets whether to allow private access. */
124: public void setPrivateAccessible(boolean allow)
125: throws RemoteException;
126:
127: // /** Updates the security manager in slave JVM. */
128: // public void enableSecurityManager() throws RemoteException;
129: //
130: // /** Updates the security manager in slave JVM. */
131: // public void disableSecurityManager() throws RemoteException;
132:
133: /** Interprets the given string of source code in the active interpreter. The result is returned to MainJVMRemoteI via
134: * the interpretResult method.
135: * @param s Source code to interpret.
136: */
137: public void interpret(String s) throws RemoteException;
138:
139: /** Adds the given path to the classpath shared by ALL Java interpreters. Only unique paths are added.
140: * @param f Entry to add to the accumulated classpath
141: */
142: public void addProjectClassPath(File f) throws RemoteException;
143:
144: /** Adds the given path to the classpath shared by ALL Java interpreters. Only unique paths are added.
145: * @param f Entry to add to the accumulated classpath
146: */
147: public void addBuildDirectoryClassPath(File f)
148: throws RemoteException;
149:
150: /** Adds the given path to the classpath shared by ALL Java interpreters. Only unique paths are added.
151: * @param f Entry to add to the accumulated classpath
152: */
153: public void addProjectFilesClassPath(File f) throws RemoteException;
154:
155: /** Adds the given path to the classpath shared by ALL Java interpreters. Only unique paths are added.
156: * @param f Entry to add to the accumulated classpath
157: */
158: public void addExternalFilesClassPath(File f)
159: throws RemoteException;
160:
161: /** Adds the given path to the classpath shared by ALL Java interpreters. Only unique paths are added.
162: * @param f Entry to add to the accumulated classpath
163: */
164: public void addExtraClassPath(File f) throws RemoteException;
165:
166: }
|