1 /*
2 * $Id: XPath.java 20321 2010-11-24 15:21:24Z dfeist $
3 * --------------------------------------------------------------------------------------
4 * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
5 *
6 * The software in this package is published under the terms of the CPAL v1.0
7 * license, a copy of which has been included with this distribution in the
8 * LICENSE.txt file.
9 */
10 package org.mule.api.annotations.expression;
11
12 import org.mule.api.annotations.meta.Evaluator;
13
14 import java.lang.annotation.Documented;
15 import java.lang.annotation.ElementType;
16 import java.lang.annotation.Retention;
17 import java.lang.annotation.RetentionPolicy;
18 import java.lang.annotation.Target;
19
20 /**
21 * An expression annotation that allows developers to control how method parameter values are injected on a service component or transformer.
22 * This parameter level annotation enables an XPath expression to be execute on an Xml payload of a message.
23 *
24 * The annotation uses the standard JAXP api and this dictates what method parameter types the annotaiton can be used with. The follonig parameter types are supported
25 * <ul>
26 * <li>{@link Boolean}</li>
27 * <li>{@link String}</li>
28 * <li>{@link Double}</li>
29 * <li>{@link org.w3c.dom.Node}</li>
30 * <li>{@link org.w3c.dom.NodeList}</li>
31 * <li>{@link org.w3c.dom.Element}</li>
32 * <li>{@link org.w3c.dom.Document}</li>
33 * </ul>
34 *
35 * See {@link javax.xml.xpath.XPathConstants} for further information.
36 *
37 */
38 @Target(ElementType.PARAMETER)
39 @Retention(RetentionPolicy.RUNTIME)
40 @Documented
41 @Evaluator("xpath2")
42 public @interface XPath
43 {
44 String value();
45
46 boolean optional() default false;
47 }