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