All Classes and Interfaces
Class
Description
A wrapper around
ArchivingSettings which manages
both SQL-stored settings and JMX-controlled settings.An
Upgrade which is also a RepositoryInitialization.The release calendar.
The comments of a task.
The host's
TaskExecutionContext, backed by a PluginTask and its configuration.Dependencies from a gate to another release (possibly narrowed down to a phase and a task).
Using ServiceLoader facility will find all implementations of XLReleaseEventListener defined under META-INF/services
Used by external plugins
Registers all beans annotated as
EventListener with the eventBusProvides release exports in various formats.
Used for exposing individual services stop/start via java MBean.
Disable spring-boot configured filter registration beans
Gates are special type of task that contains conditions to be fulfilled before the release can continue.
A more efficient kryo
Serializer for GregorianCalendar instances (which
are created via Calendar.getInstance() if the locale is not thai or japanese, so
JapaneseImperialCalendar and BuddhistCalendar are not supported by this serializer).If request header contains `X-HTTP-Auth-Override` we won't send back the header `WWW-Authenticate` OR
since event source (sse) can't use custom headers this will also check if the request is for the SSE endpoint
Authentication plugins should provide a bean with the IdentityProvider's they provide.
The following URLs are not valid on XLR side.
A kryo
Serializer for guava-libraries ImmutableList.This class must be implemented when an upgrade must be performed
ONLY on template import
A representation of a user
Principal that is registered with an Internal Release
Provider.Thrown by
PluginManifest.from(Bundle) when a bundle declares itself a Spring plugin
(it has an X-Plugin-Context header) but its manifest is malformed.A Spring FactoryBean that creates a Jackson 3 JsonMapper (tools.jackson.databind.json.JsonMapper).
A format for joda
DateTime, that stores the millis, chronology and
time zone as separate attributes.A format for Joda
Interval, that stores the start and end millis, and chronology
as separate attributes.A Kryo serializer for joda
LocalDate.A Kryo serializer for joda
LocalDateTime.Since spring security 3.2.0, internal authentication exception stops the authentication: https://jira.spring.io/browse/SEC-2367.
Retrieves group email from an LDAP directory.
Central utility for enforcing tenant limits across XL Release.
Enum defining different types of limits that can be enforced
This is XLR specific password encrypter.
filter to get personal access token from request header or basic auth header
Persistence interceptors allow us to modify objects just before they're being persisted into the database.
A phase in a release.
The GANTT planner used to adjust a release's dates and links.
Discovers Spring plugin bundles via the
PluginManifest contract, builds their child
context via PluginContextFactory, and guarantees deterministic teardown on
removedBundle - including plain bundle.stop() with no uninstall, the gap a
ServiceTracker-only approach cannot close (see
.opencode/tech/osgi.md:58-62: removedBundle fires synchronously, on the calling
thread, with a fully usable bundle classloader, for uninstall, stop-alone, and framework
shutdown alike).Purges the enumerable set of JDK/Spring caches that would otherwise pin a departing plugin's
classloader - a hand-rolled list, after rejecting
ClassLoaderLeakPreventor (stale since 2016, and its API assumes a
ServletContextEvent rather than an arbitrary ClassLoader).A production safety net, independent of the CI-only leak-gate test suite: after
PluginTeardown.teardown(com.xebialabs.xlrelease.osgi.spring.PluginRuntime) completes, watches whether a plugin's classloader
actually becomes collectible within a bounded delay, and logs at ERROR - with the
plugin's symbolic name and install/teardown timestamps - if it doesn't.Thrown by
PluginContextFactory.build(org.osgi.framework.Bundle, com.xebialabs.xlrelease.osgi.spring.PluginManifest, org.springframework.context.support.GenericApplicationContext) when construction fails after the child
ApplicationContext was created - carries the partially-built PluginRuntime so
the caller can route cleanup through the same PluginTeardown used for normal removal,
rather than PluginContextFactory closing it internally.Builds a plugin's child
AnnotationConfigApplicationContext from a PluginManifest
+ Bundle, parented to the curated PluginApiParentContext.A single instance is shared between the root host
ApplicationContext (as this
@Component) and every plugin's curated parent context (PluginApiParentContext
registers the exact same object as a singleton there), mirroring PluginExtensionRegistryImpl's
sharing pattern.Host-facing read API for discovering plugin implementations of
HostExtensionPoint
subtypes.A single instance is shared between the root host
ApplicationContext (as this
@Component) and every plugin's curated parent context (PluginApiParentContext
registers the exact same object as a singleton there) - not two copies, one shared reference,
so a plugin-side registration is immediately visible to host-side queries.Push counterpart to
PluginExtensionRegistryImpl.extensions(Class): a host component that wants to maintain
externally-visible derived state (e.g.OSGi-service feeder for
PluginExtensionRegistryImpl: a bundle that contributes a
Declarative Services component (rather than a Spring plugin context, see
PluginContextFactory) implementing one of HostExtensionPointCatalog's
interfaces is discovered here and registered into the same registry, under the same
Bundle-SymbolicName key, as any Spring-plugin-context extension.The manifest-header contract a bundle must satisfy to be recognized as a "Spring plugin" by
the host:
Everything the host needs to reference a running plugin instance: the OSGi bundle it came
from, its parsed manifest, and its child Spring context.
Fires
TaskExecutorExtension.onAbort(com.xebialabs.xlrelease.osgi.api.tasks.TaskAbortContext) after a plugin task is aborted, so the extension can
release whatever external state it parked while suspended (a delegated remote task, a
reservation) — execute is never re-entered after an abort, so without this hook that
state would be orphaned.Establishes the thread context a plugin task body needs, runs it, and unwinds that context again.
The one compiled executor behind every plugin-contributed task type.
Finds the plugin extension that implements a given task type.
Thrown when a plugin task's type cannot be matched to exactly one extension.
The host-side translation of what a
TaskExecutorExtension returned, plus everything the
execution context collected while it ran.Builds the results for a translated outcome.
What one execution of a plugin task produced, on its way from the worker back to the release
actor.
Turns one plugin task execution's results into
Changes.Merges a
PluginTaskConfiguration's input/output properties from an incoming REST update
into the persisted task, mirroring CustomScriptTaskUpdater's handling of PythonScript.REST/UI view conversion for plugin tasks, mirroring
CustomScriptTaskViewConverter.The single, strictly-ordered, fully idempotent teardown procedure used by every plugin removal
path - this is the load-bearing safety mechanism of the entire OSGi plugin platform.
Java class so it can be used in our rest services
Retrieves a principal's data from an external source.
The user profile data associated with an Digital.ai Release account.
Provides redirect to certain URL on authentication success.
Java class so it can be used in our rest services
This is a copy of
PageImpl with a change in constructor.Releases are the core business object manipulated in Digital.ai Release.
The server running XL Release.
XLR specific RequestWrapper that populates remoteUser
The permissions assigned to a security role.
The login names or LDAP groups that are part of a security role.
filter to get personal access token from request header or basic auth header
A Life cycle finite state machine for script execution.
Binding exposed to REST extension endpoints additional to the public API.
Returns a global view of the permissions granted to the currently logged in user.
The Digital.ai Release settings.
Configuration objects are used to externalize configuration that can be referenced by custom script tasks.
This filter is only used to deliberately slow down requests.
Release details available to users who have access to the task.
A task in a release.
The teams defined on a release.
Converter for
TeamViewA PasswordEncryptingCiConverter extension that doesn't throw errors when reading unresolved CIs or passwords encrypted with a different server key.
Upgrade result.
Handle file uploads used in various features of Digital.ai Release.
The user accounts (either internal or external) known to Digital.ai Release.
LdapUserDetailsMapper implementation to get original username from LDAP by using proper attribute name
Returns possible variable values.
Service to add variable operations.
A copy of
Variable class
to keep all internal views in the same package.Used to avoid default redirect on login that is not supported by our acceptance test launcher.
Used to avoid default redirect on logout that is not supported by our acceptance test launcher.
Digital.ai Release specific event bus.
JAX-RS MessageBodyReader/Writer for JSON using Jackson 3.
Static web resources (images, stylesheets...) used by the Digital.ai Release UI.
This format factory supports a custom writer, which can be used, for instance, to stream the result.