001/**
002 * Copyright 2014 Tampere University of Technology, Pori Department
003 * 
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 * 
008 *   http://www.apache.org/licenses/LICENSE-2.0
009 * 
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package core.tut.pori.http.annotations;
017
018import static java.lang.annotation.ElementType.PARAMETER;
019import static java.lang.annotation.RetentionPolicy.RUNTIME;
020
021import java.lang.annotation.Documented;
022import java.lang.annotation.Inherited;
023import java.lang.annotation.Retention;
024import java.lang.annotation.Target;
025
026/**
027 * Annotation for defining a single parameter within a HTTPServiceMethod.
028 * 
029 */
030@Retention(RUNTIME)
031@Target({PARAMETER})
032@Inherited
033@Documented
034public @interface HTTPMethodParameter {
035  /**
036   * 
037   * @return name of the parameter
038   */
039  String name();
040  
041  /**
042   * The parameter value should be defined as it would appear in a method request with values separated by , and URL encoded if needed.
043   * 
044   * @return default value for this parameter
045   */
046  String defaultValue() default "";
047  
048  /**
049   * 
050   * @return whether this parameter is required or not
051   */
052  boolean required() default true;
053  
054  /**
055   * If set to true, the value of body shall be passed on to this parameter, and the default URL parameter lookup will be skipped,
056   * in this case the name() of the parameter is ignored.
057   * 
058   * Note: there can be ONLY ONE body parameter per method
059   * 
060   * @return whether this is a body parameter
061   */
062  boolean bodyParameter() default false;
063}