@Override public void generateCanonicalizedExpression(StringBuilder clauseBuffer, ExecutionContext context) throws AmbiguousNameException, TypeMismatchException, NameResolutionException { // The compiled ID can be an iterator variable or it can be a path variable. // So first resolve the type of variable using ExecutionContext // A compiledID will get resolved either to a RunTimeIterator or a CompiledPath context.resolve(_id).generateCanonicalizedExpression(clauseBuffer, context); }
expr = context.resolve(((CompiledID) expr).getId()); } else if (expr instanceof CompiledRegion) { QRegion qrgn = (QRegion) ((CompiledRegion) expr).evaluate(context);
CompiledValue expr = resolve(((CompiledID) path).getId()); return findIterator(expr);
@Override public List getPathOnIterator(RuntimeIterator itr, ExecutionContext context) throws TypeMismatchException, AmbiguousNameException { CompiledValue val = context.resolve(getId()); if (val == itr) return new ArrayList(); // empty path if (val.getType() == PATH && ((CompiledPath) val).getReceiver() == itr) { List list = new ArrayList(); list.add(_id); return list; } return null; }
@Override public Set computeDependencies(ExecutionContext context) throws TypeMismatchException, AmbiguousNameException, NameResolutionException { CompiledValue v = context.resolve(getId()); return context.addDependencies(this, v.computeDependencies(context)); }
case OQLLexerTokenTypes.Identifier: CompiledID cid = (CompiledID) expr; expr = context.resolve(cid.getId()); break; default:
@Override public Object evaluate(ExecutionContext context) throws FunctionDomainException, TypeMismatchException, NameResolutionException, QueryInvocationTargetException { CompiledValue v = context.resolve(getId()); Object obj = v.evaluate(context); // check for BucketRegion substitution PartitionedRegion pr = context.getPartitionedRegion(); if (pr != null && (obj instanceof Region)) { if (pr.getFullPath().equals(((Region) obj).getFullPath())) { obj = context.getBucketRegion(); } } return obj; }
String id = ((CompiledID) this.elm).getId(); if (id.equals("key") || id.equals("getKey")) { resolution = context.resolve(id); if (resolution instanceof CompiledPath) { resolution = ((CompiledPath) resolution).getReceiver(); CompiledValue cVal = cPath.getReceiver(); if (cVal instanceof CompiledID) { resolution = context.resolve(((CompiledID) cVal).getId()); if (cOp.getMethodName().equals("key") || cOp.getMethodName().equals("getKey")) { if (cOp.getReceiver(context) instanceof CompiledID) { resolution = context.resolve(((CompiledID) cOp.getReceiver(context)).getId()); } else if (cOp.getReceiver(context) == null) { match = true; // implicit operation on the iterator