001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.scxml.model;
018
019 import java.io.Serializable;
020 import java.util.Map;
021
022 import org.w3c.dom.Node;
023
024 /**
025 * The class in this SCXML object model that corresponds to the SCXML
026 * <data> child element of the <datamodel> element.
027 *
028 */
029 public class Data implements NamespacePrefixesHolder, Serializable {
030
031 /**
032 * Serial version UID.
033 */
034 private static final long serialVersionUID = 1L;
035
036 /**
037 * The identifier of this data instance.
038 * For backwards compatibility this is also the name.
039 */
040 private String id;
041
042 /**
043 * The URL to get the XML data tree from.
044 */
045 private String src;
046
047 /**
048 * The expression that evaluates to the value of this data instance.
049 */
050 private String expr;
051
052 /**
053 * The child XML data tree, parsed as a Node, cloned per execution
054 * instance.
055 */
056 private Node node;
057
058 /**
059 * The current XML namespaces in the SCXML document for this action node,
060 * preserved for deferred XPath evaluation. Easier than to scrape node
061 * above, given the Builtin API.
062 */
063 private Map namespaces;
064
065 /**
066 * Constructor.
067 */
068 public Data() {
069 this.id = null;
070 this.src = null;
071 this.expr = null;
072 this.node = null;
073 }
074
075 /**
076 * Get the name.
077 *
078 * @return String The name.
079 * @deprecated Use {@link #getId()} instead.
080 */
081 public final String getName() {
082 return id;
083 }
084
085 /**
086 * Set the name.
087 *
088 * @param name The name.
089 * @deprecated Use {@link #setId(String)} instead.
090 */
091 public final void setName(final String name) {
092 this.id = name;
093 }
094
095 /**
096 * Get the id.
097 *
098 * @return String An identifier.
099 */
100 public final String getId() {
101 return id;
102 }
103
104 /**
105 * Set the id.
106 *
107 * @param id The identifier.
108 */
109 public final void setId(final String id) {
110 this.id = id;
111 }
112
113 /**
114 * Get the URL where the XML data tree resides.
115 *
116 * @return String The URL.
117 */
118 public final String getSrc() {
119 return src;
120 }
121
122 /**
123 * Set the URL where the XML data tree resides.
124 *
125 * @param src The source URL.
126 */
127 public final void setSrc(final String src) {
128 this.src = src;
129 }
130
131 /**
132 * Get the expression that evaluates to the value of this data instance.
133 *
134 * @return String The expression.
135 */
136 public final String getExpr() {
137 return expr;
138 }
139
140 /**
141 * Set the expression that evaluates to the value of this data instance.
142 *
143 * @param expr The expression.
144 */
145 public final void setExpr(final String expr) {
146 this.expr = expr;
147 }
148
149 /**
150 * Get the XML data tree.
151 *
152 * @return Node The XML data tree, parsed as a <code>Node</code>.
153 */
154 public final Node getNode() {
155 return node;
156 }
157
158 /**
159 * Set the XML data tree.
160 *
161 * @param node The XML data tree, parsed as a <code>Node</code>.
162 */
163 public final void setNode(final Node node) {
164 this.node = node;
165 }
166
167 /**
168 * Get the XML namespaces at this action node in the SCXML document.
169 *
170 * @return Returns the map of namespaces.
171 */
172 public final Map getNamespaces() {
173 return namespaces;
174 }
175
176 /**
177 * Set the XML namespaces at this action node in the SCXML document.
178 *
179 * @param namespaces The document namespaces.
180 */
181 public final void setNamespaces(final Map namespaces) {
182 this.namespaces = namespaces;
183 }
184
185 }
186