Annotation Type PublicAPI


  • @Documented
    @Retention(RUNTIME)
    @Target({PACKAGE,TYPE,METHOD,CONSTRUCTOR})
    public @interface PublicAPI
    This class defines an annotation type that can be used to describe the position of a package, class, or method in the OpenDS public API (including to denote that the associated code should NOT be considered part of the public API). Third-party developers should pay attention to these annotations in order to understand how best to interact with the OpenDS code. For the purposes of this annotation, a "third-party developer" should be assumed to refer to anyone who is interacting with the OpenDS code in a manner in which their work is not expected to become part of the core OpenDS code base.

    This annotation type may be used to describe things like:
    • The stability of the code (how likely it is to change in the future and whether those changes may be incompatible with previous implementations).
    • Whether third-party code may be allowed to create new instances of the associated object type.
    • Whether a class or method may be extended by third-party code.
    • Whether a class or method may be invoked by third-party code.


    Note that for cases in which there are conflicting public API annotations, the most specific annotation should be considered authoritative. For example, if a class is marked with mayInvoke=true but a method in that class is marked with mayInvoke=false, then third-party code should not attempt to invoke that method because the method-level annotation is more specific (and therefore overrides) the less-specific class-level annotation.

    If a method does not include this annotation, then it should be assumed to inherit the class-level annotation. If a class does not include this annotation, then it should be assumed to inherit the package-level annotation. If a package does not include this annotation, then it should be assumed the package is private and should not be used by third-party code.
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      boolean mayExtend
      Indicates whether the associated class/interface/method may be extended/implemented/overridden by third-party code.
      boolean mayInstantiate
      Indicates whether third-party code should be allowed to directly create new instances of the associated object type by calling the constructor or a static factory method defined in that class.
      boolean mayInvoke
      Indicates whether the associated method may be invoked by third-party code.
      String notes
      Retrieves a string that may contain additional notes that should be taken into consideration by third-party developers that may be interested in using the associated code.
      StabilityLevel stability
      Retrieves the stability level for the associated class or method.
    • Element Detail

      • stability

        StabilityLevel stability
        Retrieves the stability level for the associated class or method. return The stability level for the associated class or method.
        Default:
        org.opends.server.types.StabilityLevel.PRIVATE
      • mayInstantiate

        boolean mayInstantiate
        Indicates whether third-party code should be allowed to directly create new instances of the associated object type by calling the constructor or a static factory method defined in that class. Note that even in cases where third-party code should not instantiate a given object type, it may be permissible for third-party code to invoke methods on instances of that object obtained elsewhere (e.g., provided as an argument to a method overridden by the third-party code). return true if third-party code should be allowed to create new instances of the associated object type, or false if not.
        Default:
        false
      • mayExtend

        boolean mayExtend
        Indicates whether the associated class/interface/method may be extended/implemented/overridden by third-party code. In some cases, the OpenDS code may define an abstract class, interface, or non-final method that is intended only for internal use and may be extended by internal code but should not be extended by classes outside the OpenDS code base. return true if the associated class/interface/method may be extended by third-party code, or false if not.
        Default:
        false
      • mayInvoke

        boolean mayInvoke
        Indicates whether the associated method may be invoked by third-party code. return true if third-party code should be allowed to invoke the associated method, or false if not.
        Default:
        false
      • notes

        String notes
        Retrieves a string that may contain additional notes that should be taken into consideration by third-party developers that may be interested in using the associated code. return A string that may contain additional notes that should be taken into consideration by third-party developers that may be interested in using the associated code.
        Default:
        ""