test_class.declarator: businessObjectDataDaoHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private BusinessObjectDataDaoHelper businessObjectDataDaoHelper;
test_class.type: BusinessObjectDataDaoHelper
test_class.var_name: businessObjectDataDaoHelper
test_class.declarator: businessObjectDataHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private BusinessObjectDataHelper businessObjectDataHelper;
test_class.type: BusinessObjectDataHelper
test_class.var_name: businessObjectDataHelper
test_class.declarator: businessObjectDataInitiateDestroyHelperServiceImpl
test_class.modifier: @InjectMocks
      private
test_class.original_string: @InjectMocks
      private BusinessObjectDataInitiateDestroyHelperServiceImpl businessObjectDataInitiateDestroyHelperServiceImpl;
test_class.type: BusinessObjectDataInitiateDestroyHelperServiceImpl
test_class.var_name: businessObjectDataInitiateDestroyHelperServiceImpl
test_class.declarator: businessObjectFormatDao
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private BusinessObjectFormatDao businessObjectFormatDao;
test_class.type: BusinessObjectFormatDao
test_class.var_name: businessObjectFormatDao
test_class.declarator: businessObjectFormatHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private BusinessObjectFormatHelper businessObjectFormatHelper;
test_class.type: BusinessObjectFormatHelper
test_class.var_name: businessObjectFormatHelper
test_class.declarator: configurationHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private ConfigurationHelper configurationHelper;
test_class.type: ConfigurationHelper
test_class.var_name: configurationHelper
test_class.declarator: herdDao
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private HerdDao herdDao;
test_class.type: HerdDao
test_class.var_name: herdDao
test_class.declarator: herdStringHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private HerdStringHelper herdStringHelper;
test_class.type: HerdStringHelper
test_class.var_name: herdStringHelper
test_class.declarator: s3KeyPrefixHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private S3KeyPrefixHelper s3KeyPrefixHelper;
test_class.type: S3KeyPrefixHelper
test_class.var_name: s3KeyPrefixHelper
test_class.declarator: s3Service
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private S3Service s3Service;
test_class.type: S3Service
test_class.var_name: s3Service
test_class.declarator: storageFileHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private StorageFileHelper storageFileHelper;
test_class.type: StorageFileHelper
test_class.var_name: storageFileHelper
test_class.declarator: storageHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private StorageHelper storageHelper;
test_class.type: StorageHelper
test_class.var_name: storageHelper
test_class.declarator: storageUnitDao
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private StorageUnitDao storageUnitDao;
test_class.type: StorageUnitDao
test_class.var_name: storageUnitDao
test_class.declarator: storageUnitDaoHelper
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private StorageUnitDaoHelper storageUnitDaoHelper;
test_class.type: StorageUnitDaoHelper
test_class.var_name: storageUnitDaoHelper
test_class.file: herd-code/herd-service/src/test/java/org/finra/herd/service/impl/BusinessObjectDataInitiateDestroyHelperServiceImplTest.java
test_class.identifier: BusinessObjectDataInitiateDestroyHelperServiceImplTest
test_class.superclass: extends AbstractServiceTest
test_case.body: @Test
      public void testExecuteInitiateDestroyAfterStep()
      {
          // Create a business object data key.
          BusinessObjectDataKey businessObjectDataKey =
              new BusinessObjectDataKey(BDEF_NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE,
                  NO_SUBPARTITION_VALUES, DATA_VERSION);
  
          // Create a business object data status entity.
          BusinessObjectDataStatusEntity businessObjectDataStatusEntity = new BusinessObjectDataStatusEntity();
          businessObjectDataStatusEntity.setCode(BusinessObjectDataStatusEntity.VALID);
  
          // Create a business object data entity.
          BusinessObjectDataEntity businessObjectDataEntity = new BusinessObjectDataEntity();
          businessObjectDataEntity.setStatus(businessObjectDataStatusEntity);
  
          // Create a storage unit status entity.
          StorageUnitStatusEntity storageUnitStatusEntity = new StorageUnitStatusEntity();
          storageUnitStatusEntity.setCode(StorageUnitStatusEntity.DISABLING);
  
          // Create a storage unit entity.
          StorageUnitEntity storageUnitEntity = new StorageUnitEntity();
          storageUnitEntity.setStatus(storageUnitStatusEntity);
  
          // Create a business object data destroy parameters DTO.
          BusinessObjectDataDestroyDto businessObjectDataDestroyDto =
              new BusinessObjectDataDestroyDto(businessObjectDataKey, STORAGE_NAME, BusinessObjectDataStatusEntity.DELETED, BusinessObjectDataStatusEntity.VALID,
                  StorageUnitStatusEntity.DISABLING, StorageUnitStatusEntity.ENABLED, S3_ENDPOINT, S3_BUCKET_NAME, TEST_S3_KEY_PREFIX, S3_OBJECT_TAG_KEY,
                  S3_OBJECT_TAG_VALUE, S3_OBJECT_TAGGER_ROLE_ARN, S3_OBJECT_TAGGER_ROLE_SESSION_NAME, BDATA_FINAL_DESTROY_DELAY_IN_DAYS);
  
          // Create a business object data.
          BusinessObjectData businessObjectData = new BusinessObjectData();
          businessObjectData.setId(ID);
  
          // Mock the external calls.
          when(businessObjectDataDaoHelper.getBusinessObjectDataEntity(businessObjectDataKey)).thenReturn(businessObjectDataEntity);
          when(storageUnitDaoHelper.getStorageUnitEntity(STORAGE_NAME, businessObjectDataEntity)).thenReturn(storageUnitEntity);
          doAnswer(new Answer<Void>()
          {
              public Void answer(InvocationOnMock invocation)
              {
                  // Get the new storage unit status.
                  String storageUnitStatus = (String) invocation.getArguments()[1];
  
                  // Create a storage unit status entity for the new storage unit status.
                  StorageUnitStatusEntity storageUnitStatusEntity = new StorageUnitStatusEntity();
                  storageUnitStatusEntity.setCode(storageUnitStatus);
  
                  // Update the storage unit with the new status.
                  StorageUnitEntity storageUnitEntity = (StorageUnitEntity) invocation.getArguments()[0];
                  storageUnitEntity.setStatus(storageUnitStatusEntity);
  
                  return null;
              }
          }).when(storageUnitDaoHelper).updateStorageUnitStatus(storageUnitEntity, StorageUnitStatusEntity.DISABLED, StorageUnitStatusEntity.DISABLED);
          when(businessObjectDataHelper.createBusinessObjectDataFromEntity(businessObjectDataEntity)).thenReturn(businessObjectData);
  
          // Call the method under test.
          BusinessObjectData result = businessObjectDataInitiateDestroyHelperServiceImpl.executeInitiateDestroyAfterStep(businessObjectDataDestroyDto);
  
          // Verify the external calls.
          verify(businessObjectDataDaoHelper).getBusinessObjectDataEntity(businessObjectDataKey);
          verify(storageUnitDaoHelper).getStorageUnitEntity(STORAGE_NAME, businessObjectDataEntity);
          verify(storageUnitDaoHelper).updateStorageUnitStatus(storageUnitEntity, StorageUnitStatusEntity.DISABLED, StorageUnitStatusEntity.DISABLED);
          verify(businessObjectDataHelper).createBusinessObjectDataFromEntity(businessObjectDataEntity);
          verifyNoMoreInteractionsHelper();
  
          // Validate the results.
          assertEquals(businessObjectData, result);
          assertEquals(
              new BusinessObjectDataDestroyDto(businessObjectDataKey, STORAGE_NAME, BusinessObjectDataStatusEntity.DELETED, BusinessObjectDataStatusEntity.VALID,
                  StorageUnitStatusEntity.DISABLED, StorageUnitStatusEntity.DISABLING, S3_ENDPOINT, S3_BUCKET_NAME, TEST_S3_KEY_PREFIX, S3_OBJECT_TAG_KEY,
                  S3_OBJECT_TAG_VALUE, S3_OBJECT_TAGGER_ROLE_ARN, S3_OBJECT_TAGGER_ROLE_SESSION_NAME, BDATA_FINAL_DESTROY_DELAY_IN_DAYS),
              businessObjectDataDestroyDto);
      }
test_case.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImplTest.testExecuteInitiateDestroyAfterStep()
test_case.full_signature: @Test public void testExecuteInitiateDestroyAfterStep()
test_case.identifier: testExecuteInitiateDestroyAfterStep
test_case.invocations: setCode setStatus setCode setStatus setId thenReturn when getBusinessObjectDataEntity thenReturn when getStorageUnitEntity updateStorageUnitStatus when doAnswer getArguments setCode getArguments setStatus thenReturn when createBusinessObjectDataFromEntity executeInitiateDestroyAfterStep getBusinessObjectDataEntity verify getStorageUnitEntity verify updateStorageUnitStatus verify createBusinessObjectDataFromEntity verify verifyNoMoreInteractionsHelper assertEquals assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testExecuteInitiateDestroyAfterStep()
focal_class.declarator: SUPPORTED_STORAGE_UNIT_STATUSES = Collections.unmodifiableList(Arrays
          .asList(StorageUnitStatusEntity.ENABLED, StorageUnitStatusEntity.ARCHIVED, StorageUnitStatusEntity.RESTORED, StorageUnitStatusEntity.DISABLING,
              StorageUnitStatusEntity.DISABLED))
focal_class.modifier: private static final
focal_class.original_string: private static final List<String> SUPPORTED_STORAGE_UNIT_STATUSES = Collections.unmodifiableList(Arrays
          .asList(StorageUnitStatusEntity.ENABLED, StorageUnitStatusEntity.ARCHIVED, StorageUnitStatusEntity.RESTORED, StorageUnitStatusEntity.DISABLING,
              StorageUnitStatusEntity.DISABLED));
focal_class.type: List<String>
focal_class.var_name: SUPPORTED_STORAGE_UNIT_STATUSES
focal_class.declarator: businessObjectDataDaoHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private BusinessObjectDataDaoHelper businessObjectDataDaoHelper;
focal_class.type: BusinessObjectDataDaoHelper
focal_class.var_name: businessObjectDataDaoHelper
focal_class.declarator: businessObjectDataHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private BusinessObjectDataHelper businessObjectDataHelper;
focal_class.type: BusinessObjectDataHelper
focal_class.var_name: businessObjectDataHelper
focal_class.declarator: businessObjectFormatDao
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private BusinessObjectFormatDao businessObjectFormatDao;
focal_class.type: BusinessObjectFormatDao
focal_class.var_name: businessObjectFormatDao
focal_class.declarator: businessObjectFormatHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private BusinessObjectFormatHelper businessObjectFormatHelper;
focal_class.type: BusinessObjectFormatHelper
focal_class.var_name: businessObjectFormatHelper
focal_class.declarator: configurationHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private ConfigurationHelper configurationHelper;
focal_class.type: ConfigurationHelper
focal_class.var_name: configurationHelper
focal_class.declarator: herdDao
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private HerdDao herdDao;
focal_class.type: HerdDao
focal_class.var_name: herdDao
focal_class.declarator: herdStringHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private HerdStringHelper herdStringHelper;
focal_class.type: HerdStringHelper
focal_class.var_name: herdStringHelper
focal_class.declarator: s3KeyPrefixHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private S3KeyPrefixHelper s3KeyPrefixHelper;
focal_class.type: S3KeyPrefixHelper
focal_class.var_name: s3KeyPrefixHelper
focal_class.declarator: s3Service
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private S3Service s3Service;
focal_class.type: S3Service
focal_class.var_name: s3Service
focal_class.declarator: storageFileHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private StorageFileHelper storageFileHelper;
focal_class.type: StorageFileHelper
focal_class.var_name: storageFileHelper
focal_class.declarator: storageHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private StorageHelper storageHelper;
focal_class.type: StorageHelper
focal_class.var_name: storageHelper
focal_class.declarator: storageUnitDao
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private StorageUnitDao storageUnitDao;
focal_class.type: StorageUnitDao
focal_class.var_name: storageUnitDao
focal_class.declarator: storageUnitDaoHelper
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private StorageUnitDaoHelper storageUnitDaoHelper;
focal_class.type: StorageUnitDaoHelper
focal_class.var_name: storageUnitDaoHelper
focal_class.file: herd-code/herd-service/src/main/java/org/finra/herd/service/impl/BusinessObjectDataInitiateDestroyHelperServiceImpl.java
focal_class.identifier: BusinessObjectDataInitiateDestroyHelperServiceImpl
focal_class.interfaces: implements BusinessObjectDataInitiateDestroyHelperService
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.full_signature: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public BusinessObjectData executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.identifier: executeInitiateDestroyAfterStep
focal_class.modifiers: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.return: BusinessObjectData
focal_class.signature: BusinessObjectData executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.executeS3SpecificSteps(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.full_signature: @Override @Transactional(propagation = Propagation.NOT_SUPPORTED) public void executeS3SpecificSteps(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.identifier: executeS3SpecificSteps
focal_class.modifiers: @Override @Transactional(propagation = Propagation.NOT_SUPPORTED) public
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.return: void
focal_class.signature: void executeS3SpecificSteps(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.prepareToInitiateDestroy(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.full_signature: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public void prepareToInitiateDestroy(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.identifier: prepareToInitiateDestroy
focal_class.modifiers: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.return: void
focal_class.signature: void prepareToInitiateDestroy(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.executeInitiateDestroyAfterStepImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.full_signature:  BusinessObjectData executeInitiateDestroyAfterStepImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.identifier: executeInitiateDestroyAfterStepImpl
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.return: BusinessObjectData
focal_class.signature: BusinessObjectData executeInitiateDestroyAfterStepImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.executeS3SpecificStepsImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.full_signature:  void executeS3SpecificStepsImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.identifier: executeS3SpecificStepsImpl
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.return: void
focal_class.signature: void executeS3SpecificStepsImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.getAndValidateFinalDestroyInDays()
focal_class.full_signature:  int getAndValidateFinalDestroyInDays()
focal_class.identifier: getAndValidateFinalDestroyInDays
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getAndValidateFinalDestroyInDays()
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.getAndValidateStorageUnit(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.full_signature:  StorageUnitEntity getAndValidateStorageUnit(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.identifier: getAndValidateStorageUnit
focal_class.parameters: (BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.return: StorageUnitEntity
focal_class.signature: StorageUnitEntity getAndValidateStorageUnit(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.prepareToInitiateDestroyImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.full_signature:  void prepareToInitiateDestroyImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.identifier: prepareToInitiateDestroyImpl
focal_class.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.return: void
focal_class.signature: void prepareToInitiateDestroyImpl(BusinessObjectDataDestroyDto businessObjectDataDestroyDto, BusinessObjectDataKey businessObjectDataKey)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.validateBusinessObjectData(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.full_signature:  void validateBusinessObjectData(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.identifier: validateBusinessObjectData
focal_class.parameters: (BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.return: void
focal_class.signature: void validateBusinessObjectData(BusinessObjectDataEntity businessObjectDataEntity, BusinessObjectDataKey businessObjectDataKey)
focal_class.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.validateStorage(StorageEntity storageEntity)
focal_class.full_signature:  void validateStorage(StorageEntity storageEntity)
focal_class.identifier: validateStorage
focal_class.parameters: (StorageEntity storageEntity)
focal_class.return: void
focal_class.signature: void validateStorage(StorageEntity storageEntity)
focal_method.body: @PublishNotificationMessages
      @Override
      @Transactional(propagation = Propagation.REQUIRES_NEW)
      public BusinessObjectData executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
      {
          return executeInitiateDestroyAfterStepImpl(businessObjectDataDestroyDto);
      }
focal_method.class_method_signature: BusinessObjectDataInitiateDestroyHelperServiceImpl.executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_method.full_signature: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public BusinessObjectData executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_method.identifier: executeInitiateDestroyAfterStep
focal_method.invocations: executeInitiateDestroyAfterStepImpl
focal_method.modifiers: @PublishNotificationMessages @Override @Transactional(propagation = Propagation.REQUIRES_NEW) public
focal_method.parameters: (BusinessObjectDataDestroyDto businessObjectDataDestroyDto)
focal_method.return: BusinessObjectData
focal_method.signature: BusinessObjectData executeInitiateDestroyAfterStep(BusinessObjectDataDestroyDto businessObjectDataDestroyDto)