/*
* $Id$
*
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.richfaces.cdk.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.faces.component.behavior.ClientBehavior;
import javax.faces.el.MethodBinding;
/**
* <p class="changed_added_4_0">
* Used to define Java class field or bean property getter method as JSF attribute. It used on the abstract method, all
* necessary code for attribute, including state save/restore code, will be generated by CDK.
* </p>
*
* @author asmirnov@exadel.com
*
*/
@Retention(RetentionPolicy.CLASS)
@Target({ ElementType.FIELD, ElementType.METHOD })
@Inherited
public @interface Attribute {
/**
* <p class="changed_added_4_0">
* Restricts attribute to literal values only ( no EL expressions ).
* </p>
*
* @return
*/
boolean literal() default false;
/**
* <p class="changed_added_4_0">
* Tells CDK to not include attribute in the VDL tag.
* </p>
*
* @return
*/
boolean hidden() default false;
/**
* <p class="changed_added_4_0">
* Marks attribute as read-only ( no setter method ).
* </p>
*
* @return
*/
boolean readOnly() default false;
// boolean transient() default false;
/**
* <p class="changed_added_4_0">
* If true, attribute used as pass through html attribue, eg. rendered directly into html without any transformations.
* </p>
*
* @return
*/
boolean passThrough() default false;
/**
* <p class="changed_added_4_0">
* Marks attribute as required. Generated tag handler should check its presence.
* </p>
*
* @return
*/
boolean required() default false;
/**
* <p class="changed_added_4_0">
* Tells CDK to generate getter and setter for attribute.
* </p>
*
* @return
*/
boolean generate() default true;
/**
* <p class="changed_added_4_0">
* Attribute default value. Should be valid Java code that can be used in field initialiser of function call.
* </p>
*
* @return
*/
String defaultValue() default "";
/**
* <p class="changed_added_4_0">
* Used by IDE to suggest attribute value.
* </p>
*
* @return
*/
String suggestedValue() default "";
/**
* <p class="changed_added_4_0">
* Attribute description to include in generated faces-config.xml and taglibs.
* </p>
*
* @return
*/
Description description() default @Description();
/**
* <p class="changed_added_4_0">
* Method signature for attributes with EL method reference type, either {@link MethodBinding} or {@link MethodExpression}.
* </p>
*
* @return
*/
Signature signature() default @Signature(returnType = Signature.NONE.class);
/**
* <p class="changed_added_4_0">
* Event descriptions for {@link ClientBehavior} binding.
* </p>
*
* @return
*/
EventName[] events() default {};
/**
* <p class="changed_added_4_0">
* Attribute aliases.
* </p>
*
* @return
*/
Alias[] aliases() default {};
}