Skip to content

Commit

Permalink
fix: set a default "unknown" name to deleted API and APP ref in suppo…
Browse files Browse the repository at this point in the history
…rt tickets

https://gravitee.atlassian.net/browse/APIM-3578
gravitee-io/issues#9422
(cherry picked from commit 6d799c7)

# Conflicts:
#	gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/TicketServiceImpl.java
#	gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/rest/api/service/impl/TicketServiceTest.java
  • Loading branch information
gaetanmaisse committed Dec 13, 2023
1 parent 9c57e8f commit eaacb46
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,32 +26,19 @@
import io.gravitee.repository.management.api.search.builder.PageableBuilder;
import io.gravitee.repository.management.api.search.builder.SortableBuilder;
import io.gravitee.repository.management.model.Ticket;
import io.gravitee.rest.api.model.ApplicationEntity;
import io.gravitee.rest.api.model.MetadataEntity;
import io.gravitee.rest.api.model.NewTicketEntity;
import io.gravitee.rest.api.model.TicketEntity;
import io.gravitee.rest.api.model.UserEntity;
import io.gravitee.rest.api.model.*;
import io.gravitee.rest.api.model.api.TicketQuery;
import io.gravitee.rest.api.model.common.Pageable;
import io.gravitee.rest.api.model.common.Sortable;
import io.gravitee.rest.api.model.parameters.Key;
import io.gravitee.rest.api.model.parameters.ParameterReferenceType;
import io.gravitee.rest.api.model.v4.api.GenericApiEntity;
import io.gravitee.rest.api.model.v4.api.GenericApiModel;
import io.gravitee.rest.api.service.ApplicationService;
import io.gravitee.rest.api.service.EmailService;
import io.gravitee.rest.api.service.MetadataService;
import io.gravitee.rest.api.service.NotifierService;
import io.gravitee.rest.api.service.ParameterService;
import io.gravitee.rest.api.service.TicketService;
import io.gravitee.rest.api.service.UserService;
import io.gravitee.rest.api.service.*;
import io.gravitee.rest.api.service.builder.EmailNotificationBuilder;
import io.gravitee.rest.api.service.common.ExecutionContext;
import io.gravitee.rest.api.service.common.UuidString;
import io.gravitee.rest.api.service.exceptions.EmailRequiredException;
import io.gravitee.rest.api.service.exceptions.SupportUnavailableException;
import io.gravitee.rest.api.service.exceptions.TechnicalManagementException;
import io.gravitee.rest.api.service.exceptions.TicketNotFoundException;
import io.gravitee.rest.api.service.exceptions.*;
import io.gravitee.rest.api.service.impl.upgrade.initializer.DefaultMetadataInitializer;
import io.gravitee.rest.api.service.notification.ApiHook;
import io.gravitee.rest.api.service.notification.ApplicationHook;
Expand Down Expand Up @@ -80,6 +67,8 @@ public class TicketServiceImpl extends TransactionalService implements TicketSer

private static final Logger LOGGER = LoggerFactory.getLogger(TicketServiceImpl.class);

private static final String UNKNOWN_REFERENCE = "Unknown";

@Inject
private UserService userService;

Expand Down Expand Up @@ -306,16 +295,24 @@ private Ticket convert(NewTicketEntity ticketEntity) {
}

private Ticket getApiNameAndApplicationName(final ExecutionContext executionContext, Ticket ticket) {
//Retrieve application name
// Retrieve application name
if (StringUtils.isNotEmpty(ticket.getApplication())) {
ApplicationEntity application = applicationService.findById(executionContext, ticket.getApplication());
ticket.setApplication(application.getName());
try {
ApplicationEntity application = applicationService.findById(executionContext, ticket.getApplication());
ticket.setApplication(application.getName());
} catch (ApplicationNotFoundException e) {
ticket.setApplication(UNKNOWN_REFERENCE);
}
}

//Retrieve api name
// Retrieve API name
if (StringUtils.isNotEmpty(ticket.getApi())) {
GenericApiEntity api = apiSearchService.findGenericById(executionContext, ticket.getApi());
ticket.setApi(api.getName());
try {
GenericApiEntity api = apiSearchService.findGenericById(executionContext, ticket.getApi());
ticket.setApi(api.getName());
} catch (ApiNotFoundException e) {
ticket.setApi(UNKNOWN_REFERENCE);
}
}

return ticket;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,7 @@
import io.gravitee.rest.api.service.*;
import io.gravitee.rest.api.service.builder.EmailNotificationBuilder;
import io.gravitee.rest.api.service.common.GraviteeContext;
import io.gravitee.rest.api.service.exceptions.EmailRequiredException;
import io.gravitee.rest.api.service.exceptions.SupportUnavailableException;
import io.gravitee.rest.api.service.exceptions.TechnicalManagementException;
import io.gravitee.rest.api.service.exceptions.TicketNotFoundException;
import io.gravitee.rest.api.service.exceptions.*;
import io.gravitee.rest.api.service.impl.upgrade.initializer.DefaultMetadataInitializer;
import io.gravitee.rest.api.service.notification.PortalHook;
import io.gravitee.rest.api.service.v4.ApiSearchService;
Expand Down Expand Up @@ -463,4 +460,51 @@ public void shouldThrowNotFoundExceptionWhenNoTicket() throws TechnicalException

ticketService.findById(GraviteeContext.getExecutionContext(), "ticket1");
}

@Test
public void shouldSetAPIToUnknownWhenAPINotFound() throws TechnicalException {
Ticket ticket = new Ticket();
ticket.setId("ticket1");
ticket.setApi(API_ID);
ticket.setSubject(EMAIL_SUBJECT);
ticket.setContent(EMAIL_CONTENT);
ticket.setCreatedAt(new Date());
ticket.setFromUser(USERNAME);

ApiEntity apiEntity = new ApiEntity();
apiEntity.setName("apiName");
ApplicationEntity appEntity = new ApplicationEntity();
appEntity.setName("appName");

when(ticketRepository.findById("ticket1")).thenReturn(Optional.of(ticket));
when(apiSearchService.findGenericById(GraviteeContext.getExecutionContext(), API_ID)).thenThrow(new ApiNotFoundException(API_ID));

TicketEntity ticketEntity = ticketService.findById(GraviteeContext.getExecutionContext(), "ticket1");

assertEquals("Unknown", ticketEntity.getApi());
}

@Test
public void shouldSetApplicationToUnknownWhenApplicationNotFound() throws TechnicalException {
Ticket ticket = new Ticket();
ticket.setId("ticket1");
ticket.setApplication(APPLICATION_ID);
ticket.setSubject(EMAIL_SUBJECT);
ticket.setContent(EMAIL_CONTENT);
ticket.setCreatedAt(new Date());
ticket.setFromUser(USERNAME);

ApiEntity apiEntity = new ApiEntity();
apiEntity.setName("apiName");
ApplicationEntity appEntity = new ApplicationEntity();
appEntity.setName("appName");

when(ticketRepository.findById("ticket1")).thenReturn(Optional.of(ticket));
when(applicationService.findById(GraviteeContext.getExecutionContext(), APPLICATION_ID))
.thenThrow(new ApplicationNotFoundException(APPLICATION_ID));

TicketEntity ticketEntity = ticketService.findById(GraviteeContext.getExecutionContext(), "ticket1");

assertEquals("Unknown", ticketEntity.getApplication());
}
}

0 comments on commit eaacb46

Please sign in to comment.