KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sun > org > apache > xerces > internal > dom > PSVIDocumentImpl


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2002-2004 The Apache Software Foundation. All rights
6  * reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Xerces" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 1999, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package com.sun.org.apache.xerces.internal.dom;
59
60 import java.io.IOException JavaDoc;
61 import java.io.NotSerializableException JavaDoc;
62 import java.io.ObjectInputStream JavaDoc;
63 import java.io.ObjectOutputStream JavaDoc;
64
65 // REVISIT: This is a HACK! DO NOT MODIFY THIS import.
66
// It allows us to expose DOM L3 implemenation via org.w3c.dom packages
67
import org.w3c.dom.DOMConfiguration JavaDoc;
68 import org.w3c.dom.UserDataHandler JavaDoc;
69 import org.w3c.dom.*;
70
71 /**
72  * Our own document implementation, which knows how to create an element
73  * with PSVI information.
74  *
75  * @author Sandy Gao, IBM
76  *
77  * @version $Id: PSVIDocumentImpl.java,v 1.9 2004/04/15 18:38:22 mrglavas Exp $
78  */

79 public class PSVIDocumentImpl extends DocumentImpl {
80    
81     /** Serialization version. */
82     static final long serialVersionUID = -8822220250676434522L;
83
84     /**
85      * Create a document.
86      */

87     public PSVIDocumentImpl() {
88         super();
89     }
90
91     /**
92      * For DOM2 support.
93      * The createDocument factory method is in DOMImplementation.
94      */

95     public PSVIDocumentImpl(DocumentType doctype) {
96         super(doctype);
97     }
98     
99     /**
100      * Deep-clone a document, including fixing ownerDoc for the cloned
101      * children. Note that this requires bypassing the WRONG_DOCUMENT_ERR
102      * protection. I've chosen to implement it by calling importNode
103      * which is DOM Level 2.
104      *
105      * @return org.w3c.dom.Node
106      * @param deep boolean, iff true replicate children
107      */

108     public Node cloneNode(boolean deep) {
109
110         PSVIDocumentImpl newdoc = new PSVIDocumentImpl();
111         callUserDataHandlers(this, newdoc, UserDataHandler.NODE_CLONED);
112         cloneNode(newdoc, deep);
113
114         // experimental
115
newdoc.mutationEvents = mutationEvents;
116
117         return newdoc;
118
119     } // cloneNode(boolean):Node
120

121     /**
122      * Retrieve information describing the abilities of this particular
123      * DOM implementation. Intended to support applications that may be
124      * using DOMs retrieved from several different sources, potentially
125      * with different underlying representations.
126      */

127     public DOMImplementation getImplementation() {
128         // Currently implemented as a singleton, since it's hardcoded
129
// information anyway.
130
return PSVIDOMImplementationImpl.getDOMImplementation();
131     }
132
133     /**
134      * Create an element with PSVI information
135      */

136     public Element createElementNS(String JavaDoc namespaceURI, String JavaDoc qualifiedName)
137         throws DOMException {
138         return new PSVIElementNSImpl(this, namespaceURI, qualifiedName);
139     }
140
141     /**
142      * Create an element with PSVI information
143      */

144     public Element createElementNS(String JavaDoc namespaceURI, String JavaDoc qualifiedName,
145                                    String JavaDoc localpart) throws DOMException {
146         return new PSVIElementNSImpl(this, namespaceURI, qualifiedName, localpart);
147     }
148
149     /**
150      * Create an attribute with PSVI information
151      */

152     public Attr createAttributeNS(String JavaDoc namespaceURI, String JavaDoc qualifiedName)
153         throws DOMException {
154         return new PSVIAttrNSImpl(this, namespaceURI, qualifiedName);
155     }
156     
157     /**
158      * Create an attribute with PSVI information
159      */

160     public Attr createAttributeNS(String JavaDoc namespaceURI, String JavaDoc qualifiedName,
161                                   String JavaDoc localName) throws DOMException {
162         return new PSVIAttrNSImpl(this, namespaceURI, qualifiedName, localName);
163     }
164     
165     /**
166      *
167      * The configuration used when <code>Document.normalizeDocument</code> is
168      * invoked.
169      * @since DOM Level 3
170      */

171     public DOMConfiguration JavaDoc getDomConfig(){
172         super.getDomConfig();
173         return fConfiguration;
174     }
175     
176     // REVISIT: Forbid serialization of PSVI DOM until
177
// we support object serialization of grammars -- mrglavas
178

179     private void writeObject(ObjectOutputStream JavaDoc out)
180         throws IOException JavaDoc {
181         throw new NotSerializableException JavaDoc(getClass().getName());
182     }
183
184     private void readObject(ObjectInputStream JavaDoc in)
185         throws IOException JavaDoc, ClassNotFoundException JavaDoc {
186         throw new NotSerializableException JavaDoc(getClass().getName());
187     }
188     
189 } // class PSVIDocumentImpl
190
Popular Tags