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