01: /*
02:
03: Derby - Class org.apache.derby.impl.sql.compile.XMLConstantNode
04:
05: Licensed to the Apache Software Foundation (ASF) under one or more
06: contributor license agreements. See the NOTICE file distributed with
07: this work for additional information regarding copyright ownership.
08: The ASF licenses this file to you under the Apache License, Version 2.0
09: (the "License"); you may not use this file except in compliance with
10: the License. You may obtain a copy of the License at
11:
12: http://www.apache.org/licenses/LICENSE-2.0
13:
14: Unless required by applicable law or agreed to in writing, software
15: distributed under the License is distributed on an "AS IS" BASIS,
16: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: See the License for the specific language governing permissions and
18: limitations under the License.
19:
20: */
21:
22: package org.apache.derby.impl.sql.compile;
23:
24: import org.apache.derby.iapi.error.StandardException;
25: import org.apache.derby.iapi.services.compiler.MethodBuilder;
26: import org.apache.derby.iapi.services.io.StoredFormatIds;
27: import org.apache.derby.iapi.services.sanity.SanityManager;
28: import org.apache.derby.iapi.types.TypeId;
29:
30: import org.apache.derby.impl.sql.compile.ExpressionClassBuilder;
31:
32: import org.apache.derby.iapi.util.ReuseFactory;
33:
34: public final class XMLConstantNode extends ConstantNode {
35: /**
36: * Initializer for an XMLConstantNode.
37: *
38: * @param arg1 The TypeId for the type of the node
39: *
40: * @exception StandardException
41: */
42: public void init(Object arg1) throws StandardException {
43: super .init(arg1, Boolean.TRUE, ReuseFactory.getInteger(0));
44: }
45:
46: /**
47: * Return the value from this XMLConstantNode as a string.
48: *
49: * @return The value of this XMLConstantNode as a string.
50: *
51: * @exception StandardException Thrown on error
52: */
53: public String getString() throws StandardException {
54: return value.getString();
55: }
56:
57: /**
58: * Return an Object representing the bind time value of this
59: * expression tree. If the expression tree does not evaluate to
60: * a constant at bind time then we return null.
61: *
62: * @return An Object representing the bind time value of this
63: * expression tree (null if not a bind time constant).
64: *
65: * @exception StandardException Thrown on error
66: */
67: Object getConstantValueAsObject() throws StandardException {
68: return value.getObject();
69: }
70:
71: /**
72: * This generates the proper constant. For an XML value,
73: * this constant value is simply the XML string (which is
74: * just null because null values are the only types of
75: * XML constants we can have).
76: *
77: * @param acb The ExpressionClassBuilder for the class being built
78: * @param mb The method the code to place the code
79: *
80: * @exception StandardException Thrown on error
81: */
82: void generateConstant(ExpressionClassBuilder acb, MethodBuilder mb)
83: throws StandardException {
84: // The generated java is the expression:
85: // "#getString()"
86: mb.push(getString());
87: }
88: }
|