package com.enonic.cms.core.plugin.ext; import java.util.List; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.enonic.cms.api.plugin.ext.http.HttpProcessor; public abstract class HttpProcessorExtensions<T extends HttpProcessor> extends ExtensionPoint<T> { public HttpProcessorExtensions( final Class<T> type ) { super( type ); } public final List<T> findMatching( final String path ) { final List<T> list = Lists.newArrayList(); for ( final T ext : this ) { if ( ext.matchesUrlPattern( path ) ) { list.add( ext ); } } return list; } public T findFirstMatching( final String path ) { for ( final T ext : this ) { if ( ext.matchesUrlPattern( path ) ) { return ext; } } return null; } @Override protected final String toHtml( final T ext ) { return composeHtml( ext, "priority", ext.getPriority(), "urlPatterns", Joiner.on( ", " ).skipNulls().join( ext.getUrlPatterns() ) ); } @Override public final int compare( final T o1, final T o2 ) { return o1.compareTo( o2 ); } }