Search in sources :

Example 21 with UDF

use of lucee.runtime.type.UDF in project Lucee by lucee.

the class Invoke method doFunction.

private void doFunction(PageContext pc) throws PageException {
    // execute
    if (StringUtil.isEmpty(method, true))
        throw new ApplicationException("Attribute [method] for tag [invoke] is required in this context.");
    Object oUDF = pc.getVariable(method);
    if (!(oUDF instanceof UDF))
        throw new ApplicationException("there is no function with name " + method);
    Object rtn = ((UDF) oUDF).callWithNamedValues(pageContext, data, false);
    // return
    if (!StringUtil.isEmpty(returnvariable))
        pageContext.setVariable(returnvariable, rtn);
}
Also used : ApplicationException(lucee.runtime.exp.ApplicationException) UDF(lucee.runtime.type.UDF)

Example 22 with UDF

use of lucee.runtime.type.UDF in project Lucee by lucee.

the class ComponentUtil method md5.

public static String md5(ComponentSpecificAccess cw) throws IOException {
    Key[] keys = cw.keys();
    Arrays.sort(keys);
    StringBuffer _interface = new StringBuffer();
    Object member;
    UDF udf;
    FunctionArgument[] args;
    FunctionArgument arg;
    for (int y = 0; y < keys.length; y++) {
        member = cw.get(keys[y], null);
        if (member instanceof UDF) {
            udf = (UDF) member;
            // print.out(udf.);
            _interface.append(udf.getAccess());
            _interface.append(udf.getOutput());
            _interface.append(udf.getFunctionName());
            _interface.append(udf.getReturnTypeAsString());
            args = udf.getFunctionArguments();
            for (int i = 0; i < args.length; i++) {
                arg = args[i];
                _interface.append(arg.isRequired());
                _interface.append(arg.getName());
                _interface.append(arg.getTypeAsString());
            }
        }
    }
    return MD5.getDigestAsString(_interface.toString().toLowerCase());
}
Also used : UDF(lucee.runtime.type.UDF) FunctionArgument(lucee.runtime.type.FunctionArgument) Key(lucee.runtime.type.Collection.Key)

Example 23 with UDF

use of lucee.runtime.type.UDF in project Lucee by lucee.

the class PropertyFactory method addHas.

public static void addHas(ComponentImpl comp, Property prop) throws ApplicationException {
    Member m = comp.getMember(Component.ACCESS_PRIVATE, KeyImpl.getInstance("has" + getSingularName(prop)), true, false);
    if (!(m instanceof UDF)) {
        UDF udf = new UDFHasProperty(comp, prop);
        comp.registerUDF(KeyImpl.init(udf.getFunctionName()), udf);
    }
}
Also used : UDF(lucee.runtime.type.UDF) UDFHasProperty(lucee.runtime.type.UDFHasProperty) Member(lucee.runtime.component.Member)

Example 24 with UDF

use of lucee.runtime.type.UDF in project Lucee by lucee.

the class PropertyFactory method addSet.

public static void addSet(ComponentImpl comp, Property prop) throws PageException {
    Member m = comp.getMember(Component.ACCESS_PRIVATE, KeyImpl.getInstance("set" + prop.getName()), true, false);
    if (!(m instanceof UDF)) {
        UDF udf = new UDFSetterProperty(comp, prop);
        comp.registerUDF(KeyImpl.init(udf.getFunctionName()), udf);
    }
}
Also used : UDFSetterProperty(lucee.runtime.type.UDFSetterProperty) UDF(lucee.runtime.type.UDF) Member(lucee.runtime.component.Member)

Example 25 with UDF

use of lucee.runtime.type.UDF in project Lucee by lucee.

the class ComponentImpl method onMissingMethod.

public Object onMissingMethod(PageContext pc, int access, Member member, String name, Object[] _args, Struct _namedArgs, boolean superAccess) throws PageException {
    Member ommm = access == -1 ? getMember(pc, KeyConstants._onmissingmethod, false, superAccess) : getMember(access, KeyConstants._onmissingmethod, false, superAccess);
    if (ommm instanceof UDF) {
        Argument args = new ArgumentImpl();
        if (_args != null) {
            for (int i = 0; i < _args.length; i++) {
                args.setEL(ArgumentIntKey.init(i + 1), _args[i]);
            }
        } else if (_namedArgs != null) {
            UDFUtil.argumentCollection(_namedArgs, new FunctionArgument[] {});
            Iterator<Entry<Key, Object>> it = _namedArgs.entryIterator();
            Entry<Key, Object> e;
            while (it.hasNext()) {
                e = it.next();
                args.setEL(e.getKey(), e.getValue());
            }
        }
        // Struct newArgs=new StructImpl(StructImpl.TYPE_SYNC);
        // newArgs.setEL(MISSING_METHOD_NAME, name);
        // newArgs.setEL(MISSING_METHOD_ARGS, args);
        Object[] newArgs = new Object[] { name, args };
        return _call(pc, KeyConstants._onmissingmethod, (UDFPlus) ommm, null, newArgs);
    }
    if (member == null)
        throw ComponentUtil.notFunction(this, KeyImpl.init(name), null, access);
    throw ComponentUtil.notFunction(this, KeyImpl.init(name), member.getValue(), access);
}
Also used : Argument(lucee.runtime.type.scope.Argument) FunctionArgument(lucee.runtime.type.FunctionArgument) UDF(lucee.runtime.type.UDF) ArgumentImpl(lucee.runtime.type.scope.ArgumentImpl) ComponentIterator(lucee.runtime.type.it.ComponentIterator) ComponentEntryIterator(lucee.runtime.type.cfc.ComponentEntryIterator) StringIterator(lucee.runtime.type.it.StringIterator) Iterator(java.util.Iterator) ComponentValueIterator(lucee.runtime.type.cfc.ComponentValueIterator) Member(lucee.runtime.component.Member) DataMember(lucee.runtime.component.DataMember) FunctionArgument(lucee.runtime.type.FunctionArgument) ArgumentIntKey(lucee.runtime.type.scope.ArgumentIntKey)

Aggregations

UDF (lucee.runtime.type.UDF)42 Key (lucee.runtime.type.Collection.Key)14 Struct (lucee.runtime.type.Struct)14 Component (lucee.runtime.Component)9 Entry (java.util.Map.Entry)7 PageException (lucee.runtime.exp.PageException)7 Member (lucee.runtime.component.Member)6 FunctionArgument (lucee.runtime.type.FunctionArgument)6 StructImpl (lucee.runtime.type.StructImpl)6 ArgumentIntKey (lucee.runtime.type.scope.ArgumentIntKey)6 Iterator (java.util.Iterator)5 ComponentScope (lucee.runtime.ComponentScope)5 ComponentSpecificAccess (lucee.runtime.ComponentSpecificAccess)5 PageContextImpl (lucee.runtime.PageContextImpl)5 Property (lucee.runtime.component.Property)5 Array (lucee.runtime.type.Array)5 Collection (lucee.runtime.type.Collection)5 IOException (java.io.IOException)4 Map (java.util.Map)4 HashMap (java.util.HashMap)3