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

GROUP-96 Update to Spring 3.2. Replace JavaFaker with DataFaker #36

Merged
merged 3 commits into from
Mar 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 8 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
plugins {
id "java"
id 'org.springframework.boot' version '3.1.+'
id 'io.spring.dependency-management' version '1.+'
id 'org.springframework.boot' version '3.2.+'

id "org.owasp.dependencycheck" version "latest.release"
id "org.owasp.dependencycheck" version "9.0.9"
id "checkstyle"
id "pmd"
}

apply plugin: "io.spring.dependency-management"

// Checks Dependencies for Known Vulnerabilities
dependencyCheck {
suppressionFile = file("${project.rootDir}/config/dependency_check/suppressions.xml")
Expand Down Expand Up @@ -61,7 +62,7 @@ bootBuildImage {
}

ext {
set("springCloudVersion", "2022.0.4")
set("springCloudVersion", "2023.0.0")
set('otelVersion', "1.26.0")
}

Expand All @@ -80,7 +81,7 @@ dependencies {
implementation "org.springframework.retry:spring-retry"
implementation "org.springframework.boot:spring-boot-starter-aop"

implementation "com.github.javafaker:javafaker:1.0.2"
implementation 'net.datafaker:datafaker:2.1.0'
// implementation "io.sentry:sentry-spring-boot-starter-jakarta:6.28.0"

runtimeOnly "org.flywaydb:flyway-core"
Expand Down Expand Up @@ -109,10 +110,10 @@ dependencies {
testImplementation "org.springframework.amqp:spring-rabbit-test"
testImplementation "org.springframework.cloud:spring-cloud-stream-test-binder"
testImplementation "org.springframework.cloud:spring-cloud-stream-test-support"
testImplementation "com.github.javafaker:javafaker:1.0.2"
testImplementation "net.datafaker:datafaker:2.1.0"

// Dependencies needed for Testcontainers
testImplementation platform("org.testcontainers:testcontainers-bom:1.19.0")
testImplementation platform("org.testcontainers:testcontainers-bom:1.19.7")
testImplementation "org.springframework.boot:spring-boot-testcontainers"
testImplementation "org.testcontainers:junit-jupiter"
testImplementation "org.testcontainers:postgresql"
Expand Down
7 changes: 5 additions & 2 deletions config/pmd/design.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@
<rule ref="category/java/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal" />
<rule ref="category/java/design.xml/CognitiveComplexity" />
<rule ref="category/java/design.xml/CollapsibleIfStatements" />
<rule ref="category/java/design.xml/CouplingBetweenObjects" />
<rule ref="category/java/design.xml/DataClass" />
<rule ref="category/java/design.xml/DoNotExtendJavaLangError" />
<rule ref="category/java/design.xml/ExceptionAsFlowControl" />
<rule ref="category/java/design.xml/ExcessivePublicCount" />
<rule ref="category/java/design.xml/FinalFieldCouldBeStatic" />
<rule ref="category/java/design.xml/GodClass" />
<rule ref="category/java/design.xml/ImmutableField" />
<rule ref="category/java/design.xml/InvalidJavaBean" />
<rule ref="category/java/design.xml/LogicInversion" />
Expand Down Expand Up @@ -76,6 +74,11 @@
<!-- <rule ref="category/java/design.xml/ExcessiveParameterList" />-->
<!-- <rule ref="category/java/design.xml/UseObjectForClearerAPI" />-->

<!-- TODO: Refactor CharacterEntity to use these rules -->
<!-- CharacterEntity class requires high cyclomatic complexity -->
<!-- <rule ref="category/java/design.xml/CyclomaticComplexity" />-->

<!-- CharacterEntity class misclassified as a God class with high coupling -->
<!-- <rule ref="category/java/design.xml/GodClass" />-->
<!-- <rule ref="category/java/design.xml/CouplingBetweenObjects" />-->
</ruleset>
Original file line number Diff line number Diff line change
@@ -1,26 +1,54 @@
package org.grouphq.groupservice.group.demo;

import com.github.javafaker.BackToTheFuture;
import com.github.javafaker.DragonBall;
import com.github.javafaker.Faker;
import com.github.javafaker.GameOfThrones;
import com.github.javafaker.HarryPotter;
import com.github.javafaker.HowIMetYourMother;
import com.github.javafaker.LeagueOfLegends;
import com.github.javafaker.LordOfTheRings;
import com.github.javafaker.Overwatch;
import com.github.javafaker.RickAndMorty;
import com.github.javafaker.StarTrek;
import com.github.javafaker.Superhero;
import com.github.javafaker.Witcher;
import com.github.javafaker.Zelda;
import java.util.Optional;
import java.util.Random;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.datafaker.Faker;
import net.datafaker.providers.base.Community;
import net.datafaker.providers.base.Superhero;
import net.datafaker.providers.entertainment.BackToTheFuture;
import net.datafaker.providers.entertainment.BigBangTheory;
import net.datafaker.providers.entertainment.BreakingBad;
import net.datafaker.providers.entertainment.BrooklynNineNine;
import net.datafaker.providers.entertainment.DoctorWho;
import net.datafaker.providers.entertainment.DragonBall;
import net.datafaker.providers.entertainment.FamilyGuy;
import net.datafaker.providers.entertainment.FreshPrinceOfBelAir;
import net.datafaker.providers.entertainment.Futurama;
import net.datafaker.providers.entertainment.GameOfThrones;
import net.datafaker.providers.entertainment.Ghostbusters;
import net.datafaker.providers.entertainment.HarryPotter;
import net.datafaker.providers.entertainment.HeyArnold;
import net.datafaker.providers.entertainment.Hobbit;
import net.datafaker.providers.entertainment.HowIMetYourMother;
import net.datafaker.providers.entertainment.HowToTrainYourDragon;
import net.datafaker.providers.entertainment.LordOfTheRings;
import net.datafaker.providers.entertainment.Naruto;
import net.datafaker.providers.entertainment.OnePiece;
import net.datafaker.providers.entertainment.ResidentEvil;
import net.datafaker.providers.entertainment.RickAndMorty;
import net.datafaker.providers.entertainment.Seinfeld;
import net.datafaker.providers.entertainment.Simpsons;
import net.datafaker.providers.entertainment.SouthPark;
import net.datafaker.providers.entertainment.Spongebob;
import net.datafaker.providers.entertainment.StarTrek;
import net.datafaker.providers.entertainment.StarWars;
import net.datafaker.providers.entertainment.StrangerThings;
import net.datafaker.providers.entertainment.Supernatural;
import net.datafaker.providers.entertainment.Witcher;
import net.datafaker.providers.videogame.FinalFantasyXIV;
import net.datafaker.providers.videogame.LeagueOfLegends;
import net.datafaker.providers.videogame.MassEffect;
import net.datafaker.providers.videogame.Overwatch;
import net.datafaker.providers.videogame.RedDeadRedemption2;
import net.datafaker.providers.videogame.SonicTheHedgehog;
import net.datafaker.providers.videogame.StreetFighter;
import net.datafaker.providers.videogame.SuperMario;
import net.datafaker.providers.videogame.Zelda;
import org.grouphq.groupservice.config.GroupProperties;
import org.springframework.stereotype.Service;

Expand All @@ -41,7 +69,7 @@ public class CharacterGeneratorService {

public CharacterEntity createRandomCharacter() {
final int min = 1;
final int max = 15;
final int max = 43;

final int randomNum = RANDOM.nextInt(max - min) + min; // range of min (inclusive) to max (exclusive)

Expand Down Expand Up @@ -70,36 +98,96 @@ private CharacterEntity getCharacter(int randomNum) {
final Faker faker = new Faker();
return switch (randomNum) {
case 1:
yield new CharacterEntity(faker.backToTheFuture().character(), getUniverse(BackToTheFuture.class));
yield create(faker.backToTheFuture().character(), BackToTheFuture.class);
case 2:
yield new CharacterEntity(faker.dragonBall().character(), getUniverse(DragonBall.class));
yield create(faker.dragonBall().character(), DragonBall.class);
case 3:
yield new CharacterEntity(faker.gameOfThrones().character(), getUniverse(GameOfThrones.class));
yield create(faker.gameOfThrones().character(), GameOfThrones.class);
case 4:
yield new CharacterEntity(faker.harryPotter().character(), getUniverse(HarryPotter.class));
yield create(faker.harryPotter().character(), HarryPotter.class);
case 5:
yield new CharacterEntity(faker.zelda().character(), getUniverse(Zelda.class));
yield create(faker.zelda().character(), Zelda.class);
case 6:
yield new CharacterEntity(faker.starTrek().character(), getUniverse(StarTrek.class));
yield create(faker.starTrek().character(), StarTrek.class);
case 7:
yield new CharacterEntity(faker.howIMetYourMother().character(), getUniverse(HowIMetYourMother.class));
yield create(faker.howIMetYourMother().character(), HowIMetYourMother.class);
case 8:
yield new CharacterEntity(faker.lordOfTheRings().character(), getUniverse(LordOfTheRings.class));
yield create(faker.lordOfTheRings().character(), LordOfTheRings.class);
case 9:
yield new CharacterEntity(faker.leagueOfLegends().champion(), getUniverse(LeagueOfLegends.class));
yield create(faker.leagueOfLegends().champion(), LeagueOfLegends.class);
case 10:
yield new CharacterEntity(faker.overwatch().hero(), getUniverse(Overwatch.class));
yield create(faker.overwatch().hero(), Overwatch.class);
case 11:
yield new CharacterEntity(faker.rickAndMorty().character(), getUniverse(RickAndMorty.class));
yield create(faker.rickAndMorty().character(), RickAndMorty.class);
case 12:
yield new CharacterEntity(faker.superhero().name(), getUniverse(Superhero.class));
yield create(faker.superhero().name(), Superhero.class);
case 13:
yield new CharacterEntity(faker.witcher().character(), getUniverse(Witcher.class));
yield create(faker.witcher().character(), Witcher.class);
case 14:
yield create(faker.starWars().character(), StarWars.class);
case 15:
yield create(faker.simpsons().character(), Simpsons.class);
case 16:
yield create(faker.southPark().characters(), SouthPark.class);
case 17:
yield create(faker.bigBangTheory().character(), BigBangTheory.class);
case 18:
yield create(faker.futurama().character(), Futurama.class);
case 19:
yield create(faker.breakingBad().character(), BreakingBad.class);
case 20:
yield create(faker.brooklynNineNine().characters(), BrooklynNineNine.class);
case 21:
yield create(faker.community().character(), Community.class);
case 22:
yield create(faker.doctorWho().character(), DoctorWho.class);
case 23:
yield create(faker.familyGuy().character(), FamilyGuy.class);
case 24:
yield create(faker.finalFantasyXIV().character(), FinalFantasyXIV.class);
case 25:
yield create(faker.freshPrinceOfBelAir().characters(), FreshPrinceOfBelAir.class);
case 26:
yield create(faker.ghostbusters().character(), Ghostbusters.class);
case 27:
yield create(faker.heyArnold().characters(), HeyArnold.class);
case 28:
yield create(faker.hobbit().character(), Hobbit.class);
case 29:
yield create(faker.howToTrainYourDragon().characters(), HowToTrainYourDragon.class);
case 30:
yield create(faker.massEffect().character(), MassEffect.class);
case 31:
yield create(faker.naruto().character(), Naruto.class);
case 32:
yield create(faker.onePiece().character(), OnePiece.class);
case 33:
yield create(faker.redDeadRedemption2().majorCharacter(), RedDeadRedemption2.class);
case 34:
yield create(faker.residentEvil().character(), ResidentEvil.class);
case 35:
yield create(faker.seinfeld().character(), Seinfeld.class);
case 36:
yield create(faker.sonicTheHedgehog().character(), SonicTheHedgehog.class);
case 37:
yield create(faker.spongebob().characters(), Spongebob.class);
case 38:
yield create(faker.strangerThings().character(), StrangerThings.class);
case 39:
yield create(faker.streetFighter().characters(), StreetFighter.class);
case 40:
yield create(faker.superMario().characters(), SuperMario.class);
case 41:
yield create(faker.supernatural().character(), Supernatural.class);
default:
yield new CharacterEntity("Captain Qwark", "Ratchet & Clank");
};
}

private <T> CharacterEntity create(String name, Class<T> universe) {
return new CharacterEntity(name, getUniverse(universe));
}

private String getUniverse(Class<?> universeClass) {
final String universeClassString = universeClass.getSimpleName();
final String[] words = universeClassString.split("(?<=[a-z])(?=[A-Z])");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package org.grouphq.groupservice.group.demo;

import com.github.javafaker.Faker;
import java.util.Random;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.datafaker.Faker;
import org.grouphq.groupservice.ai.OpenAiGroupGeneratorService;
import org.grouphq.groupservice.group.domain.groups.Group;
import org.grouphq.groupservice.group.domain.groups.GroupStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import static org.assertj.core.api.Assertions.fail;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.javafaker.Faker;
import io.cucumber.java.Before;
import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
Expand All @@ -15,6 +14,7 @@
import java.util.ArrayList;
import java.util.Map;
import java.util.UUID;
import net.datafaker.Faker;
import org.grouphq.groupservice.config.DataConfig;
import org.grouphq.groupservice.config.SecurityConfig;
import org.grouphq.groupservice.group.domain.groups.Group;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.javafaker.Faker;
import java.time.Instant;
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import net.datafaker.Faker;
import org.grouphq.groupservice.group.domain.groups.Group;
import org.grouphq.groupservice.group.domain.groups.GroupStatus;
import org.grouphq.groupservice.group.domain.members.Member;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import static org.assertj.core.api.Assertions.assertThat;

import com.github.javafaker.Faker;
import java.time.Duration;
import java.util.Arrays;
import java.util.Base64;
import java.util.UUID;
import net.datafaker.Faker;
import org.grouphq.groupservice.config.DataConfig;
import org.grouphq.groupservice.config.SecurityConfig;
import org.grouphq.groupservice.group.domain.groups.Group;
Expand Down
Loading