Skip to content
Open
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
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ plugins {
}

group = 'com.github.figaf'
version = '2.13-IRT-5516-SNAPSHOT'
version = '2.13-IRT-5557-SNAPSHOT'

ext {
enableSnapshotsForDependencyResolutionAndPublishing = project.findProperty('enableSnapshots') ?: 'false'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ public List<TpmObjectMetadata> getAllMetadata(RequestContext requestContext) {
);
}

public TpmObjectMetadata getSingleMetadata(RequestContext requestContext, String agreementId) {
log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}", requestContext, agreementId);
return executeGet(
requestContext.withPreservingIntegrationSuiteUrl(),
String.format(AGREEMENT_RESOURCE, agreementId),
response -> new GenericTpmResponseParser().parseSingleObject(response, TpmObjectType.CLOUD_AGREEMENT)
);
}

public TpmObjectMetadata createAgreement(RequestContext requestContext, AgreementCreationRequest agreementCreationRequest) {
log.debug("#createAgreement: requestContext = {}, agreementCreationRequest = {}", requestContext, agreementCreationRequest);
String payload = serializeToJson(agreementCreationRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.figaf.integration.common.entity.RequestContext;
import com.figaf.integration.common.factory.HttpClientsFactory;
import com.figaf.integration.tpm.entity.*;
import com.figaf.integration.tpm.enumtypes.TpmObjectType;
import com.figaf.integration.tpm.parser.B2BScenarioResponseParser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -16,12 +15,16 @@
import java.util.List;

import static com.figaf.integration.common.utils.Utils.optString;
import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_AGREEMENT_TEMPLATE;
import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_COMPANY_PROFILE;
import static com.figaf.integration.tpm.enumtypes.TpmObjectType.CLOUD_SUBSIDIARY;
import static java.lang.String.format;

@Slf4j
public class AgreementTemplateClient extends TpmBaseClient {

private static final String AGREEMENT_TEMPLATE_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates";
private static final String AGREEMENT_TEMPLATE_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates/%s";
private static final String AGREEMENT_TEMPLATES_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates";
private static final String AGREEMENT_TEMPLATE_B2B_SCENARIOS_RESOURCE = "/itspaces/tpm/api/2.0/agreementtemplates/%s/b2bscenario/%s";

public AgreementTemplateClient(HttpClientsFactory httpClientsFactory) {
Expand All @@ -33,44 +36,24 @@ public List<AgreementTemplateMetadata> getAllMetadata(RequestContext requestCont

return executeGet(
requestContext.withPreservingIntegrationSuiteUrl(),
AGREEMENT_TEMPLATE_RESOURCE,
AGREEMENT_TEMPLATES_RESOURCE,
response -> {
JSONArray agreementTemplates = new JSONArray(response);
List<AgreementTemplateMetadata> agreementTemplateMetadataList = new ArrayList<>();
for (int i = 0; i < agreementTemplates.length(); i++) {
JSONObject agreementTemplateJSONObject = agreementTemplates.getJSONObject(i);
AgreementTemplateMetadata agreementTemplateMetadata = new AgreementTemplateMetadata();
String agreementTemplateId = agreementTemplateJSONObject.getString("id");
agreementTemplateMetadata.setObjectId(agreementTemplateId);
agreementTemplateMetadata.setTpmObjectType(TpmObjectType.CLOUD_AGREEMENT_TEMPLATE);
agreementTemplateMetadata.setDisplayedName(agreementTemplateJSONObject.getString("displayName"));
JSONObject administrativeDataJsonObject = agreementTemplateJSONObject.getJSONObject("administrativeData");
AdministrativeData administrativeData = buildAdministrativeDataObject(administrativeDataJsonObject);
agreementTemplateMetadata.setAdministrativeData(administrativeData);
agreementTemplateMetadata.setPayload(agreementTemplateJSONObject.toString());
String b2BScenarioDetailsId = optString(agreementTemplateJSONObject, "B2BScenarioDetailsId");
agreementTemplateMetadata.setB2bScenarioDetailsId(b2BScenarioDetailsId);

AdministrativeData b2bScenarioAdministrativeData = getB2bScenarioDetailsAdministrativeData(requestContext, agreementTemplateId, b2BScenarioDetailsId);
agreementTemplateMetadata.setB2bScenarioDetailsAdministrativeData(b2bScenarioAdministrativeData);

JSONObject companyDataJsonObject = agreementTemplateJSONObject.getJSONObject("CompanyData");
TpmObjectReference tpmObjectReference = new TpmObjectReference();
tpmObjectReference.setObjectId(companyDataJsonObject.getString("Id"));
String selectedProfileType = optString(companyDataJsonObject, "SelectedProfileType");
if ("SUBSIDIARY".equals(selectedProfileType)) {
tpmObjectReference.setTpmObjectType(TpmObjectType.CLOUD_SUBSIDIARY);
} else {
tpmObjectReference.setTpmObjectType(TpmObjectType.CLOUD_COMPANY_PROFILE);
}
agreementTemplateMetadata.setTpmObjectReferences(Collections.singletonList(tpmObjectReference));

agreementTemplateMetadataList.add(agreementTemplateMetadata);
agreementTemplateMetadataList.add(parseSingleObject(requestContext, agreementTemplates.getJSONObject(i)));
}

return agreementTemplateMetadataList;
}
);
}

public AgreementTemplateMetadata getSingleMetadata(RequestContext requestContext, String agreementTemplateId) {
log.debug("#getSingleMetadata: requestContext = {}, agreementTemplateId = {}", requestContext, agreementTemplateId);
return executeGet(
requestContext.withPreservingIntegrationSuiteUrl(),
format(AGREEMENT_TEMPLATE_RESOURCE, agreementTemplateId),
response -> parseSingleObject(requestContext, new JSONObject(response))
);
}

Expand Down Expand Up @@ -148,4 +131,37 @@ public AdministrativeData getB2bScenarioDetailsAdministrativeData(RequestContext
}
}

private AgreementTemplateMetadata parseSingleObject(RequestContext requestContext, JSONObject agreementTemplateJSONObject) {
AgreementTemplateMetadata agreementTemplateMetadata = new AgreementTemplateMetadata();

String agreementTemplateId = agreementTemplateJSONObject.getString("id");
agreementTemplateMetadata.setObjectId(agreementTemplateId);
agreementTemplateMetadata.setTpmObjectType(CLOUD_AGREEMENT_TEMPLATE);
agreementTemplateMetadata.setDisplayedName(agreementTemplateJSONObject.getString("displayName"));

JSONObject administrativeDataJsonObject = agreementTemplateJSONObject.getJSONObject("administrativeData");
AdministrativeData administrativeData = buildAdministrativeDataObject(administrativeDataJsonObject);
agreementTemplateMetadata.setAdministrativeData(administrativeData);

agreementTemplateMetadata.setPayload(agreementTemplateJSONObject.toString());

String b2BScenarioDetailsId = optString(agreementTemplateJSONObject, "B2BScenarioDetailsId");
agreementTemplateMetadata.setB2bScenarioDetailsId(b2BScenarioDetailsId);

AdministrativeData b2bScenarioAdministrativeData = getB2bScenarioDetailsAdministrativeData(requestContext, agreementTemplateId, b2BScenarioDetailsId);
agreementTemplateMetadata.setB2bScenarioDetailsAdministrativeData(b2bScenarioAdministrativeData);

JSONObject companyDataJsonObject = agreementTemplateJSONObject.getJSONObject("CompanyData");

TpmObjectReference tpmObjectReference = new TpmObjectReference();
tpmObjectReference.setObjectId(companyDataJsonObject.getString("Id"));

String selectedProfileType = optString(companyDataJsonObject, "SelectedProfileType");
tpmObjectReference.setTpmObjectType("SUBSIDIARY".equals(selectedProfileType) ? CLOUD_SUBSIDIARY : CLOUD_COMPANY_PROFILE);

agreementTemplateMetadata.setTpmObjectReferences(Collections.singletonList(tpmObjectReference));

return agreementTemplateMetadata;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ public class B2BScenarioClient extends TpmBaseClient {

private static final String B2B_SCENARIOS_RESOURCE = "/itspaces/tpm/api/2.0/tradingpartneragreements/%s/b2bscenario";
private static final String B2B_SCENARIO_RESOURCE = "/itspaces/tpm/api/2.0/tradingpartneragreements/%s/b2bscenario/%s";
private final AgreementClient agreementClient;

public B2BScenarioClient(HttpClientsFactory httpClientsFactory) {
public B2BScenarioClient(HttpClientsFactory httpClientsFactory, AgreementClient agreementClient) {
super(httpClientsFactory);
this.agreementClient = agreementClient;
}

public List<B2BScenarioMetadata> getB2BScenariosForAgreement(RequestContext requestContext, TpmObjectMetadata agreementMetadata) {
Expand All @@ -37,6 +39,21 @@ public List<B2BScenarioMetadata> getB2BScenariosForAgreement(RequestContext requ
);
}

public B2BScenarioMetadata getSingleMetadata(RequestContext requestContext, String agreementId, String compositeB2bScenarioId) {
log.debug("#getSingleMetadata: requestContext = {}, agreementId = {}, compositeB2bScenarioId = {}", requestContext, agreementId, compositeB2bScenarioId);
TpmObjectMetadata agreementMetadata = agreementClient.getSingleMetadata(requestContext, agreementId);

// First get all scenarios
List<B2BScenarioMetadata> allScenarios = getB2BScenariosForAgreement(requestContext, agreementMetadata);


// Then filter by the specific ID
return allScenarios.stream()
.filter(scenario -> scenario.getObjectId().equals(compositeB2bScenarioId))
.findFirst()
.orElseThrow(() -> new ClientIntegrationException(format("B2B scenario with ID '%s' not found for agreement '%s'", compositeB2bScenarioId, agreementId)));
}

public JSONObject getB2BScenariosForAgreementAsJsonObject(RequestContext requestContext, String agreementId) {
log.debug("#getB2BScenariosForAgreementAsJsonResponse: requestContext = {}, agreementId = {}", requestContext, agreementId);
return executeGet(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ void test_getAllMetadata(AgentTestData agentTestData) {
assertThat(agreementsMetadata.get(0).getAgreementLifeCycleMetadata()).isNotNull();
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_getSingleMetadata(AgentTestData agentTestData) {
log.debug("#test_getSingleMetadata: agentTestData={}", agentTestData);
RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle());
List<TpmObjectMetadata> agreementsMetadata = agreementClient.getAllMetadata(requestContext);
for (TpmObjectMetadata singleMetadata : agreementsMetadata) {
TpmObjectMetadata agreementMetadata = agreementClient.getSingleMetadata(requestContext, singleMetadata.getObjectId());
assertThat(agreementMetadata).as(METADATA_NOT_NULL_MSG).isNotNull();
}
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_createAndDeleteAgreement(CustomHostAgentTestData customHostAgentTestData) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.figaf.integration.tpm.entity.AdministrativeData;
import com.figaf.integration.tpm.entity.AgreementTemplateMetadata;
import com.figaf.integration.tpm.entity.B2BScenarioInAgreementTemplate;
import com.figaf.integration.tpm.entity.TpmObjectMetadata;
import com.figaf.integration.tpm.entity.TpmObjectReference;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeAll;
Expand Down Expand Up @@ -41,6 +42,20 @@ void test_getAllMetadata(AgentTestData agentTestData) {
assertThat(agreementTemplateMetadataList).isNotEmpty();
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_getSingleMetadata(AgentTestData agentTestData) {
log.debug("#test_getSingleMetadata: agentTestData={}", agentTestData);
RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle());

List<AgreementTemplateMetadata> agreementTemplateMetadataList = agreementTemplateClient.getAllMetadata(requestContext);
for (AgreementTemplateMetadata agreementTemplateMetadata : agreementTemplateMetadataList) {
TpmObjectMetadata tpmObjectMetadata = agreementTemplateClient.getSingleMetadata(requestContext, agreementTemplateMetadata.getObjectId());
assertThat(tpmObjectMetadata).isNotNull();
}
assertThat(agreementTemplateMetadataList).isNotEmpty();
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_getB2BScenariosForAgreementTemplate(AgentTestData agentTestData) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class B2BScenarioClientTest {
static void setUp() {
HttpClientsFactory httpClientsFactory = new HttpClientsFactory();
agreementClient = new AgreementClient(httpClientsFactory);
b2BScenarioClient = new B2BScenarioClient(httpClientsFactory);
b2BScenarioClient = new B2BScenarioClient(httpClientsFactory, agreementClient);
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
Expand Down Expand Up @@ -79,6 +79,30 @@ void test_getB2BScenariosForAgreement(AgentTestData agentTestData) {
assertThat(receiverCommunicationMetadataList).isNotEmpty();
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_getSingleB2BScenarioMetadata(AgentTestData agentTestData) {
RequestContext requestContext = agentTestData.createRequestContext(agentTestData.getTitle());
List<TpmObjectMetadata> limitedAgreements = agreementClient
.getAllMetadata(requestContext)
.stream()
.limit(10) // Take first 10 agreements
.toList();

for (TpmObjectMetadata agreement : limitedAgreements) {
List<B2BScenarioMetadata> limitedB2BScenariosForAgreement =
b2BScenarioClient
.getB2BScenariosForAgreement(requestContext, agreement)
.stream()
.limit(10) // Take first 10 B2BScenarios For Agreement
.toList();
for (B2BScenarioMetadata b2BScenarioForAgreement : limitedB2BScenariosForAgreement) {
B2BScenarioMetadata b2BScenarioMetadata = b2BScenarioClient.getSingleMetadata(requestContext, agreement.getObjectId(), b2BScenarioForAgreement.getObjectId());
assertThat(b2BScenarioMetadata).isNotNull();
}
}
}

@ParameterizedTest(name = PARAMETERIZED_TEST_NAME)
@ArgumentsSource(AgentTestDataProvider.class)
void test_getB2BScenariosForAgreementAsJsonObject(AgentTestData agentTestData) {
Expand Down