Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
# Changelog
All notable changes to this project will be documented in this file.

## [9.5.0]
### Added
- investment service intraday generation and ingestion function
- ingest images for investment service (asset logo, asset category image, news content image)
### Changed
- fix investment asset universe from create to upsert implementation

### Fixed
- Added resttemplate client for investment service to fix request multipart/form-data to django server.
- Django & WebFlux don't work OOTB

## [9.4.x]
### Changed

## [9.3.0](https://github.com/Backbase/stream-services/compare/9.2.0...9.3.0)
### Changed
- fix for NoSuchElementException (No value present) thrown while update data groups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.backbase.investment.api.service.v1.AssetUniverseApi;
import com.backbase.investment.api.service.v1.AsyncBulkGroupsApi;
import com.backbase.investment.api.service.v1.ClientApi;
import com.backbase.investment.api.service.v1.ContentApi;
import com.backbase.investment.api.service.v1.FinancialAdviceApi;
import com.backbase.investment.api.service.v1.InvestmentApi;
import com.backbase.investment.api.service.v1.InvestmentProductsApi;
Expand Down Expand Up @@ -100,6 +101,12 @@ public InvestmentApi investmentApi(ApiClient investmentApiClient) {
return new InvestmentApi(investmentApiClient);
}

@Bean
@ConditionalOnMissingBean
public ContentApi contentApi(ApiClient investmentApiClient) {
return new ContentApi(investmentApiClient);
}

@Bean
@ConditionalOnMissingBean
public PaymentsApi paymentsApi(ApiClient investmentApiClient) {
Expand Down
70 changes: 70 additions & 0 deletions stream-investment/investment-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,13 @@

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.backbase</groupId>
<artifactId>backbase-bom</artifactId>
<version>${backbase-bom.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.backbase.buildingblocks</groupId>
<artifactId>backbase-building-blocks-release</artifactId>
Expand All @@ -29,6 +36,11 @@
</dependencyManagement>

<dependencies>
<dependency>
<groupId>com.backbase.buildingblocks</groupId>
<artifactId>api</artifactId>
</dependency>

<!-- DBS clients (includes generated Investment ClientApi) -->
<dependency>
<groupId>com.backbase.stream</groupId>
Expand Down Expand Up @@ -83,6 +95,64 @@
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>unpack</id>
<goals>
<goal>unpack</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.backbase.investment</groupId>
<artifactId>investment-service-api</artifactId>
<classifier>api</classifier>
<type>zip</type>
<outputDirectory>${project.build.directory}/yaml</outputDirectory>
<overWrite>true</overWrite>
</artifactItem>
</artifactItems>
<includes>**/*.yaml, **/*.json</includes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.backbase.oss</groupId>
<artifactId>boat-maven-plugin</artifactId>
<version>0.17.66</version>
<executions>
<execution>
<id>generate-investment-service-api-code</id>
<goals>
<goal>generate-rest-template-embedded</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<inputSpec>${project.build.directory}/yaml/investment-service-api/investment-service-api-v1*.yaml</inputSpec>
<apiPackage>com.backbase.investment.api.service.sync.v1</apiPackage>
<modelPackage>com.backbase.investment.api.service.sync.v1.model</modelPackage>
<enumNameMappings>
<enumNameMapping>Etc/GMT-12=ETC_GMT_1222</enumNameMapping>
</enumNameMappings>
<configOptions>
<openApiNullable>false</openApiNullable>
<useBeanValidation>false</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
@ConfigurationProperties(prefix = "backbase.bootstrap.ingestions.investment")
public class InvestmentIngestionConfigurationProperties {

private boolean assetUniversEnabled = true;
private boolean contentEnabled = true;
private boolean assetUniverseEnabled = true;
private boolean wealthEnabled = true;
private int portfolioActivationPastMonths = 1;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package com.backbase.stream.configuration;

import com.backbase.investment.api.service.sync.v1.AssetUniverseApi;
import com.backbase.investment.api.service.sync.v1.ContentApi;
import com.backbase.stream.investment.service.resttemplate.InvestmentRestAssetUniverseService;
import com.backbase.stream.investment.service.resttemplate.InvestmentRestNewsContentService;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import jakarta.validation.constraints.Pattern;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

@Setter
@Configuration
@ConditionalOnBean(InvestmentServiceConfiguration.class)
@ConfigurationProperties(prefix = "backbase.investment.communication.integration")
public class InvestmentRestServiceApiConfiguration {

private String serviceId = "investment";
private String serviceUrl = "";

@Value("${backbase.communication.http.default-scheme:http}")
@Pattern(regexp = "https?")
private String scheme;

/**
* Configuration for Investment service REST client (ClientApi).
*/
@Bean
@ConditionalOnMissingBean
public com.backbase.investment.api.service.sync.ApiClient restInvestmentApiClient(
@Qualifier("interServiceRestTemplate") RestTemplate restTemplate,
@Qualifier("restInvestmentObjectMapper") ObjectMapper restInvestmentObjectMapper) {

MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(restInvestmentObjectMapper);

restTemplate.getMessageConverters().removeIf(m -> m instanceof MappingJackson2HttpMessageConverter);
restTemplate.getMessageConverters().add(converter);

com.backbase.investment.api.service.sync.ApiClient apiClient = new com.backbase.investment.api.service.sync.ApiClient(
restTemplate);
apiClient.setBasePath(scheme + "://" + serviceId + serviceUrl);
return apiClient;
}

@Bean
@Qualifier("restInvestmentObjectMapper")
public ObjectMapper restInvestmentObjectMapper(ObjectMapper objectMapper) {
ObjectMapper mapper = objectMapper.copy();
mapper.setSerializationInclusion(Include.NON_EMPTY);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
return mapper;
}

@Bean
@ConditionalOnMissingBean
public com.backbase.investment.api.service.sync.v1.ContentApi restContentApi(
com.backbase.investment.api.service.sync.ApiClient restInvestmentApiClient) {
return new com.backbase.investment.api.service.sync.v1.ContentApi(restInvestmentApiClient);
}

@Bean
@ConditionalOnMissingBean
public com.backbase.investment.api.service.sync.v1.AssetUniverseApi restAssetUniverseApi(
com.backbase.investment.api.service.sync.ApiClient restInvestmentApiClient) {
return new com.backbase.investment.api.service.sync.v1.AssetUniverseApi(restInvestmentApiClient);
}

@Bean
public InvestmentRestNewsContentService investmentNewsContentService(ContentApi restContentApi,
com.backbase.investment.api.service.sync.ApiClient restInvestmentApiClient) {
return new InvestmentRestNewsContentService(restContentApi, restInvestmentApiClient);
}


@Bean
public InvestmentRestAssetUniverseService investmentRestAssetUniverseService(AssetUniverseApi assetUniverseApi,
com.backbase.investment.api.service.sync.ApiClient restInvestmentApiClient) {
return new InvestmentRestAssetUniverseService(assetUniverseApi, restInvestmentApiClient);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,28 @@
import com.backbase.investment.api.service.ApiClient;
import com.backbase.investment.api.service.v1.AllocationsApi;
import com.backbase.investment.api.service.v1.AssetUniverseApi;
import com.backbase.investment.api.service.v1.AsyncBulkGroupsApi;
import com.backbase.investment.api.service.v1.ClientApi;
import com.backbase.investment.api.service.v1.FinancialAdviceApi;
import com.backbase.investment.api.service.v1.InvestmentApi;
import com.backbase.investment.api.service.v1.InvestmentProductsApi;
import com.backbase.investment.api.service.v1.PaymentsApi;
import com.backbase.investment.api.service.v1.PortfolioApi;
import com.backbase.stream.clients.autoconfigure.DbsApiClientsAutoConfiguration;
import com.backbase.stream.investment.saga.InvestmentAssetUniversSaga;
import com.backbase.stream.investment.saga.InvestmentAssetUniverseSaga;
import com.backbase.stream.investment.saga.InvestmentContentSaga;
import com.backbase.stream.investment.saga.InvestmentSaga;
import com.backbase.stream.investment.service.AsyncTaskService;
import com.backbase.stream.investment.service.CustomIntegrationApiService;
import com.backbase.stream.investment.service.InvestmentAssetPriceService;
import com.backbase.stream.investment.service.InvestmentAssetUniverseService;
import com.backbase.stream.investment.service.InvestmentClientService;
import com.backbase.stream.investment.service.InvestmentIntradayAssetPriceService;
import com.backbase.stream.investment.service.InvestmentModelPortfolioService;
import com.backbase.stream.investment.service.InvestmentPortfolioAllocationService;
import com.backbase.stream.investment.service.InvestmentPortfolioService;
import com.backbase.stream.investment.service.resttemplate.InvestmentRestAssetUniverseService;
import com.backbase.stream.investment.service.resttemplate.InvestmentRestNewsContentService;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
Expand Down Expand Up @@ -58,8 +63,15 @@ public InvestmentPortfolioService investmentPortfolioService(PortfolioApi portfo

@Bean
public InvestmentAssetUniverseService investmentAssetUniverseService(AssetUniverseApi assetUniverseApi,
InvestmentRestAssetUniverseService investmentRestAssetUniverseService,
CustomIntegrationApiService customIntegrationApiService) {
return new InvestmentAssetUniverseService(assetUniverseApi, customIntegrationApiService);
return new InvestmentAssetUniverseService(assetUniverseApi, investmentRestAssetUniverseService,
customIntegrationApiService);
}

@Bean
public AsyncTaskService asyncTaskService(AsyncBulkGroupsApi asyncBulkGroupsApi) {
return new AsyncTaskService(asyncBulkGroupsApi);
}

@Bean
Expand All @@ -73,6 +85,11 @@ public InvestmentAssetPriceService investmentAssetPriceService(AssetUniverseApi
return new InvestmentAssetPriceService(assetUniverseApi);
}

@Bean
public InvestmentIntradayAssetPriceService investmentIntradayAssetPriceService(AssetUniverseApi assetUniverseApi) {
return new InvestmentIntradayAssetPriceService(assetUniverseApi);
}

@Bean
public InvestmentPortfolioAllocationService investmentPortfolioAllocationService(AllocationsApi allocationsApi,
AssetUniverseApi assetUniverseApi, InvestmentApi investmentApi,
Expand All @@ -93,12 +110,20 @@ public InvestmentSaga investmentSaga(InvestmentClientService investmentClientSer
}

@Bean
public InvestmentAssetUniversSaga investmentStaticDataSaga(
public InvestmentAssetUniverseSaga investmentStaticDataSaga(
InvestmentAssetUniverseService investmentAssetUniverseService,
InvestmentAssetPriceService investmentAssetPriceService,
InvestmentIntradayAssetPriceService investmentIntradayAssetPriceService,
InvestmentIngestionConfigurationProperties coreConfigurationProperties) {
return new InvestmentAssetUniversSaga(investmentAssetUniverseService, investmentAssetPriceService,
coreConfigurationProperties);
return new InvestmentAssetUniverseSaga(investmentAssetUniverseService, investmentAssetPriceService,
investmentIntradayAssetPriceService, coreConfigurationProperties);
}

@Bean
public InvestmentContentSaga investmentContentSaga(
InvestmentRestNewsContentService investmentRestNewsContentService,
InvestmentIngestionConfigurationProperties coreConfigurationProperties) {
return new InvestmentContentSaga(investmentRestNewsContentService, coreConfigurationProperties);
}

}
Loading