001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.juneau.marshall.urlencoding; 018 019import static java.lang.annotation.ElementType.*; 020import static java.lang.annotation.RetentionPolicy.*; 021 022import java.lang.annotation.*; 023 024/** 025 * Annotation that can be applied to classes, fields, and methods to tweak how they are handled by 026 * {@link UrlEncodingSerializer} and {@link UrlEncodingParser}. 027 * 028 * <p> 029 * Can be used in the following locations: 030 * <ul> 031 * <li>Marshalled classes/methods/fields. 032 * <li><ja>@Rest</ja>-annotated classes and <ja>@RestOp</ja>-annotated methods when used with {@link UrlEncodingApply @UrlEncodingApply}. 033 * </ul> 034 * 035 * <h5 class='section'>See Also:</h5><ul> 036 * <li class='link'><a class="doclink" href="https://juneau.apache.org/docs/topics/UrlEncodingSupport">URL-Encoding</a> 037 038 * </ul> 039 */ 040@Documented 041@Target({ TYPE, FIELD, METHOD }) 042@Retention(RUNTIME) 043@Inherited 044public @interface UrlEncoding { 045 046 /** 047 * Optional description for the exposed API. 048 * 049 * @return The annotation value. 050 * @since 9.2.0 051 */ 052 String[] description() default {}; 053 054 /** 055 * When true, bean properties of type array or Collection will be expanded into multiple key/value pairings. 056 * 057 * <p> 058 * This annotation is identical in behavior to using the {@link UrlEncodingSerializer.Builder#expandedParams()} 059 * and {@link UrlEncodingParser.Builder#expandedParams()} properties, but applies to only instances of this bean. 060 * 061 * @return The annotation value. 062 */ 063 boolean expandedParams() default false; 064 065}