Interface FeatureManager

All Known Subinterfaces:
CachingFeatureManager
All Known Implementing Classes:
BootstrapFeatureManager, DefaultFeatureManager, MockFeatureManager

@PublicApi public interface FeatureManager
Component responsible for providing information whether certain features in JIRA are enabled or disabled.
Since:
v4.4
  • Field Details

    • SYSTEM_PROPERTY_PREFIX

      static final String SYSTEM_PROPERTY_PREFIX
      The prefix used for enabling dark features from the command line. For example, one might use -Datlassian.darkfeature.com.atlassian.jira.config.FAST_TABS=true as a JVM argument in order to enable fast tabs.
      See Also:
  • Method Details

    • isEnabled

      boolean isEnabled(String featureKey)
      Checks whether feature featureKey is enabled either in the running JIRA instance or for the current user. If the featureKey relates to a feature flag that is defined, then it will also take the default values into consideration.
      Parameters:
      featureKey - feature key
      Returns:
      true, if feature identified by featureKey is enabled, false otherwise
    • isEnabled

      @Internal boolean isEnabled(CoreFeatures feature)
      Checks whether feature is enabled either in the running JIRA instance or for the current user. This method should be prefered over isEnabled(String) for internal feature checks, particularly for core features that are not user-settable, as it will skip loading the current user's preferences when possible.
      Parameters:
      feature - the core feature to check
      Returns:
      true if feature is enabled; false otherwise
    • isEnabled

      @Internal boolean isEnabled(Feature feature)
      Checks whether or not the specified feature is enabled. This method should be prefered over isEnabled(String) for internal feature checks, particularly for core features that are not user-settable, as it will skip loading the current user's preferences when possible.
      Parameters:
      feature - the feature to check
      Returns:
      true if feature is enabled; false otherwise
      Since:
      v6.0
    • isEnabled

      boolean isEnabled(FeatureFlag featureFlag)
      Checking the state of feature flag
      Parameters:
      featureFlag - defined feature flag
      Returns:
      state of the feature flag
      Since:
      7.1
    • getFeatureFlag

      io.atlassian.fugue.Option<FeatureFlag> getFeatureFlag(String featureKey)
      Return a feature flag by key
      Parameters:
      featureKey - the feature key string
      Returns:
      optional value of feature flag
      Since:
      7.1
    • getEnabledFeatureKeys

      Set<String> getEnabledFeatureKeys()
      Returns a set containing the feature keys of all features that are currently enabled.
      Returns:
      a set containing the feature keys of all features that are currently enabled
      Since:
      v5.0
    • getDarkFeatures

      DarkFeatures getDarkFeatures()
      Creates DarkFeatures instances from the PropertySet associated with the current user.
      Returns:
      Returns the Dark Features state for the current user.
    • getRegisteredFlags

      Set<FeatureFlag> getRegisteredFlags()
      Returns:
      a list of feature flags in the system
      Since:
      7.1
    • enableUserDarkFeature

      void enableUserDarkFeature(ApplicationUser user, String feature)
      Enables a feature for a particular User. Raises a FeatureEnabledEvent.

      Since JIRA 5.1, this method raises a FeatureEnabledEvent if it is successful.

      Parameters:
      user - the user to enable the feature for
      feature - the feature to enable
    • disableUserDarkFeature

      void disableUserDarkFeature(ApplicationUser user, String feature)
      Disables a feature for a particular user.

      Since JIRA 5.1, this method raises a FeatureDisabledEvent if it is successful.

      Parameters:
      user - the user to disable the feature for
      feature - the feature to disable
    • enableSiteDarkFeature

      void enableSiteDarkFeature(String feature)
      Enables a site-wide feature.

      Since JIRA 5.1, this method raises a FeatureEnabledEvent if it is successful.

      Parameters:
      feature - the feature to enable
    • disableSiteDarkFeature

      void disableSiteDarkFeature(String feature)
      Disables a site-wide feature.

      Since JIRA 5.1, this method raises a FeatureDisabledEvent if it is successful.

      Parameters:
      feature - the feature to disable
    • hasSiteEditPermission

      boolean hasSiteEditPermission()
      Returns true if the currently logged in user has permission to edit site dark features.
      Returns:
      true if the currently logged in user has permission to edit site dark features.
      Since:
      5.2
    • getDarkFeaturesForUser

      DarkFeatures getDarkFeaturesForUser(@Nullable ApplicationUser user)
      Parameters:
      user - the user being queried; null represents the anonymous user
      Returns:
      Returns the dark features state for the current user.
    • isEnabledForUser

      boolean isEnabledForUser(ApplicationUser user, String featureKey)
      Checks whether a feature with given featureKey is enabled in the running JIRA instance for the given user.
      Parameters:
      user - the user being queried
      featureKey - feature key
      Returns:
      true, if feature identified by featureKey is enabled, false otherwise