~vcs-imports/xena/trunk

« back to all changes in this revision

Viewing changes to ext/src/xalan-j_2_7_1/src/org/apache/xpath/objects/XBoolean.java

  • Committer: matthewoliver
  • Date: 2009-12-10 03:18:07 UTC
  • Revision ID: vcs-imports@canonical.com-20091210031807-l086qguzdlljtkl9
Merged Xena Testing into Xena Stable for the Xena 5 release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Licensed to the Apache Software Foundation (ASF) under one
 
3
 * or more contributor license agreements. See the NOTICE file
 
4
 * distributed with this work for additional information
 
5
 * regarding copyright ownership. The ASF licenses this file
 
6
 * to you under the Apache License, Version 2.0 (the  "License");
 
7
 * you may not use this file except in compliance with the License.
 
8
 * You may obtain a copy of the License at
 
9
 *
 
10
 *     http://www.apache.org/licenses/LICENSE-2.0
 
11
 *
 
12
 * Unless required by applicable law or agreed to in writing, software
 
13
 * distributed under the License is distributed on an "AS IS" BASIS,
 
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
15
 * See the License for the specific language governing permissions and
 
16
 * limitations under the License.
 
17
 */
 
18
/*
 
19
 * $Id: XBoolean.java,v 1.2 2009/12/10 03:18:30 matthewoliver Exp $
 
20
 */
 
21
package org.apache.xpath.objects;
 
22
 
 
23
/**
 
24
 * This class represents an XPath boolean object, and is capable of
 
25
 * converting the boolean to other types, such as a string.
 
26
 * @xsl.usage advanced
 
27
 */
 
28
public class XBoolean extends XObject
 
29
{
 
30
    static final long serialVersionUID = -2964933058866100881L;
 
31
 
 
32
  /**
 
33
   * A true boolean object so we don't have to keep creating them.
 
34
   * @xsl.usage internal
 
35
   */
 
36
  public static final XBoolean S_TRUE = new XBooleanStatic(true);
 
37
 
 
38
  /**
 
39
   * A true boolean object so we don't have to keep creating them.
 
40
   * @xsl.usage internal
 
41
   */
 
42
  public static final XBoolean S_FALSE = new XBooleanStatic(false);
 
43
 
 
44
  /** Value of the object.
 
45
   *  @serial         */
 
46
  private final boolean m_val;
 
47
 
 
48
  /**
 
49
   * Construct a XBoolean object.
 
50
   *
 
51
   * @param b Value of the boolean object
 
52
   */
 
53
  public XBoolean(boolean b)
 
54
  {
 
55
 
 
56
    super();
 
57
 
 
58
    m_val = b;
 
59
  }
 
60
  
 
61
  /**
 
62
   * Construct a XBoolean object.
 
63
   *
 
64
   * @param b Value of the boolean object
 
65
   */
 
66
  public XBoolean(Boolean b)
 
67
  {
 
68
 
 
69
    super();
 
70
 
 
71
    m_val = b.booleanValue();
 
72
    setObject(b);
 
73
  }
 
74
 
 
75
 
 
76
  /**
 
77
   * Tell that this is a CLASS_BOOLEAN.
 
78
   *
 
79
   * @return type of CLASS_BOOLEAN
 
80
   */
 
81
  public int getType()
 
82
  {
 
83
    return CLASS_BOOLEAN;
 
84
  }
 
85
 
 
86
  /**
 
87
   * Given a request type, return the equivalent string.
 
88
   * For diagnostic purposes.
 
89
   *
 
90
   * @return type string "#BOOLEAN"
 
91
   */
 
92
  public String getTypeString()
 
93
  {
 
94
    return "#BOOLEAN";
 
95
  }
 
96
 
 
97
  /**
 
98
   * Cast result object to a number.
 
99
   *
 
100
   * @return numeric value of the object value
 
101
   */
 
102
  public double num()
 
103
  {
 
104
    return m_val ? 1.0 : 0.0;
 
105
  }
 
106
 
 
107
  /**
 
108
   * Cast result object to a boolean.
 
109
   *
 
110
   * @return The object value as a boolean
 
111
   */
 
112
  public boolean bool()
 
113
  {
 
114
    return m_val;
 
115
  }
 
116
 
 
117
  /**
 
118
   * Cast result object to a string.
 
119
   *
 
120
   * @return The object's value as a string
 
121
   */
 
122
  public String str()
 
123
  {
 
124
    return m_val ? "true" : "false";
 
125
  }
 
126
 
 
127
  /**
 
128
   * Return a java object that's closest to the representation
 
129
   * that should be handed to an extension.
 
130
   *
 
131
   * @return The object's value as a java object
 
132
   */
 
133
  public Object object()
 
134
  {
 
135
    if(null == m_obj)
 
136
      setObject(new Boolean(m_val));
 
137
    return m_obj;
 
138
  }
 
139
 
 
140
  /**
 
141
   * Tell if two objects are functionally equal.
 
142
   *
 
143
   * @param obj2 Object to compare to this  
 
144
   *
 
145
   * @return True if the two objects are equal
 
146
   *
 
147
   * @throws javax.xml.transform.TransformerException
 
148
   */
 
149
  public boolean equals(XObject obj2)
 
150
  {
 
151
 
 
152
    // In order to handle the 'all' semantics of 
 
153
    // nodeset comparisons, we always call the 
 
154
    // nodeset function.
 
155
    if (obj2.getType() == XObject.CLASS_NODESET)
 
156
      return obj2.equals(this);
 
157
 
 
158
    try
 
159
    {
 
160
      return m_val == obj2.bool();
 
161
    }
 
162
    catch(javax.xml.transform.TransformerException te)
 
163
    {
 
164
      throw new org.apache.xml.utils.WrappedRuntimeException(te);
 
165
    }
 
166
  }
 
167
 
 
168
}