blob: 8b8a4adcd09f6cd5b3dc9292fc885adbee26e408 [file] [log] [blame]
package org.eclipse.jst.jsf.facelet.core.internal.tagmodel;
import java.util.Map;
import org.eclipse.jst.jsf.common.runtime.internal.view.model.common.IJSFTagElement;
import org.eclipse.jst.jsf.common.runtime.internal.view.model.common.ITagAttribute;
import org.eclipse.jst.jsf.common.runtime.internal.view.model.common.TagElement;
import org.eclipse.jst.jsf.designtime.internal.view.model.jsp.IAttributeAdvisor;
import org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory;
import org.eclipse.jst.jsf.facelet.core.internal.cm.TagInfo;
/**
* A description of the a facelet tag
*
* @author cbateman
*
*/
public abstract class FaceletTag extends TagElement implements IJSFTagElement
{
/**
*
*/
private static final long serialVersionUID = 3027895246947365781L;
private final String _uri;
private final String _name;
private final TagType _type;
private final String _tagHandlerClass;
private final AttributeHandlerMapAdapter _attributeHandlerMapAdapter;
private final IAttributeAdvisor _advisor;
/**
* @param uri
* @param name
* @param type
* @param tagHandlerClassName
* @param docFactory
* @param advisor
*/
protected FaceletTag(final String uri, final String name,
final TagType type, final String tagHandlerClassName,
final FaceletDocumentFactory docFactory,
final IAttributeAdvisor advisor)
{
_uri = uri;
_name = name;
_type = type;
_tagHandlerClass = tagHandlerClassName;
final TagInfo tagInfo = docFactory.getOrCreateExtraTagInfo(uri);
_attributeHandlerMapAdapter = new AttributeHandlerMapAdapter(tagInfo, advisor, name);
_advisor = advisor;
}
/**
* @return the name of the tag
*/
@Override
public final String getName()
{
return _name;
}
public final TagType getType()
{
return _type;
}
@Override
public String getUri()
{
return _uri;
}
@Override
public String getTagHandlerClassName()
{
return _tagHandlerClass;
}
@Override
public String toString()
{
return "Tag Name: " + getName() + "Tag Type: " + getType(); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
public Map<?, ?> getAttributeHandlers()
{
return _attributeHandlerMapAdapter;
}
public Map<String, ? extends ITagAttribute> getAttributes()
{
return _advisor.getAttributes();
}
}