/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * $Header:$ */ package org.apache.beehive.controls.api.versioning; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Specifies the minimum version of the control interface that this extension * requires. Allowed on control extensions (interfaces annotated with * @ControlExtension), and on control field declarations (fields annotated * with @Control). The version requirement is enforced at compile time of * extensions and control client, and at runtime when the appropriate control * bean is classloaded. */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.FIELD}) public @interface VersionRequired { /** * The major version value required for this control extension or instance * declaration to work. Any version number greater than or equal to this * value will suffice, implying that this requirement is valid only when * back compatibility is part of the contract when increasing the version * number. Negative values mean that any major version is * acceptable (in which case this annotation should probably just not be * present). */ int major(); /** * The minor version value required for this control extension or instance * declaration to work. Any version number greater than or equal to this * value will suffice. Negative values mean that any minor version is * acceptable (the default case). */ int minor() default -1; }