/*******************************************************************************
* Copyright (c) 2015 IBH SYSTEMS GmbH.
* 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:
* IBH SYSTEMS GmbH - initial API and implementation
*******************************************************************************/
package org.eclipse.packagedrone.web.tags;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class PushTag extends SimpleTagSupport
{
private String name;
public static String ATTR = PushTag.class.getName () + ".stacks";
public void setName ( final String name )
{
this.name = name;
}
@Override
@SuppressWarnings ( "unchecked" )
public void setJspBody ( final JspFragment jspBody )
{
super.setJspBody ( jspBody );
Map<String, LinkedList<JspFragment>> stacks = (Map<String, LinkedList<JspFragment>>)getJspContext ().getAttribute ( ATTR, PageContext.REQUEST_SCOPE );
if ( stacks == null )
{
stacks = new HashMap<> ();
getJspContext ().setAttribute ( ATTR, stacks, PageContext.REQUEST_SCOPE );
}
LinkedList<JspFragment> stack = stacks.get ( this.name );
if ( stack == null )
{
stack = new LinkedList<> ();
stacks.put ( this.name, stack );
}
stack.add ( jspBody );
}
}