| /* |
| * Copyright (c) 2011, 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 = 2.2 - Initial contribution |
| package org.eclipse.persistence.oxm.annotations; |
| |
| import static java.lang.annotation.ElementType.FIELD; |
| import static java.lang.annotation.ElementType.METHOD; |
| import static java.lang.annotation.RetentionPolicy.RUNTIME; |
| |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.Target; |
| |
| import org.eclipse.persistence.mappings.transformers.FieldTransformer; |
| |
| /** |
| * Annotation for org.eclipse.persistence.mappings.oxm.XMLTransformationMapping. |
| * WriteTransformer defines transformation of the attribute value to a single |
| * XML value (XPath is specified in the WriteTransformer). |
| * |
| * A single XmlWriteTransformer may be specified directly on the method or |
| * attribute. Multiple XmlWriteTransformers should be wrapped into |
| * XmlWriteTransformers annotation. No XmlWriteTransformers specified for read-only |
| * mapping. Unless the XMLTransformationMapping is write-only, it should have a |
| * ReadTransformer, it defines transformation of XML value(s) |
| * into attribute value. |
| * |
| * @see org.eclipse.persistence.oxm.annotations.XmlReadTransformer |
| * @see org.eclipse.persistence.oxm.annotations.XmlTransformation |
| * @see org.eclipse.persistence.oxm.annotations.XmlWriteTransformers |
| * |
| */ |
| |
| @Target({METHOD, FIELD}) |
| @Retention(RUNTIME) |
| public @interface XmlWriteTransformer { |
| |
| /** |
| * User-defined class that must implement the |
| * org.eclipse.persistence.mappings.transformers.FieldTransformer interface. |
| * The class will be instantiated, its buildFieldValue will be used to |
| * create the value to be written into XML document. |
| * Either transformerClass or method must be specified, but not both. |
| */ |
| Class<? extends FieldTransformer> transformerClass() default FieldTransformer.class; |
| |
| /** |
| * The mapped class must have a method with this name which returns a value |
| * to be written into the XML document. |
| * The method may require an XmlTransient annotation to avoid being mapped as |
| * an XmlElement by default. |
| * Either transformerClass or method must be specified, but not both. |
| */ |
| String method() default ""; |
| |
| /** |
| * Specify here the XPath into which the value should be written. |
| * The only case when this could be skipped is if a single WriteTransformer |
| * annotates an attribute - the attribute's name will be |
| * used as an element name. |
| */ |
| String xmlPath(); |
| |
| } |