Skip to content

Commit

Permalink
fix: Set updatedBy and icon correctly on application import (#3171)
Browse files Browse the repository at this point in the history
* Fix: Set updatedBy and icon correctly on application import

These must be set, regardless of link or legacy.

Closes [BPM-252](https://bonitasoft.atlassian.net/browse/BPM-252)
  • Loading branch information
vhemery authored Sep 26, 2024
1 parent 402c407 commit 4618c90
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public ImportResult toSApplication(final AbstractApplicationNode applicationNode
application.setCreationDate(currentDate);
application.setLastUpdateDate(currentDate);
application.setCreatedBy(createdBy);
application.setUpdatedBy(createdBy);
application.setIconPath(applicationNode.getIconPath());
application.setDescription(applicationNode.getDescription());
application.setState(applicationNode.getState());
Expand All @@ -73,9 +74,9 @@ public ImportResult toSApplication(final AbstractApplicationNode applicationNode
if (applicationNode instanceof ApplicationNode legacy) {
application.setLayoutId(getLayoutId(getLayoutName(legacy), token, importStatus));
application.setThemeId(getThemeId(getThemeName(legacy), token, importStatus));
application.setIconContent(iconContent);
application.setIconMimeType(iconMimeType);
}
application.setIconContent(iconContent);
application.setIconMimeType(iconMimeType);

if (applicationNode.getProfile() != null) {
setProfile(applicationNode.getProfile(), application, importStatus);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.bonitasoft.engine.api.ImportStatus;
import org.bonitasoft.engine.business.application.xml.ApplicationNode;
import org.bonitasoft.engine.business.application.xml.AbstractApplicationNode;
import org.bonitasoft.engine.business.application.xml.ApplicationNodeContainer;
import org.bonitasoft.engine.commons.exceptions.SBonitaException;
import org.bonitasoft.engine.exception.AlreadyExistsException;
Expand Down Expand Up @@ -137,7 +137,7 @@ protected List<ImportStatus> importProvidedApplications(final byte[] xmlContent,
throws ImportException, AlreadyExistsException {
List<ImportStatus> importStatuses = new ArrayList<>();
ApplicationNodeContainer applicationNodeContainer = applicationImporter.getApplicationNodeContainer(xmlContent);
for (ApplicationNode applicationNode : applicationNodeContainer.getApplications()) {
for (AbstractApplicationNode applicationNode : applicationNodeContainer.getAllApplications()) {
// set the strategy to skip it if a version already exists
importStatuses.add(
applicationImporter.importApplication(applicationNode, editable, SessionService.SYSTEM_ID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public void setUp() throws Exception {

private ImportResult convertToSApplication(final AbstractApplicationNode applicationNode, final long createdBy)
throws Exception {
return converter.toSApplication(applicationNode, null, "", createdBy, true);
return converter.toSApplication(applicationNode, null, null, createdBy, true);
}

@Test
Expand Down Expand Up @@ -128,6 +128,7 @@ public void toSApplication_should_return_ImportResult_with_no_errors_and_applica
final SProfile profile = mock(SProfile.class);
given(profile.getId()).willReturn(profileId);
given(profileService.getProfileByName("admin")).willReturn(profile);
final long before = System.currentTimeMillis();

//when
long createdBy = 1L;
Expand All @@ -154,6 +155,12 @@ public void toSApplication_should_return_ImportResult_with_no_errors_and_applica
assertThat(application.isEditable()).isEqualTo(editable);
assertThat(application.isLink()).isFalse();

// also check auto fields
final long after = System.currentTimeMillis();
assertThat(application.getUpdatedBy()).isEqualTo(createdBy);
assertThat(application.getCreationDate()).isBetween(before, after);
assertThat(application.getLastUpdateDate()).isEqualTo(application.getCreationDate());

final ImportStatus importStatus = importResult.getImportStatus();
assertThat(importStatus.getName()).isEqualTo("app");
assertThat(importStatus.getStatus()).isEqualTo(ImportStatus.Status.ADDED);
Expand Down

0 comments on commit 4618c90

Please sign in to comment.