[#519] Add src/main/java9/module-info.java files and a simple IT.

This commit is contained in:
Benjamin Marwell 2022-04-19 22:04:44 +02:00
parent 5812f63a76
commit fbeb7adf61
17 changed files with 252 additions and 5 deletions

View File

@ -0,0 +1,6 @@
module io.jsonwebtoken.jjwt.api {
exports io.jsonwebtoken;
exports io.jsonwebtoken.io;
exports io.jsonwebtoken.lang;
exports io.jsonwebtoken.security;
}

View File

@ -0,0 +1,11 @@
module io.jsonwebtoken.jjwt.ext.gson {
requires transitive com.google.gson;
requires io.jsonwebtoken.jjwt.api;
exports io.jsonwebtoken.gson.io;
provides io.jsonwebtoken.io.Deserializer with
io.jsonwebtoken.gson.io.GsonDeserializer;
provides io.jsonwebtoken.io.Serializer with
io.jsonwebtoken.gson.io.GsonSerializer;
}

View File

@ -69,4 +69,5 @@
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,13 @@
module io.jsonwebtoken.jjwt.ext.jackson {
requires transitive com.fasterxml.jackson.core;
requires transitive com.fasterxml.jackson.databind;
requires io.jsonwebtoken.jjwt.api;
exports io.jsonwebtoken.jackson.io;
provides io.jsonwebtoken.io.Deserializer with
io.jsonwebtoken.jackson.io.JacksonDeserializer;
provides io.jsonwebtoken.io.Serializer with
io.jsonwebtoken.jackson.io.JacksonSerializer;
}

View File

@ -69,4 +69,5 @@
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,9 @@
module io.jsonwebtoken.jjwt.ext.orgjson {
requires transitive org.json;
requires io.jsonwebtoken.jjwt.api;
exports io.jsonwebtoken.orgjson.io;
provides io.jsonwebtoken.io.Deserializer with io.jsonwebtoken.orgjson.io.OrgJsonDeserializer;
provides io.jsonwebtoken.io.Serializer with io.jsonwebtoken.orgjson.io.OrgJsonSerializer;
}

View File

@ -0,0 +1,15 @@
module io.jsonwebtoken.jjwt.impl {
requires io.jsonwebtoken.jjwt.api;
exports io.jsonwebtoken.impl;
exports io.jsonwebtoken.impl.compression;
exports io.jsonwebtoken.impl.lang;
provides io.jsonwebtoken.CompressionCodec with
io.jsonwebtoken.impl.compression.DeflateCompressionAlgorithm,
io.jsonwebtoken.impl.compression.GzipCompressionAlgorithm;
uses io.jsonwebtoken.CompressionCodec;
uses io.jsonwebtoken.io.Deserializer;
uses io.jsonwebtoken.io.Serializer;
}

25
integration-tests/pom.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<parent>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-root</artifactId>
<version>0.12.7-SNAPSHOT</version>
</parent>
<artifactId>jjwt-integration-tests</artifactId>
<name>JJWT :: Integration-Tests</name>
<packaging>pom</packaging>
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
<modules>
<module>unsigned-jackson</module>
</modules>
</project>

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<parent>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-integration-tests</artifactId>
<version>0.12.7-SNAPSHOT</version>
</parent>
<artifactId>jjwt-integration-tests-unsigned-jackson</artifactId>
<name>JJWT :: Integration-Tests :: unsigned-jackson</name>
<description>Create and parse an unsigned JWT using Jackson and JPMS.</description>
<packaging>jar</packaging>
<properties>
<maven.compiler.release>9</maven.compiler.release>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
<dependencies>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<skip>true</skip>
<detectJavaApiLink>false</detectJavaApiLink>
</configuration>
</plugin>
<!--
this plugin needs to be disabled as long as we are stuck with plugin version 3.3.0, as it cannot
handle Java 9 module-info.class files.
This will also use an empty MANIFEST.MF file, since there is no way in maven to unsetting
an entry (like archive/manifestFile for the jar plugin).
-->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,33 @@
package io.jsonwebtoken.it.unsigned;
import io.jsonwebtoken.*;
import java.time.Instant;
import java.util.Date;
import java.util.List;
public class UnsignedJwtCreator {
public UnsignedJwtCreator() {
// explicit
}
public String create() {
return Jwts.builder()
.claim("roles", List.of("admin"))
.subject("jjwt")
.id("jjwt-0")
.issuedAt(Date.from(Instant.now()))
.notBefore(Date.from(Instant.now()))
.compact();
}
public Jwt<Header, Claims> read(String jwt) {
final JwtParser jwtParser = Jwts.parser()
.unsecured()
.requireSubject("jjwt")
.build();
return jwtParser.parseUnsecuredClaims(jwt);
}
}

View File

@ -0,0 +1,4 @@
module io.jsonwebtoken.jjwt.it.unsigned {
requires io.jsonwebtoken.jjwt.api;
}

View File

@ -0,0 +1,32 @@
package io.jsonwebtoken.it.unsigned;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Header;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwt;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class UnsignedJwtCreatorTest {
@Test
public void testUnsignedJwt() {
// given:
final UnsignedJwtCreator jwtCreator = new UnsignedJwtCreator();
final String jwtString = jwtCreator.create();
// when
final Jwt<Header, Claims> readBackJws = jwtCreator.read(jwtString);
// then
final Claims jwtBody = readBackJws.getPayload();
assertEquals("jjwt-0", jwtBody.getId());
assertEquals("jjwt", jwtBody.getSubject());
assertTrue(jwtBody.get("roles", List.class).contains("admin"));
}
}

25
pom.xml
View File

@ -733,7 +733,32 @@
<surefire.useModulePath>false</surefire.useModulePath>
<maven.javadoc.additionalOptions>-html5</maven.javadoc.additionalOptions>
<surefire.argLine>${test.addOpens}, --illegal-access=debug</surefire.argLine>
<maven.compiler.release>${jdk.version}</maven.compiler.release>
</properties>
<modules>
<module>integration-tests</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile-module-info</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<release>9</release>
<compileSourceRoots>${project.basedir}/src/main/java9</compileSourceRoots>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jdk17AndLater</id>