Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spring Integration #57

Comments

@boubaker
Copy link
Member

boubaker commented Apr 5, 2023

Rationale

The Development frameworks, standards and dependencies evolves over the time very quickly. Currently, we have a custom stack of Core features that even implements some JSRs. This stack of features is very hard to maintain and evolve. Most of implemented JSRs are outdated and even are incompatible with new Jakarta EE specifications.

Knowing that Meeds product aims to provide high level applications rather than being a framework provider, we will need to reuse a set of third party libraries to ease the production of features.

In order to make Meeds product development process smoother and community learning curve optimized, we aim by the current MIP of making Spring Framework the new core framework.

1. Functional Requirements

No functional change is needed.

2. Technical Requirements

Expected Volume & Performance

No performance regression should be observed by this MIP.

Security

No major change in the Security model has to be made, we still using deprecated PicketLink IDM library until this first step of Spring integration is made.

Extensibility

The old definition of Meeds Kernel IoC components has to remain possible in addition to the fact that Spring Beans are possible to use as well. This should help to progressively migrate Components from Kernel IoC definition to Spring Beans.

Configurability

The usage of Spring has to remain builtin and doesn't need additional JARs installation.

Upgradability

No need for data upgrades in this MIP. The data stores should remain exactly the same.

Existing Features

A first addon full upgrade has to be made to make it as an example of Spring integration.

Feature Flags

No feature flag is needed.

3. Software Architecture

Security

A Spring integration has to be made to reuse the existing JAAS login module gatein-domain. This login module with its map of roles has to be mapped with Spring Security in order to use @RolesAllowed or @Secured in Spring Rest Controller Beans.

Access

The REST endpoints of each addon has to be accessible from the WebARchive of the addon itself. We will no more need to use a single entry point for all REST endpoints (/rest). This will help to separate the addons in Microservices when need in the architecture evolution later.

Services & processing

Each addon will be able to define its own Spring application by using the following annotation:

@SpringBootApplication(
  scanBasePackages = {
      "io.meeds.XYZ",
      "io.meeds.spring.integration"
  }
)

The package io.meeds.XYZ is the specific package of the addon that will be used to scan for components.
The package io.meeds.spring.integration has to be used as well to allow retrieving the builtin beans used to make the integration between Meeds Kernel IoC and Spring Beans. The beans of this package aims to:

  • Make Meeds Kernel IoC single Service instances injectable using @Autwired or similar annotations (like @Autwired)
  • Inject Application Spring Beans into Meeds Kernel IoC in order to make it accessible using container.getInstanceOfType
  • Disable Logback initialization in WebApp context after having initialized it already in Meeds Server globally
  • Propagate JAAS principal into Spring Security Context for a given user Request on API
  • Initiate ExoContainerContext.setCurrentContainer and RequestLifeCycle.begin for Transaction management for each HTTP call on Application REST endpoint.

Data and persistence

No data model change

@boubaker
Copy link
Member Author

boubaker commented Apr 7, 2023

Not prioritized for now

@boubaker boubaker closed this as not planned Won't fix, can't repro, duplicate, stale Apr 7, 2023
@boubaker boubaker reopened this Aug 25, 2023
@boubaker boubaker moved this to Draft in MIP Board Aug 25, 2023
boubaker added a commit to Meeds-io/poll that referenced this issue Aug 25, 2023
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 16, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 16, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 17, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 18, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/gatein-sso that referenced this issue Dec 18, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
@boubaker boubaker moved this from Draft to Open in MIP Board Dec 18, 2023
@boubaker boubaker changed the title [Draft] Spring Integration Spring Integration Dec 18, 2023
@boubaker boubaker moved this from Open to Submitted in MIP Board Dec 18, 2023
@boubaker
Copy link
Member Author

Ready for tech spec review by DAO Members (eXo : @rdenarie )

rdenarie pushed a commit to Meeds-io/gatein-sso that referenced this issue Dec 20, 2023
This change will fork PL IDM to maintain compatibility with Tomcat 10 until this is reworked with more modern framework after Meeds-io/MIPs#57 is reworked.
boubaker added a commit to Meeds-io/maven-depmgt-pom that referenced this issue Dec 21, 2023
boubaker added a commit to exoplatform/processes that referenced this issue Jan 12, 2024
…s-io/MIPs#57 (#346)

Upgrade from Commons Lang to apache Lang 3 and to Jakarta Persistence API 3.1
boubaker added a commit to exoplatform/onlyoffice that referenced this issue Jan 12, 2024
…s-io/MIPs#57 (#227)

Upgrade from Commons Lang to apache Lang 3 and to Jakarta Persistence API 3.1.
boubaker added a commit to exoplatform/dlp that referenced this issue Jan 12, 2024
boubaker added a commit to exoplatform/chat-application that referenced this issue Jan 12, 2024
…s-io/MIPs#57 (#692)

Prior to this change, the chat in standalone mode wasn't working due to tests artifacts included into it. This change will ensure to support this mode which wasn't possible since 6.4 due to changed maven transitive dependencies included in WEB-INF/lib of standalone artifact of chatServer.war. In addition, this change will ensure to use the right Servlet introduced in Tomcat 10 upgrade in standalone war instead of previous Juzu Servlet. Besides, this change will cleanup dependencies and upgrade standalone server Tomcat version to use 10.1.17 as the eXo Package Tomcat version.
boubaker added a commit to exoplatform/data-upgrade that referenced this issue Jan 12, 2024
…s-io/MIPs#57 (#180)

Upgrade from Commons Lang to Apache Lang 3 and to Jakarta Persistence API 3.1.
This change will delete useless artifacts declarations as well since the packaging needs the project artifacts only which will enhance the maintainability and ensure to not need to change this addon a lot due to lower layer dependencies changes.
@boubaker
Copy link
Member Author

All PRs Merged.

@boubaker boubaker added this to the 1.6.0-M02 milestone Jan 15, 2024
hbenali pushed a commit to exoplatform/platform-public-distributions that referenced this issue Jan 16, 2024
hbenali pushed a commit to exoplatform/platform-public-distributions that referenced this issue Jan 16, 2024
hbenali added a commit to exo-addons/caldav-integration that referenced this issue Jan 22, 2024
exo-swf pushed a commit to Meeds-io/gamification that referenced this issue Feb 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment