package railo.runtime; import railo.commons.lang.types.RefBoolean; import railo.runtime.component.Property; import railo.runtime.exp.PageException; import railo.runtime.type.Collection; import railo.runtime.type.Objects; import railo.runtime.type.Struct; import railo.runtime.type.UDF; import railo.runtime.type.UDFProperties; /** * interface for a Component */ public interface Component extends Struct,Objects,CFObject { /** * Constant for Access Mode Remote */ public static final int ACCESS_REMOTE = 0; /** * Constant for Access Mode Public */ public static final int ACCESS_PUBLIC = 1; /** * Constant for Access Mode Package */ public static final int ACCESS_PACKAGE = 2; /** * Constant for Access Mode Private */ public static final int ACCESS_PRIVATE = 3; /** * Field <code>ACCESS_COUNT</code> */ public static final int ACCESS_COUNT=4; /** * returns java class to the component interface (all UDFs), * this class is generated dynamic when used * @param isNew * @throws PageException * FUTURE deprecated */ public Class getJavaAccessClass(RefBoolean isNew) throws PageException; // FUTURE public Class getJavaAccessClass(PageContext pc,RefBoolean isNew) throws PageException; /** * @return Returns the display name. */ public abstract String getDisplayName(); /** * @return Returns the Extends. */ public abstract String getExtends(); /** * @return Returns the Hint. */ public abstract String getHint(); /** * @return Returns the Name. */ public abstract String getName(); /** * @return Returns the Name. */ public abstract String getCallName(); /** * @return Returns the Name. */ public abstract String getAbsName(); /** * @return Returns the output. */ public abstract boolean getOutput(); /** * check if Component is instance of this type * @param type type to compare as String * @return is instance of this type */ public abstract boolean instanceOf(String type); /** * check if value is a valid access modifier constant * @param access * @return is valid access */ public abstract boolean isValidAccess(int access); /** * returns Meta Data to the Component * @param pc * @return meta data to component * @throws PageException */ public abstract Struct getMetaData(PageContext pc) throws PageException; /** * call a method of the component with no named arguments * @param pc PageContext * @param key name of the method * @param args Arguments for the method * @return return result of the method * @throws PageException */ public abstract Object call(PageContext pc, String key, Object[] args) throws PageException; /** * call a method of the component with named arguments * @param pc PageContext * @param key name of the method * @param args Named Arguments for the method * @return return result of the method * @throws PageException */ public abstract Object callWithNamedValues(PageContext pc, String key, Struct args) throws PageException; /** * return all properties from component * @param onlyPeristent if true return only columns where attribute persistent is not set to false * @return */ public Property[] getProperties(boolean onlyPeristent);// FUTURE deprecated public void setProperty(Property property) throws PageException; public ComponentScope getComponentScope(); public boolean contains(PageContext pc,Key key); public PageSource getPageSource(); //public Member getMember(int access,Collection.Key key, boolean dataMember,boolean superAccess); public String getBaseAbsName(); public boolean isBasePeristent(); public boolean equalTo(String type); public String getWSDLFile(); public void registerUDF(String key, UDF udf); public void registerUDF(Collection.Key key, UDF udf); public void registerUDF(String key, UDFProperties props); public void registerUDF(Collection.Key key, UDFProperties props); }