001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.runtime.ext.tag;
020
021import lucee.runtime.type.Collection;
022
023public interface TagMetaDataAttr {
024
025        /**
026         * A description of the attribute.
027         * @return the description of the attribute
028         */
029        public abstract String getDescription();
030
031        /**
032         * The runtime type of the attribute's value 
033         * For example:String,Number,Boolean,Object,...
034         * @return the type of the attribute
035         */
036        public abstract String getType();
037
038        /**
039         * The unique name of the attribute being declared
040         * @return the name of the attribute
041         */
042        public abstract Collection.Key getName();
043
044        /**
045         * return the default value for this attribute or null if no default value is defined
046         * @return the default value of the attribute
047         */
048        public abstract String getDefaultVaue();
049
050        /**
051         * Whether the attribute is required.
052         * @return is required
053         */
054        public abstract boolean isRequired();
055
056        /**
057         * Whether the attribute's value can be dynamically calculated at runtime.
058         * @return is a runtime expression
059         */
060        public boolean isRuntimeExpressionValue();
061        
062}