001package ca.uhn.fhir.parser;
002
003/*
004 * #%L
005 * HAPI FHIR - Core Library
006 * %%
007 * Copyright (C) 2014 - 2016 University Health Network
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023/**
024 * Error handler
025 */
026public interface IParserErrorHandler {
027
028        /**
029         * Invoked when an element repetition (e.g. a second repetition of something) is found for a field
030         * which is non-repeating.
031         * 
032         * @param theLocation The location in the document. WILL ALWAYS BE NULL currently, as this is not yet implemented, but this parameter is included so that locations can be added in the future without changing the API.
033         * @param theElementName The name of the element that was found.
034         * @since 1.2
035         */
036        void unexpectedRepeatingElement(IParseLocation theLocation, String theElementName);
037
038        /**
039         * Invoked when an unknown element is found in the document. 
040         * 
041         * @param theLocation The location in the document. WILL ALWAYS BE NULL currently, as this is not yet implemented, but this parameter is included so that locations can be added in the future without changing the API.
042         * @param theAttributeName The name of the attribute that was found.
043         */
044        void unknownAttribute(IParseLocation theLocation, String theAttributeName);
045
046        /**
047         * Invoked when an unknown element is found in the document. 
048         * 
049         * @param theLocation The location in the document. WILL ALWAYS BE NULL currently, as this is not yet implemented, but this parameter is included so that locations can be added in the future without changing the API.
050         * @param theElementName The name of the element that was found.
051         */
052        void unknownElement(IParseLocation theLocation, String theElementName);
053
054        /**
055         * For now this is an empty interface. Error handling methods include a parameter of this
056         * type which will currently always be set to null. This interface is included here so that
057         * locations can be added to the API in a future release without changing the API.
058         */
059        public interface IParseLocation {
060                // nothing for now
061        }
062        
063}