Search in sources :

Example 1 with ProcessUpdateParams

use of com.enonic.xp.content.processor.ProcessUpdateParams in project xp by enonic.

the class ImageContentProcessorTest method testProcessUpdate.

@Test
public void testProcessUpdate() throws IOException {
    Mockito.when(contentService.getBinary(Mockito.any(), Mockito.any())).thenReturn(this.loadImage("cat-small.jpg"));
    final ProcessUpdateParams processUpdateParams = ProcessUpdateParams.create().contentType(ContentType.create().name(ContentTypeName.imageMedia()).superType(ContentTypeName.imageMedia()).build()).build();
    final ProcessUpdateResult result = this.imageContentProcessor.processUpdate(processUpdateParams);
    final PropertyTree data = new PropertyTree();
    data.addProperty(ContentPropertyNames.MEDIA, ValueFactory.newString("MyImage.jpg"));
    final EditableContent editableContent = new EditableContent(Media.create().name("myContentName").type(ContentTypeName.imageMedia()).parentPath(ContentPath.ROOT).data(data).addExtraData(new ExtraData(MediaInfo.IMAGE_INFO_METADATA_NAME, new PropertyTree())).attachments(Attachments.from(Attachment.create().mimeType("image/jpg").name("MyImage.jpg").build())).build());
    result.getEditor().edit(editableContent);
    assertNotNull(editableContent.extraDatas.first().getData().getLong("pixelSize", 0));
    assertNotNull(editableContent.extraDatas.first().getData().getLong("imageHeight", 0));
    assertNotNull(editableContent.extraDatas.first().getData().getLong("imageWidth", 0));
    assertNotNull(editableContent.extraDatas.first().getData().getLong("byteSize", 0));
}
Also used : ProcessUpdateParams(com.enonic.xp.content.processor.ProcessUpdateParams) PropertyTree(com.enonic.xp.data.PropertyTree) EditableContent(com.enonic.xp.content.EditableContent) ProcessUpdateResult(com.enonic.xp.content.processor.ProcessUpdateResult) ExtraData(com.enonic.xp.content.ExtraData) Test(org.junit.jupiter.api.Test)

Example 2 with ProcessUpdateParams

use of com.enonic.xp.content.processor.ProcessUpdateParams in project xp by enonic.

the class ProjectAccessSiteProcessorTest method testProcessUpdateWithNoRightsAndNoChanges.

@Test
public void testProcessUpdateWithNoRightsAndNoChanges() {
    final Context context = ContextBuilder.from(ContextAccessor.current()).authInfo(AuthenticationInfo.create().user(TEST_USER).build()).build();
    context.runWith(() -> {
        final ProcessUpdateParams params = createProcessUpdateParams("white", "white");
        final ProcessUpdateResult result = this.projectAccessSiteProcessor.processUpdate(params);
        assertNull(result);
    });
}
Also used : Context(com.enonic.xp.context.Context) ProcessUpdateParams(com.enonic.xp.content.processor.ProcessUpdateParams) ProcessUpdateResult(com.enonic.xp.content.processor.ProcessUpdateResult) Test(org.junit.jupiter.api.Test)

Example 3 with ProcessUpdateParams

use of com.enonic.xp.content.processor.ProcessUpdateParams in project xp by enonic.

the class ProjectAccessSiteProcessorTest method testProcessUpdateWithNoRights.

@Test
public void testProcessUpdateWithNoRights() throws ProjectAccessRequiredException {
    final Context context = ContextBuilder.from(ContextAccessor.current()).authInfo(AuthenticationInfo.create().user(TEST_USER).build()).build();
    context.runWith(() -> {
        final ProcessUpdateParams params = createProcessUpdateParams("white", "blue");
        assertThrows(ProjectAccessRequiredException.class, () -> this.projectAccessSiteProcessor.processUpdate(params));
    });
}
Also used : Context(com.enonic.xp.context.Context) ProcessUpdateParams(com.enonic.xp.content.processor.ProcessUpdateParams) Test(org.junit.jupiter.api.Test)

Example 4 with ProcessUpdateParams

use of com.enonic.xp.content.processor.ProcessUpdateParams in project xp by enonic.

the class ProjectAccessSiteProcessorTest method testProcessUpdateWithNoChanges.

@Test
public void testProcessUpdateWithNoChanges() {
    final Context context = ContextBuilder.from(ContextAccessor.current()).authInfo(AuthenticationInfo.create().user(TEST_USER).principals(RoleKeys.ADMIN).build()).build();
    context.runWith(() -> {
        final ProcessUpdateParams params = createProcessUpdateParams("white", "white");
        final ProcessUpdateResult result = this.projectAccessSiteProcessor.processUpdate(params);
        assertNull(result);
    });
}
Also used : Context(com.enonic.xp.context.Context) ProcessUpdateParams(com.enonic.xp.content.processor.ProcessUpdateParams) ProcessUpdateResult(com.enonic.xp.content.processor.ProcessUpdateResult) Test(org.junit.jupiter.api.Test)

Example 5 with ProcessUpdateParams

use of com.enonic.xp.content.processor.ProcessUpdateParams in project xp by enonic.

the class ImageContentProcessor method processUpdate.

@Override
public ProcessUpdateResult processUpdate(final ProcessUpdateParams params) {
    final CreateAttachments createAttachments = params.getCreateAttachments();
    final MediaInfo mediaInfo = params.getMediaInfo();
    final CreateAttachment sourceAttachment = createAttachments == null ? null : createAttachments.first();
    final ContentEditor editor;
    if (mediaInfo != null) {
        editor = editable -> {
            final Map<XDataName, ExtraData> extraDatas = editable.extraDatas.stream().collect(Collectors.toMap(ExtraData::getName, o -> o));
            final XDatas contentXDatas = getXDatas(params.getContentType().getName());
            extractMetadata(mediaInfo, contentXDatas, sourceAttachment).forEach(extraData -> extraDatas.put(extraData.getName(), extraData));
            editable.extraDatas = ExtraDatas.create().addAll(extraDatas.values()).build();
        };
    } else {
        editor = editable -> {
            if (!params.getContentType().getName().isDescendantOfMedia()) {
                return;
            }
            editable.extraDatas = updateImageMetadata(editable);
        };
    }
    return new ProcessUpdateResult(createAttachments, editor);
}
Also used : MediaInfo(com.enonic.xp.media.MediaInfo) Cropping(com.enonic.xp.image.Cropping) ContentTypeService(com.enonic.xp.schema.content.ContentTypeService) ContentEditor(com.enonic.xp.content.ContentEditor) MEDIA_INFO_BYTE_SIZE(com.enonic.xp.media.MediaInfo.MEDIA_INFO_BYTE_SIZE) Map(java.util.Map) CreateAttachment(com.enonic.xp.attachment.CreateAttachment) ImageIO(javax.imageio.ImageIO) GetContentTypeParams(com.enonic.xp.schema.content.GetContentTypeParams) XDataName(com.enonic.xp.schema.xdata.XDataName) Media(com.enonic.xp.content.Media) Property(com.enonic.xp.data.Property) IMAGE_INFO_PIXEL_SIZE(com.enonic.xp.media.MediaInfo.IMAGE_INFO_PIXEL_SIZE) BufferedImage(java.awt.image.BufferedImage) ImmutableMap(com.google.common.collect.ImmutableMap) Collection(java.util.Collection) ContentProcessor(com.enonic.xp.content.processor.ContentProcessor) IMAGE_INFO_IMAGE_WIDTH(com.enonic.xp.media.MediaInfo.IMAGE_INFO_IMAGE_WIDTH) ContentType(com.enonic.xp.schema.content.ContentType) Collectors(java.util.stream.Collectors) ExtraDatas(com.enonic.xp.content.ExtraDatas) EditableContent(com.enonic.xp.content.EditableContent) InputTypeName(com.enonic.xp.inputtype.InputTypeName) FormItem(com.enonic.xp.form.FormItem) IMAGE_INFO_IMAGE_HEIGHT(com.enonic.xp.media.MediaInfo.IMAGE_INFO_IMAGE_HEIGHT) ProcessUpdateResult(com.enonic.xp.content.processor.ProcessUpdateResult) CreateContentParams(com.enonic.xp.content.CreateContentParams) ContentService(com.enonic.xp.content.ContentService) IMAGE_INFO(com.enonic.xp.media.MediaInfo.IMAGE_INFO) ProcessCreateResult(com.enonic.xp.content.processor.ProcessCreateResult) HashMap(java.util.HashMap) Attachment(com.enonic.xp.attachment.Attachment) ContentTypeName(com.enonic.xp.schema.content.ContentTypeName) ProcessCreateParams(com.enonic.xp.content.processor.ProcessCreateParams) Component(org.osgi.service.component.annotations.Component) FormItemType(com.enonic.xp.form.FormItemType) CreateAttachments(com.enonic.xp.attachment.CreateAttachments) ExtraData(com.enonic.xp.content.ExtraData) XData(com.enonic.xp.schema.xdata.XData) Exceptions(com.enonic.xp.util.Exceptions) GeoPoint(com.enonic.xp.util.GeoPoint) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) ByteSource(com.google.common.io.ByteSource) XDataService(com.enonic.xp.schema.xdata.XDataService) PropertyTree(com.enonic.xp.data.PropertyTree) ProcessUpdateParams(com.enonic.xp.content.processor.ProcessUpdateParams) XDatas(com.enonic.xp.schema.xdata.XDatas) IOException(java.io.IOException) ValueTypes(com.enonic.xp.data.ValueTypes) Preconditions(com.google.common.base.Preconditions) Input(com.enonic.xp.form.Input) Reference(org.osgi.service.component.annotations.Reference) InputStream(java.io.InputStream) CreateAttachments(com.enonic.xp.attachment.CreateAttachments) MediaInfo(com.enonic.xp.media.MediaInfo) CreateAttachment(com.enonic.xp.attachment.CreateAttachment) ContentEditor(com.enonic.xp.content.ContentEditor) XDatas(com.enonic.xp.schema.xdata.XDatas) ProcessUpdateResult(com.enonic.xp.content.processor.ProcessUpdateResult) ExtraData(com.enonic.xp.content.ExtraData) XDataName(com.enonic.xp.schema.xdata.XDataName)

Aggregations

ProcessUpdateParams (com.enonic.xp.content.processor.ProcessUpdateParams)9 ProcessUpdateResult (com.enonic.xp.content.processor.ProcessUpdateResult)7 Test (org.junit.jupiter.api.Test)7 Context (com.enonic.xp.context.Context)5 EditableContent (com.enonic.xp.content.EditableContent)3 PropertyTree (com.enonic.xp.data.PropertyTree)3 CreateAttachments (com.enonic.xp.attachment.CreateAttachments)2 ExtraData (com.enonic.xp.content.ExtraData)2 ContentTypeService (com.enonic.xp.schema.content.ContentTypeService)2 GetContentTypeParams (com.enonic.xp.schema.content.GetContentTypeParams)2 XData (com.enonic.xp.schema.xdata.XData)2 XDataService (com.enonic.xp.schema.xdata.XDataService)2 Attachment (com.enonic.xp.attachment.Attachment)1 CreateAttachment (com.enonic.xp.attachment.CreateAttachment)1 ContentEditor (com.enonic.xp.content.ContentEditor)1 ContentService (com.enonic.xp.content.ContentService)1 CreateContentParams (com.enonic.xp.content.CreateContentParams)1 ExtraDatas (com.enonic.xp.content.ExtraDatas)1 Media (com.enonic.xp.content.Media)1 ContentProcessor (com.enonic.xp.content.processor.ContentProcessor)1