001    package railo.transformer.bytecode.statement.tag;
002    
003    import java.util.Map;
004    
005    import railo.transformer.bytecode.Body;
006    import railo.transformer.bytecode.Statement;
007    import railo.transformer.bytecode.statement.HasBody;
008    import railo.transformer.library.tag.TagLibTag;
009    
010    public interface Tag extends Statement,HasBody {
011    
012            /**
013             * appendix of the tag
014             * @return appendix
015             */
016            public abstract String getAppendix();
017    
018            /**
019             * return all Attributes as a map 
020             * @return attributes
021             */
022            public abstract Map getAttributes();
023    
024            /**
025             * returns the fullname of the tag
026             * @return fullname
027             */
028            public abstract String getFullname();
029    
030            /**
031             * return the TagLibTag to this tag
032             * @return taglibtag
033             */
034            public abstract TagLibTag getTagLibTag();
035    
036            /**
037             * sets the appendix of the tag
038             * @param appendix
039             */
040            public abstract void setAppendix(String appendix);
041    
042            /**
043             * sets the fullanem of the tag
044             * @param fullname
045             */
046            public abstract void setFullname(String fullname);
047    
048            /**
049             * sets the tagLibTag of this tag
050             * @param tagLibTag
051             */
052            public abstract void setTagLibTag(TagLibTag tagLibTag);
053    
054            /**
055             * adds a attribute to the tag
056             * @param attribute
057             */
058            public abstract void addAttribute(Attribute attribute);
059    
060            /**
061             * check if tag has a tag with given name
062             * @param name
063             * @return contains attribute
064             */
065            public abstract boolean containsAttribute(String name);
066    
067            /**
068             * returns the body of the tag
069             * @return body of the tag
070             */
071            public Body getBody();
072    
073            /**
074             * sets the body of the tag
075             * @param body
076             */
077            public abstract void setBody(Body body);
078    
079            /**
080             * returns a specified attribute from the tag
081             * @param name
082             * @return
083             */
084            public abstract Attribute getAttribute(String name);
085    
086            /**
087             * returns a specified attribute from the tag
088             * @param name
089             * @return
090             */
091            public abstract Attribute removeAttribute(String name);
092    
093            public abstract void addMissingAttribute(String name, String type);
094            
095            public abstract Map getMissingAttributes();
096    
097    
098            public abstract void setScriptBase(boolean scriptBase);
099            public abstract boolean isScriptBase();
100    
101            //public abstract void setHint(String hint);
102            public abstract void addMetaData(Attribute metadata);
103            //public abstract String getHint();
104            public abstract Map<String, Attribute> getMetaData();
105    }