1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.io.xml;
7   
8   import gov.nist.secauto.metaschema.core.model.IBoundObject;
9   import gov.nist.secauto.metaschema.databind.io.IParsingContext;
10  import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelComplex;
11  import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModel;
12  
13  import org.codehaus.stax2.XMLEventReader2;
14  
15  import java.io.IOException;
16  
17  import javax.xml.stream.XMLStreamConstants;
18  
19  import edu.umd.cs.findbugs.annotations.NonNull;
20  
21  public interface IXmlParsingContext extends IParsingContext<XMLEventReader2, IXmlProblemHandler> {
22  
23    /**
24     * Parses XML into a bound object based on the provided {@code definition}.
25     * <p>
26     * Parses the {@link XMLStreamConstants#START_DOCUMENT}, any processing
27     * instructions, and the element.
28     *
29     * @param <CLASS>
30     *          the returned object type
31     * @param definition
32     *          the definition describing the element data to read
33     * @return the parsed object
34     * @throws IOException
35     *           if an error occurred while parsing the input
36     */
37    <CLASS> CLASS read(@NonNull IBoundDefinitionModelComplex definition) throws IOException;
38  
39    /**
40     * Read the data associated with the {@code instance} and apply it to the
41     * provided {@code parentObject}.
42     *
43     * @param <T>
44     *          the item Java type
45     * @param instance
46     *          the instance to parse data for
47     * @param parentObject
48     *          the Java object that data parsed by this method will be stored in
49     * @param parseGrouping
50     *          if {@code true} parse the instance's grouping element or
51     *          {@code false} otherwise
52     * @return {@code true} if the instance was parsed, or {@code false} if the data
53     *         did not contain information for this instance
54     * @throws IOException
55     *           if an error occurred while parsing the input
56     *
57     */
58    <T> boolean readItems(
59        @NonNull IBoundInstanceModel<T> instance,
60        @NonNull IBoundObject parentObject,
61        boolean parseGrouping) throws IOException;
62  }