Examples of FunctionReference


Examples of org.exist.xquery.value.FunctionReference

    String jid = args[1].itemAt(0).getStringValue();
   
        if(!(args[2].itemAt(0) instanceof FunctionReference))
            throw new XPathException("No chat listener function provided.");
       
        FunctionReference chatListenerFunctionRef = (FunctionReference)args[2].itemAt(0);
       
        FunctionSignature chatListenerFunctionSig = chatListenerFunctionRef.getSignature();
        if(chatListenerFunctionSig.getArgumentCount() < 3)
            throw new XPathException("Chat listener function must take at least 3 arguments.");
        chatListenerFunctionRef.setContext(context.copyContext());
       
        Sequence listenerParam = args[3];
       
        long chatHandle = XMPPModule.getHandle();
   
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

    public Sequence eval(Sequence[] args, Sequence contextSequence) throws XPathException {
        if (args[0].isEmpty())
            return Sequence.EMPTY_SEQUENCE;

        FunctionReference func = (FunctionReference) args[1].itemAt(0);

        NGramIndexWorker index = (NGramIndexWorker) context.getBroker().getIndexController().getWorkerByIndexId(NGramIndex.ID);
        MemTreeBuilder builder = context.getDocumentBuilder();
        DocumentBuilderReceiver docBuilder = new DocumentBuilderReceiver(builder);
        MatchCallback matchCb = new MatchCallback(func, docBuilder);
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

            processMonitor = broker.getBrokerPool().getProcessMonitor();
            xqueryContext.getProfiler().traceQueryStart();
            processMonitor.queryStarted(xqueryContext.getWatchDog());
           
            //create a function call
            final FunctionReference fnRef = new FunctionReference(new FunctionCall(xqueryContext, fn));
           
            //convert the arguments
            final org.exist.xquery.value.Sequence[] fnArgs = convertToExistFunctionArguments(xqueryContext, fn, arguments);
           
            //execute the function call
            fnRef.analyze(new AnalyzeContextInfo());
            final org.exist.xquery.value.Sequence result = fnRef.evalFunction(null, null, fnArgs);
           
            return new SequenceAdapter(result);
        } catch(final URISyntaxException use) {
            throw new RestXqServiceException(use.getMessage(), use);
        } catch(final PermissionDeniedException pde) {
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

  @Override
  public Sequence eval(Sequence[] args, Sequence contextSequence)
      throws XPathException {
        Sequence result = new ValueSequence();
        if (isCalledAs("map")) {
            final FunctionReference ref = (FunctionReference) args[0].itemAt(0);
            ref.analyze(cachedContextInfo);
            for (final SequenceIterator i = args[1].iterate(); i.hasNext(); ) {
                final Item item = i.nextItem();
                final Sequence r = ref.evalFunction(contextSequence, null, new Sequence[]{item.toSequence()});
                result.addAll(r);
            }
        } else if (isCalledAs("for-each")) {
            final FunctionReference ref = (FunctionReference) args[1].itemAt(0);
            ref.analyze(cachedContextInfo);
            for (final SequenceIterator i = args[0].iterate(); i.hasNext(); ) {
                final Item item = i.nextItem();
                final Sequence r = ref.evalFunction(contextSequence, null, new Sequence[]{item.toSequence()});
                result.addAll(r);
            }
        } else if (isCalledAs("filter")) {
            FunctionReference ref;
            Sequence seq;
            // Hack: switch parameters for backwards compatibility
            if (Type.subTypeOf(args[1].getItemType(), Type.FUNCTION_REFERENCE)) {
                ref = (FunctionReference) args[1].itemAt(0);
                seq = args[0];
            } else {
                ref = (FunctionReference) args[0].itemAt(0);
                seq = args[1];
            }

            ref.analyze(cachedContextInfo);
          for (final SequenceIterator i = seq.iterate(); i.hasNext(); ) {
            final Item item = i.nextItem();
            final Sequence r = ref.evalFunction(contextSequence, null, new Sequence[] { item.toSequence() });
            if (r.effectiveBooleanValue())
              {result.add(item);}
          }
        } else if (isCalledAs("fold-left")) {
            final FunctionReference ref = (FunctionReference) args[2].itemAt(0);
            ref.analyze(cachedContextInfo);
          Sequence zero = args[1];
          Sequence input = args[0];
          while (!input.isEmpty()) {
            final SequenceIterator i = input.iterate();
            zero = ref.evalFunction(contextSequence, null, new Sequence[] { zero, i.nextItem().toSequence() });
            ValueSequence tail = new ValueSequence();
            while (i.hasNext()) {
              tail.add(i.nextItem());
            }
            input = tail;
          }
          result = zero;
        } else if (isCalledAs("fold-right")) {
            final FunctionReference ref = (FunctionReference) args[2].itemAt(0);
            ref.analyze(cachedContextInfo);
          final Sequence zero = args[1];
          final Sequence input = args[0];
          result = foldRight(ref, zero, input, contextSequence);
        } else if (isCalledAs("map-pairs")) {
            final FunctionReference ref = (FunctionReference) args[0];
            ref.analyze(cachedContextInfo);
          final SequenceIterator i1 = args[1].iterate();
          final SequenceIterator i2 = args[2].iterate();
          while (i1.hasNext() && i2.hasNext()) {
            final Sequence r = ref.evalFunction(contextSequence, null,
                new Sequence[] { i1.nextItem().toSequence(), i2.nextItem().toSequence() });
            result.addAll(r);
          }
        } else if (isCalledAs("for-each-pair")) {
            final FunctionReference ref = (FunctionReference) args[2].itemAt(0);
            ref.analyze(cachedContextInfo);
            final SequenceIterator i1 = args[0].iterate();
            final SequenceIterator i2 = args[1].iterate();
            while (i1.hasNext() && i2.hasNext()) {
                final Sequence r = ref.evalFunction(contextSequence, null,
                        new Sequence[] { i1.nextItem().toSequence(), i2.nextItem().toSequence() });
                result.addAll(r);
            }
        }
    return result;
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

                        // return empty sequence for all "function not found" related errors
                        return Sequence.EMPTY_SEQUENCE;
                    }
                    throw e;
                }
          return call == null ? Sequence.EMPTY_SEQUENCE : new FunctionReference(call);
      } else if (isCalledAs("function-name")) {
        final FunctionReference ref = (FunctionReference) args[0].itemAt(0);
        final QName qname = ref.getSignature().getName();
        if (qname == null || qname == InlineFunction.INLINE_FUNCTION_QNAME)
          {return Sequence.EMPTY_SEQUENCE;}
        else
          {return new QNameValue(context, qname);}
      } else {
        // isCalledAs("function-arity")
        final FunctionReference ref = (FunctionReference) args[0].itemAt(0);
        return new IntegerValue(ref.getSignature().getArgumentCount());
      }
    } catch (final Exception e) {
      if (e instanceof XPathException)
        {throw (XPathException)e;}
      else
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

    public Sequence eval(Sequence[] args, Sequence contextSequence)
            throws XPathException {
        if (args[0].isEmpty())
            {return Sequence.EMPTY_SEQUENCE;}
       
        final FunctionReference call = (FunctionReference) args[2].itemAt(0);
       
        FunctionReference resultCallback = null;
        if (getArgumentCount() == 5) {
            resultCallback = (FunctionReference) args[3].itemAt(0);
        }
       
        final int width = ((IntegerValue)args[1].itemAt(0)).getInt();
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

        if(arg0.getCardinality() != Cardinality.EXACTLY_ONE)
            {throw new XPathException(this, "Expected exactly one item for first argument");}
        final Item item0 = arg0.itemAt(0);
        if(item0.getType() != Type.FUNCTION_REFERENCE)
            {throw new XPathException(this, "Type error: expected function, got " + Type.getTypeName(item0.getType()));}
        final FunctionReference ref = (FunctionReference)item0;
       
        // pass the remaining parameters to the function call
        final List<Expression> params = new ArrayList<Expression>(getArgumentCount() - 1);
        for(int i = 1; i < getArgumentCount(); i++) {
            params.add(getArgument(i));
        }
        ref.setArguments(params);
        ref.analyze(new AnalyzeContextInfo(this, 0));
        // Evaluate the function
        return ref.eval(contextSequence);
    }
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

    public Sequence eval(Sequence[] args, Sequence contextSequence)
            throws XPathException {
        if (args[0].isEmpty())
            {return Sequence.EMPTY_SEQUENCE;}
       
        final FunctionReference func = (FunctionReference) args[1].itemAt(0);
       
        context.pushDocumentContext();
       
        final MemTreeBuilder builder = context.getDocumentBuilder();
        final ValueSequence result = new ValueSequence();
View Full Code Here

Examples of org.exist.xquery.value.FunctionReference

                ". Expression: " + ExpressionDumper.dump(functionExpr));}
        final Item item0 = funcSeq.itemAt(0);
        if (!Type.subTypeOf(item0.getType(), Type.FUNCTION_REFERENCE))
            {throw new XPathException(this, ErrorCodes.XPTY0004,
                "Type error: expected function, got " + Type.getTypeName(item0.getType()));}
        final FunctionReference ref = (FunctionReference)item0;
        // if the call is a partial application, create a new function
        if (isPartial) {
          try {
            final FunctionCall call = ref.getCall();
            call.setArguments(arguments);
            final PartialFunctionApplication partialApp = new PartialFunctionApplication(context, call);
                partialApp.analyze(new AnalyzeContextInfo(cachedContextInfo));
            return partialApp.eval(contextSequence, contextItem);
          } catch (final XPathException e) {
        e.setLocation(line, column, getSource());
        throw e;
          }
        } else {
          ref.setArguments(arguments);
            // need to create a new AnalyzeContextInfo to avoid memory leak
            // cachedContextInfo will stay in memory
          ref.analyze(new AnalyzeContextInfo(cachedContextInfo));
          // Evaluate the function
          final Sequence result = ref.eval(contextSequence);
            ref.resetState(false);
            return result;
        }
    }
View Full Code Here

Examples of org.springframework.expression.spel.ast.FunctionReference

    SpelNodeImpl[] args = maybeEatMethodArgs();
    if (args==null) {
      push(new VariableReference(functionOrVariableName.data,toPos(t.startpos,functionOrVariableName.endpos)));
      return true;
    } else {
      push(new FunctionReference(functionOrVariableName.data,toPos(t.startpos,functionOrVariableName.endpos),args));
      return true;
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.