com.sun.xml.xsom.parser.AnnotationParser Maven / Gradle / Ivy
/*
* Copyright (c) 1997, 2022 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package com.sun.xml.xsom.parser;
import org.xml.sax.ContentHandler;
import org.xml.sax.EntityResolver;
import org.xml.sax.ErrorHandler;
/**
* Used to parse {@code }.
*
* @author Kohsuke Kawaguchi ([email protected])
*/
public abstract class AnnotationParser {
/**
* Default constructor.
*/
protected AnnotationParser() {}
/**
* Called every time a new {@code } element
* is found.
*
* The sub-tree rooted at {@code } will be
* sent to this ContentHandler as if it is a whole document.
*
* @param context
* indicates the schema component that owns this annotation.
* Always non-null.
* @param parentElementName
* local name of the element that contains {@code }.
* (e.g., "element", "attribute", ... )
* @param errorHandler
* The error handler that the client application specifies.
* The returned content handler can send its errors to this
* object.
* @param entityResolver
* The entity resolver that is currently in use. Again,
* The returned content handler can use this object
* if it needs to resolve entities.
*/
public abstract ContentHandler getContentHandler(
AnnotationContext context,
String parentElementName,
ErrorHandler errorHandler,
EntityResolver entityResolver );
/**
* Once the SAX events are fed to the ContentHandler,
* this method will be called to retrieve the parsed result.
*
* @param existing
* An annotation object which was returned from another
* AnnotationParser before. Sometimes, one schema component
* can have multiple {@code } elements and
* this parameter is used to merge all those annotations
* together. If there is no existing object, null will be
* passed.
* @return
* Any object, including null.
*/
public abstract Object getResult( Object existing );
}