blob: b38e4315018e8f1995478514303bb9636d9d24a2 [file] [log] [blame]
/**
*
*/
package org.eclipse.jst.jsf.facelet.core.internal.cm;
import java.util.Iterator;
import org.eclipse.jst.jsf.common.runtime.internal.view.model.common.ITagElement;
import org.eclipse.jst.jsp.core.internal.contentmodel.tld.CMDataTypeImpl;
import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
class ElementCMAdapter implements CMElementDeclaration, CMNamedNodeMap
{
private final ITagElement _tagElement;
private final TagInfo _tLDTagInfo;
ElementCMAdapter(final ITagElement tagElement, final TagInfo tldTagInfo)
{
_tagElement = tagElement;
_tLDTagInfo = tldTagInfo;
}
public CMNamedNodeMap getAttributes()
{
return this;
}
public CMContent getContent()
{
return null;
}
public int getContentType()
{
return ELEMENT;
}
public CMDataType getDataType()
{
return new CMDataTypeImpl(CMDataType.CDATA);
}
public String getElementName()
{
return _tagElement.getName();
}
public CMNamedNodeMap getLocalElements()
{
// TODO Auto-generated method stub
return null;
}
public int getMaxOccur()
{
// unbounded
return -1;
}
public int getMinOccur()
{
// optional
return 0;
}
public String getNodeName()
{
return _tagElement.getName();
}
public int getNodeType()
{
return CMNode.ELEMENT_DECLARATION;
}
public Object getProperty(final String propertyName)
{
return _tLDTagInfo.getTagProperty(_tagElement.getName(), propertyName);
}
public boolean supports(final String propertyName)
{
return false;
}
@Override
public boolean equals(final Object obj)
{
if (obj instanceof ElementCMAdapter)
{
return ((ElementCMAdapter) obj)._tagElement.equals(_tagElement);
}
return false;
}
@Override
public int hashCode()
{
return _tagElement.hashCode();
}
public int getLength()
{
final CMNamedNodeMap map = _tLDTagInfo.getAttributes(_tagElement.getName());
if (map != null)
{
return map.getLength();
}
return 0;
}
public CMNode getNamedItem(final String name)
{
final CMNamedNodeMap map = _tLDTagInfo.getAttributes(_tagElement.getName());
if (map != null)
{
return map.getNamedItem(name);
}
return null;
}
public CMNode item(final int index)
{
final CMNamedNodeMap map = _tLDTagInfo.getAttributes(_tagElement.getName());
if (map != null)
{
return map.item(index);
}
return null;
}
public Iterator<?> iterator()
{
final CMNamedNodeMap map = _tLDTagInfo.getAttributes(_tagElement.getName());
return map.iterator();
}
}