/******************************************************************************* * Copyright (c) 2011, 2015 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 v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle = 2.2 - Initial contribution ******************************************************************************/ package org.eclipse.persistence.oxm.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * <p>Wrap the value inside a CDATA section. Normally JAXB will escape certain * characters in a string during a marshal operation: * <ul> * <li>{@code & (as &)}</li> * <li>{@code < (as <)}</li> * <li>{@code " (as ")}</li> * </ul> * This means a property foo with string value {@code "1 < 2"} without * {@code @XmlCDATA} will be marshalled as {@code <foo>1 < 2</foo>}. When * {@code @XmlCDATA} is used the content is marshalled as * {@code <foo><![CDATA[1 < 2]]></foo>}.<p> * <b>Example</b> * <pre> * import javax.xml.bind.annotation.XmlRootElement; * import org.eclipse.persistence.oxm.annotations.XmlCDATA; * * @XmlRootElement() * public class Root { * private String foo; * * @XmlCDATA * public String getFoo() { * return foo; * } * * public void setFoo(String foo) { * this.foo = foo; * } * } * </pre> */ @Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface XmlCDATA {}