package org.jdiameter.api.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* This annotation allows describe Java POJO object as Diameter avp element
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface AvpDscr {
/**
* Return avp code
* @return avp code
*/
int code();
/**
* Return avp name
* @return avp name
*/
String name() default "unknown";
/**
* Return avp type
* @return avp type
*/
AvpType type();
/**
* Return avp vendor id
* @return avp vendor id
*/
long vendorId() default 0;
/**
* Return array of mandatory flags
* @return array of mandatory flags
*/
AvpFlag[] must() default {};
/**
* Return array optional flags
* @return array optional flags
*/
AvpFlag[] may() default {};
/**
* Return array flags which should not be set
* @return array flags which should not be set
*/
AvpFlag[] shldNot() default {};
/**
* Return array flags which must not be set
* @return array flags which must not be set
*/
AvpFlag[] mustNot() default {};
/**
* Return true if the flag can be encrypted
* @return true if the flag can be encrypted
*/
boolean mayEncr() default false;
/**
* Return array of avp child ( for grouped avp )
* @return array of avp child
*/
Child[] childs() default {};
}