package org.infinispan.query.dsl.embedded.impl; import java.util.Map; import org.infinispan.commons.marshall.WrappedByteArray; import org.infinispan.notifications.cachelistener.event.CacheEntryEvent; import org.infinispan.notifications.cachelistener.filter.FilterIndexingServiceProvider; import org.infinispan.notifications.cachelistener.filter.IndexedFilter; import org.infinispan.objectfilter.Matcher; import org.infinispan.objectfilter.impl.FilterResultImpl; import org.kohsuke.MetaInfServices; /** * @author anistor@redhat.com * @since 7.2 */ @MetaInfServices(FilterIndexingServiceProvider.class) @SuppressWarnings("unused") public class IckleFilterIndexingServiceProvider extends BaseJPAFilterIndexingServiceProvider { @Override public boolean supportsFilter(IndexedFilter<?, ?, ?> indexedFilter) { return indexedFilter.getClass() == IckleCacheEventFilterConverter.class; } protected Matcher getMatcher(IndexedFilter<?, ?, ?> indexedFilter) { return ((IckleCacheEventFilterConverter) indexedFilter).filterAndConverter.getMatcher(); } protected String getQueryString(IndexedFilter<?, ?, ?> indexedFilter) { return ((IckleCacheEventFilterConverter) indexedFilter).filterAndConverter.getQueryString(); } protected Map<String, Object> getNamedParameters(IndexedFilter<?, ?, ?> indexedFilter) { return ((IckleCacheEventFilterConverter) indexedFilter).filterAndConverter.getNamedParameters(); } @Override protected boolean isDelta(IndexedFilter<?, ?, ?> indexedFilter) { return false; } protected void matchEvent(CacheEntryEvent event, Matcher matcher) { Object instance = event.getValue(); if (instance != null) { if (instance.getClass() == WrappedByteArray.class) { instance = ((WrappedByteArray) instance).getBytes(); } matcher.match(event, event.getType(), instance); } } protected Object makeFilterResult(Object userContext, Object eventType, Object key, Object instance, Object[] projection, Comparable[] sortProjection) { return new FilterResultImpl(instance, projection, sortProjection); } }