001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.jxpath.ri;
018
019 import java.util.Iterator;
020
021 import org.apache.commons.jxpath.ri.compiler.Expression;
022 import org.apache.commons.jxpath.CompiledExpression;
023 import org.apache.commons.jxpath.JXPathContext;
024 import org.apache.commons.jxpath.Pointer;
025
026 /**
027 * RI of CompiledExpression.
028 *
029 * @author Dmitri Plotnikov
030 * @version $Revision: 652845 $ $Date: 2008-05-02 12:46:46 -0500 (Fri, 02 May 2008) $
031 */
032 public class JXPathCompiledExpression implements CompiledExpression {
033
034 private String xpath;
035 private Expression expression;
036
037 /**
038 * Create a new JXPathCompiledExpression.
039 * @param xpath source
040 * @param expression compiled
041 */
042 public JXPathCompiledExpression(String xpath, Expression expression) {
043 this.xpath = xpath;
044 this.expression = expression;
045 }
046
047 /**
048 * Get the source expression.
049 * @return String
050 */
051 protected String getXPath() {
052 return xpath;
053 }
054
055 /**
056 * Get the compiled expression.
057 * @return Expression
058 */
059 protected Expression getExpression() {
060 return expression;
061 }
062
063 public String toString() {
064 return xpath;
065 }
066
067 public Object getValue(JXPathContext context) {
068 return ((JXPathContextReferenceImpl) context).
069 getValue(xpath, expression);
070 }
071
072 public Object getValue(JXPathContext context, Class requiredType) {
073 return ((JXPathContextReferenceImpl) context).
074 getValue(xpath, expression, requiredType);
075 }
076
077 public void setValue(JXPathContext context, Object value) {
078 ((JXPathContextReferenceImpl) context).
079 setValue(xpath, expression, value);
080 }
081
082 public Pointer createPath(JXPathContext context) {
083 return ((JXPathContextReferenceImpl) context).
084 createPath(xpath, expression);
085 }
086
087 public Pointer createPathAndSetValue(JXPathContext context, Object value) {
088 return ((JXPathContextReferenceImpl) context).
089 createPathAndSetValue(xpath, expression, value);
090 }
091
092 public Iterator iterate(JXPathContext context) {
093 return ((JXPathContextReferenceImpl) context).
094 iterate(xpath, expression);
095 }
096
097 public Pointer getPointer(JXPathContext context, String xpath) {
098 return ((JXPathContextReferenceImpl) context).
099 getPointer(xpath, expression);
100 }
101
102 public Iterator iteratePointers(JXPathContext context) {
103 return ((JXPathContextReferenceImpl) context).
104 iteratePointers(xpath, expression);
105 }
106
107 public void removePath(JXPathContext context) {
108 ((JXPathContextReferenceImpl) context).removePath(xpath, expression);
109 }
110
111 public void removeAll(JXPathContext context) {
112 ((JXPathContextReferenceImpl) context).removeAll(xpath, expression);
113 }
114 }