Skip to content

Commit

Permalink
refactor: refactor extension module (#28)
Browse files Browse the repository at this point in the history
Change maven coordinates, rename packages, add README

Fixes #16

Co-authored-by: Dario Götze <[email protected]>
  • Loading branch information
mcollovati and Dudeplayz committed May 8, 2023
1 parent 49cf256 commit c816758
Show file tree
Hide file tree
Showing 42 changed files with 375 additions and 292 deletions.
12 changes: 6 additions & 6 deletions code-with-quarkus/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.acme</groupId>
<artifactId>code-with-quarkus</artifactId>
<version>1.0.0-SNAPSHOT</version>
<groupId>com.github.mcollovati</groupId>
<artifactId>quarkus-hilla-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.10.1</compiler-plugin.version>
<maven.compiler.release>17</maven.compiler.release>
Expand Down Expand Up @@ -39,9 +39,9 @@
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.acme</groupId>
<artifactId>hilla-test-extension</artifactId>
<version>1.0.0-SNAPSHOT</version>
<groupId>com.github.mcollovati</groupId>
<artifactId>quarkus-hilla</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
Expand Down
8 changes: 4 additions & 4 deletions hilla-jandex/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.github.mcollovati.hilla</groupId>
<groupId>com.github.mcollovati</groupId>
<artifactId>hilla-jandex</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Hilla Jandex index</name>
<name>Hilla - Jandex</name>
<description>Jandex index for Hilla packages</description>

<properties>
Expand Down Expand Up @@ -53,9 +53,9 @@
<artifactId>engine-runtime</artifactId>
</dependency>
<dependency>
<groupId>com.github.mcollovati.hilla</groupId>
<groupId>com.github.mcollovati</groupId>
<artifactId>hilla-shaded-deps</artifactId>
<version>1.0-SNAPSHOT</version>
<version>${project.version}</version>
</dependency>
</dependencies>

Expand Down
14 changes: 9 additions & 5 deletions hilla-shaded-deps/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.github.mcollovati.hilla</groupId>
<groupId>com.github.mcollovati</groupId>
<artifactId>hilla-shaded-deps</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Hilla shaded dependencies</name>
<description>Minimal set of classes required by Hilla at runtime</description>
<name>Hilla - Shaded dependencies</name>
<description>Minimal set of Spring classes required by Hilla at runtime</description>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down Expand Up @@ -66,7 +66,9 @@
<include>org/springframework/core/io/InputStreamSource.class</include>
<include>org/springframework/core/io/Resource.class</include>
<include>org/springframework/core/io/ResourceLoader.class</include>
<include>org/springframework/core/io/support/ResourcePatternResolver.class</include>
<include>
org/springframework/core/io/support/ResourcePatternResolver.class
</include>
<include>org/springframework/util/Assert.class</include>
<include>org/springframework/util/ClassUtils.class</include>
<include>org/springframework/util/CollectionUtils.class</include>
Expand Down Expand Up @@ -102,7 +104,9 @@
<include>org/springframework/beans/factory/*Exception.class</include>
<include>org/springframework/beans/factory/*Factory.class</include>
<include>org/springframework/beans/factory/ObjectProvider.class</include>
<include>org/springframework/beans/factory/config/AutowireCapableBeanFactory.class</include>
<include>
org/springframework/beans/factory/config/AutowireCapableBeanFactory.class
</include>
</includes>
</filter>
</filters>
Expand Down
4 changes: 4 additions & 0 deletions hilla-test-extension/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ node_modules/
frontend/generated/
pnpmfile.js
vite.generated.ts
deployment/package*.json
deployment/vite*.ts
deployment/tsconfig.json
deployment/types.d.ts

# Browser drivers for local integration tests
drivers/
Expand Down
54 changes: 54 additions & 0 deletions hilla-test-extension/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Quarkus - Hilla

A [Quarkus](https://quarkus.io) extension to run [Hilla](https://hilla.dev)
applications on Quarkus.

Hilla is an open source framework, provided
by [Vaadin Ltd.](https://vaadin.com),
that integrates a Spring Boot Java backend with a reactive TypeScript frontend.

This extension replaces the Spring Boot backend with Quarkus Context &
Dependency Injection (CDI) and
RESTEasy Reactive for a simpler integration with Quarkus, but preserves the
main features of the Hilla Framework, such
as [Endpoints](https://hilla.dev/docs/lit/guides/endpoints),
[Reactive Endpoints](https://hilla.dev/docs/lit/guides/reactive-endpoints)
and [Security](https://hilla.dev/docs/lit/guides/security).

**NOTE**: This is an **unofficial community extension**, and it is **not** directly
related nor supported by Vaadin Ltd.

## Limitations

The current Hilla support has some known limitations:

* The endpoint prefix is not configurable
* [Stateless Authentication](https://hilla.dev/docs/lit/guides/security/spring-stateless)
is not supported
* Native image compilation does not work

## Contributors ✨

Thanks goes to these wonderful
people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mcollovati"><img src="https://avatars.githubusercontent.com/u/4648894?s=100" width="100px;" alt="Marco Collovati"/><br /><sub><b>Marco Collovati</b></sub></a><br /><a href="https://github.com/mcollovati/quarkus-hilla/commits?author=mcollovati" title="Code">💻</a> <a href="#maintenance-mcollovati" title="Maintenance">🚧</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dudeplayz"><img src="https://avatars.githubusercontent.com/u/15174076?v=4?s=100" width="100px;" alt="Dario Götze"/><br /><sub><b>Dario Götze</b></sub></a><br /><a href="https://github.com/mcollovati/quarkus-hilla/commits?author=Dudeplayz" title="Code">💻</a> <a href="#maintenance-Dudeplayz" title="Maintenance">🚧</a></td>
</tr>
</tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows
the [all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind are welcome!
187 changes: 100 additions & 87 deletions hilla-test-extension/deployment/pom.xml
Original file line number Diff line number Diff line change
@@ -1,89 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.acme</groupId>
<artifactId>hilla-test-extension-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>hilla-test-extension-deployment</artifactId>
<name>Hilla Test Extension - Deployment</name>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc-deployment</artifactId>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-quarkus-deployment</artifactId>
<version>${vaadin-quarkus.version}</version>
<exclusions>
<exclusion>
<groupId>com.vaadin</groupId>
<artifactId>flow-server</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson-deployment</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-servlet-deployment</artifactId>
</dependency>
<dependency>
<groupId>org.acme</groupId>
<artifactId>hilla-test-extension</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5-internal</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-security-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-security-test-utils</artifactId>
<scope>test</scope>
<version>${quarkus.version}</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.24.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${quarkus.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.github.mcollovati</groupId>
<artifactId>quarkus-hilla-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>quarkus-hilla-deployment</artifactId>
<name>Quarkus - Hilla - Deployment</name>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc-deployment</artifactId>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-quarkus-deployment</artifactId>
<version>${vaadin-quarkus.version}</version>
<exclusions>
<exclusion>
<groupId>com.vaadin</groupId>
<artifactId>flow-server</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-jackson-deployment</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive-servlet-deployment</artifactId>
</dependency>
<dependency>
<groupId>com.github.mcollovati</groupId>
<artifactId>quarkus-hilla</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5-internal</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-security-deployment</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-security-test-utils</artifactId>
<scope>test</scope>
<version>${quarkus.version}</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${quarkus.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<vaadin.frontend.frontend.folder>${project.build.directory}/frontend
</vaadin.frontend.frontend.folder>
<vaadin.project.frontend.generated>${project.build.directory}/frontend/generated
</vaadin.project.frontend.generated>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.acme.hilla.test.extension.deployment;
package com.github.mcollovati.quarkus.hilla.deployment;

import javax.annotation.security.DenyAll;
import javax.annotation.security.PermitAll;
Expand All @@ -8,6 +8,13 @@
import java.util.Set;
import java.util.function.Predicate;

import com.github.mcollovati.quarkus.hilla.HillaFormAuthenticationMechanism;
import com.github.mcollovati.quarkus.hilla.HillaSecurityPolicy;
import com.github.mcollovati.quarkus.hilla.HillaSecurityRecorder;
import com.github.mcollovati.quarkus.hilla.QuarkusEndpointConfiguration;
import com.github.mcollovati.quarkus.hilla.QuarkusEndpointProperties;
import com.github.mcollovati.quarkus.hilla.deployment.asm.EndpointTransferMapperClassVisitor;
import com.github.mcollovati.quarkus.hilla.deployment.asm.PushEndpointClassVisitor;
import dev.hilla.Endpoint;
import dev.hilla.EndpointInvoker;
import dev.hilla.EndpointRegistry;
Expand Down Expand Up @@ -39,17 +46,10 @@
import io.quarkus.undertow.deployment.ServletBuildItem;
import io.quarkus.vertx.http.runtime.HttpBuildTimeConfig;
import io.quarkus.vertx.http.runtime.security.HttpAuthenticationMechanism;
import org.acme.hilla.test.extension.HillaAtmosphereObjectFactory;
import org.acme.hilla.test.extension.HillaFormAuthenticationMechanism;
import org.acme.hilla.test.extension.HillaSecurityPolicy;
import org.acme.hilla.test.extension.HillaSecurityRecorder;
import org.acme.hilla.test.extension.QuarkusEndpointConfiguration;
import org.acme.hilla.test.extension.QuarkusEndpointController;
import org.acme.hilla.test.extension.QuarkusEndpointProperties;
import org.acme.hilla.test.extension.QuarkusViewAccessChecker;
import org.acme.hilla.test.extension.deployment.asm.EndpointTransferMapperClassVisitor;
import org.acme.hilla.test.extension.deployment.asm.PushEndpointClassVisitor;
import org.acme.hilla.test.extension.deployment.asm.SpringReplacementsClassVisitor;
import com.github.mcollovati.quarkus.hilla.HillaAtmosphereObjectFactory;
import com.github.mcollovati.quarkus.hilla.QuarkusEndpointController;
import com.github.mcollovati.quarkus.hilla.QuarkusViewAccessChecker;
import com.github.mcollovati.quarkus.hilla.deployment.asm.SpringReplacementsClassVisitor;
import org.atmosphere.client.TrackMessageSizeInterceptor;
import org.atmosphere.cpr.ApplicationConfig;
import org.atmosphere.cpr.AtmosphereServlet;
Expand Down Expand Up @@ -103,7 +103,7 @@ void registerBeans(BuildProducer<AdditionalBeanBuildItem> beans) {
beans.produce(
new AdditionalBeanBuildItem(QuarkusEndpointProperties.class));
beans.produce(AdditionalBeanBuildItem.builder().addBeanClasses(
"org.acme.hilla.test.extension.QuarkusEndpointControllerConfiguration")
"com.github.mcollovati.quarkus.hilla.QuarkusEndpointControllerConfiguration")
.addBeanClasses(QuarkusEndpointConfiguration.class,
QuarkusEndpointController.class)
.setDefaultScope(BuiltinScope.SINGLETON.getName())
Expand Down
Loading

0 comments on commit c816758

Please sign in to comment.