/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.portal.handler;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.google.common.collect.Lists;
import com.enonic.cms.web.portal.PortalWebContext;
import com.enonic.cms.web.portal.attachment.AttachmentHandler;
import com.enonic.cms.web.portal.captcha.CaptchaHandler;
import com.enonic.cms.web.portal.image.ImageHandler;
import com.enonic.cms.web.portal.instanttrace.InstantTraceAuthenticationHandler;
import com.enonic.cms.web.portal.instanttrace.InstantTraceInfoHandler;
import com.enonic.cms.web.portal.instanttrace.InstantTraceResourceHandler;
import com.enonic.cms.web.portal.page.PageHandler;
import com.enonic.cms.web.portal.page.PageRedirectHandler;
import com.enonic.cms.web.portal.resource.ResourceHandler;
import com.enonic.cms.web.portal.services.ServicesHandler;
@Component
public final class WebHandlerRegistryImpl
implements WebHandlerRegistry
{
private final List<WebHandler> list;
private PageHandler defaultHandler;
public WebHandlerRegistryImpl()
{
this.list = Lists.newArrayList();
}
@Override
public WebHandler find( final PortalWebContext context )
{
for ( final WebHandler handler : this.list )
{
if ( handler.canHandle( context ) )
{
return handler;
}
}
return this.defaultHandler;
}
@Autowired
public void setAttachmentHandler( final AttachmentHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setCaptchaHandler( final CaptchaHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setImageHandler( final ImageHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setResourceHandler( final ResourceHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setServicesHandler( final ServicesHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setPageRedirectHandler( final PageRedirectHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setPageHandler( final PageHandler handler )
{
this.defaultHandler = handler;
}
@Autowired
public void setInstantTraceHandler( final InstantTraceAuthenticationHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setInstantTraceResourceHandler( final InstantTraceResourceHandler handler )
{
this.list.add( handler );
}
@Autowired
public void setInstantTraceInfoHandler( final InstantTraceInfoHandler handler )
{
this.list.add( handler );
}
}