Class AbstractSerializationSecurityManager

java.lang.Object
com.atlassian.bamboo.serialization.AbstractSerializationSecurityManager
All Implemented Interfaces:
SerializationSecurityManager
Direct Known Subclasses:
RemoteSerializationSecurityManager, SerializationSecurityManagerImpl

public abstract class AbstractSerializationSecurityManager extends Object implements SerializationSecurityManager
Assumptions made: - plugin state modifications are rare and we can afford recalculating the plugin-generated whitelist from scratch
  • Field Details

    • completeClassNameWhitelist

      protected volatile com.google.common.base.Optional<Set<String>> completeClassNameWhitelist
    • pluginProvidedClassNameWhitelist

      protected volatile List<String> pluginProvidedClassNameWhitelist
  • Constructor Details

    • AbstractSerializationSecurityManager

      protected AbstractSerializationSecurityManager(com.atlassian.plugin.PluginAccessor pluginAccessor, com.atlassian.plugin.event.PluginEventManager pluginEventManager, SystemSerializableClassWhitelistProvider systemSerializableClassWhitelistProvider)
  • Method Details

    • getClassNameWhitelist

      public Set<String> getClassNameWhitelist()
      Description copied from interface: SerializationSecurityManager
      Get set of class names that are whitelisted for purpose of serialization. Returned set might be immutable.
      Specified by:
      getClassNameWhitelist in interface SerializationSecurityManager
    • isBlacklisted

      public boolean isBlacklisted(@NotNull @NotNull Class<?> type, @NotNull @NotNull SerializationSecurityMethod method)
      Description copied from interface: SerializationSecurityManager
      returns true for classes that should not be serialised or deserialised.
      Specified by:
      isBlacklisted in interface SerializationSecurityManager
      Returns:
    • registerPluginEventListeners

      @PostConstruct public void registerPluginEventListeners() throws Exception
      Throws:
      Exception
    • unregisterPluginEventListeners

      @PreDestroy public void unregisterPluginEventListeners() throws Exception
      Unregistering event listener on PreDestroy can save from processing multiple events when all plugins will be unregistered
      Throws:
      Exception
    • pluginUninstalled

      public void pluginUninstalled(com.atlassian.plugin.event.events.PluginUninstalledEvent pluginUninstalledEvent)
    • pluginUpgraded

      public void pluginUpgraded(com.atlassian.plugin.event.events.PluginUpgradedEvent pluginUpgradedEvent)
    • pluginEnabled

      public void pluginEnabled(com.atlassian.plugin.event.events.PluginEnabledEvent pluginEnabledEvent)
    • pluginDisabled

      public void pluginDisabled(com.atlassian.plugin.event.events.PluginDisabledEvent pluginDisabledEvent)
    • pluginModuleEnabled

      public void pluginModuleEnabled(com.atlassian.plugin.event.events.PluginModuleEnabledEvent pluginModuleEnabledEvent)
    • pluginModuleDisabled

      public void pluginModuleDisabled(com.atlassian.plugin.event.events.PluginModuleDisabledEvent pluginModuleDisabledEvent)
    • recalculateMasterClassWhitelist

      protected final void recalculateMasterClassWhitelist()
      This method should be called by implementations after any of the class whitelist sources has changed.
    • addWhitelistedClassNames

      protected abstract void addWhitelistedClassNames(@NotNull com.google.common.collect.ImmutableSet.Builder<String> whitelistBuilder)
      This method should be overridden by implementations to modify class whitelist.