/// <summary> /// Processes the registry interface document. /// </summary> /// <param name="dataLocation"> /// The data location. /// </param> /// <param name="registryMessage"> /// The registry message type. /// </param> /// <param name="schemaVersion"> /// The schema version type. /// </param> /// <returns> /// The <see cref="ISdmxObjects"/>. /// </returns> private ISdmxObjects ProcessRegistryInterfaceDocument(IReadableDataLocation dataLocation, RegistryMessageType registryMessage, SdmxSchemaEnumType schemaVersion) { ArtifactType artifactType = registryMessage.ArtifactType; ISdmxObjects returnBeans = new SdmxObjectsImpl(); switch (artifactType) { case ArtifactType.Provision: returnBeans.AddIdentifiables(_provisionParsingManager.ParseXML(dataLocation)); break; case ArtifactType.Registration: foreach (IRegistrationInformation regInfo in _registrationParsingManager.ParseRegXML(dataLocation)) returnBeans.AddRegistration(regInfo.Registration); break; case ArtifactType.Structure: switch (schemaVersion) { case SdmxSchemaEnumType.VersionTwo: RegistryInterface rid; using (Stream inputStream = dataLocation.InputStream) { using (XmlReader reader = XMLParser.CreateSdmxMlReader(inputStream, schemaVersion)) { rid = RegistryInterface.Load(reader); } } return _sdmxBeansBuilder.Build(rid); case SdmxSchemaEnumType.VersionTwoPointOne: Org.Sdmx.Resources.SdmxMl.Schemas.V21.Message.RegistryInterface rid2_1; using (Stream inputStream = dataLocation.InputStream) { using (XmlReader reader = XMLParser.CreateSdmxMlReader(inputStream, schemaVersion)) { rid2_1 = Org.Sdmx.Resources.SdmxMl.Schemas.V21.Message.RegistryInterface.Load(reader); } } return _sdmxBeansBuilder.Build(rid2_1); default: throw new ArgumentException("Schema version unsupported for RegistryInterfaceDocument: " + schemaVersion.ToString()); } case ArtifactType.Subscription: returnBeans.AddIdentifiables(_subscriptionParsingManager.ParseSubscriptionXML(dataLocation)); break; default: throw new SdmxNotImplementedException("StructureParsingManager does not support message of type : " + registryMessage.EnumType.ToString()); } return returnBeans; }