Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
fbf8c1c
refactor: modernize Spring Boot samples and starter for 3.x best prac…
mariuszs Oct 3, 2025
49c861a
feat: add jOOQ integration module for FriendlyId
mariuszs Oct 3, 2025
9883180
refactor: replace String with FriendlyId value object for memory effi…
mariuszs Oct 3, 2025
9dce4d1
feat: add JPA integration module for FriendlyId
mariuszs Oct 3, 2025
0b57ad3
feat: add OpenFeign integration and standardize Maven configuration
mariuszs Oct 3, 2025
7bda467
chore: implement CI-friendly Maven versioning and automated releases
mariuszs Oct 3, 2025
0d414b7
docs: add release process documentation
mariuszs Oct 3, 2025
5ddb288
feat: add Spring Boot JPA demo and fix Jackson serialization
mariuszs Oct 3, 2025
1b3a328
chore: configure Maven Central publishing via Central Portal
mariuszs Oct 3, 2025
b860715
feat: upgrade to Spring Boot 4.0.1 and Jackson 3
mariuszs Dec 20, 2025
283e7a3
fix: update sample tests for Spring Boot 4 API changes
mariuszs Dec 20, 2025
1df0d4f
chore: update ciManagement to GitHub Actions
mariuszs Dec 20, 2025
cbb57d4
chore: remove .serena directory
mariuszs Dec 20, 2025
18024ad
chore: remove CLAUDE.md
mariuszs Dec 20, 2025
ce89fff
fix: use correct server-id for Central Portal
mariuszs Dec 20, 2025
dac5c51
fix: skip publishing for samples module
mariuszs Dec 20, 2025
409064a
chore: add name to samples module
mariuszs Dec 21, 2025
7fc38d3
chore: update Maven plugins to latest versions
mariuszs Dec 21, 2025
990b68e
feat: add Jackson 2.x datatype module and Spring Boot 3 sample
mariuszs Dec 21, 2025
60a2744
refactor: modernize code for Java 21 and Spring Boot 4
mariuszs Dec 21, 2025
f5acdf4
fix: configure Lombok annotation processor for Maven 3.14+
mariuszs Dec 21, 2025
f102ef9
fix: configure Lombok and modernize Jackson2 module
mariuszs Dec 21, 2025
3dffccb
chore: update Maven wrapper to 3.9.12
mariuszs Dec 21, 2025
644ec72
refactor: replace manual controller tests with GetBar contract
mariuszs Dec 21, 2025
9a6285f
refactor: rename Jackson 2.x package to jackson2 to avoid conflicts
mariuszs Dec 21, 2025
de2898d
refactor: move IdFormat annotation to core module
mariuszs Dec 21, 2025
f92d9ff
refactor: simplify samples and add security contracts
mariuszs Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
name: Java CI

on: [push]
on:
push:
branches: [ master, feature/** ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'

- name: Build with Maven
run: mvn -B clean install --file pom.xml

- name: Upload coverage to Coveralls
if: github.event_name != 'pull_request'
run: mvn coveralls:report -DrepoToken=${{ secrets.COVERALLS_TOKEN }}
continue-on-error: true
49 changes: 49 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Release

on:
push:
tags:
- 'v*'

jobs:
release:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE

- name: Extract version from tag
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT

- name: Build and deploy to Maven Central
run: |
mvn -B clean deploy -P release \
-Drevision=${{ steps.get_version.outputs.VERSION }} \
-DskipTests
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
files: |
**/target/*.jar
!**/target/*-sources.jar
!**/target/*-javadoc.jar
117 changes: 0 additions & 117 deletions .mvn/wrapper/MavenWrapperDownloader.java

This file was deleted.

Binary file removed .mvn/wrapper/maven-wrapper.jar
Binary file not shown.
5 changes: 3 additions & 2 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
5 changes: 5 additions & 0 deletions .sdkmanrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SDKMAN configuration for friendly-id project
# Auto-switch to this Java version when entering the directory
# Usage: Enable auto-env in SDKMAN with: sdk config
# Set sdkman_auto_env=true
java=21.0.8-tem
Binary file not shown.
39 changes: 39 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added
- FriendlyId value object type (`com.devskiller.friendly_id.type.FriendlyId`) as an alternative to raw UUID
- JPA integration module (`friendly-id-jpa`) with automatic AttributeConverter
- OpenFeign integration module (`friendly-id-openfeign`) for FriendlyId support in Feign clients
- jOOQ integration module (`friendly-id-jooq`) for FriendlyId support in jOOQ
- Spring Boot JPA demo application showcasing FriendlyId with JPA, REST API, and OpenFeign

### Changed
- Upgraded from Java 8 to Java 21
- Upgraded from Spring Boot 2.2.2 to 3.4.1
- Upgraded from JUnit 4 to JUnit 5
- Migrated from Vavr property testing to JUnit 5 `@RepeatedTest`
- Updated Spring Boot auto-configuration to use `AutoConfiguration.imports` instead of `spring.factories`

### Fixed
- Fixed Jackson module serialization by adding `super.setupModule(context)` call in `FriendlyIdModule`
- Fixed Spring Cloud version compatibility (2024.0.0 for Spring Boot 3.4.1)
- Added `friendly-id-jackson-datatype` as dependency to `friendly-id-spring-boot-starter` for complete auto-configuration
- Added `friendly-id-jackson-datatype` as dependency to `friendly-id-openfeign` for JSON serialization support

### Dependencies
- `friendly-id-spring-boot-starter` now includes `friendly-id-jackson-datatype` transitively
- `friendly-id-openfeign` now includes `friendly-id-jackson-datatype` transitively

### Infrastructure
- Migrated from legacy Sonatype OSSRH to Central Portal for Maven Central publishing
- Updated `central-publishing-maven-plugin` to 0.6.0 for automated publishing

## [1.1.0] - Previous version
- Legacy implementation with UUID-only support
Loading
Loading