blob: 5df064a6f2f517a39775796c0612fa2a3dd7f4dc [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.internal.oxm.record;
import org.eclipse.persistence.internal.oxm.ContainerValue;
import org.eclipse.persistence.internal.oxm.Reference;
import org.eclipse.persistence.internal.oxm.mappings.Mapping;
/**
* The UnmarshalContext allows mappings to be unmarshalled differently depending
* on the type of object. An UnmarshalRecord maintains a reference to a single
* UnmarshalContext.
*/
public interface UnmarshalContext {
/**
* An event indicating that startElement has been called on the unmarshalRecord.
* @param unmarshalRecord The UnmarshalRecord that received the startElement call.
*/
void startElement(UnmarshalRecord unmarshalRecord);
/**
* An event indicating that characters has been called on the unmarshalRecord.
* @param unmarshalRecord The UnmarshalRecord that received the characters call.
*/
void characters(UnmarshalRecord unmarshalRecord);
/**
* An event indicating that endElement has been called on the unmarshalRecord.
* @param unmarshalRecord The UnmarshalRecord that received the endElement call.
*/
void endElement(UnmarshalRecord unmarshalRecord);
/**
* The UnmarshalContext is responsible for assigning values to the object being
* built.
*/
void setAttributeValue(UnmarshalRecord unmarshalRecord, Object value, Mapping mapping);
/**
* When a collection mapping is processed the UnmarshalContext is responsible for
* handling the values one at a time.
* @param containerValue A container object such as a java.util.ArrayList, to which
* the value will be added.
* @param value The value to be added to the container,
*/
void addAttributeValue(UnmarshalRecord unmarshalRecord, ContainerValue containerValue, Object value);
/**
* When a collection mapping is processed the UnmarshalContext is responsible for
* handling the values one at a time.
* @param containerValue A container object such as a java.util.ArrayList, to which
* the value will be added.
* @param value The value to be added to the container,
*/
void addAttributeValue(UnmarshalRecord unmarshalRecord, ContainerValue containerValue, Object value, Object collection);
/*
* When a Reference is built the UnmarshalContext is given the ability to perform
* further processing on it.
* @param reference
*/
void reference(Reference reference);
/**
* This method is called when unmapped content (XML content that does not correspond to
* any specified mapping, policy, etc.) is encountered during the unmarshal process.
* @param unmarshalRecord The UnmarshalRecord that encountered the unmapped content .
*/
void unmappedContent(UnmarshalRecord unmarshalRecord);
}