home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc.xml
- {
- public class SchemaManager extends QualifiedResourceManager
- {
- private var _namespaces:Object;
-
- private var _schemaMarshaller:SchemaMarshaller;
-
- private var _schemaConstants:SchemaConstants;
-
- private var namespaceCount:uint = 0;
-
- private var schemaStack:Array;
-
- private var initialScope:*;
-
- private var _schemaDatatypes:SchemaDatatypes;
-
- public function SchemaManager()
- {
- super();
- initialScope = [];
- schemaStack = [];
- }
-
- public function addNamespaces(param1:Object) : void
- {
- var _loc2_:String = null;
- var _loc3_:Namespace = null;
- for(_loc2_ in param1)
- {
- _loc3_ = param1[_loc2_] as Namespace;
- namespaces[_loc2_] = _loc3_;
- }
- }
-
- public function getNamedDefinition(param1:QName, ... rest) : XML
- {
- var _loc5_:Schema = null;
- var _loc6_:Object = null;
- var _loc7_:XML = null;
- var _loc3_:Array = currentScope();
- var _loc4_:int = 0;
- while(_loc4_ < _loc3_.length)
- {
- _loc5_ = _loc3_[_loc4_];
- rest.unshift(param1);
- _loc6_ = _loc5_.getNamedDefinition.apply(_loc5_,rest);
- if(_loc6_ != null)
- {
- _loc7_ = _loc6_.definition as XML;
- pushSchemaInScope(_loc6_.schema);
- return _loc7_;
- }
- _loc4_++;
- }
- return null;
- }
-
- public function releaseScope() : *
- {
- return schemaStack.pop();
- }
-
- public function marshall(param1:*, param2:QName = null, param3:XML = null) : String
- {
- return schemaMarshaller.marshall(param1,param2,param3);
- }
-
- public function reset() : void
- {
- namespaceCount = 0;
- schemaStack = [];
- schemaStack.push(initialScope);
- }
-
- public function pushSchemaInScope(param1:Schema) : void
- {
- var _loc2_:Array = null;
- if(param1 != null)
- {
- _loc2_ = [param1];
- _loc2_["current"] = _loc2_[0];
- schemaStack.push(_loc2_);
- }
- }
-
- public function pushNamespaceInScope(param1:*) : Boolean
- {
- var _loc5_:Schema = null;
- var _loc2_:Namespace = new Namespace(param1);
- var _loc3_:Array = currentScope();
- var _loc4_:int = 0;
- while(_loc4_ < _loc3_.length)
- {
- _loc5_ = _loc3_[_loc4_];
- if(_loc5_.targetNamespace.uri == _loc2_.uri)
- {
- pushSchemaInScope(_loc5_);
- return true;
- }
- _loc4_++;
- }
- return false;
- }
-
- public function getQNameForAttribute(param1:String, param2:String = null) : QName
- {
- var _loc3_:QName = null;
- if(param2 == "qualified" || param2 == null && currentSchema.attributeFormDefault == "qualified")
- {
- _loc3_ = new QName(currentSchema.targetNamespace.uri,param1);
- }
- else
- {
- _loc3_ = new QName("",param1);
- }
- return _loc3_;
- }
-
- public function currentScope() : Array
- {
- var _loc1_:Array = schemaStack.pop();
- if(_loc1_ != null)
- {
- schemaStack.push(_loc1_);
- }
- else
- {
- _loc1_ = [];
- }
- return _loc1_;
- }
-
- public function set schemaConstants(param1:SchemaConstants) : void
- {
- _schemaConstants = param1;
- }
-
- public function addSchema(param1:Schema, param2:Boolean = true) : void
- {
- var _loc3_:Array = null;
- addResource(param1.targetNamespace,param1);
- if(param2 == true)
- {
- _loc3_ = schemaStack.pop();
- }
- if(_loc3_ == null)
- {
- _loc3_ = [];
- }
- _loc3_.push(param1);
- if(!_loc3_.hasOwnProperty("current"))
- {
- _loc3_["current"] = _loc3_[0];
- }
- schemaStack.push(_loc3_);
- if(schemaStack.length == 1)
- {
- initialScope = schemaStack[0];
- }
- }
-
- public function getOrCreatePrefix(param1:String) : String
- {
- var _loc2_:String = null;
- var _loc3_:Namespace = null;
- var _loc5_:Namespace = null;
- var _loc7_:Object = null;
- for each(_loc3_ in namespaces)
- {
- if(_loc3_.uri == param1)
- {
- return _loc3_.prefix;
- }
- }
- if(currentSchema != null)
- {
- _loc7_ = currentSchema.namespaces;
- for each(_loc3_ in _loc7_)
- {
- if(_loc3_.uri == param1)
- {
- return _loc3_.prefix;
- }
- }
- }
- var _loc4_:String = "ns";
- var _loc6_:String = _loc4_ + namespaceCount;
- if(namespaces[_loc6_] != null)
- {
- ++namespaceCount;
- _loc6_ = _loc4_ + namespaceCount;
- _loc5_ = new Namespace(_loc6_,param1);
- namespaces[_loc6_] = _loc5_;
- return _loc6_;
- }
- _loc5_ = new Namespace(_loc6_,param1);
- namespaces[_loc6_] = _loc5_;
- return _loc6_;
- }
-
- public function unmarshall(param1:*, param2:QName = null, param3:XML = null) : *
- {
- return schemaMarshaller.unmarshall(param1,param2,param3);
- }
-
- public function set namespaces(param1:Object) : void
- {
- _namespaces = param1;
- }
-
- public function get schemaDatatypes() : SchemaDatatypes
- {
- if(_schemaDatatypes == null)
- {
- _schemaDatatypes = SchemaDatatypes.getConstants(schemaConstants.xsdURI);
- }
- return _schemaDatatypes;
- }
-
- public function get namespaces() : Object
- {
- if(_namespaces == null)
- {
- _namespaces = {};
- }
- return _namespaces;
- }
-
- public function getQNameForElement(param1:String, param2:String = null) : QName
- {
- var _loc3_:QName = null;
- if(param2 == "qualified" || (param2 == null || param2 == "") && currentSchema.elementFormDefault == "qualified")
- {
- _loc3_ = new QName(currentSchema.targetNamespace.uri,param1);
- }
- else
- {
- _loc3_ = new QName("",param1);
- }
- return _loc3_;
- }
-
- public function get currentSchema() : Schema
- {
- var _loc1_:Schema = null;
- var _loc2_:Array = currentScope();
- if(_loc2_.hasOwnProperty("current"))
- {
- _loc1_ = _loc2_["current"];
- }
- return _loc1_;
- }
-
- public function get schemaMarshaller() : SchemaMarshaller
- {
- if(_schemaMarshaller == null)
- {
- _schemaMarshaller = new SchemaMarshaller(schemaConstants,schemaDatatypes);
- }
- return _schemaMarshaller;
- }
-
- public function get schemaConstants() : SchemaConstants
- {
- if(_schemaConstants == null)
- {
- _schemaConstants = SchemaConstants.getConstants();
- }
- return _schemaConstants;
- }
-
- public function getQNameForPrefixedName(param1:String, param2:XML = null, param3:Boolean = false) : QName
- {
- var _loc4_:QName = null;
- var _loc5_:String = null;
- var _loc6_:String = null;
- var _loc8_:Namespace = null;
- var _loc9_:Array = null;
- var _loc10_:Namespace = null;
- var _loc11_:Namespace = null;
- var _loc7_:int = int(param1.indexOf(":"));
- if(_loc7_ > 0)
- {
- _loc5_ = param1.substr(0,_loc7_);
- _loc6_ = param1.substr(_loc7_ + 1);
- }
- else
- {
- _loc6_ = param1;
- }
- if(_loc5_ == null && param3 == true)
- {
- _loc8_ = currentSchema.targetNamespace;
- }
- if(_loc5_ == null)
- {
- _loc5_ = "";
- }
- if(_loc8_ == null)
- {
- if(param2 != null)
- {
- _loc9_ = param2.inScopeNamespaces();
- for each(_loc10_ in _loc9_)
- {
- if(_loc10_.prefix == _loc5_)
- {
- _loc8_ = _loc10_;
- break;
- }
- }
- }
- }
- if(_loc8_ == null)
- {
- _loc8_ = namespaces[_loc5_];
- }
- if(_loc8_ == null)
- {
- _loc8_ = currentSchema.namespaces[_loc5_];
- }
- if(_loc8_ == null)
- {
- _loc11_ = param2 != null ? param2.namespace() : null;
- if(_loc11_ != null && _loc11_.prefix == "")
- {
- _loc8_ = _loc11_;
- }
- else
- {
- _loc8_ = currentSchema.targetNamespace;
- }
- }
- if(_loc8_ != null)
- {
- _loc4_ = new QName(_loc8_.uri,_loc6_);
- }
- else
- {
- _loc4_ = new QName("",_loc6_);
- }
- return _loc4_;
- }
- }
- }
-
-