text: dojo._xdResourceLoaded({
  depends: [["provide", "dojox.wire.DataWire"],
  ["require", "dojox.wire.Wire"]],
  defineResource: function(dojo){if(!dojo._hasResource["dojox.wire.DataWire"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  dojo._hasResource["dojox.wire.DataWire"] = true;
  dojo.provide("dojox.wire.DataWire");
  
  dojo.require("dojox.wire.Wire");
  
  dojo.declare("dojox.wire.DataWire", dojox.wire.Wire, {
  	//	summary:
  	//		A Wire for item attributes of data stores
  	//	description:
  	//		This class accesses item attributes of data stores with a dotted
  	//		notation of attribute names specified to 'attribute' property,
  	//		using data APIs of a data store specified to 'dataStore' property.
  	//		The root object for this class must be an item of the data store.
  	//		Intermediate attribute names in the dotted notation specify
  	//		attributes for child items, which are used for repeated calls to
  	//		data APIs until reached to a descendant attribute.
  	//		Attribute names may have an array index, such as "a[0]", to
  	//		identify an array element of the attribute value.
  	
  	_wireClass: "dojox.wire.DataWire",
  
  	constructor: function(/*Object*/args){
  		//	summary:
  		//		Initialize properties
  		//	description:
  		//		If 'dataStore' property is not specified, but 'parent' property
  		//		is specified, 'dataStore' property is copied from the parent.
  		//	args:
  		//		Arguments to initialize properties
  		//		dataStore:
  		//			A data store
  		//		attribute:
  		//			A dotted notation to a descendant attribute
  		if(!this.dataStore && this.parent){
  			this.dataStore = this.parent.dataStore;
  		}
  	},
  	_getValue: function(/*Object*/object){
  		//	summary:
  		//		Return an attribute value of an item
  		//	description:
  		//		This method uses a root item passed in 'object' argument and
  		//		'attribute' property to call getValue() method of
  		//		'dataStore'.
  		//		If an attribute name have an array suffix ("[]"), getValues()
  		//		method is called, instead.
  		//		If an index is specified in the array suffix, an array element
  		//		for the index is returned, instead of the array itself.
  		//	object:
  		//		A root item
  		//	returns:
  		//		A value found, otherwise 'undefined'
  		if(!object || !this.attribute || !this.dataStore){
  			return object; //Object
  		}
  
  		var value = object;
  		var list = this.attribute.split('.');
  		for(var i in list){
  			value = this._getAttributeValue(value, list[i]);
  			if(!value){
  				return undefined; //undefined
  			}
  		}
  		return value; //anything
  	},
  
  	_setValue: function(/*Object*/object, /*anything*/value){
  		//	summary:
  		//		Set an attribute value to an item
  		//	description:
  		//		This method uses a root item passed in 'object' argument and
  		//		'attribute' property to identify an item.
  		//		Then, setValue() method of 'dataStore' is called with a leaf
  		//		attribute name and 'value' argument.
  		//		If an attribute name have an array suffix ("[]"), setValues()
  		//		method is called, instead.
  		//		If an index is specified in the array suffix, an array element
  		//		for the index is set to 'value', instead of the array itself.
  		//	object:
  		//		A root item
  		//	value:
  		//		A value to set
  		//	returns:
  		//		'object', or 'undefined' for invalid attribute
  		if(!object || !this.attribute || !this.dataStore){
  			return object; //Object
  		}
  
  		var item = object;
  		var list = this.attribute.split('.');
  		var last = list.length - 1;
  		for(var i = 0; i < last; i++){
  			item = this._getAttributeValue(item, list[i]);
  			if(!item){
  				return undefined; //undefined
  			}
  		}
  		this._setAttributeValue(item, list[last], value);
  		return object; //Object
  	},
  
  	_getAttributeValue: function(/*Object*/item, /*String*/attribute){
  		//	summary:
  		//		Return an attribute value of an item
  		//	description:
  		//		This method uses an item passed in 'item' argument and
  		//		'attribute' argument to call getValue() method of 'dataStore'.
  		//		If an attribute name have an array suffix ("[]"), getValues()
  		//		method is called, instead.
  		//		If an index is specified in the array suffix, an array element
  		//		for the index is returned, instead of the array itself.
  		//	item:
  		//		An item
  		//	attribute
  		//		An attribute name
  		//	returns:
  		//		A value found, otherwise 'undefined'
  		var value = undefined;
  		var i1 = attribute.indexOf('[');
  		if(i1 >= 0){
  			var i2 = attribute.indexOf(']');
  			var index = attribute.substring(i1 + 1, i2);
  			attribute = attribute.substring(0, i1);
  			var array = this.dataStore.getValues(item, attribute);
  			if(array){
  				if(!index){ // return array for "attribute[]"
  					value = array;
  				}else{
  					value = array[index];
  				}
  			}
  		}else{
  			value = this.dataStore.getValue(item, attribute);
  		}
  		return value; //anything 
  	},
  
  	_setAttributeValue: function(/*Object*/item, /*String*/attribute, /*anything*/value){
  		//	summary:
  		//		Set an attribute value to an item
  		//	description:
  		//		This method uses an item passed in 'item' argument and
  		//		'attribute' argument to call setValue() method of 'dataStore'
  		//		with 'value' argument.
  		//		If an attribute name have an array suffix ("[]"), setValues()
  		//		method is called, instead.
  		//		If an index is specified in the array suffix, an array element
  		//		for the index is set to 'value', instead of the array itself.
  		//	item:
  		//		An item
  		//	attribute:
  		//		An attribute name
  		//	value:
  		//		A value to set
  		var i1 = attribute.indexOf('[');
  		if(i1 >= 0){
  			var i2 = attribute.indexOf(']');
  			var index = attribute.substring(i1 + 1, i2);
  			attribute = attribute.substring(0, i1);
  			var array = null;
  			if(!index){ // replace whole array for "attribute[]"
  				array = value;
  			}else{
  				array = this.dataStore.getValues(item, attribute);
  				if(!array){
  					array = [];
  				}
  				array[index] = value;
  			}
  			this.dataStore.setValues(item, attribute, array);
  		}else{
  			this.dataStore.setValue(item, attribute, value);
  		}
  	}
  });
  
  }
  
  }});