Class DefaultEntryMergeStrategy

    • Constructor Detail

      • DefaultEntryMergeStrategy

        public DefaultEntryMergeStrategy()
    • Method Detail

      • canMerge

        protected java.lang.Boolean canMerge​(@Nonnull
                                             AbstractOrderEntryModel mergeCandidate,
                                             @Nonnull
                                             AbstractOrderEntryModel newEntry)
        This method determines whether given entry can be merged with the given entry creation candidate.
        Parameters:
        mergeCandidate - entry that is supposed to be merge acceptor
        newEntry - entry to find merge target for
        Returns:
        Boolean.FALSE to disable merge of newEntry to mergeCandidate
      • getEntryMergeFilters

        protected java.util.List<EntryMergeFilter> getEntryMergeFilters()
      • setEntryMergeFilters

        public void setEntryMergeFilters​(java.util.List<EntryMergeFilter> items)
        Filters to reject entities that can not be merged.

        The filters are applied in their natural order, so it worth to put the filters that are fast and likely return Boolean.FALSE on top of the list. It will speed up the filtration.

        Parameters:
        items - new list of filters
        See Also:
        ListMergeDirective
      • setEntryModelComparator

        public void setEntryModelComparator​(java.util.Comparator<AbstractOrderEntryModel> entryModelComparator)
        The comparator can be overridden to change order of preference for entries. {@link this#getEntryToMerge(List, CommerceCartParameter)} returns first suitable entry of the resulting list.

        The default implementation does not change order of entries.

        Parameters:
        entryModelComparator - new AbstractOrderEntryModel comparator