001package org.apache.turbine.annotation;
002
003import java.lang.annotation.ElementType;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006import java.lang.annotation.Target;
007
008/*
009 * Licensed to the Apache Software Foundation (ASF) under one
010 * or more contributor license agreements.  See the NOTICE file
011 * distributed with this work for additional information
012 * regarding copyright ownership.  The ASF licenses this file
013 * to you under the Apache License, Version 2.0 (the
014 * "License"); you may not use this file except in compliance
015 * with the License.  You may obtain a copy of the License at
016 *
017 *   http://www.apache.org/licenses/LICENSE-2.0
018 *
019 * Unless required by applicable law or agreed to in writing,
020 * software distributed under the License is distributed on an
021 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
022 * KIND, either express or implied.  See the License for the
023 * specific language governing permissions and limitations
024 * under the License.
025 */
026
027/**
028 * Annotation to mark fields in modules that require a service to be injected
029 */
030@Retention( RetentionPolicy.RUNTIME )
031@Target( ElementType.FIELD )
032public @interface TurbineService
033{
034    /**
035     * Get the name of the service to inject
036     *
037     * @return the service name or role
038     */
039    String value() default "";
040
041    /**
042     * A constant defining the field name for the service name
043     */
044    String SERVICE_NAME = "SERVICE_NAME";
045
046    /**
047     * A constant defining the field name for the role
048     */
049    String ROLE = "ROLE";
050}