1 /*
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 2002 The Apache Software Foundation. All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 *
19 * 3. The end-user documentation included with the redistribution, if
20 * any, must include the following acknowlegement:
21 * "This product includes software developed by the
22 * Apache Software Foundation (http://www.apache.org/)."
23 * Alternately, this acknowlegement may appear in the software itself,
24 * if and wherever such third-party acknowlegements normally appear.
25 *
26 * 4. The names "Apache BSF", "Apache", and "Apache Software Foundation"
27 * must not be used to endorse or promote products derived from
28 * this software without prior written permission. For written
29 * permission, please contact apache@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache"
32 * nor may "Apache" appear in their names without prior written
33 * permission of the Apache Group.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many individuals
50 * on behalf of the Apache Software Foundation and was originally created by
51 * Sanjiva Weerawarana and others at International Business Machines
52 * Corporation. For more information on the Apache Software Foundation,
53 * please see <http://www.apache.org/>.
54 */
55
56 package org.apache.bsf.util;
57
58 import org.apache.bsf;
59
60 /**
61 * This is a class for the debug manager to remember
62 * a breakpoint. Breakpoints are set globally to a
63 * JVM, that is, globally to all BSFManager/BSFEngine
64 * created in the JVM.
65 * A breakpoint is either at a line (defined by '\n')
66 * or an (char) offset in a document.
67 * NOTE:
68 * There is no correspondance so far... so for
69 * instance, if a breakpoint is defined at an offset,
70 * it cannot be manipulated later as defined with a line,
71 * although conceptually there is an equivalence between
72 * lines and offsets.
73 *
74 * A document is for instance a JSP in Tomcat/Jasper
75 * framework. Its name is given when evaluating/executing
76 * a function or a script through the BSFEngine.eval or
77 * BSFEngine.exec interface.
78 *
79 * Breakpoints are identified through breakpoint identifier
80 * which are provided by the client debugger. This allows an
81 * easy communication between the server and the client.
82 * Breakpoint identifiers shall be unique across documents.
83 *
84 * @see BSFEngine java.lang.eval java.lang.exec
85 * @author Olivier Gruber
86 */
87 public class BreakPoint {
88
89 protected int m_brkptId;
90 protected int m_lineno;
91 protected int m_offset;
92 protected boolean m_lineDefined;
93
94 protected DocumentCell m_cell;
95 //--------------------------------------------------
96 public BreakPoint(DocumentCell cell, int brkptid) {
97 super();
98 m_cell = cell;
99 m_brkptId = brkptid;
100 m_lineno = -1;
101 m_lineDefined = true;
102 }
103 //--------------------------------------------------
104 public boolean isLineDefined() {
105 return m_lineDefined;
106 }
107 //--------------------------------------------------
108 public int getId() {
109 return m_brkptId;
110 }
111 //--------------------------------------------------
112 public int getLineNo() {
113 if (m_lineDefined)
114 return m_lineno;
115 else
116 return -1;
117 }
118 //--------------------------------------------------
119 public int getOffset() {
120 if (m_lineDefined)
121 return -1;
122 else
123 return m_offset;
124 }
125 //--------------------------------------------------
126 public void setLineNo(int lineno) {
127 m_lineno = lineno;
128 }
129 //--------------------------------------------------
130 public void setOffset(int offset) {
131 m_offset = offset;
132 }
133 public String toString() {
134 if (m_lineDefined)
135 return "line #"+Integer.toString(m_lineno);
136 else
137 return "offset "+Integer.toString(m_offset);
138 }
139 }