Skip to content

Commit

Permalink
implement attachments patching #10904
Browse files Browse the repository at this point in the history
  • Loading branch information
vbradnitski committed Feb 14, 2025
1 parent 826d8e0 commit 68fc4fd
Show file tree
Hide file tree
Showing 14 changed files with 53 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.enonic.xp.annotation.PublicApi;

@PublicApi
public interface ContentSuperEditor
public interface ContentModifier
{
void edit( SuperEditableContent edit );
void modify( ModifiableContent edit );
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import com.enonic.xp.security.PrincipalKey;

@PublicApi
public class SuperEditableContent
public class ModifiableContent
{
public final Content source;

Expand Down Expand Up @@ -56,7 +56,7 @@ public class SuperEditableContent

public EditableFieldPolicyWrapper<Attachments> attachments;

public SuperEditableContent( final Content source )
public ModifiableContent( final Content source )
{
this.source = source;
this.displayName = new EditableFieldPolicyWrapper<>( source.getDisplayName() );
Expand Down Expand Up @@ -101,16 +101,16 @@ public Content build()
.workflowInfo( workflowInfo.produce() )
.manualOrderValue( manualOrderValue.produce() )
.setInherit( inherit.produce() )
.variantOf( variantOf.produce() ).
.variantOf( variantOf.produce() )

// differs from "update"
modifier( modifier.produce() )
.modifier( modifier.produce() )
.modifiedTime( modifiedTime.produce() )
.attachments( attachments.produce() )
.build();
}

public enum EditableFieldPolicy
private enum EditableFieldPolicy
{
KEEP, REPLACE, REMOVE
}
Expand All @@ -121,24 +121,24 @@ public static class EditableFieldPolicyWrapper<T>

private EditableFieldPolicy policy;

private Function<T, T> handler = Function.identity();
private Function<T, T> modifier = Function.identity();

EditableFieldPolicyWrapper( T value )
{
this.originalValue = value;
this.policy = EditableFieldPolicy.KEEP;
}

public EditableFieldPolicyWrapper<T> setHandler( Function<T, T> handler )
public EditableFieldPolicyWrapper<T> setModifier( Function<T, T> modifier )
{
this.handler = handler;
this.modifier = modifier;
this.policy = EditableFieldPolicy.REPLACE;
return this;
}

public EditableFieldPolicyWrapper<T> setValue( T value )
{
this.handler = ( v ) -> value;
this.modifier = ( v ) -> value;
this.policy = EditableFieldPolicy.REPLACE;
return this;
}
Expand All @@ -153,7 +153,7 @@ T produce()
return switch ( policy )
{
case KEEP -> originalValue;
case REPLACE -> handler.apply( originalValue );
case REPLACE -> modifier.apply( originalValue );
case REMOVE -> null;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import com.enonic.xp.site.SiteConfigs;

@PublicApi
public class SuperEditableSite
extends SuperEditableContent
public class ModifiableSite
extends ModifiableContent
{
public EditableFieldPolicyWrapper<SiteConfigs> siteConfigs;

public SuperEditableSite( final Site source )
public ModifiableSite( final Site source )
{
super( source );
this.siteConfigs = new EditableFieldPolicyWrapper<>( source.getSiteConfigs() );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,16 @@ public final class ModifyContentParams
{
private final ContentId id;

private final ContentSuperEditor editor;
private final ContentModifier modifier;

private final CreateAttachments createAttachments;
//
// private BinaryReferences removeAttachments = BinaryReferences.empty();
//
// private boolean clearAttachments;

private final Branches branches;

private ModifyContentParams( final Builder builder )
{
this.id = builder.id;
this.editor = builder.editor;
this.modifier = builder.modifier;
this.createAttachments = builder.createAttachments;
this.branches = Branches.from( builder.branches.build() );
}
Expand All @@ -47,9 +43,9 @@ public CreateAttachments getCreateAttachments()
return createAttachments;
}

public ContentSuperEditor getEditor()
public ContentModifier getModifier()
{
return editor;
return modifier;
}

public Branches getBranches()
Expand All @@ -63,7 +59,7 @@ public static final class Builder

private ContentId id;

private ContentSuperEditor editor;
private ContentModifier modifier;

private CreateAttachments createAttachments = CreateAttachments.empty();

Expand All @@ -77,9 +73,9 @@ public Builder contentId( final ContentId id )
return this;
}

public Builder editor( final ContentSuperEditor editor )
public Builder modifier( final ContentModifier modifier )
{
this.editor = editor;
this.modifier = modifier;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,13 @@ public class ProcessUpdateParams

private final Content editedContent;

// private final User modifier;

private ProcessUpdateParams( final Builder builder )
{
this.createAttachments = builder.createAttachments;
contentType = builder.contentType;
mediaInfo = builder.mediaInfo;
originalContent = builder.originalContent;
editedContent = builder.editedContent;
// modifier = builder.modifier;
}

public static Builder create()
Expand Down Expand Up @@ -55,17 +52,11 @@ public Content getOriginalContent()
return originalContent;
}

// @Deprecated
public Content getEditedContent()
{
return editedContent;
}

// public EditableContent getEditableContent()
// {
// return editableContent;
// }

@Deprecated
public User getModifier()
{
Expand Down Expand Up @@ -112,13 +103,6 @@ public Builder originalContent( final Content originalContent )
return this;
}

// public Builder editableContent( final EditableContent editableContent )
// {
// this.editableContent = editableContent;
// return this;
// }

// @Deprecated
public Builder editedContent( final Content editedContent )
{
this.editedContent = editedContent;
Expand All @@ -128,7 +112,6 @@ public Builder editedContent( final Content editedContent )
@Deprecated
public Builder modifier( final User modifier )
{
// this.modifier = modifier;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ public final class ProcessUpdateResult
{
final ContentEditor editor;

@Deprecated
final CreateAttachments createAttachments;

@Deprecated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class UpdateNodeParams
{
private final NodeId id;

private final NodePath path; // TODO: it's not usable for Modify. Split?
private final NodePath path;

private final NodeEditor editor;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ interface ContentAuditLogSupport

void update( UpdateMediaParams params, Content content );

void patch( ModifyContentParams params, ModifyContentResult result );
void modify( ModifyContentParams params, ModifyContentResult result );

void delete( DeleteContentParams params, DeleteContentsResult contents );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -506,9 +506,9 @@ private void doReorderChildren( final ReorderChildContentsParams params, final R
}

@Override
public void patch( final ModifyContentParams params, final ModifyContentResult result )
public void modify( final ModifyContentParams params, final ModifyContentResult result )
{

// TODO: Implement
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -380,11 +380,11 @@ public ModifyContentResult modify( final ModifyContentParams params )
.pageDescriptorService( this.pageDescriptorService )
.partDescriptorService( this.partDescriptorService )
.layoutDescriptorService( this.layoutDescriptorService )
.allowUnsafeAttachmentNames( config.attachments_allowUnsafeNames() ). // ???
build()
.allowUnsafeAttachmentNames( config.attachments_allowUnsafeNames() )
.build()
.execute();

contentAuditLogSupport.patch( params, result );
contentAuditLogSupport.modify( params, result );

return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

import com.enonic.xp.content.Content;
import com.enonic.xp.content.ContentId;
import com.enonic.xp.content.ContentSuperEditor;
import com.enonic.xp.content.ContentModifier;
import com.enonic.xp.content.ModifiableContent;
import com.enonic.xp.content.ModifiableSite;
import com.enonic.xp.content.ModifyContentParams;
import com.enonic.xp.content.ModifyContentResult;
import com.enonic.xp.content.SuperEditableContent;
import com.enonic.xp.content.SuperEditableSite;
import com.enonic.xp.node.ModifyNodeResult;
import com.enonic.xp.node.UpdateNodeParams;
import com.enonic.xp.site.Site;
Expand All @@ -32,14 +32,19 @@ public static Builder create( final ModifyContentParams params )
return create().params( params );
}

public ModifyContentResult execute()
ModifyContentResult execute()
{
validateCreateAttachments( params.getCreateAttachments() );
return doExecute();
}

private ModifyContentResult doExecute()
{
final Content contentBeforeChange = getContent( params.getContentId() );

Content editedContent = superEditContent( params.getEditor(), contentBeforeChange );
Content modifiedContent = modifyContent( params.getModifier(), contentBeforeChange );

final UpdateNodeParams updateNodeParams = UpdateNodeParamsFactory.create()
.editedContent( editedContent )
final UpdateNodeParams updateNodeParams = UpdateNodeParamsFactory.create().editedContent( modifiedContent )
.createAttachments( params.getCreateAttachments() )
.branches( params.getBranches() )
.contentTypeService( this.contentTypeService )
Expand All @@ -62,15 +67,15 @@ public ModifyContentResult execute()
return builder.build();
}

private Content superEditContent( final ContentSuperEditor editor, final Content original )
private Content modifyContent( final ContentModifier modifier, final Content original )
{
final SuperEditableContent editableContent =
original.isSite() ? new SuperEditableSite( (Site) original ) : new SuperEditableContent( original );
if ( editor != null )
final ModifiableContent modifiableContent =
original.isSite() ? new ModifiableSite( (Site) original ) : new ModifiableContent( original );
if ( modifier != null )
{
editor.edit( editableContent );
modifier.modify( modifiableContent );
}
return editableContent.build();
return modifiableContent.build();
}

public static final class Builder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,6 @@ private Content processContent( final Content originalContent, Content editedCon
.createAttachments( params.getCreateAttachments() )
.originalContent( originalContent )
.editedContent( editedContent )
// .modifier( getCurrentUser() )
.build();
final ProcessUpdateResult result = contentProcessor.processUpdate( processUpdateParams );

Expand Down
Loading

0 comments on commit 68fc4fd

Please sign in to comment.