blob: 3ebb1bb15308fd1e53851c07e6f17b895ea65828 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.jsdt.debug.internal.rhino.debugger;
import java.util.HashMap;
import org.eclipse.wst.jsdt.debug.internal.rhino.transport.JSONConstants;
/**
* Implementation of a breakpoint wrt Rhino debugging
*
* @since 1.0
*/
public class Breakpoint {
final Long breakpointId;
final ScriptSource script;
final Integer lineNumber;
final Object functionName;
final String condition;
final Long threadId;
/**
* Constructor
*
* @param breakpointId the id for the breakpoint
* @param script the script the breakpoint applies to, <code>null</code> is not accepted
* @param lineNumber the line number for the breakpoint
* @param functionName the name of the function the breakpoint is set on, <code>null</code> is accepted
* @param condition the condition for the breakpoint, <code>null</code> is accepted
* @param threadId the id of the thread the breakpoint is for
*/
public Breakpoint(Long breakpointId, ScriptSource script, Integer lineNumber, String functionName, String condition, Long threadId) {
if (script == null) {
throw new IllegalArgumentException("The parent script cannot be null"); //$NON-NLS-1$
}
this.breakpointId = breakpointId;
this.script = script;
this.lineNumber = lineNumber;
this.functionName = functionName;
this.condition = condition;
this.threadId = threadId;
}
/**
* @return the breakpoint as a JSON entry
*/
public Object toJSON() {
HashMap result = new HashMap();
result.put(JSONConstants.BREAKPOINT_ID, breakpointId);
result.put(JSONConstants.SCRIPT_ID, script.getId());
if (lineNumber != null) {
result.put(JSONConstants.LINE, lineNumber);
}
if (functionName != null) {
result.put(JSONConstants.FUNCTION, functionName);
}
if (condition != null) {
result.put(JSONConstants.CONDITION, condition);
}
if (threadId != null) {
result.put(JSONConstants.THREAD_ID, threadId);
}
return result;
}
/**
* Deletes the breakpoint from the script it is associated with. Does
* not clear any of the handle information so the deleted breakpoint can be
* returned as an event if required.
*/
public void delete() {
this.script.removeBreakpoint(this);
}
}