01 /*
02 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
03 *
04 * This code is free software; you can redistribute it and/or modify it
05 * under the terms of the GNU General Public License version 2 only, as
06 * published by the Free Software Foundation. Sun designates this
07 * particular file as subject to the "Classpath" exception as provided
08 * by Sun in the LICENSE file that accompanied this code.
09 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
22 * have any questions.
23 */
24
25 /*
26 * This file is available under and governed by the GNU General Public
27 * License version 2 only, as published by the Free Software Foundation.
28 * However, the following notice accompanied the original version of this
29 * file and, per its terms, should not be removed:
30 *
31 * Copyright (c) 2004 World Wide Web Consortium,
32 *
33 * (Massachusetts Institute of Technology, European Research Consortium for
34 * Informatics and Mathematics, Keio University). All Rights Reserved. This
35 * work is distributed under the W3C(r) Software License [1] in the hope that
36 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
37 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
38 *
39 * [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
40 */
41
42 package org.w3c.dom;
43
44 /**
45 * When associating an object to a key on a node using
46 * <code>Node.setUserData()</code> the application can provide a handler
47 * that gets called when the node the object is associated to is being
48 * cloned, imported, or renamed. This can be used by the application to
49 * implement various behaviors regarding the data it associates to the DOM
50 * nodes. This interface defines that handler.
51 * <p>See also the <a href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document Object Model (DOM) Level 3 Core Specification</a>.
52 * @since DOM Level 3
53 */
54 public interface UserDataHandler {
55 // OperationType
56 /**
57 * The node is cloned, using <code>Node.cloneNode()</code>.
58 */
59 public static final short NODE_CLONED = 1;
60 /**
61 * The node is imported, using <code>Document.importNode()</code>.
62 */
63 public static final short NODE_IMPORTED = 2;
64 /**
65 * The node is deleted.
66 * <p ><b>Note:</b> This may not be supported or may not be reliable in
67 * certain environments, such as Java, where the implementation has no
68 * real control over when objects are actually deleted.
69 */
70 public static final short NODE_DELETED = 3;
71 /**
72 * The node is renamed, using <code>Document.renameNode()</code>.
73 */
74 public static final short NODE_RENAMED = 4;
75 /**
76 * The node is adopted, using <code>Document.adoptNode()</code>.
77 */
78 public static final short NODE_ADOPTED = 5;
79
80 /**
81 * This method is called whenever the node for which this handler is
82 * registered is imported or cloned.
83 * <br> DOM applications must not raise exceptions in a
84 * <code>UserDataHandler</code>. The effect of throwing exceptions from
85 * the handler is DOM implementation dependent.
86 * @param operation Specifies the type of operation that is being
87 * performed on the node.
88 * @param key Specifies the key for which this handler is being called.
89 * @param data Specifies the data for which this handler is being called.
90 * @param src Specifies the node being cloned, adopted, imported, or
91 * renamed. This is <code>null</code> when the node is being deleted.
92 * @param dst Specifies the node newly created if any, or
93 * <code>null</code>.
94 */
95 public void handle(short operation, String key, Object data,
96 Node src, Node dst);
97
98 }
|