Skip to content

Commit 9f61ad9

Browse files
ashkliankorymsha
authored andcommitted
Enable providing a message when archiving content #11164
(cherry picked from commit c8b7ac5)
1 parent d14650f commit 9f61ad9

File tree

6 files changed

+61
-16
lines changed

6 files changed

+61
-16
lines changed

modules/core/core-api/src/main/java/com/enonic/xp/archive/ArchiveContentParams.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@ public final class ArchiveContentParams
1414

1515
private final boolean stopInherit;
1616

17+
private final String message;
18+
1719
public ArchiveContentParams( Builder builder )
1820
{
1921
this.contentId = builder.contentId;
2022
this.archiveContentListener = builder.archiveContentListener;
2123
this.stopInherit = builder.stopInherit;
24+
this.message = builder.message;
2225
}
2326

2427
public static ArchiveContentParams.Builder create()
@@ -41,6 +44,11 @@ public boolean stopInherit()
4144
return stopInherit;
4245
}
4346

47+
public String getMessage()
48+
{
49+
return message;
50+
}
51+
4452
public void validate()
4553
{
4654
Preconditions.checkNotNull( this.contentId, "Content id cannot be null" );
@@ -54,6 +62,8 @@ public static final class Builder
5462

5563
private boolean stopInherit = true;
5664

65+
private String message;
66+
5767
private Builder()
5868
{
5969
}
@@ -76,6 +86,12 @@ public Builder stopInherit( boolean stopInherit )
7686
return this;
7787
}
7888

89+
public Builder message( final String message )
90+
{
91+
this.message = message;
92+
return this;
93+
}
94+
7995
private void validate()
8096
{
8197
Preconditions.checkNotNull( contentId, "contentId must be set" );

modules/core/core-api/src/main/java/com/enonic/xp/content/ContentConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ public final class ContentConstants
7676

7777
public static final String PUBLISH_COMMIT_PREFIX_DELIMITER = " ";
7878

79+
public static final String ARCHIVE_COMMIT_PREFIX_DELIMITER = " ";
80+
7981
public static final String CONTENT_ROOT_PATH_ATTRIBUTE = "contentRootPath";
8082

8183
private static final PrincipalKey CONTENT_SUPER_USER_KEY = PrincipalKey.ofUser( IdProviderKey.system(), "content-su" );

modules/core/core-content/src/main/java/com/enonic/xp/core/impl/content/ArchiveContentCommand.java

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,12 @@ final class ArchiveContentCommand
5252

5353
private final ArchiveContentParams params;
5454

55-
private final ArchiveContentListener archiveContentListener;
56-
5755
private final PathResolver pathResolver;
5856

5957
private ArchiveContentCommand( final Builder builder )
6058
{
6159
super( builder );
6260
this.params = builder.params;
63-
this.archiveContentListener = builder.archiveContentListener;
6461
this.pathResolver = new PathResolver();
6562
}
6663

@@ -120,9 +117,9 @@ private ArchiveContentsResult doExecute()
120117
@Override
121118
public void nodesMoved( final int count )
122119
{
123-
if ( archiveContentListener != null )
120+
if ( params.getArchiveContentListener() != null )
124121
{
125-
archiveContentListener.contentArchived( count );
122+
params.getArchiveContentListener().contentArchived( count );
126123
}
127124
}
128125

@@ -169,7 +166,10 @@ private void updatePropertiesAndCommit( final NodeId nodeId, final NodePath orig
169166
} ).build() );
170167
routableNodeVersionIds.add( RoutableNodeVersionId.from( updated.id(), updated.getNodeVersionId() ) );
171168

172-
nodeService.commit( NodeCommitEntry.create().message( ContentConstants.ARCHIVE_COMMIT_PREFIX ).build(),
169+
final String commitEntryMessage = params.getMessage() == null
170+
? ContentConstants.ARCHIVE_COMMIT_PREFIX
171+
: String.join( ContentConstants.ARCHIVE_COMMIT_PREFIX_DELIMITER, ContentConstants.ARCHIVE_COMMIT_PREFIX, params.getMessage() );
172+
nodeService.commit( NodeCommitEntry.create().message( commitEntryMessage ).build(),
173173
routableNodeVersionIds.build() );
174174

175175
}
@@ -227,19 +227,11 @@ public static class Builder
227227
{
228228
private final ArchiveContentParams params;
229229

230-
private ArchiveContentListener archiveContentListener;
231-
232230
private Builder( final ArchiveContentParams params )
233231
{
234232
this.params = params;
235233
}
236234

237-
public Builder archiveListener( final ArchiveContentListener archiveContentListener )
238-
{
239-
this.archiveContentListener = archiveContentListener;
240-
return this;
241-
}
242-
243235
@Override
244236
void validate()
245237
{

modules/core/core-content/src/main/java/com/enonic/xp/core/impl/content/ContentServiceImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,6 @@ public ArchiveContentsResult archive( final ArchiveContentParams params )
726726
.translator( translator )
727727
.eventPublisher( eventPublisher )
728728
.contentTypeService( contentTypeService )
729-
.archiveListener( params.getArchiveContentListener() )
730729
.build()
731730
.execute();
732731

modules/core/core-content/src/main/java/com/enonic/xp/core/impl/content/ContentVersionFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ private String getMessage( final NodeCommitEntry nodeCommitEntry )
120120
return nodeCommitEntry.getMessage()
121121
.substring( ContentConstants.PUBLISH_COMMIT_PREFIX.length() + ContentConstants.PUBLISH_COMMIT_PREFIX_DELIMITER.length() );
122122
}
123+
124+
if ( nodeCommitEntry.getMessage()
125+
.startsWith( ContentConstants.ARCHIVE_COMMIT_PREFIX + ContentConstants.PUBLISH_COMMIT_PREFIX_DELIMITER ) )
126+
{
127+
return nodeCommitEntry.getMessage()
128+
.substring( ContentConstants.ARCHIVE_COMMIT_PREFIX.length() + ContentConstants.PUBLISH_COMMIT_PREFIX_DELIMITER.length() );
129+
}
130+
123131
return null;
124132
}
125133

modules/itest/itest-core/src/test/java/com/enonic/xp/core/content/ContentServiceImplTest_archive.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.time.Instant;
44
import java.util.EnumSet;
5+
import java.util.Iterator;
56

67
import org.junit.jupiter.api.BeforeEach;
78
import org.junit.jupiter.api.Test;
@@ -15,7 +16,10 @@
1516
import com.enonic.xp.content.ContentIds;
1617
import com.enonic.xp.content.ContentInheritType;
1718
import com.enonic.xp.content.ContentPath;
19+
import com.enonic.xp.content.ContentVersion;
1820
import com.enonic.xp.content.DeleteContentParams;
21+
import com.enonic.xp.content.FindContentVersionsParams;
22+
import com.enonic.xp.content.FindContentVersionsResult;
1923
import com.enonic.xp.content.ImportContentParams;
2024
import com.enonic.xp.content.MoveContentParams;
2125
import com.enonic.xp.content.PushContentParams;
@@ -31,6 +35,7 @@
3135
import static org.assertj.core.api.Assertions.assertThat;
3236
import static org.junit.jupiter.api.Assertions.assertEquals;
3337
import static org.junit.jupiter.api.Assertions.assertFalse;
38+
import static org.junit.jupiter.api.Assertions.assertNotNull;
3439
import static org.junit.jupiter.api.Assertions.assertNull;
3540
import static org.junit.jupiter.api.Assertions.assertThrows;
3641
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -56,7 +61,7 @@ public void archive_tree()
5661
final Content child1_2 = createContent( child1.getPath(), "child2_1" );
5762

5863
final ArchiveContentParams params =
59-
ArchiveContentParams.create().contentId( parent.getId() ).archiveContentListener( listener ).build();
64+
ArchiveContentParams.create().contentId( parent.getId() ).message( "archive msg" ).archiveContentListener( listener ).build();
6065

6166
final ArchiveContentsResult result = this.contentService.archive( params );
6267

@@ -285,6 +290,29 @@ public void archive_check_properties()
285290
} );
286291
}
287292

293+
@Test
294+
public void archive_with_message()
295+
throws Exception
296+
{
297+
final Content parent = createContent( ContentPath.ROOT, "archive" );
298+
final String archiveMessage = "Archive test message";
299+
300+
final ArchiveContentParams params =
301+
ArchiveContentParams.create().contentId( parent.getId() ).message( archiveMessage ).archiveContentListener( listener ).build();
302+
303+
this.contentService.archive( params );
304+
305+
FindContentVersionsResult versions =
306+
this.contentService.getVersions( FindContentVersionsParams.create().contentId( parent.getId() ).build() );
307+
308+
Iterator<ContentVersion> iterator = versions.getContentVersions().iterator();
309+
assertTrue( iterator.hasNext() );
310+
311+
ContentVersion version = iterator.next();
312+
assertNotNull( version.getPublishInfo().getTimestamp() );
313+
assertEquals( archiveMessage, version.getPublishInfo().getMessage() );
314+
}
315+
288316
private static final class TestListener
289317
implements ArchiveContentListener
290318
{

0 commit comments

Comments
 (0)