Skip to content

feat(plugins-portlet): migrate OSGi Plugins portlet from Dojo to Angular #34732#34957

Open
hmoreras wants to merge 18 commits intomainfrom
issue-34732-plugins-portlet
Open

feat(plugins-portlet): migrate OSGi Plugins portlet from Dojo to Angular #34732#34957
hmoreras wants to merge 18 commits intomainfrom
issue-34732-plugins-portlet

Conversation

@hmoreras
Copy link
Contributor

@hmoreras hmoreras commented Mar 11, 2026

Proposed Changes

Migrates the legacy Dojo/JSP-based OSGi Plugins portlet (dynamic-plugins) to a fully Angular implementation.

Frontend — new libs/portlets/dot-plugins library

  • DotOsgiService (libs/data-access) — typed HTTP client for all /api/v1/osgi endpoints: list, upload, deploy/undeploy, start/stop, process exports, extra packages, restart
  • DotPluginsListStore — NgRx signals store managing bundle list state with loading / refreshing / loaded / error / restarting transitions; subscribes to OSGI_FRAMEWORK_RESTART and OSGI_BUNDLES_LOADED WebSocket events for cluster-wide real-time sync
  • DotPluginsListComponent — data table combining installed bundles + undeployed JARs; drag-and-drop JAR upload (with nested dragenter counter); context menu per row (start/stop/undeploy/process-exports/add-to-bundle); toolbar with search, refresh, extra packages, and OSGi restart
  • DotPluginsUploadComponent — dialog with PrimeNG FileUpload dropzone for uploading one or more JAR files
  • DotPluginsExtraPackagesComponent — dialog to edit or reset the OSGi exported packages list
  • Route registered at plugins path in app.routes.ts with MenuGuardService

Backend

  • Renamed portlet dynamic-pluginsplugins-legacy in portlet.xml; new Angular portlet plugins registered alongside it
  • PortletID.PLUGINS and PortletID.PLUGINS_LEGACY added to the enum
  • Task260320AddPluginsPortletToMenurunonce upgrade task that replaces plugins-legacy (formerly dynamic-plugins) in all layouts with the new Angular plugins portlet; plugins-legacy is removed from the sidebar but remains registered in portlet.xml and can be re-added manually if needed; clears layout cache
  • 58 i18n keys added to Language.properties

Checklist

  • Tests — unit tests for store, all three components, and DotOsgiService
  • Translations — English keys added; translations for other locales pending
  • Security Implications Contemplated — OSGi restart and undeploy are privileged, cluster-wide operations; the portlet is protected by MenuGuardService. No new REST endpoints introduced; existing /api/v1/osgi endpoints are used.

Additional Info

  • The legacy portlet (plugins-legacy) is removed from all layouts so it no longer appears in the sidebar; it remains registered in portlet.xml and can be added back manually if needed.
  • The OSGI_BUNDLES_LOADED WebSocket event is debounced 5 s to avoid rapid-fire reloads during bundle resolution after a restart.
  • Undeployed JARs (files present in the deploy folder but not yet installed) are surfaced as a distinct row type (state: 'undeployed') with a single Deploy action.

Screenshots

Original Updated
Legacy Dojo portlet Angular portlet

This PR fixes: #34732

@github-actions github-actions bot added the Area : Frontend PR changes Angular/TypeScript frontend code label Mar 11, 2026
@github-actions github-actions bot added the Area : Backend PR changes Java/Maven backend code label Mar 12, 2026
@hmoreras hmoreras changed the title modernization ( Plugins Portlet ) : #34732 Migration Dojo to Angular feat(plugins-portlet): migrate OSGi Plugins portlet from Dojo to Angular #34732 Mar 20, 2026
@hmoreras hmoreras marked this pull request as ready for review March 20, 2026 22:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area : Backend PR changes Java/Maven backend code Area : Frontend PR changes Angular/TypeScript frontend code

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Dojo to Angular: Plugins Portlet

1 participant