Skip to content

Commit

Permalink
refactor(service): link api metadata decode context to api freemarker…
Browse files Browse the repository at this point in the history
… template
  • Loading branch information
jourdiw committed Mar 22, 2024
1 parent d387d0c commit e1b1ae4
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 37 deletions.
Expand Up @@ -17,8 +17,8 @@

import io.gravitee.apim.core.DomainService;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.ApiMetadataDecodeContext;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.PrimaryOwnerMetadataDecodeContext;
import io.gravitee.apim.core.api.model.Api;
import io.gravitee.apim.core.documentation.model.PrimaryOwnerApiTemplateData;
import io.gravitee.apim.core.membership.model.PrimaryOwnerEntity;
import io.gravitee.apim.core.search.Indexer;
import io.gravitee.apim.core.search.model.IndexableApi;
Expand All @@ -45,7 +45,7 @@ public void index(Indexer.IndexationContext context, Api apiToIndex, PrimaryOwne
.createdAt(Date.from(apiToIndex.getCreatedAt().toInstant()))
.updatedAt(Date.from(apiToIndex.getUpdatedAt().toInstant()))
.primaryOwner(
new PrimaryOwnerMetadataDecodeContext(
new PrimaryOwnerApiTemplateData(
primaryOwner.id(),
primaryOwner.displayName(),
primaryOwner.email(),
Expand Down
Expand Up @@ -16,18 +16,18 @@
package io.gravitee.apim.core.api.domain_service;

import io.gravitee.apim.core.DomainService;
import io.gravitee.apim.core.api.model.Api;
import io.gravitee.apim.core.api.query_service.ApiMetadataQueryService;
import io.gravitee.apim.core.documentation.model.ApiFreemarkerTemplate;
import io.gravitee.apim.core.exception.TechnicalDomainException;
import io.gravitee.apim.core.membership.model.PrimaryOwnerEntity;
import io.gravitee.apim.core.template.TemplateProcessor;
import io.gravitee.apim.core.template.TemplateProcessorException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.SuperBuilder;
import lombok.extern.slf4j.Slf4j;

@Slf4j
Expand All @@ -54,11 +54,11 @@ public Map<String, String> decodeMetadata(String apiId, ApiMetadataDecodeContext
return decode(metadata, context);
}

public String decodeMetadataValue(String value, Object context) {
public String decodeMetadataValue(String value, ApiMetadataDecodeContext context) {
try {
return templateProcessor.processInlineTemplate(value, Collections.singletonMap("api", context));
} catch (TemplateProcessorException e) {
log.warn("Error while creating template '{}' from reader:\n{}", e.getTemplate(), e.getMessage());
log.warn("Error while validating template '{}' from reader:\n{}", e.getTemplate(), e.getMessage());
return value;
}
}
Expand All @@ -83,26 +83,11 @@ private Map<String, String> decode(Map<String, String> metadata, ApiMetadataDeco
}
}

@Builder
@AllArgsConstructor
@Data
public static class ApiMetadataDecodeContext {

private String name;
private String description;
private Date createdAt;
private Date updatedAt;
private PrimaryOwnerMetadataDecodeContext primaryOwner;
}
@SuperBuilder
public static class ApiMetadataDecodeContext extends ApiFreemarkerTemplate {

@Builder
@AllArgsConstructor
@Data
public static class PrimaryOwnerMetadataDecodeContext {

private String id;
private String displayName;
private String email;
private String type;
public ApiMetadataDecodeContext(Api api, Map<String, String> metadata, PrimaryOwnerEntity primaryOwner) {
super(api, metadata, primaryOwner);
}
}
}
Expand Up @@ -22,11 +22,12 @@
import io.gravitee.definition.model.v4.ApiType;
import java.util.*;
import lombok.*;
import lombok.experimental.SuperBuilder;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@SuperBuilder
public class ApiFreemarkerTemplate {

private String id;
Expand Down
Expand Up @@ -17,7 +17,7 @@

import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.ApiMetadataDecodeContext;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.PrimaryOwnerMetadataDecodeContext;
import io.gravitee.apim.core.documentation.model.PrimaryOwnerApiTemplateData;
import io.gravitee.apim.core.membership.domain_service.ApiPrimaryOwnerDomainService;
import io.gravitee.apim.core.membership.domain_service.ApplicationPrimaryOwnerDomainService;
import io.gravitee.apim.core.notification.model.ApiNotificationTemplateData;
Expand Down Expand Up @@ -117,7 +117,7 @@ private Optional<ApiNotificationTemplateData> buildApiNotificationTemplateData(S
.createdAt(api.getCreatedAt())
.updatedAt(api.getUpdatedAt())
.primaryOwner(
new PrimaryOwnerMetadataDecodeContext(
new PrimaryOwnerApiTemplateData(
apiPrimaryOwner.id(),
apiPrimaryOwner.displayName(),
apiPrimaryOwner.email(),
Expand Down
Expand Up @@ -22,6 +22,7 @@
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.ApiMetadataDecodeContext;
import io.gravitee.apim.core.api.query_service.ApiQueryService;
import io.gravitee.apim.core.documentation.crud_service.PageCrudService;
import io.gravitee.apim.core.documentation.model.PrimaryOwnerApiTemplateData;
import io.gravitee.apim.core.membership.domain_service.ApiPrimaryOwnerDomainService;
import io.gravitee.apim.core.search.model.IndexableApi;
import io.gravitee.apim.core.search.model.IndexablePage;
Expand Down Expand Up @@ -211,7 +212,7 @@ private Indexable getSource(final ExecutionContext executionContext, String claz
.createdAt(Date.from(api.getCreatedAt().toInstant()))
.updatedAt(Date.from(api.getUpdatedAt().toInstant()))
.primaryOwner(
new ApiMetadataDecoderDomainService.PrimaryOwnerMetadataDecodeContext(
new PrimaryOwnerApiTemplateData(
primaryOwner.id(),
primaryOwner.displayName(),
primaryOwner.email(),
Expand Down
Expand Up @@ -19,11 +19,10 @@

import inmemory.ApiMetadataQueryServiceInMemory;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.ApiMetadataDecodeContext;
import io.gravitee.apim.core.api.domain_service.ApiMetadataDecoderDomainService.PrimaryOwnerMetadataDecodeContext;
import io.gravitee.apim.core.api.model.ApiMetadata;
import io.gravitee.apim.core.documentation.model.PrimaryOwnerApiTemplateData;
import io.gravitee.apim.core.metadata.model.Metadata;
import io.gravitee.apim.infra.template.FreemarkerTemplateProcessor;
import io.gravitee.rest.api.model.MetadataFormat;
import java.sql.Date;
import java.time.Instant;
import java.util.List;
Expand All @@ -41,9 +40,7 @@ class ApiMetadataDecoderDomainServiceTest {
.description("api-description")
.createdAt(Date.from(Instant.parse("2020-02-01T20:22:02.00Z")))
.updatedAt(Date.from(Instant.parse("2020-02-02T20:22:02.00Z")))
.primaryOwner(
PrimaryOwnerMetadataDecodeContext.builder().displayName("Jane Doe").email("jane.doe@gravitee.io").type("USER").build()
)
.primaryOwner(PrimaryOwnerApiTemplateData.builder().displayName("Jane Doe").email("jane.doe@gravitee.io").type("USER").build())
.build();

ApiMetadataQueryServiceInMemory apiMetadataQueryService = new ApiMetadataQueryServiceInMemory();
Expand Down

0 comments on commit e1b1ae4

Please sign in to comment.