1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.el;
18
19 import javax.servlet.jsp.el.ELException;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23
24
25
26
27
28
29
30
31
32 public class IntegerDivideOperator
33 extends BinaryOperator
34 {
35
36
37
38 private static Log log = LogFactory.getLog(IntegerDivideOperator.class);
39
40
41
42
43
44 public static final IntegerDivideOperator SINGLETON =
45 new IntegerDivideOperator ();
46
47
48
49
50
51
52 public IntegerDivideOperator ()
53 {
54 }
55
56
57
58
59
60
61
62
63 public String getOperatorSymbol ()
64 {
65 return "idiv";
66 }
67
68
69
70
71
72
73 public Object apply (Object pLeft, Object pRight)
74 throws ELException
75 {
76 if (pLeft == null &&
77 pRight == null) {
78 if (log.isWarnEnabled()) {
79 log.warn(
80 MessageUtil.getMessageWithArgs(
81 Constants.ARITH_OP_NULL,
82 getOperatorSymbol()));
83 }
84 return PrimitiveObjects.getInteger (0);
85 }
86
87 long left =
88 Coercions.coerceToPrimitiveNumber (pLeft, Long.class).
89 longValue ();
90 long right =
91 Coercions.coerceToPrimitiveNumber (pRight, Long.class).
92 longValue ();
93
94 try {
95 return PrimitiveObjects.getLong (left / right);
96 }
97 catch (Exception exc) {
98 if (log.isErrorEnabled()) {
99 String message = MessageUtil.getMessageWithArgs(
100 Constants.ARITH_ERROR,
101 getOperatorSymbol(),
102 "" + left,
103 "" + right);
104 log.error(message);
105 }
106 return PrimitiveObjects.getInteger (0);
107 }
108 }
109
110
111 }