01: /*
02: * Janino - An embedded Java[TM] compiler
03: *
04: * Copyright (c) 2006, Arno Unkrig
05: * All rights reserved.
06: *
07: * Redistribution and use in source and binary forms, with or without
08: * modification, are permitted provided that the following conditions
09: * are met:
10: *
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above
14: * copyright notice, this list of conditions and the following
15: * disclaimer in the documentation and/or other materials
16: * provided with the distribution.
17: * 3. The name of the author may not be used to endorse or promote
18: * products derived from this software without specific prior
19: * written permission.
20: *
21: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
25: * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
27: * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
29: * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
31: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32: */
33:
34: package org.codehaus.janino.samples;
35:
36: import org.codehaus.janino.*;
37:
38: /**
39: * Sample application which demonstrates how to use the
40: * {@link org.codehaus.janino.ExpressionEvaluator ExpressionEvaluator} class.
41: */
42:
43: public class ShippingCost {
44: public static void main(String[] args) throws Exception {
45: if (args.length != 1) {
46: System.err.println("Usage: <total>");
47: System.err
48: .println("Computes the shipping costs from the double value \"total\".");
49: System.err
50: .println("If \"total\" is less than 100.0, then the result is 7.95, else the result is 0.");
51: System.exit(1);
52: }
53:
54: // Convert command line argument to parameter "total".
55: Object[] parameterValues = new Object[] { new Double(args[0]) };
56:
57: // Create "ExpressionEvaluator" object.
58: ExpressionEvaluator ee = new ExpressionEvaluator(
59: "total >= 100.0 ? 0.0 : 7.95", // expression
60: double.class, // optionalExpressionType
61: new String[] { "total" }, // parameterNames,
62: new Class[] { double.class }, // parameterTypes
63: new Class[0], // thrownExceptions
64: null // optionalClassLoader
65: );
66:
67: // Evaluate expression with actual parameter values.
68: Object res = ee.evaluate(parameterValues);
69:
70: // Print expression result.
71: System.out.println("Result = "
72: + (res == null ? "(null)" : res.toString()));
73: }
74: }
|