blob: 9a23b1130c673ede32f655f88a2469d39ce465c6 [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.netbeans.api.debugger.jpda;
import java.util.List;
/**
* Represents instance of some object in debugged JVM. This interface can
* be optionally implemented by a implementation of {@link LocalVariable} or
* {@link Field} interfaces.
*
* <pre style="background-color: rgb(255, 255, 102);">
* Since JDI interfaces evolve from one version to another, it's strongly recommended
* not to implement this interface in client code. New methods can be added to
* this interface at any time to keep up with the JDI functionality.</pre>
*
* @see LocalVariable
* @see Field
* @see This
* @see Super
* @see JPDAThread#getContendedMonitor
* @see JPDAThread#getOwnedMonitors
*
* @author Jan Jancura
*/
public interface ObjectVariable extends Variable {
/**
* Calls {@link java.lang.Object#toString} in debugged JVM and returns
* its value.
*
* @return toString () value of this instance
* @throws InvalidExpressionException in case of execution problems
*/
public abstract String getToStringValue () throws InvalidExpressionException;
/**
* Calls given method in debugged JVM on this instance and returns
* its value.
*
* @param methodName a name of method to be called
* @param signature a signature of method to be called
* @param arguments arguments to be used
*
* @return value of given method call on this instance
* @throws NoSuchMethodException when the method does not exist
* @throws InvalidExpressionException in case of execution problems
*/
public abstract Variable invokeMethod (
String methodName,
String signature,
Variable[] arguments
) throws NoSuchMethodException, InvalidExpressionException;
/**
* Number of fields defined in this object.
*
* @return number of fields defined in this object
*/
public abstract int getFieldsCount ();
/**
* Returns field defined in this object.
*
* @param name a name of field to be returned
*
* @return field defined in this object
*/
public abstract Field getField (String name);
/**
* Returns non static fields defined in this object.
*
* @param from the index of first field to be returned
* @param to the index of last field, exclusive
*
* @return fields defined in this object that are greater then or equal to
* <code>from</code> index and less then <code>to</code> index.
*/
public abstract Field[] getFields (int from, int to);
/**
* Return all static fields.
*
* @return all static fields
*/
public abstract Field[] getAllStaticFields (int from, int to);
/**
* Return all inherited fields.
*
* @return all inherited fields
*/
public abstract Field[] getInheritedFields (int from, int to);
/**
* Returns variables that directly reference this variable.
* Use {@link JPDADebugger#canGetInstanceInfo} to determine if this operation is supported.
* @param maxReferrers The maximum number of referring variables to return. Must be non-negative. If zero, all referring variables are returned.
* @return A list of referring variables.
*/
List<ObjectVariable> getReferringObjects(long maxReferrers) throws UnsupportedOperationException;
/**
* Returns representation of super class of this object.
*
* @return representation of super class of this object
*/
public abstract Super getSuper ();
/**
* Get the run-time class type of this object variable.
* @return The variable class type.
*/
JPDAClassType getClassType();
/**
* Returns a unique identifier for this object variable.
* It is guaranteed to be unique among all object variables from the same debuggee that have not yet been disposed.
* @return a long unique ID
*/
long getUniqueID();
}