001// Licensed under the Apache License, Version 2.0 (the "License"); 002// you may not use this file except in compliance with the License. 003// You may obtain a copy of the License at 004// 005// http://www.apache.org/licenses/LICENSE-2.0 006// 007// Unless required by applicable law or agreed to in writing, software 008// distributed under the License is distributed on an "AS IS" BASIS, 009// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 010// See the License for the specific language governing permissions and 011// limitations under the License. 012 013package org.apache.tapestry5.ioc.annotations; 014 015import java.lang.annotation.Documented; 016import java.lang.annotation.ElementType; 017import java.lang.annotation.Retention; 018import java.lang.annotation.RetentionPolicy; 019import java.lang.annotation.Target; 020 021/** 022 * A documentation-only interface placed on service interfaces for services which have a 023 * <a href="https://tapestry.apache.org/current/apidocs/org/apache/tapestry5/commons/MappedConfiguration.html">mapped configuration</a>, to identify the type of key (often, a String), 024 * and type of contribution. 025 * 026 * Remember that when the key type is String, the map will be case-insensitive. 027 */ 028@Target(ElementType.TYPE) 029@Retention(RetentionPolicy.CLASS) 030@Documented 031@UseWith(AnnotationUseContext.SERVICE) 032public @interface UsesMappedConfiguration 033{ 034 /** 035 * The type of key used to identify contribution values. 036 */ 037 Class key() default String.class; 038 039 /** 040 * The type of object which may be contributed into the service's configuration. 041 */ 042 Class value(); 043}