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

Add a technical overview page to the wiki #137

Open
mcollovati opened this issue Jun 22, 2023 · 3 comments
Open

Add a technical overview page to the wiki #137

mcollovati opened this issue Jun 22, 2023 · 3 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@mcollovati
Copy link
Owner

The page should provide information about the Hilla integration

  • Reimplemented/extended components
  • Spring removal hacks
  • current limitations

This ticket can be used to collect findings and potential changes that could be applied to Hilla to make integration easier to implement and maintain (for Quarkus, but also other environments)

@mcollovati mcollovati moved this to 📋 Backlog in quarkus-hilla backlog Jun 22, 2023
@mcollovati mcollovati added the documentation Improvements or additions to documentation label Jun 22, 2023
@mcollovati mcollovati moved this from 📋 Backlog to 🔖 Ready in quarkus-hilla backlog Jun 22, 2023
@mcollovati
Copy link
Owner Author

mcollovati commented Jun 23, 2023

Partial list, work in progress

  • created a shaded jar to contain the minimum possible set of Spring classes that allows to compile a module with Hilla components
    • ApplicationContext and directly referenced interfaces, classes and exceptions)
    • Subset of spring-web classes to be able to wrap the EndpointController instead of copy/paste its logics
    • To support Auto Grid feature, a subset of spring-data-common is requierd
  • create a jandex index for Hilla
  • Partial implementation of a custom ApplicationContext, required by EndpointInvoker and EndpointController
  • Custom ViewAccessChecker integrated with Quarkus security
  • Custom Atmosphere InjectableObjectFactory to inject required beans in PushEndpoint
  • Custom security policy and form authentication mechanism
  • Byte code manipulation to remove/replace calls to Spring classes
    • replacement of @Autowired annotation
    • TODO: list classes and methods

Hilla refactoring that may ease development and maintenance

  • Replacement of field injection with constructor injection
  • Remove direct usage of ApplicationContext in Hilla components, providing instead the required beans or collections of beans
  • Hilla OOB Jandex index
  • TODO: other to be added

Huge refactoring/breaking changes

  • Hilla 2.3 Auto Grid: introduce Pageable abstraction to be used in ListService instead of using Spring org.springframework.data.domain.Pageable
  • Introduce and abstraction for spring ResponseEntity to be used in EndpointController. This should allow reusing the Hilla controller in any servlet-based framework, by wrapping it.
  • Another breaking refactoring, could be creating abstraction for request/response as in Vaadin so that the controller could be used even with not servlet toolkits (e.g. Vert.x, Micronaut, ...)

@mcollovati mcollovati moved this from 🔖 Ready to 🏗 In progress in quarkus-hilla backlog Jun 23, 2023
@mcollovati
Copy link
Owner Author

@mcollovati
Copy link
Owner Author

DevToolsDatabase disabled by removing the related META-INF/services file because it is strongly coupled with Spring; in particular, it uses ApplicationContextProvider that implements ApplicationContextAware, that is not provided nor handled by the extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
Status: 🏗 In progress
Development

No branches or pull requests

2 participants