org.eclipse.persistence.oxm.mappings.converters.XMLListConverter Maven / Gradle / Ivy
/*
* Copyright (c) 1998, 2023 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:
// rbarkhouse - 2009-05-05 14:32:00 - initial implementation
package org.eclipse.persistence.oxm.mappings.converters;
import org.eclipse.persistence.exceptions.ValidationException;
import org.eclipse.persistence.internal.oxm.XMLConversionManager;
import org.eclipse.persistence.internal.oxm.mappings.Field;
import org.eclipse.persistence.internal.security.PrivilegedClassForName;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.mappings.converters.Converter;
import org.eclipse.persistence.oxm.mappings.XMLCompositeDirectCollectionMapping;
import org.eclipse.persistence.sessions.Session;
import java.security.AccessController;
import java.security.PrivilegedActionException;
/**
* Purpose: Provides an implementation of Converter that can be used to convert a
* collection of Objects into a space separated list of Strings and back. Used with
* XMLCompositeDirectCollectionMapping to implement the behaviour of the XmlList annotation
*
* @see XMLCompositeDirectCollectionMapping
* @see XMLConverter
* @see Converter
*/
public class XMLListConverter implements Converter {
private XMLConversionManager conversionManager;
private XMLCompositeDirectCollectionMapping mapping;
private Class objectClass = null;
private String objectClassName = null;
@Override
public Object convertDataValueToObjectValue(Object dataValue, Session session) {
return this.conversionManager.convertStringToList(dataValue, getObjectClass(), mapping.getContainerPolicy(), ((Field)mapping.getField()).getSchemaType());
}
@Override
public Object convertObjectValueToDataValue(Object objectValue, Session session) {
return this.conversionManager.convertListToString(objectValue, ((Field)mapping.getField()).getSchemaType());
}
@Override
public void initialize(DatabaseMapping mapping, Session session) {
this.conversionManager = (XMLConversionManager) session.getDatasourcePlatform().getConversionManager();
this.mapping = (XMLCompositeDirectCollectionMapping) mapping;
try {
if (getObjectClassName() != null) {
ClassLoader loader = session.getDatasourcePlatform().getConversionManager().getLoader();
Class