001/**
002 *
003 * Copyright 2015-2018 Florian Schmaus
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.jxmpp.xml.splitter;
018
019/**
020 * A factory creating {@link XmlSplitter}.
021 */
022public interface XmlSplitterFactory {
023
024        /**
025         * Returns a new {@link XmlSplitter} configured with the given callback.
026         *
027         * @param callback the complete element callback.
028         * @param declarationCallback a optional callback for the XML declaration.
029         * @param processingInstructionCallback a optional callback for Processing Instructions.
030         * @return a new splitter.
031         */
032        XmlSplitter createXmlSplitter(CompleteElementCallback callback, DeclarationCallback declarationCallback,
033                        ProcessingInstructionCallback processingInstructionCallback);
034
035}