001: /* ValidatorPlugin.java NanoXML/Java
002: *
003: * $Revision: 1421 $
004: * $Date: 2006-03-12 09:32:32 -0700 (Sun, 12 Mar 2006) $
005: * $Name$
006: *
007: * This file is part of NanoXML 2 for Java.
008: * Copyright (C) 2001 Marc De Scheemaecker, All Rights Reserved.
009: *
010: * This software is provided 'as-is', without any express or implied warranty.
011: * In no event will the authors be held liable for any damages arising from the
012: * use of this software.
013: *
014: * Permission is granted to anyone to use this software for any purpose,
015: * including commercial applications, and to alter it and redistribute it
016: * freely, subject to the following restrictions:
017: *
018: * 1. The origin of this software must not be misrepresented; you must not
019: * claim that you wrote the original software. If you use this software in
020: * a product, an acknowledgment in the product documentation would be
021: * appreciated but is not required.
022: *
023: * 2. Altered source versions must be plainly marked as such, and must not be
024: * misrepresented as being the original software.
025: *
026: * 3. This notice may not be removed or altered from any source distribution.
027: */
028:
029: package net.n3.nanoxml;
030:
031: import java.util.Properties;
032:
033: /**
034: * ValidatorPlugin allows the application to insert additional validators into NanoXML.
035: *
036: * @author Marc De Scheemaecker
037: * @version $Name$, $Revision: 1421 $
038: */
039: public class ValidatorPlugin implements IXMLValidator {
040:
041: /**
042: * The delegate.
043: */
044: private IXMLValidator delegate;
045:
046: /**
047: * Initializes the plugin.
048: */
049: public ValidatorPlugin() {
050: this .delegate = null;
051: }
052:
053: /**
054: * Cleans up the object when it's destroyed.
055: */
056: protected void finalize() throws Throwable {
057: this .delegate = null;
058: super .finalize();
059: }
060:
061: /**
062: * Returns the delegate.
063: */
064: public IXMLValidator getDelegate() {
065: return this .delegate;
066: }
067:
068: /**
069: * Sets the delegate.
070: *
071: * @param delegate the delegate
072: */
073: public void setDelegate(IXMLValidator delegate) {
074: this .delegate = delegate;
075: }
076:
077: /**
078: * Sets the parameter entity resolver.
079: *
080: * @param resolver the entity resolver.
081: */
082: public void setParameterEntityResolver(IXMLEntityResolver resolver) {
083: this .delegate.setParameterEntityResolver(resolver);
084: }
085:
086: /**
087: * Returns the parameter entity resolver.
088: *
089: * @return the entity resolver.
090: */
091: public IXMLEntityResolver getParameterEntityResolver() {
092: return this .delegate.getParameterEntityResolver();
093: }
094:
095: /**
096: * Parses the DTD. The validator object is responsible for reading the full DTD.
097: *
098: * @param publicID the public ID, which may be null.
099: * @param reader the reader to read the DTD from.
100: * @param entityResolver the entity resolver.
101: * @param external true if the DTD is external.
102: *
103: * @throws java.lang.Exception if something went wrong.
104: */
105: public void parseDTD(String publicID, IXMLReader reader,
106: IXMLEntityResolver entityResolver, boolean external)
107: throws Exception {
108: this .delegate.parseDTD(publicID, reader, entityResolver,
109: external);
110: }
111:
112: /**
113: * Indicates that an element has been started.
114: *
115: * @param name the name of the element.
116: * @param nsPrefix the prefix used to identify the namespace
117: * @param nsSystemId the system ID associated with the namespace
118: * @param systemId the system ID of the XML data of the element.
119: * @param lineNr the line number in the XML data of the element.
120: *
121: * @throws java.lang.Exception if the element could not be validated.
122: */
123: public void elementStarted(String name, String nsPrefix,
124: String nsSystemId, String systemId, int lineNr)
125: throws Exception {
126: this .delegate.elementStarted(name, nsPrefix, nsSystemId,
127: systemId, lineNr);
128: }
129:
130: /**
131: * Indicates that the current element has ended.
132: *
133: * @param name the name of the element.
134: * @param nsPrefix the prefix used to identify the namespace
135: * @param nsSystemId the system ID associated with the namespace
136: * @param systemId the system ID of the XML data of the element.
137: * @param lineNr the line number in the XML data of the element.
138: *
139: * @throws java.lang.Exception if the element could not be validated.
140: */
141: public void elementEnded(String name, String nsPrefix,
142: String nsSystemId, String systemId, int lineNr)
143: throws Exception {
144: this .delegate.elementEnded(name, nsPrefix, nsSystemId,
145: systemId, lineNr);
146: }
147:
148: /**
149: * Indicates that an attribute has been added to the current element.
150: *
151: * @param name the name of the element.
152: * @param nsPrefix the prefix used to identify the namespace
153: * @param nsSystemId the system ID associated with the namespace
154: * @param extraAttributes where to put extra attributes.
155: * @param systemId the system ID of the XML data of the element.
156: * @param lineNr the line number in the XML data of the element.
157: *
158: * @throws java.lang.Exception if the attribute could not be validated.
159: */
160: public void elementAttributesProcessed(String name,
161: String nsPrefix, String nsSystemId,
162: Properties extraAttributes, String systemId, int lineNr)
163: throws Exception {
164: this .delegate.elementAttributesProcessed(name, nsPrefix,
165: nsSystemId, extraAttributes, systemId, lineNr);
166: }
167:
168: /**
169: * This method is called when the attributes of an XML element have been processed. If there are
170: * attributes with a default value which have not been specified yet, they have to be put into
171: * <I>extraAttributes</I>.
172: *
173: * @param key the name of the attribute.
174: * @param nsPrefix the prefix used to identify the namespace
175: * @param nsSystemId the system ID associated with the namespace
176: * @param value the value of the attribute.
177: * @param systemId the system ID of the XML data of the element.
178: * @param lineNr the line number in the XML data of the element.
179: *
180: * @throws java.lang.Exception if the element could not be validated.
181: */
182: public void attributeAdded(String key, String nsPrefix,
183: String nsSystemId, String value, String systemId, int lineNr)
184: throws Exception {
185: this .delegate.attributeAdded(key, nsPrefix, nsSystemId, value,
186: systemId, lineNr);
187: }
188:
189: /**
190: * Indicates that a new #PCDATA element has been encountered.
191: *
192: * @param systemId the system ID of the XML data of the element.
193: * @param lineNr the line number in the XML data of the element.
194: *
195: * @throws java.lang.Exception if the element could not be validated.
196: */
197: public void PCDataAdded(String systemId, int lineNr)
198: throws Exception {
199: this .delegate.PCDataAdded(systemId, lineNr);
200: }
201:
202: /**
203: * Throws an XMLValidationException to indicate that an element is missing.
204: *
205: * @param systemID the system ID of the XML data of the element
206: * @param lineNr the line number in the XML data of the element
207: * @param parentElementName the name of the parent element
208: * @param missingElementName the name of the missing element
209: *
210: * @throws net.n3.nanoxml.XMLValidationException of course :-)
211: */
212: public void missingElement(String systemID, int lineNr,
213: String parentElementName, String missingElementName)
214: throws XMLValidationException {
215: XMLUtil.errorMissingElement(systemID, lineNr,
216: parentElementName, missingElementName);
217: }
218:
219: /**
220: * Throws an XMLValidationException to indicate that an element is unexpected.
221: *
222: * @param systemID the system ID of the XML data of the element
223: * @param lineNr the line number in the XML data of the element
224: * @param parentElementName the name of the parent element
225: * @param unexpectedElementName the name of the missing element
226: *
227: * @throws net.n3.nanoxml.XMLValidationException of course :-)
228: */
229: public void unexpectedElement(String systemID, int lineNr,
230: String parentElementName, String unexpectedElementName)
231: throws XMLValidationException {
232: XMLUtil.errorUnexpectedElement(systemID, lineNr,
233: parentElementName, unexpectedElementName);
234: }
235:
236: /**
237: * Throws an XMLValidationException to indicate that an attribute is missing.
238: *
239: * @param systemID the system ID of the XML data of the element
240: * @param lineNr the line number in the XML data of the element
241: * @param elementName the name of the element
242: * @param attributeName the name of the missing attribute
243: *
244: * @throws net.n3.nanoxml.XMLValidationException of course :-)
245: */
246: public void missingAttribute(String systemID, int lineNr,
247: String elementName, String attributeName)
248: throws XMLValidationException {
249: XMLUtil.errorMissingAttribute(systemID, lineNr, elementName,
250: attributeName);
251: }
252:
253: /**
254: * Throws an XMLValidationException to indicate that an attribute is unexpected.
255: *
256: * @param systemID the system ID of the XML data of the element
257: * @param lineNr the line number in the XML data of the element
258: * @param elementName the name of the element
259: * @param attributeName the name of the unexpected attribute
260: *
261: * @throws net.n3.nanoxml.XMLValidationException of course :-)
262: */
263: public void unexpectedAttribute(String systemID, int lineNr,
264: String elementName, String attributeName)
265: throws XMLValidationException {
266: XMLUtil.errorUnexpectedAttribute(systemID, lineNr, elementName,
267: attributeName);
268: }
269:
270: /**
271: * Throws an XMLValidationException to indicate that an attribute has an invalid value.
272: *
273: * @param systemID the system ID of the XML data of the element
274: * @param lineNr the line number in the XML data of the element
275: * @param elementName the name of the element
276: * @param attributeName the name of the attribute
277: * @param attributeValue the value of the attribute
278: *
279: * @throws net.n3.nanoxml.XMLValidationException of course :-)
280: */
281: public void invalidAttributeValue(String systemID, int lineNr,
282: String elementName, String attributeName,
283: String attributeValue) throws XMLValidationException {
284: XMLUtil.errorInvalidAttributeValue(systemID, lineNr,
285: elementName, attributeName, attributeValue);
286: }
287:
288: /**
289: * Throws an XMLValidationException to indicate that a #PCDATA element was missing.
290: *
291: * @param systemID the system ID of the XML data of the element
292: * @param lineNr the line number in the XML data of the element
293: * @param parentElementName the name of the parent element
294: *
295: * @throws net.n3.nanoxml.XMLValidationException of course :-)
296: */
297: public void missingPCData(String systemID, int lineNr,
298: String parentElementName) throws XMLValidationException {
299: XMLUtil.errorMissingPCData(systemID, lineNr, parentElementName);
300: }
301:
302: /**
303: * Throws an XMLValidationException to indicate that a #PCDATA element was unexpected.
304: *
305: * @param systemID the system ID of the XML data of the element
306: * @param lineNr the line number in the XML data of the element
307: * @param parentElementName the name of the parent element
308: *
309: * @throws net.n3.nanoxml.XMLValidationException of course :-)
310: */
311: public void unexpectedPCData(String systemID, int lineNr,
312: String parentElementName) throws XMLValidationException {
313: XMLUtil.errorUnexpectedPCData(systemID, lineNr,
314: parentElementName);
315: }
316:
317: /**
318: * Throws an XMLValidationException.
319: *
320: * @param systemID the system ID of the XML data of the element
321: * @param lineNr the line number in the XML data of the element
322: * @param message the error message
323: * @param elementName the name of the element (may be null)
324: * @param attributeName the name of the attribute (may be null)
325: * @param attributeValue the value of the attribute (may be null)
326: *
327: * @throws net.n3.nanoxml.XMLValidationException of course :-)
328: */
329: public void validationError(String systemID, int lineNr,
330: String message, String elementName, String attributeName,
331: String attributeValue) throws XMLValidationException {
332: XMLUtil.validationError(systemID, lineNr, message, elementName,
333: attributeName, attributeValue);
334: }
335:
336: }
|