Skip to content

Commit

Permalink
refactor: rework export service
Browse files Browse the repository at this point in the history
APIM-8200
  • Loading branch information
michel-barret committed Jan 29, 2025
1 parent 766c104 commit 9e3cc89
Show file tree
Hide file tree
Showing 34 changed files with 1,131 additions and 288 deletions.
2 changes: 1 addition & 1 deletion gravitee-apim-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -736,4 +736,4 @@

</dependencies>
</dependencyManagement>
</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@
import io.gravitee.definition.model.v4.flow.step.Step;
import jakarta.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
Expand Down Expand Up @@ -55,9 +55,12 @@ public abstract class AbstractFlow implements Serializable {

@JsonIgnore
protected List<Plugin> computePlugins(List<Step> step) {
return Optional
return Stream
.ofNullable(step)
.map(r -> r.stream().filter(Step::isEnabled).map(Step::getPlugins).flatMap(List::stream).collect(Collectors.toList()))
.orElse(List.of());
.flatMap(Collection::stream)
.filter(Step::isEnabled)
.map(Step::getPlugins)
.flatMap(List::stream)
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ public interface MembershipRepository extends FindAllRepository<Membership> {
*/
List<String> deleteByReferenceIdAndReferenceType(String referenceId, MembershipReferenceType referenceType) throws TechnicalException;

List<Membership> findByReferenceIdAndReferenceType(String referenceId, MembershipReferenceType referenceType) throws TechnicalException;

/**
* find membership by id.
* @param membershipId the membership id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,15 @@ public List<String> deleteByReferenceIdAndReferenceType(String referenceId, Memb
LOGGER.debug("JdbcMembershipRepository.deleteByReferenceIdAndReferenceType({}, {})", referenceId, referenceType);
try {
List<String> rows = jdbcTemplate.queryForList(
"select id from " + this.tableName + " where reference_type = ?" + " and reference_id = ?",
"select id from " + this.tableName + " where reference_type = ? and reference_id = ?",
String.class,
referenceType.name(),
referenceId
);

if (!rows.isEmpty()) {
jdbcTemplate.update(
"delete from " + this.tableName + " where reference_type = ?" + " and reference_id = ?",
"delete from " + this.tableName + " where reference_type = ? and reference_id = ?",
referenceType.name(),
referenceId
);
Expand All @@ -98,6 +98,28 @@ public List<String> deleteByReferenceIdAndReferenceType(String referenceId, Memb
}
}

@Override
public List<Membership> findByReferenceIdAndReferenceType(String referenceId, MembershipReferenceType referenceType)
throws TechnicalException {
LOGGER.debug("JdbcMembershipRepository.findByReferenceIdAndReferenceType({}, {})", referenceId, referenceType);
try {
return jdbcTemplate.query(
"""
%s
where reference_type = '%s' and reference_id = '%s'
""".formatted(
getOrm().getSelectAllSql(),
referenceType.name(),
referenceId
),
getOrm().getRowMapper()
);
} catch (final Exception ex) {
LOGGER.error("Failed to find memberships for refId: {}/{}", referenceId, referenceType, ex);
throw new TechnicalException("Failed to find memberships by reference", ex);
}
}

@Override
public Set<Membership> findByIds(Set<String> membershipIds) throws TechnicalException {
LOGGER.debug("JdbcMembershipRepository.findByIds({})", membershipIds);
Expand Down Expand Up @@ -127,7 +149,7 @@ public Set<Membership> findByReferenceAndRoleId(MembershipReferenceType referenc
}

@Override
public Set<Membership> findByRoleId(String roleId) throws TechnicalException {
public Set<Membership> findByRoleId(String roleId) {
LOGGER.debug("JdbcMembershipRepository.findByRoleId({})", roleId);
final StringBuilder query = new StringBuilder("select m.* from " + this.tableName + " m");
initializeWhereClause(null, null, roleId, query);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package io.gravitee.repository.mongodb.management;

import static io.gravitee.repository.mongodb.utils.CollectionUtils.stream;

import io.gravitee.repository.exceptions.TechnicalException;
import io.gravitee.repository.management.api.MembershipRepository;
import io.gravitee.repository.management.model.Membership;
Expand Down Expand Up @@ -117,6 +119,20 @@ public List<String> deleteByReferenceIdAndReferenceType(String referenceId, Memb
}
}

@Override
public List<Membership> findByReferenceIdAndReferenceType(String referenceId, MembershipReferenceType referenceType)
throws TechnicalException {
logger.debug("Find memberships by reference [{}/{}]", referenceId, referenceType);
try {
return stream(internalMembershipRepo.findReferenceIdAndReferenceType(referenceId, referenceType.name()))
.map(this::map)
.toList();
} catch (Exception ex) {
logger.error("Failed to find memberships by ref: {}/{}", referenceId, referenceType, ex);
throw new TechnicalException("Failed to find memberships by ref");
}
}

@Override
public Optional<Membership> findById(String membershipId) throws TechnicalException {
logger.debug("Find membership by ID [{}]", membershipId);
Expand Down Expand Up @@ -186,7 +202,7 @@ public Stream<String> findRefIdsByMemberIdAndMemberTypeAndReferenceType(
String memberId,
MembershipMemberType memberType,
MembershipReferenceType referenceType
) throws TechnicalException {
) {
return internalMembershipRepo.findRefIdsByMemberIdAndMemberTypeAndReferenceType(memberId, memberType.name(), referenceType.name());
}

Expand Down Expand Up @@ -297,9 +313,9 @@ public Set<Membership> findByMemberIdAndMemberTypeAndReferenceTypeAndRoleIdIn(
MembershipMemberType memberType,
MembershipReferenceType referenceType,
Collection<String> roleIds
) throws TechnicalException {
) {
logger.debug(
"Find membership by user and referenceType and referenceId and roleId in [{}, {}, {}, {}, {}]",
"Find membership by user and referenceType and referenceId and roleId in [{}, {}, {}, {}]",
memberId,
memberType,
referenceType,
Expand All @@ -311,7 +327,7 @@ public Set<Membership> findByMemberIdAndMemberTypeAndReferenceTypeAndRoleIdIn(
.map(this::map)
.collect(Collectors.toSet());
logger.debug(
"Find membership by user and referenceType and referenceId, roleId in [{}, {}, {}, {}, {}] = {}",
"Find membership by user and referenceType and referenceId, roleId in [{}, {}, {}, {}] = {}",
memberId,
memberType,
referenceType,
Expand All @@ -327,9 +343,9 @@ public Set<String> findRefIdByMemberAndRefTypeAndRoleIdIn(
MembershipMemberType memberType,
MembershipReferenceType referenceType,
Collection<String> roleIds
) throws TechnicalException {
) {
logger.debug(
"Find membership by user and referenceType and referenceId and roleId in [{}, {}, {}, {}, {}]",
"Find membership by user and referenceType and referenceId and roleId in [{}, {}, {}, {}]",
memberId,
memberType,
referenceType,
Expand All @@ -341,7 +357,7 @@ public Set<String> findRefIdByMemberAndRefTypeAndRoleIdIn(
.map(MembershipMongo::getReferenceId)
.collect(Collectors.toSet());
logger.debug(
"Find membership by user and referenceType and referenceId, roleId in [{}, {}, {}, {}, {}] = {}",
"Find membership by user and referenceType and referenceId, roleId in [{}, {}, {}, {}] = {}",
memberId,
memberType,
referenceType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ Set<MembershipMongo> findByMemberIdAndMemberTypeAndReferenceTypeAndReferenceIdAn
@Query("{ 'memberId' : ?0, 'memberType' : ?1 }")
Set<MembershipMongo> findByMemberIdAndMemberType(String memberId, String memberType);

@Query("{ 'referenceId' : ?0, 'referenceType' : ?1 }")
Set<MembershipMongo> findReferenceIdAndReferenceType(String referenceId, String referenceType);

@Query(value = "{ 'referenceId': ?0, 'referenceType': ?1 }", fields = "{ _id : 1 }", delete = true)
List<MembershipMongo> deleteByReferenceIdAndReferenceType(String referenceId, String referenceType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This repository is used to ensure repository test coverage and to provide a mini

The minimum requirement is :
* Maven3
* Jdk8
* Jdk21

For user gravitee snapshot, You need the declare the following repository in you maven settings :

Expand All @@ -19,7 +19,7 @@ https://oss.sonatype.org/content/repositories/snapshots

```
$ git clone https://github.com/gravitee-io/gravitee-repository-test.git
$ cd gravitee-repository-test
$ cd gravitee-apim-repository/gravitee-apim-repository-test
$ mvn clean package
```

Expand Down
Loading

0 comments on commit 9e3cc89

Please sign in to comment.