/******************************************************************************* * Copyright (c) 2013, 2015 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 v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Blaise Doughan - 2.5 - initial implementation ******************************************************************************/ package org.eclipse.persistence.internal.oxm.record; import java.util.List; import javax.xml.namespace.QName; import org.eclipse.persistence.internal.core.helper.CoreField; import org.eclipse.persistence.internal.core.sessions.CoreAbstractSession; import org.eclipse.persistence.internal.oxm.Marshaller; import org.eclipse.persistence.internal.oxm.Namespace; import org.eclipse.persistence.internal.oxm.NamespaceResolver; import org.eclipse.persistence.internal.oxm.XPathQName; import org.eclipse.persistence.internal.oxm.mappings.Descriptor; import org.eclipse.persistence.internal.oxm.mappings.Field; import org.eclipse.persistence.oxm.schema.XMLSchemaReference; import org.w3c.dom.Node; /** * This class represents marshal record behaviour that is common to all XML * platforms. */ public interface AbstractMarshalRecord< ABSTRACT_SESSION extends CoreAbstractSession, FIELD extends CoreField, MARSHALLER extends Marshaller, NAMESPACE_RESOLVER extends NamespaceResolver> extends XMLRecord<ABSTRACT_SESSION> { public List addExtraNamespacesToNamespaceResolver(Descriptor descriptor, CoreAbstractSession session, boolean allowOverride, boolean ignoreEqualResolvers); public boolean addXsiTypeAndClassIndicatorIfRequired(Descriptor descriptor, Descriptor referenceDescriptor, Field xmlField, boolean isRootElement); public boolean addXsiTypeAndClassIndicatorIfRequired(Descriptor descriptor, Descriptor referenceDescriptor, Field xmlField,Object originalObject, Object obj, boolean wasXMLRoot, boolean isRootElement); public void attribute(String namespaceURI, String localName, String qualifiedName, String value); public void attributeWithoutQName(String namespaceURI, String localName, String prefix, String value); public Node getDOM(); public XPathQName getLeafElementType(); public MARSHALLER getMarshaller(); public NAMESPACE_RESOLVER getNamespaceResolver(); public Object getOwningObject(); public boolean hasCustomNamespaceMapper(); public boolean hasEqualNamespaceResolvers(); /** * Determine if namespaces will be considered during marshal/unmarshal operations. */ public boolean isNamespaceAware(); public boolean isXOPPackage(); public void namespaceDeclaration(String prefix, String typeUri); public Object put(FIELD field, Object object); public void removeExtraNamespacesFromNamespaceResolver(List<Namespace> extraNamespaces, CoreAbstractSession session); public String resolveNamespacePrefix(String prefix); public void setCustomNamespaceMapper(boolean customNamespaceMapper); public void setEqualNamespaceResolvers(boolean equalNRs); public void setLeafElementType(QName leafElementType); public void setLeafElementType(XPathQName leafElementType); public void setMarshaller(MARSHALLER marshaller); public void setNamespaceResolver(NAMESPACE_RESOLVER namespaceResolver); public void setOwningObject(Object owningObject); public void setSession(ABSTRACT_SESSION session); public void setXOPPackage(boolean isXOPPackage); public void writeXsiTypeAttribute(Descriptor descriptor, String typeUri, String typeLocal, String typePrefix, boolean addToNamespaceResolver); public void writeXsiTypeAttribute(Descriptor xmlDescriptor, XMLSchemaReference xmlRef, boolean addToNamespaceResolver); }