Skip to content

Commit

Permalink
feat: add rank in JHipsterModuleResource
Browse files Browse the repository at this point in the history
  • Loading branch information
renanfranca committed Jan 22, 2025
1 parent 45cd86a commit df3f2aa
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package tech.jhipster.lite.module.domain.resource;

public enum JHipsterModuleRank {
/**
* Not really usable as is, unless you have good expertise on the subject
* (ex: custom-jhlite)
*/
RANK_D,

/**
* No known usage on production product
* (ex: vue-core, the current version)
*/
RANK_C,

/**
* One declared usage on production product
* (ex: kipe-authorization)
*/
RANK_B,

/**
* Multiple declared usages on production product, by multiple person, on various projects
* and demonstrated usage on a talk, book or blog post
* (ex: java-base)
*/
RANK_A,

/**
* A and recognized to add some features that are not available otherwise.
* Features must be really unique and this must be recognized by at least 10 person
* with a vote on any social network (GitHub being a social network).
* With those criteria spring-boot-cucumber-mvc is a good candidate (missing votes).
*/
RANK_S,
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static org.apache.commons.lang3.builder.ToStringStyle.*;

import java.util.Optional;
import org.apache.commons.lang3.builder.ToStringBuilder;
import tech.jhipster.lite.module.domain.JHipsterModuleFactory;
import tech.jhipster.lite.module.domain.JHipsterModuleSlug;
Expand All @@ -14,6 +15,7 @@ public final class JHipsterModuleResource {
private final JHipsterModuleApiDoc apiDoc;
private final JHipsterModuleOrganization organization;
private final JHipsterModuleTags tags;
private final JHipsterModuleRank rank;
private final JHipsterModuleFactory factory;

private JHipsterModuleResource(JHipsterModuleResourceBuilder builder) {
Expand All @@ -24,6 +26,7 @@ private JHipsterModuleResource(JHipsterModuleResourceBuilder builder) {
apiDoc = builder.apiDoc;
tags = builder.tags;
organization = builder.organization;
rank = Optional.ofNullable(builder.rank).orElse(JHipsterModuleRank.RANK_D);
factory = builder.factory;
}

Expand Down Expand Up @@ -60,6 +63,10 @@ public JHipsterModuleOrganization organization() {
return organization;
}

public JHipsterModuleRank rank() {
return rank;
}

public JHipsterModuleFactory factory() {
return factory;
}
Expand All @@ -86,10 +93,11 @@ private static final class JHipsterModuleResourceBuilder
JHipsterModuleResourceApiDocBuilder,
JHipsterModuleResourceOrganizationBuilder,
JHipsterModuleResourceTagsBuilder,
JHipsterModuleResourceFactoryBuilder {
JHipsterModuleResourceOptionalBuilder {

private JHipsterModuleSlugFactory slug;
private JHipsterModuleApiDoc apiDoc;
private JHipsterModuleRank rank;
private JHipsterModuleFactory factory;
private JHipsterModulePropertiesDefinition propertiesDefinition;

Expand Down Expand Up @@ -125,12 +133,19 @@ public JHipsterModuleResourceTagsBuilder organization(JHipsterModuleOrganization
}

@Override
public JHipsterModuleResourceFactoryBuilder tags(JHipsterModuleTags tags) {
public JHipsterModuleResourceOptionalBuilder tags(JHipsterModuleTags tags) {
this.tags = tags;

return this;
}

@Override
public JHipsterModuleResourceOptionalBuilder rank(JHipsterModuleRank rank) {
this.rank = rank;

return this;
}

@Override
public JHipsterModuleResource factory(JHipsterModuleFactory factory) {
this.factory = factory;
Expand Down Expand Up @@ -168,14 +183,16 @@ default JHipsterModuleResourceTagsBuilder standalone() {
}

public interface JHipsterModuleResourceTagsBuilder {
JHipsterModuleResourceFactoryBuilder tags(JHipsterModuleTags tags);
JHipsterModuleResourceOptionalBuilder tags(JHipsterModuleTags tags);

default JHipsterModuleResourceFactoryBuilder tags(String... tags) {
default JHipsterModuleResourceOptionalBuilder tags(String... tags) {
return tags(JHipsterModuleTags.builder().add(tags).build());
}
}

public interface JHipsterModuleResourceFactoryBuilder {
public interface JHipsterModuleResourceOptionalBuilder {
JHipsterModuleResourceOptionalBuilder rank(JHipsterModuleRank rank);

JHipsterModuleResource factory(JHipsterModuleFactory factory);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import tech.jhipster.lite.module.domain.JHipsterModuleFactory;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleOrganization.JHipsterModuleOrganizationBuilder;
import tech.jhipster.lite.module.domain.resource.JHipsterModuleTags.JHipsterModuleTagsBuilder;
Expand Down Expand Up @@ -76,6 +77,7 @@ public static final class JHipsterTestModuleResourceBuilder {
private JHipsterModuleFactory factory;
private JHipsterModuleTags tags;
private String feature;
private JHipsterModuleRank rank;

private final Collection<JHipsterModuleSlugFactory> moduleDependencies = new ArrayList<>();
private final Collection<JHipsterFeatureSlugFactory> featureDependencies = new ArrayList<>();
Expand Down Expand Up @@ -130,14 +132,21 @@ public JHipsterTestModuleResourceBuilder tags(JHipsterModuleTags tags) {
return this;
}

public JHipsterTestModuleResourceBuilder rank(JHipsterModuleRank rank) {
this.rank = rank;

return this;
}

public JHipsterModuleResource build() {
return JHipsterModuleResource.builder()
JHipsterModuleResource.JHipsterModuleResourceOptionalBuilder builder = JHipsterModuleResource.builder()
.slug(() -> slug)
.propertiesDefinition(propertiesDefinition())
.apiDoc(group, operation)
.organization(buildOrganization())
.tags(tags)
.factory(factory);
.tags(tags);

return Optional.ofNullable(rank).map(builder::rank).orElse(builder).factory(factory);
}

private JHipsterModuleOrganization buildOrganization() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,18 @@ void shouldHaveMeaningfulToString() {

assertThat(resource.toString()).contains("JHipsterModuleResource[", "slug=dummy");
}

@Test
void shouldBuildWithRankedResources() {
var resource = defaultModuleResourceBuilder().rank(JHipsterModuleRank.RANK_S).build();

assertThat(resource.rank()).isEqualTo(JHipsterModuleRank.RANK_S);
}

@Test
void shouldBuildWithDefaultRankedResources() {
var resource = defaultModuleResourceBuilder().build();

assertThat(resource.rank()).isEqualTo(JHipsterModuleRank.RANK_D);
}
}

0 comments on commit df3f2aa

Please sign in to comment.