blob: 6d73f45a8ccac14c990443bbfa5d0dc2e9c8f41c [file] [log] [blame]
/*
* 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.
*/
package org.apache.sis.util;
import java.lang.annotation.Documented;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
/**
* Annotates code containing workarounds for bugs or limitations in an external library.
* This is marker annotation for source code only, in order to keep trace of code to revisit
* when new versions of external libraries become available.
*
* <div class="note"><b>Usage note:</b>
* When only a portion of a method contains a workaround and the annotation can not be applied to that specific part,
* then it is applied to the whole method. Developers need to refer to code comments in order to locate the specific
* part.</div>
*
* @author Martin Desruisseaux (Geomatys)
* @version 0.3
* @since 0.3
* @module
*/
@Documented
@Target({ElementType.TYPE, ElementType.CONSTRUCTOR, ElementType.METHOD,
ElementType.FIELD, ElementType.LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface Workaround {
/**
* A string identifying the library having a bug or limitation.
* Examples: {@code "JDK"}, {@code "NetCDF"}, {@code "JUnit"}, {@code "SIS"}.
*
* @return an identifier of the library having a bug or limitation.
*/
String library();
/**
* The last library version on which the bug has been verified.
* The bug may have existed before, and may still exist later.
*
* @return the library version on which the bug has been observed.
*/
String version();
/**
* If the bug has been fixed, the version on which the fix has been applied.
* Otherwise an empty string.
*
* @return the library version on which the fix has been applied.
*/
String fixed() default "";
}