Skip to content
This repository has been archived by the owner on Aug 20, 2021. It is now read-only.

Commit

Permalink
fix: check top api parameter when deleting top apis
Browse files Browse the repository at this point in the history
  • Loading branch information
aelamrani committed Mar 6, 2018
1 parent 5859e8c commit aa5e6f1
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 4 deletions.
Expand Up @@ -18,6 +18,7 @@
import io.gravitee.repository.management.model.Parameter;

import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;

Expand All @@ -33,6 +34,8 @@ public interface ParameterService {

<T> List<T> findAll(String key, Function<String, T> mapper, Predicate<String> filter);

Optional<Parameter> findByKey(String key);

Parameter create(String key, String value);

void createMultipleValue(String key, String value);
Expand Down
Expand Up @@ -60,6 +60,17 @@ public class ParameterServiceImpl extends TransactionalService implements Parame
@Inject
private AuditService auditService;

@Override
public Optional<Parameter> findByKey(String key) {
try {
return parameterRepository.findById(key);
} catch (final TechnicalException ex) {
final String message = "An error occurs while trying to find parameter with key: " + key;
LOGGER.error(message, ex);
throw new TechnicalManagementException(message, ex);
}
}

@Override
public List<String> findAll(final String key) {
return findAll(key, value -> value, null);
Expand Down
Expand Up @@ -98,9 +98,11 @@ public List<TopApiEntity> update(final List<UpdateTopApiEntity> topApis) {

@Override
public void delete(final String apiId) {
final List<TopApiEntity> topApis = findAll();
topApis.removeIf(topApiEntity -> apiId.equals(topApiEntity.getApi()));
parameterService.updateMultipleValue(PORTAL_TOP_APIS.getKey(),
topApis.stream().sorted(comparing(TopApiEntity::getOrder)).map(TopApiEntity::getApi).collect(toList()));
if (parameterService.findByKey(PORTAL_TOP_APIS.getKey()).isPresent()) {
final List<TopApiEntity> topApis = findAll();
topApis.removeIf(topApiEntity -> apiId.equals(topApiEntity.getApi()));
parameterService.updateMultipleValue(PORTAL_TOP_APIS.getKey(),
topApis.stream().sorted(comparing(TopApiEntity::getOrder)).map(TopApiEntity::getApi).collect(toList()));
}
}
}
Expand Up @@ -20,6 +20,7 @@
import io.gravitee.management.model.TopApiEntity;
import io.gravitee.management.model.UpdateTopApiEntity;
import io.gravitee.management.service.impl.TopApiServiceImpl;
import io.gravitee.repository.management.model.Parameter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
Expand All @@ -31,6 +32,7 @@
import static io.gravitee.management.service.impl.ParameterKeys.PORTAL_TOP_APIS;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static java.util.Optional.of;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
Expand Down Expand Up @@ -139,6 +141,7 @@ public void shouldDelete() {
final ApiEntity api2 = new ApiEntity();
api2.setId("2");

when(parameterService.findByKey(PORTAL_TOP_APIS.getKey())).thenReturn(of(new Parameter()));
when(parameterService.findAll(eq(PORTAL_TOP_APIS.getKey()), any(), any())).thenReturn(asList(api1, api2));

topApiService.delete("1");
Expand Down

0 comments on commit aa5e6f1

Please sign in to comment.