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    
099            /**
100             * @return the startLine
101             */
102            public int getStartLine();
103            /**
104             * @return the endLine
105             */
106            public int getEndLine();
107            
108            /**
109         * sets the line value.
110         * @param line The line to set.
111         */
112        public void setStartLine(int startLine);
113    
114    
115        /**
116         * sets the line value.
117         * @param line The line to set.
118         */
119        public void setEndLine(int endLine);
120    
121            public abstract void setScriptBase(boolean scriptBase);
122            public abstract boolean isScriptBase();
123    
124            //public abstract void setHint(String hint);
125            public abstract void addMetaData(Attribute metadata);
126            //public abstract String getHint();
127            public abstract Map<String, Attribute> getMetaData();
128    
129    }