View Javadoc

1   /*
2    * Copyright 2002,2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.commons.jexl.parser;
17  
18  import org.apache.commons.jexl.JexlContext;
19  
20  
21  /***
22   *  -
23   *
24   *  @author <a href="mailto:mhw@kremvax.net">Mark H. Wilkinson</a>
25   *  @version $Id: ASTUnaryMinusNode.java,v 1.3 2004/02/28 13:45:20 yoavs Exp $
26   */
27  public class ASTUnaryMinusNode extends SimpleNode 
28  {
29      public ASTUnaryMinusNode(int id)
30      {
31          super(id);
32      }
33  
34      public ASTUnaryMinusNode(Parser p, int id)
35      {
36          super(p, id);
37      }
38  
39      /*** Accept the visitor. **/
40      public Object jjtAccept(ParserVisitor visitor, Object data)
41      {
42          return visitor.visit(this, data);
43      }
44  
45      public Object value(JexlContext jc)
46          throws Exception
47      {
48          Object val = ((SimpleNode) jjtGetChild(0)).value(jc);
49  
50          if (val instanceof Integer)
51          {
52              return new Integer(- ( ((Integer) val).intValue() ) );
53          }
54          else
55          {
56              throw new Exception("expression not integer valued");
57          }
58      }
59  }
60