Skip to content

Commit

Permalink
[jwtk#519] Add moditect-generated module-info.java files and a simple…
Browse files Browse the repository at this point in the history
… IT.

- uses lots of more profiles
- requires Java 8+ for a release
- requires Java 9+ for running the integration test
- does not deploy integration tests
- maven.compiler.release is set instead of source and target for Java9+
- maven.compiler.source/target is now only set on Java7 and Java8 so the javadoc and sources plugin will work correctly.
- Does not contain ITs for neither GSON nor org.json.
- Ugly workaround for the fact that the old bundle-plugin crashes on Java9+ module-info.java files,
  had to provide an empty static MANIFEST.MF file and disable the bundle-plugin on ITs.
- I found it odd that the extensions do not reference their correct parent pom as parent pom, instead the root is chosen.
  This is probably a maven anti-pattern and was corrected by khmarbaise for Shiro.
- parentLocation = ../pom.xml is redundant for /api and /impl, but did not bother to correct it here
- some pom.xml files were missing a final line break as required by unix spec.
  • Loading branch information
bmarwell committed Apr 19, 2022
1 parent 20b0437 commit 5bc95b2
Show file tree
Hide file tree
Showing 12 changed files with 363 additions and 10 deletions.
39 changes: 38 additions & 1 deletion api/pom.xml
Expand Up @@ -50,4 +50,41 @@
</plugins>
</build>

</project>
<profiles>
<profile>
<id>nonJDK7</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<module>
<moduleInfo>
<name>io.jsonwebtoken.jjwt.api</name>
<exports>
io.jsonwebtoken;
io.jsonwebtoken.*;
</exports>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

</project>
35 changes: 34 additions & 1 deletion extensions/gson/pom.xml
Expand Up @@ -44,4 +44,37 @@
</dependency>
</dependencies>

</project>
<profiles>
<profile>
<id>nonJDK7</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<module>
<moduleInfo>
<name>io.jsonwebtoken.jjwt.ext.gson</name>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

</project>
35 changes: 34 additions & 1 deletion extensions/jackson/pom.xml
Expand Up @@ -77,4 +77,37 @@
</plugin>
</plugins>
</build>
</project>

<profiles>
<profile>
<id>nonJDK7</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<module>
<moduleInfo>
<name>io.jsonwebtoken.jjwt.ext.jackson</name>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
35 changes: 34 additions & 1 deletion extensions/orgjson/pom.xml
Expand Up @@ -77,4 +77,37 @@
</plugin>
</plugins>
</build>
</project>

<profiles>
<profile>
<id>nonJDK7</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<module>
<moduleInfo>
<name>io.jsonwebtoken.jjwt.ext.orgjson</name>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
42 changes: 41 additions & 1 deletion impl/pom.xml
Expand Up @@ -66,4 +66,44 @@
</dependency>
</dependencies>

</project>
<profiles>
<profile>
<id>nonJDK7</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<executions>
<execution>
<id>add-module-infos</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<module>
<moduleInfo>
<name>io.jsonwebtoken.jjwt.impl</name>
<requires>
io.jsonwebtoken.jjwt.api;
</requires>
<uses>
io.jsonwebtoken.CompressionCodec;
io.jsonwebtoken.io.Deserializer;
io.jsonwebtoken.io.Serializer;
</uses>
</moduleInfo>
</module>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
25 changes: 25 additions & 0 deletions integration-tests/pom.xml
@@ -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.11.3-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>
70 changes: 70 additions & 0 deletions integration-tests/unsigned-jackson/pom.xml
@@ -0,0 +1,70 @@
<?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.11.3-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>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.3-SNAPSHOT</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<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>
@@ -0,0 +1,32 @@
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"))
.setSubject("jjwt")
.setId("jjwt-0")
.setIssuedAt(Date.from(Instant.now()))
.setNotBefore(Date.from(Instant.now()))
.compact();
}

public Jwt<Header, Claims> read(String jwt) {
final JwtParser jwtParser = Jwts.parserBuilder()
.requireSubject("jjwt")
.build();

return jwtParser.parseClaimsJwt(jwt);
}
}
@@ -0,0 +1,4 @@
module io.jsonwebtoken.jjwt.it.unsigned {
requires io.jsonwebtoken.jjwt.api;

}
Empty file.
@@ -0,0 +1,31 @@
package io.jsonwebtoken.it.unsigned;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Header;
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> readBackJwt = jwtCreator.read(jwtString);

// then
final Claims jwtBody = readBackJwt.getBody();
assertEquals("jjwt-0", jwtBody.getId());
assertEquals("jjwt", jwtBody.getSubject());
assertTrue(jwtBody.get("roles", List.class).contains("admin"));
}

}

0 comments on commit 5bc95b2

Please sign in to comment.