diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiIndexerDomainService.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiIndexerDomainService.java index ce6cfbdba3c..09dd90833f7 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiIndexerDomainService.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiIndexerDomainService.java @@ -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; @@ -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(), diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainService.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainService.java index e10d0afdce9..fdd3f73258b 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainService.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainService.java @@ -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 @@ -54,11 +54,11 @@ public Map 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; } } @@ -83,26 +83,11 @@ private Map decode(Map 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 metadata, PrimaryOwnerEntity primaryOwner) { + super(api, metadata, primaryOwner); + } } } diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/documentation/model/ApiFreemarkerTemplate.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/documentation/model/ApiFreemarkerTemplate.java index 577bb49d3f1..b304c4a20b5 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/documentation/model/ApiFreemarkerTemplate.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/core/documentation/model/ApiFreemarkerTemplate.java @@ -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; diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/notification/internal/TemplateDataFetcher.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/notification/internal/TemplateDataFetcher.java index a0a8b83fc49..0dcdf362806 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/notification/internal/TemplateDataFetcher.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/apim/infra/notification/internal/TemplateDataFetcher.java @@ -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; @@ -117,7 +117,7 @@ private Optional buildApiNotificationTemplateData(S .createdAt(api.getCreatedAt()) .updatedAt(api.getUpdatedAt()) .primaryOwner( - new PrimaryOwnerMetadataDecodeContext( + new PrimaryOwnerApiTemplateData( apiPrimaryOwner.id(), apiPrimaryOwner.displayName(), apiPrimaryOwner.email(), diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/SearchEngineServiceImpl.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/SearchEngineServiceImpl.java index 051a70b529b..ac74497c1d4 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/SearchEngineServiceImpl.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/search/SearchEngineServiceImpl.java @@ -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; @@ -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(), diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainServiceTest.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainServiceTest.java index 07206991dec..770a10b2113 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainServiceTest.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/test/java/io/gravitee/apim/core/api/domain_service/ApiMetadataDecoderDomainServiceTest.java @@ -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; @@ -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();