diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJob.java b/legal-core/src/main/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJob.java index 654ea0d3fc404f92871928d6a17b4caf4d9e4b5b..a8230bb9def7ba40e9e01b7485686c20fa5586af 100644 --- a/legal-core/src/main/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJob.java +++ b/legal-core/src/main/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJob.java @@ -10,11 +10,14 @@ import org.opengroup.osdu.legal.tags.LegalTagConstraintValidator; import org.opengroup.osdu.legal.tags.LegalTagService; import org.opengroup.osdu.core.common.model.legal.LegalTag; import org.opengroup.osdu.core.common.model.legal.Properties; -import org.springframework.stereotype.Component; -import org.springframework.beans.factory.annotation.Value; import org.opengroup.osdu.legal.jobs.models.LegalTagJobResult; import org.opengroup.osdu.legal.jobs.models.AboutToExpireLegalTags; import org.opengroup.osdu.core.common.model.http.AppException; +import org.opengroup.osdu.core.common.feature.IFeatureFlag; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.beans.factory.annotation.Value; import java.util.ArrayList; import java.util.Collection; @@ -35,9 +38,14 @@ public class LegalTagStatusJob { @Inject private JaxRsDpsLog log; + @Autowired + private IFeatureFlag aboutToExpireLegalTagFeatureFlag; + @Value("${LEGALTAG_EXPIRATION}") private String legalTagExpiration; + private String aboutToExpireFeatureFlagName = "featureFlag.aboutToExpireLegalTag.enabled"; + public LegalTagJobResult run(String projectId, DpsHeaders headers, String tenantName) throws Exception { LegalTagJobResult legalTagJobResult = new LegalTagJobResult(new StatusChangedTags(), new AboutToExpireLegalTags()); validator.setHeaders(headers); @@ -45,7 +53,9 @@ public class LegalTagStatusJob { legalTagJobResult = checkAndUpdateLegalTagStatus(false, tenantName, legalTagJobResult); publishLegalTagStatusUpdateEvents(!legalTagJobResult.statusChangedTags.getStatusChangedTags().isEmpty(), projectId, headers, legalTagJobResult.statusChangedTags); - publisAboutToExpireLegalTagEvents(!legalTagJobResult.aboutToExpireLegalTags.getAboutToExpireLegalTags().isEmpty(), projectId, headers, legalTagJobResult.aboutToExpireLegalTags); + if (isAboutToExpireFeatureFlagEnabled()) { + publisAboutToExpireLegalTagEvents(!legalTagJobResult.aboutToExpireLegalTags.getAboutToExpireLegalTags().isEmpty(), projectId, headers, legalTagJobResult.aboutToExpireLegalTags); + } return legalTagJobResult; } @@ -56,7 +66,7 @@ public class LegalTagStatusJob { String errors = validator.getErrors(tag); Boolean hasErrors = errors != null; - if (isCurrentlyValid) { + if (isAboutToExpireFeatureFlagEnabled() && isCurrentlyValid) { checkAboutToExpireLegalTag(tag, tenantName, legalTagJobResult.aboutToExpireLegalTags, hasErrors); } @@ -123,4 +133,8 @@ public class LegalTagStatusJob { aboutToExpireLegalTagPublisher.publish(projectId, headers, aboutToExpireLegalTags); } } + + private Boolean isAboutToExpireFeatureFlagEnabled() { + return aboutToExpireLegalTagFeatureFlag.isFeatureEnabled(aboutToExpireFeatureFlagName); + } } diff --git a/legal-core/src/test/java/org/opengroup/osdu/legal/controller/LegalTagStatusJobControllerTest.java b/legal-core/src/test/java/org/opengroup/osdu/legal/controller/LegalTagStatusJobControllerTest.java index eca5b0f14e739f01f8c3e5244da655d746f62bc8..f744daed612ffa567c3aa0d2a7ed5075c2724a08 100644 --- a/legal-core/src/test/java/org/opengroup/osdu/legal/controller/LegalTagStatusJobControllerTest.java +++ b/legal-core/src/test/java/org/opengroup/osdu/legal/controller/LegalTagStatusJobControllerTest.java @@ -74,7 +74,7 @@ public class LegalTagStatusJobControllerTest { ResponseEntity<HttpStatus> result = sut.checkLegalTagStatusChanges(); assertEquals(HttpStatus.NO_CONTENT, result.getStatusCode()); - verify(auditLogger).legalTagJobRanSuccess(Collections.singletonList(statusChangedTags.toString())); + verify(auditLogger).legalTagJobRanSuccess(Collections.singletonList(legalTagJobResult.toString())); } @Test diff --git a/legal-core/src/test/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJobTests.java b/legal-core/src/test/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJobTests.java index 9f2a93114b99dd42fadae4e9e3bbfcf2b2e60aaf..1d1c9f1957f58aff9571347264d309f016412b8e 100644 --- a/legal-core/src/test/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJobTests.java +++ b/legal-core/src/test/java/org/opengroup/osdu/legal/jobs/LegalTagStatusJobTests.java @@ -13,6 +13,7 @@ import org.opengroup.osdu.core.common.model.legal.LegalTag; import org.opengroup.osdu.core.common.model.legal.Properties; import org.opengroup.osdu.legal.jobs.models.LegalTagJobResult; import org.opengroup.osdu.legal.jobs.models.AboutToExpireLegalTags; +import org.opengroup.osdu.core.common.feature.IFeatureFlag; import org.junit.Before; import org.junit.Test; @@ -21,6 +22,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.test.util.ReflectionTestUtils; +import org.springframework.boot.test.context.SpringBootTest; import java.util.ArrayList; import java.util.Collection; @@ -33,6 +35,7 @@ import static org.mockito.Mockito.*; import static junit.framework.TestCase.fail; @RunWith(MockitoJUnitRunner.class) +@SpringBootTest(classes = {IFeatureFlag.class}) public class LegalTagStatusJobTests { @Mock private LegalTagConstraintValidator validator; @@ -46,6 +49,8 @@ public class LegalTagStatusJobTests { private IAboutToExpireLegalTagPublisher aboutToExpireLegalTagPublisherMock; @Mock private JaxRsDpsLog log; + @Mock + private IFeatureFlag aboutToExpireLegalTagFeatureFlag; @InjectMocks LegalTagStatusJob sut; @@ -58,6 +63,8 @@ public class LegalTagStatusJobTests { headers.put(DpsHeaders.DATA_PARTITION_ID, "SIS-INTERNAL-HQ"); headers.put(DpsHeaders.CORRELATION_ID, "12345-12345"); headers.put(DpsHeaders.USER_EMAIL, "nonexistent@nonexisent.domain"); + // aboutToExpireFeatureFlag + when(aboutToExpireLegalTagFeatureFlag.isFeatureEnabled(any())).thenReturn(true); ReflectionTestUtils.setField(sut, "legalTagExpiration", "1d"); } diff --git a/provider/legal-aws/src/main/resources/application.properties b/provider/legal-aws/src/main/resources/application.properties index 1bcc025fe18fe27fa55dcec5a00f3f1ddcfc5333..060f1deff9d6ea923026a68c6ecb0c40c2e1047c 100644 --- a/provider/legal-aws/src/main/resources/application.properties +++ b/provider/legal-aws/src/main/resources/application.properties @@ -64,3 +64,7 @@ repository.implementation=${LEGAL_SERVICE_REPOSITORY_IMPLEMENTATION:dynamodb} #Tomcat limits server.tomcat.threads.max=${TOMCAT_THREADS_MAX:300} + +# Feature flag settings +featureFlag.strategy=appProperty +featureFlag.aboutToExpireLegalTag.enabled=true