| /* |
| * 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: |
| // dmccann - September 15/2009 - 1.2 - Initial implementation |
| package org.eclipse.persistence.sdo; |
| |
| import org.eclipse.persistence.internal.localization.ExceptionLocalization; |
| import org.eclipse.persistence.oxm.XMLContext; |
| import org.eclipse.persistence.sdo.helper.SDOCopyHelper; |
| import org.eclipse.persistence.sdo.helper.SDODataFactory; |
| import org.eclipse.persistence.sdo.helper.SDODataHelper; |
| import org.eclipse.persistence.sdo.helper.SDOEqualityHelper; |
| import org.eclipse.persistence.sdo.helper.SDOHelperContext; |
| import org.eclipse.persistence.sdo.helper.SDOTypeHelper; |
| import org.eclipse.persistence.sdo.helper.SDOXMLHelper; |
| import org.eclipse.persistence.sdo.helper.SDOXSDHelper; |
| import org.eclipse.persistence.sdo.types.SDOChangeSummaryType; |
| import org.eclipse.persistence.sdo.types.SDODataObjectType; |
| import org.eclipse.persistence.sdo.types.SDODataType; |
| import org.eclipse.persistence.sdo.types.SDOObjectType; |
| import org.eclipse.persistence.sdo.types.SDOOpenSequencedType; |
| import org.eclipse.persistence.sdo.types.SDOPropertyType; |
| import org.eclipse.persistence.sdo.types.SDOTypeType; |
| import org.eclipse.persistence.sdo.types.SDOWrapperType; |
| import org.eclipse.persistence.sdo.types.SDOXMLHelperLoadOptionsType; |
| |
| import commonj.sdo.ChangeSummary; |
| import commonj.sdo.DataObject; |
| import commonj.sdo.Property; |
| import commonj.sdo.Sequence; |
| import commonj.sdo.Type; |
| import commonj.sdo.helper.CopyHelper; |
| import commonj.sdo.helper.DataFactory; |
| import commonj.sdo.helper.DataHelper; |
| import commonj.sdo.helper.EqualityHelper; |
| import commonj.sdo.helper.HelperContext; |
| import commonj.sdo.helper.TypeHelper; |
| import commonj.sdo.helper.XMLHelper; |
| import commonj.sdo.helper.XSDHelper; |
| import commonj.sdo.impl.HelperProvider; |
| |
| /** |
| * This class provides a mechanism to obtain the EclipseLink implementation of various SDO runtime |
| * classes based on a given SDO class/interface. This is useful for accessing extended EclipseLink |
| * features. Using this helper class will alleviate the need for consumers of EclipseLink SDO to |
| * perform casts where their code makes use of the standard SDO API. In addition, a given SDO |
| * class/interface can be unwrapped based on a user-specified class. This will allow access - in |
| * certain cases - to a given SDO implementation class' underlying class(es). For example, an |
| * XMLHelper could be unwrapped resulting in an EclipseLink SDOXMLHelper or its underlying |
| * XMLContext. |
| */ |
| public class SDOHelper { |
| |
| private SDOHelper() { |
| //no instance please |
| } |
| |
| /** |
| * Return the EclipseLink implementation of Type. The given Type is assumed to be an instance of |
| * {@link org.eclipse.persistence.sdo.SDOType}. If not, an exception will be thrown. |
| * |
| * @param type |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOType getType(Type type) throws IllegalArgumentException { |
| try { |
| return (SDOType) type; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_type", new Object[] { type.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of Property. The given Property is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.SDOProperty}. If not, an exception will be |
| * thrown. |
| * |
| * @param property |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOProperty getProperty(Property property) throws IllegalArgumentException { |
| try { |
| return (SDOProperty) property; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_property", new Object[] { property.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of DataObject. The given DataObject is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.SDODataObject}. If not, an exception will be |
| * thrown. |
| * |
| * @param dataObject |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDODataObject getDataObject(DataObject dataObject) throws IllegalArgumentException { |
| try { |
| return (SDODataObject) dataObject; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_dataobject", new Object[] { dataObject.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of ChangeSummary. The given ChangeSummary is assumed to |
| * be an instance of {@link org.eclipse.persistence.sdo.SDOChangeSummary}. If not, an exception |
| * will be thrown. |
| * |
| * @param changeSummary |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOChangeSummary getChangeSummary(ChangeSummary changeSummary) throws IllegalArgumentException { |
| try { |
| return (SDOChangeSummary) changeSummary; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_changesummary", new Object[] { changeSummary.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of Sequence. The given Sequence is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.SDOSequence}. If not, an exception will be |
| * thrown. |
| * |
| * @param sequence |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOSequence getSequence(Sequence sequence) throws IllegalArgumentException { |
| try { |
| return (SDOSequence) sequence; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_sequence", new Object[] { sequence.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of HelperContext. If the given HelperContext |
| * is an instance of the DefaultContext, an SDOHelperContext will be obtained via |
| * SDOHelperContext.getHelperContext(). Otherwise, the given HelperContext is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOHelperContext}. If not, an exception |
| * will be thrown. |
| |
| * @param helperContext |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOHelperContext getHelperContext(HelperContext helperContext) throws IllegalArgumentException { |
| if (helperContext == HelperProvider.getDefaultContext()) { |
| return (SDOHelperContext) SDOHelperContext.getHelperContext(); |
| } |
| try { |
| return (SDOHelperContext) helperContext; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_helpercontext", new Object[] { helperContext.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of CopyHelper. The given CopyHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOCopyHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param copyHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOCopyHelper getCopyHelper(CopyHelper copyHelper) throws IllegalArgumentException { |
| try { |
| return (SDOCopyHelper) copyHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_copyhelper", new Object[] { copyHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of DataFactory. The given DataFactory is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDODataFactory}. If not, an exception |
| * will be thrown. |
| * |
| * @param dataFactory |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDODataFactory getDataFactory(DataFactory dataFactory) throws IllegalArgumentException { |
| try { |
| return (SDODataFactory) dataFactory; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_datafactory", new Object[] { dataFactory.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of DataHelper. The given DataHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDODataHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param dataHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDODataHelper getDataHelper(DataHelper dataHelper) throws IllegalArgumentException { |
| try { |
| return (SDODataHelper) dataHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_datahelper", new Object[] { dataHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of EqualityHelper. The given EqualityHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOEqualityHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param equalityHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOEqualityHelper getEqualityHelper(EqualityHelper equalityHelper) throws IllegalArgumentException { |
| try { |
| return (SDOEqualityHelper) equalityHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_equalityhelper", new Object[] { equalityHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of TypeHelper. The given TypeHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOTypeHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param typeHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOTypeHelper getTypeHelper(TypeHelper typeHelper) throws IllegalArgumentException { |
| try { |
| return (SDOTypeHelper) typeHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_typehelper", new Object[] { typeHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of XMLHelper. The given XMLHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOXMLHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param xmlHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOXMLHelper getXMLHelper(XMLHelper xmlHelper) throws IllegalArgumentException { |
| try { |
| return (SDOXMLHelper) xmlHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_xmlhelper", new Object[] { xmlHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Return the EclipseLink implementation of XSDHelper. The given XSDHelper is assumed to be an |
| * instance of {@link org.eclipse.persistence.sdo.helper.SDOXSDHelper}. If not, an exception |
| * will be thrown. |
| * |
| * @param xsdHelper |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static SDOXSDHelper getXSDHelper(XSDHelper xsdHelper) throws IllegalArgumentException { |
| try { |
| return (SDOXSDHelper) xsdHelper; |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_xsdhelper", new Object[] { xsdHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Unwraps a given Type resulting in an EclipseLink SDOType. Assumes that the |
| * given Type is an instance of EclipseLink SDOType, and clazz is one of: |
| * org.eclipse.persistence.sdo.SDOType, |
| * org.eclipse.persistence.sdo.type.SDOTypeType, |
| * org.eclipse.persistence.sdo.type.SDOPropertyType, |
| * org.eclipse.persistence.sdo.type.SDOChangeSummaryType, |
| * org.eclipse.persistence.sdo.type.SDODataObjectType, |
| * org.eclipse.persistence.sdo.type.SDODataType, |
| * org.eclipse.persistence.sdo.type.SDOOpenSequencedType, |
| * org.eclipse.persistence.sdo.type.SDOObjectType, |
| * org.eclipse.persistence.sdo.type.SDOWrapperType, |
| * org.eclipse.persistence.sdo.type.SDOXMLHelperLoadOptionsType |
| * |
| * @param <T> |
| * @param type |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(Type type, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == SDOType.class) { |
| return (T) getType(type); |
| } |
| try { |
| if (clazz == SDOTypeType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOPropertyType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOChangeSummaryType.class) { |
| return (T) type; |
| } |
| if (clazz == SDODataObjectType.class) { |
| return (T) type; |
| } |
| if (clazz == SDODataType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOOpenSequencedType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOWrapperType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOXMLHelperLoadOptionsType.class) { |
| return (T) type; |
| } |
| if (clazz == SDOObjectType.class) { |
| return (T) type; |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_type", new Object[] { clazz })); |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_type", new Object[] { type.getClass() })); |
| } |
| } |
| |
| /** |
| * Unwraps a given Property resulting in an EclipseLink SDOProperty. Assumes that the |
| * given Property is an instance of EclipseLink SDOProperty, and clazz is |
| * org.eclipse.persistence.sdo.SDOProperty. |
| * |
| * @param <T> |
| * @param property |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(Property property, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.SDOProperty.class) { |
| return (T) getProperty(property); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_property", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given DataObject resulting in an EclipseLink SDODataObject. Assumes that the |
| * given DataObject is an instance of EclipseLink SDODataObject, and clazz is |
| * org.eclipse.persistence.sdo.SDODataObject. |
| * |
| * @param <T> |
| * @param dataObject |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(DataObject dataObject, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.SDODataObject.class) { |
| return (T) getDataObject(dataObject); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_dataobject", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given ChangeSummary resulting in an EclipseLink SDOChangeSummary. Assumes that the |
| * given ChangeSummary is an instance of EclipseLink SDOChangeSummary, and clazz is |
| * org.eclipse.persistence.sdo.SDOChangeSummary. |
| * |
| * @param <T> |
| * @param changeSummary |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(ChangeSummary changeSummary, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.SDOChangeSummary.class) { |
| return (T) getChangeSummary(changeSummary); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_changesummary", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given Sequence resulting in an EclipseLink SDOSequence. Assumes that the |
| * given Sequence is an instance of EclipseLink SDOSequence, and clazz is |
| * org.eclipse.persistence.sdo.SDOSequence. |
| * |
| * @param <T> |
| * @param sequence |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(Sequence sequence, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.SDOSequence.class) { |
| return (T) getSequence(sequence); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_sequence", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given HelperContext resulting in an EclipseLink SDOHelperContext. Assumes that the |
| * given HelperContext is an instance of EclipseLink SDOHelperContext, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDOHelperContext. |
| * |
| * @param <T> |
| * @param helperContext |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(HelperContext helperContext, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOHelperContext.class) { |
| return (T) getHelperContext(helperContext); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_helpercontext", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given CopyHelper resulting in an EclipseLink SDOCopyHelper. Assumes that the |
| * given CopyHelper is an instance of EclipseLink SDOCopyHelper, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDOCopyHelper. |
| * |
| * @param <T> |
| * @param copyHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(CopyHelper copyHelper, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOCopyHelper.class) { |
| return (T) getCopyHelper(copyHelper); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_copyhelper", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given DataFactory resulting in an EclipseLink SDODataFactory. Assumes that the |
| * given DataFactory is an instance of EclipseLink SDODataFactory, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDODataFactory. |
| * |
| * @param <T> |
| * @param dataFactory |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(DataFactory dataFactory, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDODataFactory.class) { |
| return (T) getDataFactory(dataFactory); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_datafactory", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given DataHelper resulting in an EclipseLink SDODataHelper. Assumes that the |
| * given DataHelper is an instance of EclipseLink SDODataHelper, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDODataHelper. |
| * |
| * @param <T> |
| * @param dataHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(DataHelper dataHelper, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDODataHelper.class) { |
| return (T) getDataHelper(dataHelper); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_datahelper", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given EqualityHelper resulting in an EclipseLink SDOEqualityHelper. Assumes that the |
| * given EqualityHelper is an instance of EclipseLink SDOEqualityHelper, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDOEqualityHelper. |
| * |
| * @param <T> |
| * @param equalityHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(EqualityHelper equalityHelper, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOEqualityHelper.class) { |
| return (T) getEqualityHelper(equalityHelper); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_equalityhelper", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given TypeHelper resulting in an EclipseLink SDOTypeHelper. Assumes that the |
| * given TypeHelper is an instance of EclipseLink SDOTypeHelper, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDOTypeHelper. |
| * |
| * @param <T> |
| * @param typeHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(TypeHelper typeHelper, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOTypeHelper.class) { |
| return (T) getTypeHelper(typeHelper); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_typehelper", new Object[] { clazz })); |
| } |
| |
| /** |
| * Unwraps a given XMLHelper resulting in an EclipseLink SDOXMLHelper or an EclipseLink |
| * XMLContext depending on clazz. Assumes that the given XMLHelper is an instance of |
| * EclipseLink SDOXMLHelper, and clazz is one of |
| * org.eclipse.persistence.sdo.helper.SDOXMLHelper, or |
| * org.eclipse.persistence.oxm.XMLContext. If not, an exception will be thrown. |
| * |
| * @param <T> |
| * @param xmlHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(XMLHelper xmlHelper, Class<T> clazz) throws IllegalArgumentException { |
| try { |
| org.eclipse.persistence.sdo.helper.SDOXMLHelper xmlHelperImpl = (org.eclipse.persistence.sdo.helper.SDOXMLHelper) xmlHelper; |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOXMLHelper.class) { |
| return (T) xmlHelperImpl; |
| } |
| if (clazz == XMLContext.class) { |
| return (T) xmlHelperImpl.getXmlContext(); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_xmlhelper", new Object[] { clazz })); |
| } catch (ClassCastException e) { |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_xmlhelper", new Object[] { xmlHelper.getClass() })); |
| } |
| } |
| |
| /** |
| * Unwraps a given XSDHelper resulting in an EclipseLink SDOXSDHelper. Assumes that the |
| * given XSDHelper is an instance of EclipseLink SDOXSDHelper, and clazz is |
| * org.eclipse.persistence.sdo.helper.SDOXSDHelper. |
| * |
| * @param <T> |
| * @param xsdHelper |
| * @param clazz |
| * @return |
| * @throws IllegalArgumentException |
| */ |
| public static <T> T unwrap(XSDHelper xsdHelper, Class<T> clazz) throws IllegalArgumentException { |
| if (clazz == org.eclipse.persistence.sdo.helper.SDOXSDHelper.class) { |
| return (T) getXSDHelper(xsdHelper); |
| } |
| throw new IllegalArgumentException(ExceptionLocalization |
| .buildMessage("sdo_helper_invalid_target_for_xsdhelper", new Object[] { clazz })); |
| } |
| } |