Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-28839

Reorganize explorer packages, make service pluggable

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 11.1, 2021.0
    • Component/s: Explorer
    • Upgrade notes:
      Hide

      API moved to JSF-specific modules (adapting to the new API when needed):

      • nuxeo.conf property 'org.nuxeo.apidoc.hide.seam.components'
      • classes SeamComponentInfoDocAdapter, SeamComponentInfo, SeamComponentInfoImpl, SeamComponentWO, SeamComponentIntrospector, SeamRuntimeIntrospector,
      • SnapshotPersister#persistSeamComponents
      • SnapshotPersister#persistSeamComponent
      • DistributionSnapshot#getSeamComponentIds
      • DistributionSnapshot#getSeamComponents
      • DistributionSnapshot#getSeamComponent(String id)
      • DistributionSnapshot#containsSeamComponents
      • SnapshotFilter#includeSeamComponent
      • ApiBrowser#viewSeamComponent
      • ApiBrowser#listSeamComponents
      • ApiBrowser#listSeamComponentsSimple
      • Distribution#showSeamComponent

      Removed APIs:

      • SnapshotManager#initSeamContext(HttpServletRequest request) (replaced by initWebContext)
      • DistributionSnapshot#getServerInfo (kept internal to runtime snapshot only)
      • DistributionSnapshot#getSpi (unused for now)
      • ComponentInfo#getExtensionPoint(String name)

      Added APIs:

      • SnapshotManager#initWebContext(HttpServletRequest request)
      • SnapshotManager#getPlugins and SnapshotManager#getPlugin(id)
      • DistributionSnapshot#getPluginSnapshots
      • DistributionSnapshot#getJsonMapper, as well as #readJson and #writeJson (only implemented for RuntimeSnapshot)
      • DistributionSnapshot#getBundles (for json export)
      • ServiceInfo#getBundle (for json export)
      • ApiBrowser#plugin (used to plug the webengine UI part)
      • Distribution#getPluginMenu
      • Distribution#getJson

      Modified APIs: changed methods relying on Collection to List, as order can matter:

      • BundleInfo#getComponents
      • ComponentInfo#getExtensionPoints
      • ComponentInfo#getExtensions
      • ExtensionPointInfo#getExtensions

      Package changes:

      • added package platform-explorer-jsf (and kept legacy package platform-explorer)

      Module changes:

      • added nuxeo-apidoc-jsf and nuxeo-apidoc-jsf-webengine to the nuxeo-jsf-ui repository
      • moved back nuxeo-apidoc-webengine from the nuxeo-jsf-ui repository to the nuxeo repository
      Show
      API moved to JSF-specific modules (adapting to the new API when needed): nuxeo.conf property 'org.nuxeo.apidoc.hide.seam.components' classes SeamComponentInfoDocAdapter, SeamComponentInfo, SeamComponentInfoImpl, SeamComponentWO, SeamComponentIntrospector, SeamRuntimeIntrospector, SnapshotPersister#persistSeamComponents SnapshotPersister#persistSeamComponent DistributionSnapshot#getSeamComponentIds DistributionSnapshot#getSeamComponents DistributionSnapshot#getSeamComponent(String id) DistributionSnapshot#containsSeamComponents SnapshotFilter#includeSeamComponent ApiBrowser#viewSeamComponent ApiBrowser#listSeamComponents ApiBrowser#listSeamComponentsSimple Distribution#showSeamComponent Removed APIs: SnapshotManager#initSeamContext(HttpServletRequest request) (replaced by initWebContext) DistributionSnapshot#getServerInfo (kept internal to runtime snapshot only) DistributionSnapshot#getSpi (unused for now) ComponentInfo#getExtensionPoint(String name) Added APIs: SnapshotManager#initWebContext(HttpServletRequest request) SnapshotManager#getPlugins and SnapshotManager#getPlugin(id) DistributionSnapshot#getPluginSnapshots DistributionSnapshot#getJsonMapper, as well as #readJson and #writeJson (only implemented for RuntimeSnapshot) DistributionSnapshot#getBundles (for json export) ServiceInfo#getBundle (for json export) ApiBrowser#plugin (used to plug the webengine UI part) Distribution#getPluginMenu Distribution#getJson Modified APIs: changed methods relying on Collection to List, as order can matter: BundleInfo#getComponents ComponentInfo#getExtensionPoints ComponentInfo#getExtensions ExtensionPointInfo#getExtensions Package changes: added package platform-explorer-jsf (and kept legacy package platform-explorer) Module changes: added nuxeo-apidoc-jsf and nuxeo-apidoc-jsf-webengine to the nuxeo-jsf-ui repository moved back nuxeo-apidoc-webengine from the nuxeo-jsf-ui repository to the nuxeo repository
    • Team:
      AT
    • Sprint:
      nxAT 11.1.14, nxAT 11.1.15, nxAT 11.1.16
    • Story Points:
      2

      Description

      The apidoc* modules are currently done in the following way:

      • nuxeo-apidoc-core holding most of the code and logics
      • nuxeo-apidoc-repo holding more repsitory-related logics as well as JSF dependencies
      • nuxeo-apidoc-webengine holding the webengine pages to download/upload/export a zipped runtime distribution, as well as JSF dependencies

      There are 2 packages:

      After the reorganization, we would like 3 packages, with 4 modules:

      • nuxeo-apidoc-core holding the interfaces and everything needed to snapshot the current live runtime (with corresponding package, independent of UI, to serve need at NXP-27952)
      • nuxeo-apidoc-repo holding the persistence logics as Nuxeo documents and corresponding XML export features
      • nuxeo-apidoc-webengine holding the webengine pages to explore live repository as well as persisted one (to be put back in nuxeo main repository instead of the JSF package)
      • nuxeo-apidoc-jsf holding the JSF dependencies, for JSF display of documents but also export of JSF-specific configurations (typically seam components) – this extract will probably require more pluggable points in the apidoc-core module logics

      Name of corresponding packages:

      • legacy platform-explorer package will be kept, holding everything except the JSF dependencies
        • TODO: check if conflicts are still valid (see NXP-27856), at least nuxeo-dam and nuxeo-social-collaboration have been deprecated for a long time. nuxeo-quota might be marked as conflicting because it's annoying for export features (to be checked in tests)
      • a new platform-explorer-jsf package will be added to keep the JSF exports for now

      Later, we'll see if extracting a dedicated rest-api is useful, without the "repo" dependencies.

      NB: with the nex extension point, it appeared that json export was broken and not used anywhere else than in tests: this work includes a fix for this export (without keeping compatibility in the format) to make it usable for further work with NXP-28838, only on "live" distributions (json export on persisted distributions will not be implemented here).

        Attachments

        1. legacy-test-export.json
          2.21 MB
          Anahide Tchertchian
        2. new-test-export.json
          1.81 MB
          Anahide Tchertchian

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - 0 minutes
                  0m
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 1 week, 4 days, 2 hours
                  1w 4d 2h