19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: XNull.java 468655 2006-10-28 07:12:06Z minchau $
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xpath.objects;
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTM;
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xpath.XPathContext;
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * This class represents an XPath null object, and is capable of
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * converting the null to other types, such as a string.
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage general
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class XNull extends XNodeSet
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    static final long serialVersionUID = -6841683711458983005L;
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Create an XObject.
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public XNull()
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    super();
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Tell what kind of class this is.
459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return type CLASS_NULL
479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int getType()
499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return CLASS_NULL;
519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Given a request type, return the equivalent string.
559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * For diagnostic purposes.
569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return type string "#CLASS_NULL"
589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getTypeString()
609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return "#CLASS_NULL";
629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Cast result object to a number.
669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return 0.0
689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public double num()
719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return 0.0;
739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Cast result object to a boolean.
779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return false
799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean bool()
819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return false;
839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Cast result object to a string.
879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return empty string ""
899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String str()
919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return "";
939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Cast result object to a result tree fragment.
979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param support XPath context to use for the conversion
999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The object as a result tree fragment.
1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public int rtf(XPathContext support)
1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // DTM frag = support.createDocumentFragment();
1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // %REVIEW%
1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return DTM.NULL;
1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//  /**
1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//   * Cast result object to a nodelist.
1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//   *
1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//   * @return null
1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//   */
1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//  public DTMIterator iter()
1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//  {
1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//    return null;
1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson//  }
1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Tell if two objects are functionally equal.
1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param obj2 Object to compare this to
1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return True if the given object is of type CLASS_NULL
1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean equals(XObject obj2)
1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return obj2.getType() == CLASS_NULL;
1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
131