/*******************************************************************************
* Copyright (c) 2014, 2015 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.rwt.internal.remote;
import org.eclipse.rap.rwt.internal.protocol.RequestMessage;
import org.eclipse.rap.rwt.internal.protocol.ResponseMessage;
public class MessageChainElement implements MessageFilterChain {
private final MessageFilter filter;
private final MessageChainElement nextElement;
public MessageChainElement( MessageFilter filter, MessageChainElement nextElement ) {
this.filter = filter;
this.nextElement = nextElement;
}
@Override
public ResponseMessage handleMessage( RequestMessage request ) {
return filter.handleMessage( request, nextElement );
}
public MessageChainElement remove( MessageFilter filter ) {
if( this.filter == filter ) {
return nextElement;
}
MessageChainElement newNextElement = nextElement == null ? null : nextElement.remove( filter );
if( newNextElement == nextElement ) {
return this;
}
return new MessageChainElement( this.filter, newNextElement );
}
}