1 /*
2 * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/expr/DefaultModExpr.java,v 1.15 2006/11/30 18:49:26 elharo Exp $
3 * $Revision: 1.15 $
4 * $Date: 2006/11/30 18:49:26 $
5 *
6 * ====================================================================
7 *
8 * Copyright 2000-2002 bob mcwhirter & James Strachan.
9 * All rights reserved.
10 *
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions are
14 * met:
15 *
16 * * Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 *
19 * * Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution.
22 *
23 * * Neither the name of the Jaxen Project nor the names of its
24 * contributors may be used to endorse or promote products derived
25 * from this software without specific prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
28 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
30 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
31 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
35 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 *
39 * ====================================================================
40 * This software consists of voluntary contributions made by many
41 * individuals on behalf of the Jaxen Project and was originally
42 * created by bob mcwhirter <bob@werken.com> and
43 * James Strachan <jstrachan@apache.org>. For more information on the
44 * Jaxen Project, please see <http://www.jaxen.org/>.
45 *
46 * $Id: DefaultModExpr.java,v 1.15 2006/11/30 18:49:26 elharo Exp $
47 */
48 package org.jaxen.expr;
49
50 import org.jaxen.Context;
51 import org.jaxen.JaxenException;
52 import org.jaxen.function.NumberFunction;
53
54 class DefaultModExpr extends DefaultMultiplicativeExpr
55 {
56 /***
57 *
58 */
59 private static final long serialVersionUID = -5554964716492040687L;
60
61 DefaultModExpr( Expr lhs,
62 Expr rhs )
63 {
64 super( lhs,
65 rhs );
66 }
67
68 public String getOperator()
69 {
70 return "mod";
71 }
72
73 public Object evaluate( Context context ) throws JaxenException
74 {
75 Number lhsValue = NumberFunction.evaluate( getLHS().evaluate( context ),
76 context.getNavigator() );
77 Number rhsValue = NumberFunction.evaluate( getRHS().evaluate( context ),
78 context.getNavigator() );
79
80 double result = lhsValue.doubleValue() % rhsValue.doubleValue();
81 return new Double( result );
82 }
83
84 }