Esempio n. 1
0
 /**
  * Binds the specified parameter to a variable.
  *
  * @param rxp parameter
  * @param args argument array
  * @param values values to be bound; the parameter's default value is assigned if the argument is
  *     {@code null} or empty
  * @throws QueryException query exception
  */
 private void bind(final RestXqParam rxp, final Expr[] args, final String... values)
     throws QueryException {
   final Value val;
   if (values == null || values.length == 0) {
     val = rxp.value;
   } else {
     final ValueBuilder vb = new ValueBuilder();
     for (final String s : values) vb.add(new Atm(s));
     val = vb.value();
   }
   bind(rxp.name, args, val);
 }
Esempio n. 2
0
 /**
  * Returns a parameter.
  *
  * @param value value
  * @param name name
  * @param declared variable declaration flags
  * @return parameter
  * @throws QueryException HTTP exception
  */
 private RestXqParam param(final Value value, final QNm name, final boolean[] declared)
     throws QueryException {
   // [CG] RESTXQ: allow identical field names?
   final long vs = value.size();
   if (vs < 2) error(ANN_PARAMS, "%", name.string(), 2);
   // name of parameter
   final String key = toString(value.itemAt(0), name);
   // variable template
   final QNm qnm = checkVariable(toString(value.itemAt(1), name), declared);
   // default value
   final ValueBuilder vb = new ValueBuilder();
   for (int v = 2; v < vs; v++) vb.add(value.itemAt(v));
   return new RestXqParam(qnm, key, vb.value());
 }