1 package org.apache.commons.digester3.annotations.handlers;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.digester3.annotations.AnnotationHandler;
23 import org.apache.commons.digester3.annotations.reflect.MethodArgument;
24 import org.apache.commons.digester3.annotations.rules.CallParam;
25 import org.apache.commons.digester3.binder.CallParamBuilder;
26 import org.apache.commons.digester3.binder.RulesBinder;
27
28
29
30
31
32
33 public final class CallParamHandler
34 implements AnnotationHandler<CallParam, MethodArgument>
35 {
36
37
38
39
40 public void handle( CallParam annotation, MethodArgument element, RulesBinder rulesBinder )
41 {
42 CallParamBuilder builder = rulesBinder
43 .forPattern( annotation.pattern() )
44 .withNamespaceURI( annotation.namespaceURI() )
45 .callParam()
46 .ofIndex( element.getIndex() )
47 .fromAttribute( annotation.attributeName().length() > 0 ? annotation.attributeName() : null );
48
49 if ( annotation.fromStack() )
50 {
51 builder.withStackIndex( annotation.stackIndex() );
52 }
53 }
54
55 }