blob: b39785e06721e804d1b91888212e57fa634050cc [file] [log] [blame]
/*
* Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Blaise Doughan - 2.5 - initial implementation
package org.eclipse.persistence.internal.oxm.record;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import org.eclipse.persistence.core.queries.CoreAttributeGroup;
import org.eclipse.persistence.internal.core.helper.CoreField;
import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession;
import org.eclipse.persistence.internal.oxm.ContainerValue;
import org.eclipse.persistence.internal.oxm.IDResolver;
import org.eclipse.persistence.internal.oxm.NodeValue;
import org.eclipse.persistence.internal.oxm.NullCapableValue;
import org.eclipse.persistence.internal.oxm.ObjectBuilder;
import org.eclipse.persistence.internal.oxm.Reference;
import org.eclipse.persistence.internal.oxm.ReferenceResolver;
import org.eclipse.persistence.internal.oxm.Root;
import org.eclipse.persistence.internal.oxm.SAXFragmentBuilder;
import org.eclipse.persistence.internal.oxm.Unmarshaller;
import org.eclipse.persistence.internal.oxm.XPathFragment;
import org.eclipse.persistence.internal.oxm.XPathNode;
import org.eclipse.persistence.internal.oxm.XPathQName;
import org.eclipse.persistence.internal.oxm.mappings.Descriptor;
import org.eclipse.persistence.internal.oxm.mappings.Mapping;
import org.eclipse.persistence.internal.oxm.record.namespaces.UnmarshalNamespaceResolver;
import org.eclipse.persistence.internal.oxm.unmapped.DefaultUnmappedContentHandler;
import org.eclipse.persistence.internal.oxm.unmapped.UnmappedContentHandler;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.ext.LexicalHandler;
/**
* This class represents unmarshal record behaviour that is specific to the SAX
* platform.
*/
public interface UnmarshalRecord<
ABSTRACT_SESSION extends CoreAbstractSession,
FIELD extends CoreField,
ID_RESOLVER extends IDResolver,
OBJECT_BUILDER extends ObjectBuilder,
TRANSFORMATION_RECORD extends TransformationRecord,
UNMARSHALLER extends Unmarshaller> extends AbstractUnmarshalRecord<ABSTRACT_SESSION, FIELD, UNMARSHALLER>, ExtendedContentHandler, LexicalHandler {
UnmappedContentHandler DEFAULT_UNMAPPED_CONTENT_HANDLER = new DefaultUnmappedContentHandler();
void addAttributeValue(ContainerValue containerValue, Object value);
void addAttributeValue(ContainerValue containerValue, Object value, Object collection);
Root createRoot();
void endUnmappedElement(String uri, String localName, String name) throws SAXException;
NodeValue getAttributeChildNodeValue(String namespace, String localName);
Attributes getAttributes();
CharSequence getCharacters();
UnmarshalRecord getChildRecord();
UnmarshalRecord getChildUnmarshalRecord(OBJECT_BUILDER targetObjectBuilder);
Object getContainerInstance(ContainerValue containerValue);
Object getContainerInstance(ContainerValue containerValue, boolean b);
Object getCurrentObject();
Descriptor getDescriptor();
/**
* Gets the encoding for this document. Only set on the root-level UnmarshalRecord
* @return a String representing the encoding for this doc
*/
String getEncoding();
SAXFragmentBuilder getFragmentBuilder();
XPathQName getLeafElementType();
int getLevelIndex();
String getLocalName();
String getNoNamespaceSchemaLocation();
XPathNode getNonAttributeXPathNode(String namespaceURI, String localName, String qName, Attributes attributes);
List<NullCapableValue> getNullCapableValues();
org.eclipse.persistence.internal.oxm.record.UnmarshalRecord getParentRecord();
Map<String, String> getPrefixesForFragment();
ReferenceResolver getReferenceResolver();
String getRootElementName();
String getRootElementNamespaceUri();
String getSchemaLocation();
XPathFragment getTextWrapperFragment();
TRANSFORMATION_RECORD getTransformationRecord();
QName getTypeQName();
UnmarshalContext getUnmarshalContext();
@Override UNMARSHALLER getUnmarshaller();
UnmarshalNamespaceResolver getUnmarshalNamespaceResolver();
/**
* Gets the XML Version for this document. Only set on the root-level
* UnmarshalRecord, if supported by the parser.
*/
String getVersion();
XMLReader getXMLReader();
XPathNode getXPathNode();
UnmarshalRecord initialize(OBJECT_BUILDER objectBuilder);
void initializeRecord(Mapping mapping) throws SAXException;
boolean isBufferCDATA();
boolean isNil();
boolean isSelfRecord();
void reference(Reference reference);
void removeNullCapableValue(NullCapableValue nullCapableValue);
void resetStringBuffer();
String resolveNamespaceUri(String namespaceURI);
void resolveReferences(ABSTRACT_SESSION session, ID_RESOLVER idResolver);
void setAttributes(Attributes atts);
void setAttributeValue(Object object, Mapping mapping);
void setAttributeValueNull(ContainerValue containerValue);
void setChildRecord(UnmarshalRecord unmarshalRecord);
void setContainerInstance(int index, Object containerInstance);
void setCurrentObject(Object object);
void setFragmentBuilder(SAXFragmentBuilder fragmentBuilder);
void setLeafElementType(QName leafElementType);
void setLocalName(String localName);
@Override void setNil(boolean isNil);
void setParentRecord(UnmarshalRecord unmarshalRecord);
void setReferenceResolver(ReferenceResolver referenceResolver);
void setRootElementName(String rootElementName);
void setRootElementNamespaceUri(String rootElementNamespaceUri);
void setSelfRecord(boolean isSelfRecord);
void setSession(ABSTRACT_SESSION session);
void setTextWrapperFragment(XPathFragment textWrapperFragment);
void setTransformationRecord(TRANSFORMATION_RECORD transformationRecord);
void setTypeQName(QName qname);
void setUnmarshalContext(UnmarshalContext unmarshalContext);
void setUnmarshaller(UNMARSHALLER unmarshaller);
void setUnmarshalNamespaceResolver(UnmarshalNamespaceResolver unmarshalNamespaceResolver);
void setXMLReader(XMLReader xmlReader);
void unmappedContent();
CoreAttributeGroup getUnmarshalAttributeGroup();
void setUnmarshalAttributeGroup(CoreAttributeGroup group);
}