1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.jxpath.ri.compiler;
17
18 import org.apache.commons.jxpath.ri.EvalContext;
19 import org.apache.commons.jxpath.ri.axes.UnionContext;
20
21 /***
22 * Implementation of Expression for the operation "|".
23 *
24 * @author Dmitri Plotnikov
25 * @version $Revision: 1.3 $ $Date: 2004/02/29 14:17:39 $
26 */
27 public class CoreOperationUnion extends CoreOperation {
28
29 public CoreOperationUnion(Expression args[]) {
30 super(args);
31 }
32
33 public Object computeValue(EvalContext context) {
34 EvalContext argCtxs[] = new EvalContext[args.length];
35 for (int i = 0; i < args.length; i++) {
36 Object value = args[i].compute(context);
37 if (value instanceof EvalContext) {
38 argCtxs[i] = (EvalContext) value;
39 }
40 else {
41 argCtxs[i] = context.getRootContext().getConstantContext(value);
42 }
43 }
44 return new UnionContext(context.getRootContext(), argCtxs);
45 }
46
47 protected int getPrecedence() {
48 return 7;
49 }
50
51 protected boolean isSymmetric() {
52 return true;
53 }
54
55 public String getSymbol() {
56 return "|";
57 }
58 }