| /* |
| * Copyright (c) 1998, 2020 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 |
| // tware - March 13, 2008 - 1.0M6 - JavaDoc rewrite |
| package org.eclipse.persistence.annotations; |
| |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.Target; |
| |
| import static java.lang.annotation.ElementType.FIELD; |
| import static java.lang.annotation.ElementType.METHOD; |
| import static java.lang.annotation.RetentionPolicy.RUNTIME; |
| |
| /** |
| * The Convert annotation specifies that a named converter should be used with |
| * the corresponding mapped attribute. The Convert annotation has the following |
| * reserved names: |
| * <ul> |
| * <li> serialized: Will use a SerializedObjectConverter |
| * on the associated mapping. When using a SerializedObjectConverter the database representation is a |
| * binary field holding a serialized version of the object and the object-model representation is a the |
| * actual object. |
| * <li> class-instance: Will use an ClassInstanceConverter |
| * on the associated mapping. When using a ClassInstanceConverter the database representation is a |
| * String representing the Class name and the object-model representation is an instance |
| * of that class built with a no-args constructor.<br> |
| * <li> xml: Will use an SerializedObjectConverter with the XMLSerializer |
| * on the associated mapping. When using a XMLSerializer the database representation is a |
| * character field holding a serialized version of the object and the object-model representation is a the |
| * actual object.<br> |
| * <li> json: Will use an SerializedObjectConverter with the JSONSerializer |
| * on the associated mapping. When using a JSONSerializer the database representation is a |
| * character field holding a serialized version of the object and the object-model representation is a the |
| * actual object.<br> |
| * <li> kryo: Will use an SerializedObjectConverter with the KryoSerializer |
| * on the associated mapping. When using a KryoSerializer the database representation is a |
| * binary field holding a serialized version of the object and the object-model representation is a the |
| * actual object.<br> |
| * <li> none - Will place no converter on the associated mapping. This can be used to override a situation where either |
| * another converter is defaulted or another converter is set. |
| * </ul> |
| * |
| * When these reserved converters are not used, it is necessary to define a converter to use using the |
| * {@literal @}Converter annotation. |
| * |
| * @see org.eclipse.persistence.annotations.Converter |
| * @see org.eclipse.persistence.annotations.ObjectTypeConverter |
| * @see org.eclipse.persistence.annotations.TypeConverter |
| * @see org.eclipse.persistence.mappings.converters.SerializedObjectConverter |
| * @see org.eclipse.persistence.mappings.converters.ClassInstanceConverter |
| * |
| * @author Guy Pelletier |
| * @since Oracle TopLink 11.1.1.0.0 |
| */ |
| @Target({METHOD, FIELD}) |
| @Retention(RUNTIME) |
| public @interface Convert { |
| /** |
| * (Optional) The name of the converter to be used. |
| */ |
| String value() default "none"; |
| |
| /** |
| * Constant name for the reserved Java serialization converter. |
| * This will serialize the |
| */ |
| public static final String SERIALIZED = "serialized"; |
| |
| /** |
| * Constant name for the reserved class instance converter. |
| * This will store the object's class name, and create a new instance of the class on read. |
| */ |
| public static final String CLASS_INSTANCE = "class-instance"; |
| |
| /** |
| * Constant name for the reserved XML converter. |
| * This will use JAXB to convert the object to and from XML. |
| */ |
| public static final String XML = "xml"; |
| |
| /** |
| * Constant name for the reserved JSON converter. |
| * This will use EclipseLink Moxy JAXB to convert the object to and from JSON. |
| */ |
| public static final String JSON = "json"; |
| |
| /** |
| * Constant name for the reserved Kryo converter. |
| * This will use Kryo to convert the object to and from an optimized binary format. |
| */ |
| public static final String KRYO = "kryo"; |
| |
| /** |
| * Constant name for no converter. |
| */ |
| public static final String NONE = "none"; |
| } |