01: /*
02: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
03: * Distributed under the terms of either:
04: * - the common development and distribution license (CDDL), v1.0; or
05: * - the GNU Lesser General Public License, v2.1 or later
06: * $Id: SubmissionBeanProperty.java 3687 2007-03-09 23:13:07Z gbevin $
07: */
08: package com.uwyn.rife.engine.annotations;
09:
10: import java.lang.annotation.Documented;
11: import java.lang.annotation.ElementType;
12: import java.lang.annotation.Retention;
13: import java.lang.annotation.RetentionPolicy;
14: import java.lang.annotation.Target;
15:
16: /**
17: * Declares that the bean property that corresponds to the annotated setter
18: * will be used as a submission bean. The name of the bean will be the name of
19: * the property, and the bean class will be the property type. The submission
20: * bean will be added to the previous submission that has been declared.
21: * <p>If no submission has been declared beforehand, either through {@link Submission}
22: * or {@link SubmissionHandler}, an exception will be thrown when the
23: * annotations of this element are evaluated.
24: * <p>When an element is processed, an instance of the submission bean will be
25: * created and its properties will be filled in with the available submission
26: * parameter values. The submission bean instance will be injected into the
27: * element through the setter and RIFE's type conversion will try to convert the
28: * bean type into the property type. A {@link com.uwyn.rife.engine.exceptions.NamedSubmissionBeanInjectionException}
29: * exception will be thrown if the conversion failed.
30: *
31: * @author Geert Bevin (gbevin[remove] at uwyn dot com)
32: * @version $Revision: 3687 $
33: * @since 1.5
34: * @see SubmissionBean
35: * @see Submission
36: * @see SubmissionHandler
37: */
38: @Retention(RetentionPolicy.RUNTIME)
39: @Target({ElementType.METHOD})
40: @Documented
41: public @interface SubmissionBeanProperty {
42: /**
43: * The expected name of the property.
44: * <p>
45: * This hasn't got any influence on the actual name that is being used
46: * for the property, but is used instead to ensure that the property name
47: * is the same as the one specified here. This is typically used to create
48: * a single point of declaration for the property name that can be
49: * referenced elsewhere and that is ensured to be correct.
50: *
51: * @since 1.6
52: */
53: String name() default "";
54:
55: /**
56: * The prefix that will be prepended to each property name of the
57: * submission bean when corresponding parameters are automatically
58: * declared.
59: * @since 1.5
60: */
61: String prefix() default "";
62:
63: /**
64: * The validation group that has been declared by the bean class.
65: * <p>This requires the bean class to implement the {@link com.uwyn.rife.site.ValidatedConstrained}
66: * interface, either directly, or by extending {@link com.uwyn.rife.site.MetaData}, or by using
67: * automated <a href="http://rifers.org/wiki/display/RIFE/Meta+data+merging">meta data merging</a>.
68: * <p>The group will indicate which bean properties should only be taken
69: * into account. Any properties outside the group will not be created as
70: * submission parameters.
71: * @since 1.5
72: */
73: String group() default "";
74: }
|