    001    package com.hammurapi.reasoning.impl;
    002
    003    import java.util.List;
    004    import java.util.Set;
    005
    006    /**
    007     * Implementations of this interface are used to
    008     * manage collections to keep intermediate inference results.
    009     * Returned collections which hold resources shall implement Destroyable.
    010     * @author Pavel Vlasov
    011     *
    012     */
    013    public interface CollectionManager<B> {
    014
    015            /**
    016             * Retrieves set with given id from the manager. If set doesn't exist,
    017             * it shall be created.
    018             * @param <T>
    019             * @param id Set id.
    020             * @param elementType Element type.
    021             * @return
    022             */
    023            <T extends B> Set<? extends T> getSet(String id, Class<T> elementType);
    024
    025            /**
    026             * Retrieves list with given id from the manager. If list doesn't exist,
    027             * it shall be created.
    028             * @param <T>
    029             * @param id Set id.
    030             * @param elementType Element type.
    031             * @return
    032             */
    033            <T extends B> List<? extends T> getList(String id, Class<T> elementType);
    034    }