Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The following is an example of a custom plugin that implements a listener that overrides the default Media Feed functionality. Click 

View file
nameexampleMediaFeedpresentation.jar
height250
to download the The full source of this custom plugin can be downloaded using the link below the code sample.


Code Block
themeEclipse
/*
 * Copyright (C) 1998 - 2020 GX Software B.V. All rights reserved. The contents of this
 * work is confidential. It is prohibited to copy, duplicate or alter this work in any
 * manner without the express prior written approval of GX Software B.V.
 */
package com.gxwebmanager.solutions.examplepresentation.service;

import nl.gx.product.wmpmediafeed.api.FeedListenerBase;
import nl.gx.webmanager.cms.mediarepository.*;
import nl.gx.webmanager.foundation.Session;
import nl.gx.webmanager.services.contentapi.MediaRepositoryManagementService;
import nl.gx.webmanager.services.sessionmanager.SessionManager;

import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.logging.Logger;

/**
 * 
 * ExampleFeedListener
 *
 */
public class ExampleFeedListener extends FeedListenerBase {

    private static final Logger LOG = Logger.getLogger(ExampleFeedListener.class.getName());

    private MediaRepositoryManagementService myMediaRepositoryManagementService;
    private SessionManager mySessionManager;

    /**
     * {@inheritDoc}
     */
    public String getIdentifier() {
        return "Example Feed listener";
    }

    /**
     * {@inheritDoc}
     */
    public List<MediaItem> getMediaItems(HttpServletRequest request, MediaItemFilter filter, MediaItemSortOptions sortOptions) {
		LOG.warning("getMediaItems from ExampleFeedListener: return only first 3 items");
        List<MediaItem> items = new ArrayList<>();

        Session session = mySessionManager.getActiveSession();
        boolean sessionCreated = false;
        if (session == null) {
            session = mySessionManager.createSession(request, null);
            sessionCreated = false;
        }

        try {
            //We should ignore the existing items but do a proper query ourselves
            int from = filter.getResultFrom();
            int to = filter.getResultTo();

            // retrieve everything
            filter.setResultRange(0,3);

            MediaSearchResult searchResult = myMediaRepositoryManagementService.getMediaItems(session.getContext().getWebsite(), filter, sortOptions);

			LOG.warning("getMediaItems from ExampleFeedListener: query returned "+searchResult.getCount()+" items, but we only use first 3 items");

            MediaItem[] allitems = searchResult.getResults(0, 3);

            if (allitems != null) {
                for (MediaItem item : allitems) {
					items.add(item);
                }
            }

            return items;
        } finally {
            if (sessionCreated && session != null) {
                session.close();
            }
        }
    }

	public List<MediaItem> filterMediaItems(HttpServletRequest request, List<MediaItem> items, MediaItemFilter filter, MediaItemSortOptions sortOptions) {
		LOG.warning("filterMediaItems from ExampleFeedListener: do nothing, but here you could filter the returned items");
		return null;
	}

	public MediaItemFilter overruleFilter(HttpServletRequest request, MediaItemFilter filter) {
		LOG.warning("overruleFilter from ExampleFeedListener: do nothing, but here you could overrule the filter");
		return null;
	}

	public MediaItemSortOptions overruleSortOptions(HttpServletRequest request, MediaItemSortOptions sortOptions) {
		LOG.warning("overruleSortOptions from ExampleFeedListener: do nothing, but here you could overrule the sort options");
        return null;
    }

    public List<String> getAllowedParameters(HttpServletRequest request) {
		LOG.warning("getAllowedParameters from ExampleFeedListener: do nothing, but here you could overrule the allowed parameters");
        return null;
    }
		
}


View file
nameexampleMediaFeedpresentation.jar
height250