1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// SAX default implementation for Locator.
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// http://www.saxproject.org
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// No warranty; no copyright -- use this as you will.
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// $Id: LocatorImpl.java,v 1.6 2002/01/30 20:52:27 dbrownell Exp $
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.xml.sax.helpers;
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Locator;
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Provide an optional convenience implementation of Locator.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <blockquote>
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <em>This module, both source code and documentation, is in the
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * for further information.
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * </blockquote>
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>This class is available mainly for application writers, who
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * can use it to make a persistent snapshot of a locator at any
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * point during a document parse:</p>
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <pre>
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Locator locator;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Locator startloc;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public void setLocator (Locator locator)
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *         // note the locator
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   this.locator = locator;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * }
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * public void startDocument ()
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *         // save the location of the start of the document
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *         // for future use.
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   Locator startloc = new LocatorImpl(locator);
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * }
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *</pre>
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p>Normally, parser writers will not use this class, since it
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is more efficient to provide location information only when
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * requested, rather than constantly updating a Locator object.</p>
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @since SAX 1.0
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author David Megginson
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version 2.0.1 (sax2r2)
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @see org.xml.sax.Locator Locator
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class LocatorImpl implements Locator
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project{
54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
55f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Zero-argument constructor.
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>This will not normally be useful, since the main purpose
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * of this class is to make a snapshot of an existing Locator.</p>
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public LocatorImpl ()
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Copy constructor.
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * <p>Create a persistent copy of the current state of a locator.
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * When the original locator changes, this copy will still keep
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the original values (and it can be used outside the scope of
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * DocumentHandler methods).</p>
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param locator The locator to copy.
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public LocatorImpl (Locator locator)
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setPublicId(locator.getPublicId());
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setSystemId(locator.getSystemId());
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setLineNumber(locator.getLineNumber());
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    setColumnNumber(locator.getColumnNumber());
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
84f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
85f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Implementation of org.xml.sax.Locator
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
91f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the saved public identifier.
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The public identifier as a string, or null if none
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         is available.
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getPublicId
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setPublicId
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getPublicId ()
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return publicId;
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
105f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the saved system identifier.
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The system identifier as a string, or null if none
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *         is available.
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getSystemId
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setSystemId
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getSystemId ()
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return systemId;
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
118f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the saved line number (1-based).
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The line number as an integer, or -1 if none is available.
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getLineNumber
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setLineNumber
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int getLineNumber ()
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return lineNumber;
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
131f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
132f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Return the saved column number (1-based).
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @return The column number as an integer, or -1 if none is available.
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see org.xml.sax.Locator#getColumnNumber
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #setColumnNumber
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int getColumnNumber ()
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return columnNumber;
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
145f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Setters for the properties (not in org.xml.sax.Locator)
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
150f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the public identifier for this locator.
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
155f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @param publicId The new public identifier, or null
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        if none is available.
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getPublicId
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setPublicId (String publicId)
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.publicId = publicId;
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
163f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
164f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the system identifier for this locator.
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
168f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @param systemId The new system identifier, or null
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        if none is available.
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getSystemId
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setSystemId (String systemId)
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.systemId = systemId;
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
177f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the line number for this locator (1-based).
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param lineNumber The line number, or -1 if none is available.
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getLineNumber
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setLineNumber (int lineNumber)
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.lineNumber = lineNumber;
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
188f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
189f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Set the column number for this locator (1-based).
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @param columnNumber The column number, or -1 if none is available.
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @see #getColumnNumber
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setColumnNumber (int columnNumber)
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    this.columnNumber = columnNumber;
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
200f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
201f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Internal state.
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ////////////////////////////////////////////////////////////////////
206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String publicId;
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String systemId;
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private int lineNumber;
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private int columnNumber;
211f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// end of LocatorImpl.java
215