View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.scxml2.model;
18  
19  import java.io.Serializable;
20  import java.util.Map;
21  
22  import org.w3c.dom.Node;
23  
24  /**
25   * The class in this SCXML object model that corresponds to the SCXML
26   * <data> child element of the <datamodel> element.
27   *
28   */
29  public class Data implements NamespacePrefixesHolder, Serializable {
30  
31      /**
32       * Serial version UID.
33       */
34      private static final long serialVersionUID = 1L;
35  
36      /**
37       * The identifier of this data instance.
38       * For backwards compatibility this is also the name.
39       */
40      private String id;
41  
42      /**
43       * The URL to get the XML data tree from.
44       */
45      private String src;
46  
47      /**
48       * The expression that evaluates to the value of this data instance.
49       */
50      private String expr;
51  
52      /**
53       * The child XML data tree, parsed as a Node, cloned per execution
54       * instance.
55       */
56      private Node node;
57  
58      /**
59       * The current XML namespaces in the SCXML document for this action node,
60       * preserved for deferred XPath evaluation. Easier than to scrape node
61       * above, given the Builtin API.
62       */
63      private Map<String, String> namespaces;
64  
65      /**
66       * Constructor.
67       */
68      public Data() {
69          this.id = null;
70          this.src = null;
71          this.expr = null;
72          this.node = null;
73      }
74  
75      /**
76       * Get the id.
77       *
78       * @return String An identifier.
79       */
80      public final String getId() {
81          return id;
82      }
83  
84      /**
85       * Set the id.
86       *
87       * @param id The identifier.
88       */
89      public final void setId(final String id) {
90          this.id = id;
91      }
92  
93      /**
94       * Get the URL where the XML data tree resides.
95       *
96       * @return String The URL.
97       */
98      public final String getSrc() {
99          return src;
100     }
101 
102     /**
103      * Set the URL where the XML data tree resides.
104      *
105      * @param src The source URL.
106      */
107     public final void setSrc(final String src) {
108         this.src = src;
109     }
110 
111     /**
112      * Get the expression that evaluates to the value of this data instance.
113      *
114      * @return String The expression.
115      */
116     public final String getExpr() {
117         return expr;
118     }
119 
120     /**
121      * Set the expression that evaluates to the value of this data instance.
122      *
123      * @param expr The expression.
124      */
125     public final void setExpr(final String expr) {
126         this.expr = expr;
127     }
128 
129     /**
130      * Get the XML data tree.
131      *
132      * @return Node The XML data tree, parsed as a <code>Node</code>.
133      */
134     public final Node getNode() {
135         return node;
136     }
137 
138     /**
139      * Set the XML data tree.
140      *
141      * @param node The XML data tree, parsed as a <code>Node</code>.
142      */
143     public final void setNode(final Node node) {
144         this.node = node;
145     }
146 
147     /**
148      * Get the XML namespaces at this action node in the SCXML document.
149      *
150      * @return Returns the map of namespaces.
151      */
152     public final Map<String, String> getNamespaces() {
153         return namespaces;
154     }
155 
156     /**
157      * Set the XML namespaces at this action node in the SCXML document.
158      *
159      * @param namespaces The document namespaces.
160      */
161     public final void setNamespaces(final Map<String, String> namespaces) {
162         this.namespaces = namespaces;
163     }
164 
165 }
166