Search in sources :

Example 1 with ArgumentImpl

use of lucee.runtime.type.scope.ArgumentImpl 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

Iterator (java.util.Iterator)1 DataMember (lucee.runtime.component.DataMember)1 Member (lucee.runtime.component.Member)1 FunctionArgument (lucee.runtime.type.FunctionArgument)1 UDF (lucee.runtime.type.UDF)1 ComponentEntryIterator (lucee.runtime.type.cfc.ComponentEntryIterator)1 ComponentValueIterator (lucee.runtime.type.cfc.ComponentValueIterator)1 ComponentIterator (lucee.runtime.type.it.ComponentIterator)1 StringIterator (lucee.runtime.type.it.StringIterator)1 Argument (lucee.runtime.type.scope.Argument)1 ArgumentImpl (lucee.runtime.type.scope.ArgumentImpl)1 ArgumentIntKey (lucee.runtime.type.scope.ArgumentIntKey)1