| /* |
| * 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; |
| |
| import java.util.HashMap; |
| |
| import org.eclipse.persistence.internal.oxm.mappings.Mapping; |
| import org.eclipse.persistence.oxm.sequenced.Setting; |
| |
| /** |
| * INTERNAL: |
| * <p><b>Purpose</b>: Holds mapping reference info. The info held in this class |
| * will be used after unmarshal to resolve 1-1 and 1-M mapping references. This |
| * is necessary to ensure that all related objects have been created before |
| * attempting to set instance values in related objects.</p> |
| */ |
| |
| public class Reference { |
| protected Mapping mapping; // mapping associated with this reference |
| protected Object sourceObject; // the source object instance |
| protected Class<?> targetClass; // the reference class |
| protected Object primaryKey; // primary key values for cache lookup - used in single case |
| protected HashMap primaryKeyMap; // map of primary key values for cache lookup - used in collection case |
| private Setting setting; |
| private Object container; |
| |
| /** |
| * Get the container this reference should be added to if it was from a collection mapping |
| */ |
| public Object getContainer() { |
| return container; |
| } |
| |
| public Setting getSetting() { |
| return setting; |
| } |
| |
| public void setSetting(Setting setting) { |
| this.setting = setting; |
| } |
| |
| /** |
| * Constructor typically used in the collection case. |
| */ |
| public Reference(Mapping mapping, Object source, Class<?> target, HashMap primaryKeyMap, Object container) { |
| this.mapping = mapping; |
| sourceObject = source; |
| targetClass = target; |
| this.primaryKeyMap = primaryKeyMap; |
| this.container = container; |
| } |
| |
| /** |
| * Constructor typically used in the single case. |
| */ |
| public Reference(Mapping mapping, Object source, Class<?> target, Object primaryKey) { |
| this.mapping = mapping; |
| sourceObject = source; |
| targetClass = target; |
| this.primaryKey = primaryKey; |
| } |
| |
| /** |
| * Return the XMLMapping associated with this reference. |
| * |
| */ |
| public Mapping getMapping() { |
| return mapping; |
| } |
| |
| /** |
| * Return the map of primary key/values required to lookup |
| * the reference class in the cache. |
| * |
| */ |
| public HashMap getPrimaryKeyMap() { |
| return primaryKeyMap; |
| } |
| |
| /** |
| * Return the list of primary key values required to lookup |
| * the reference class in the cache. |
| * |
| */ |
| public Object getPrimaryKey() { |
| return primaryKey; |
| } |
| |
| /** |
| * Return the source object for this reference. |
| * |
| */ |
| public Object getSourceObject() { |
| return sourceObject; |
| } |
| |
| /** |
| * Return the target (reference) class for this reference. |
| * |
| */ |
| public Class<?> getTargetClass() { |
| return targetClass; |
| } |
| |
| /** |
| * Set the primary key value required to lookup |
| * the reference class in the cache. |
| */ |
| public void setPrimaryKey(Object primaryKey) { |
| this.primaryKey = primaryKey; |
| } |
| } |