/// <summary> /// Creates and adds an XmlSerializerImportOptions instance to be used with WsdlImporter. /// </summary> private void AddXmlSerializerImportOptions() { XmlSerializerImportOptions xsio = new XmlSerializerImportOptions(compileUnit); xsio.CodeProvider = codeProvider; // xsio.ClrNamespace = options.ClrNamespace; if (options.EnableDataBinding) { xsio.WebReferenceOptions.CodeGenerationOptions |= System.Xml.Serialization.CodeGenerationOptions.EnableDataBinding; } if (!options.GenerateProperties) { xsio.WebReferenceOptions.CodeGenerationOptions &= ~System.Xml.Serialization.CodeGenerationOptions.GenerateProperties; } if (!options.GenerateOrderIdentifiers) { xsio.WebReferenceOptions.CodeGenerationOptions &= ~System.Xml.Serialization.CodeGenerationOptions.GenerateOrder; } xsio.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); xsio.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); wsdlImporter.State.Add(typeof(XmlSerializerImportOptions), xsio); }
private static void AddStateForXmlSerializerImport(CommandProcessorOptions options, WsdlImporter importer, CodeCompileUnit codeCompileUnit) { XmlSerializerImportOptions importOptions = new XmlSerializerImportOptions(codeCompileUnit) { WebReferenceOptions = new WsdlNS.WebReferenceOptions() }; importOptions.WebReferenceOptions.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateOrder; if (options.EnableDataBinding == true) { importOptions.WebReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.EnableDataBinding; } // Right now System.Data API not available in DNX. If it comes available we could consider uncommenting these. // importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtensionFx35).AssemblyQualifiedName); // importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.CodeProvider = options.CodeProvider; importOptions.ClrNamespace = options.NamespaceMappings.FirstOrDefault(m => m.Key == "*").Value; importer.State.Add(typeof(XmlSerializerImportOptions), importOptions); if (!importer.State.ContainsKey(typeof(WrappedOptions))) { importer.State.Add(typeof(WrappedOptions), new WrappedOptions { WrappedFlag = options.Wrapped == true }); } }
public void State_Serializer_Auto() { Mock <IXmlSerializerImportOptionsBuilder> xmlSerializerImportOptionsBuilder = CreateXmlSerializerImportOptionsBuilder(); Mock <IXsdDataContractImporterBuilder> xsdDataContractImporterBuilder = CreateXsdDataContractImporterBuilder(); Mock <IWrappedOptionsBuilder> wrappedOptionsBuilder = CreateWrappedOptionsBuilder(); Mock <IFaultImportOptionsBuilder> faultImportOptionsBuilder = CreateFaultImportOptionsBuilder(); CodeGeneratorOptions options = new CodeGeneratorOptions { Serializer = SerializerMode.Auto }; WsdlImporter wsdlImporter = GetWsdlImporter(options, xmlSerializerImportOptionsBuilder, xsdDataContractImporterBuilder, wrappedOptionsBuilder, faultImportOptionsBuilder); XsdDataContractImporter dataContractImporterState = GetState <XsdDataContractImporter>(wsdlImporter); Assert.That(dataContractImporterState, Is.EqualTo(xsdDataContractImporter)); XmlSerializerImportOptions xmlSerializerState = GetState <XmlSerializerImportOptions>(wsdlImporter); Assert.That(xmlSerializerState, Is.EqualTo(xmlSerializerImportOptions)); WrappedOptions wrappedOptionsState = GetState <WrappedOptions>(wsdlImporter); Assert.That(wrappedOptionsState, Is.EqualTo(wrappedOptions)); FaultImportOptions faultImportOptionsState = GetState <FaultImportOptions>(wsdlImporter); Assert.That(faultImportOptionsState, Is.EqualTo(faultImportOptions)); VerifyXmlSerializerImportOptionsBuilder(xmlSerializerImportOptionsBuilder, Times.Once()); VerifyXsdDataContractImporterBuilder(xsdDataContractImporterBuilder, Times.Once()); VerifyWrappedOptionsBuilder(wrappedOptionsBuilder, Times.Exactly(2)); VerifyFaultImportOptionsBuilder(faultImportOptionsBuilder, Times.Once()); }
private void AddStateForXmlSerializerImport(ContractGenerationOptions options, WsdlImporter wsdlImporter, CodeCompileUnit codeCompileUnit) { XmlSerializerImportOptions importOptions = new XmlSerializerImportOptions(codeCompileUnit); importOptions.WebReferenceOptions = new WebReferenceOptions(); importOptions.WebReferenceOptions.CodeGenerationOptions = CodeGenerationOptions.GenerateOrder | CodeGenerationOptions.GenerateProperties; if (options.EnableDataBinding) { importOptions.WebReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.EnableDataBinding; } if (options.GenerateAsyncMethods) { importOptions.WebReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.GenerateNewAsync; } importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.CodeProvider = options.CodeProvider; string clrNamespace = null; options.NamespaceMappings.TryGetValue(ContractGenerationOptions.NamespaceMappingsAllKeyName, out clrNamespace); importOptions.ClrNamespace = clrNamespace; importOptions.WebReferenceOptions.Verbose = true; //importOptions.WebReferenceOptions.Style = ServiceDescriptionImportStyle.Client; wsdlImporter.State.Add(typeof(XmlSerializerImportOptions), importOptions); }
internal XmlSerializerOperationGenerator(XmlSerializerImportOptions options) { operationGenerator = new OperationGenerator(); this.options = options; this.codeNamespace = GetTargetCodeNamespace(options); partInfoTable = new Dictionary <MessagePartDescription, PartInfo>(); }
public void Build_CodeGeneratorContext_CodeCompileUnit() { ICodeGeneratorContext codeGeneratorContext = new CodeGeneratorContext(metadataSet, new CodeGeneratorOptions()); IXmlSerializerImportOptionsBuilder builder = new XmlSerializerImportOptionsBuilder(); XmlSerializerImportOptions importOptions = builder.Build(codeGeneratorContext); Assert.That(importOptions.CodeCompileUnit, Is.EqualTo(codeGeneratorContext.CodeCompileUnit)); }
public void Build_CodeGeneratorOptions_GenerateProperties() { CodeGeneratorOptions options = new CodeGeneratorOptions { GenerateProperties = true }; XmlSerializerImportOptions importOptions = PerformBuild(options); Assert.That(importOptions.WebReferenceOptions.CodeGenerationOptions, Is.EqualTo(CodeGenerationOptions.GenerateProperties)); }
public void Build_CodeGeneratorOptions_EnableDataBinding() { CodeGeneratorOptions options = new CodeGeneratorOptions { EnableDataBinding = true }; XmlSerializerImportOptions importOptions = PerformBuild(options); Assert.That(importOptions.WebReferenceOptions.CodeGenerationOptions, Is.EqualTo(CodeGenerationOptions.EnableDataBinding)); }
public void Build_CodeGeneratorOptions_OrderMembers() { CodeGeneratorOptions options = new CodeGeneratorOptions { OrderMembers = true }; XmlSerializerImportOptions importOptions = PerformBuild(options); Assert.That(importOptions.WebReferenceOptions.CodeGenerationOptions, Is.EqualTo(CodeGenerationOptions.GenerateOrder)); }
private static void AddStateForXmlSerializerImport(MetadataImporter importer, CodeCompileUnit codeCompileUnit, CodeDomProvider codeDomProvider) { XmlSerializerImportOptions importOptions = new XmlSerializerImportOptions(codeCompileUnit); importOptions.CodeProvider = codeDomProvider; importOptions.WebReferenceOptions = new WebReferenceOptions(); importOptions.WebReferenceOptions.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateOrder; importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); importer.State.Add(typeof(XmlSerializerImportOptions), importOptions); }
public void Build_CodeGeneratorOptions_NamespaceMappings() { const string expectedNamespace = "TestNamespace"; Dictionary <string, string> mappings = new Dictionary <string, string> { { "*", expectedNamespace } }; CodeGeneratorOptions options = new CodeGeneratorOptions { NamespaceMappings = mappings }; XmlSerializerImportOptions importOptions = PerformBuild(options); Assert.That(importOptions.ClrNamespace, Is.EqualTo(expectedNamespace)); }
void AddStateForXmlSerializerImport(WsdlImporter importer) { XmlSerializerImportOptions importOptions = new XmlSerializerImportOptions(this.codeCompileUnit); importOptions.CodeProvider = this.codeDomProvider; importOptions.WebReferenceOptions = new WsdlNS.WebReferenceOptions(); importOptions.WebReferenceOptions.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties; importOptions.WebReferenceOptions.SchemaImporterExtensions.Add( typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.WebReferenceOptions.SchemaImporterExtensions.Add( typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); importer.State.Add(typeof(XmlSerializerImportOptions), importOptions); }
private void AddStateForXmlSerializerImport(WsdlImporter importer) { var importOptions = new XmlSerializerImportOptions(_codeCompileUnit) { CodeProvider = _codeDomProvider, WebReferenceOptions = new WebReferenceOptions { CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions.GenerateOrder } }; importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); importOptions.WebReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); importer.State.Add(typeof(XmlSerializerImportOptions), importOptions); }
/// <summary> /// Builds a new instance. /// </summary> /// <param name="codeGeneratorContext">The code generator context.</param> /// <returns> /// A new <see cref="XmlSerializerImportOptions"/> instance. /// </returns> public XmlSerializerImportOptions Build(ICodeGeneratorContext codeGeneratorContext) { CodeGeneratorOptions codeGeneratorOptions = codeGeneratorContext.CodeGeneratorOptions; CodeDomProvider codeDomProvider = codeGeneratorContext.CodeDomProvider; CodeCompileUnit codeCompileUnit = codeGeneratorContext.CodeCompileUnit; WebReferenceOptions webReferenceOptions = new WebReferenceOptions { CodeGenerationOptions = CodeGenerationOptions.None }; if (codeGeneratorOptions.OrderMembers) { webReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.GenerateOrder; } if (codeGeneratorOptions.GenerateProperties) { webReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.GenerateProperties; } if (codeGeneratorOptions.EnableDataBinding) { webReferenceOptions.CodeGenerationOptions |= CodeGenerationOptions.EnableDataBinding; } string typedDataSetExtension = (codeGeneratorOptions.TargetFrameworkVersion == TargetFrameworkVersion.Version35) ? typeof(TypedDataSetSchemaImporterExtensionFx35).AssemblyQualifiedName : typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName; webReferenceOptions.SchemaImporterExtensions.Add(typedDataSetExtension); webReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); XmlSerializerImportOptions xmlSerializerImportOptions = new XmlSerializerImportOptions(codeCompileUnit) { WebReferenceOptions = webReferenceOptions, CodeProvider = codeDomProvider }; // TODO:Alex:Prevent the need to keep all types in the same namespaces for certain code decorators. string namespaceMapping; codeGeneratorOptions.NamespaceMappings.TryGetValue("*", out namespaceMapping); xmlSerializerImportOptions.ClrNamespace = namespaceMapping; return(xmlSerializerImportOptions); }
private static CodeNamespace GetTargetCodeNamespace(XmlSerializerImportOptions options) { CodeNamespace namespace2 = null; string name = options.ClrNamespace ?? string.Empty; foreach (CodeNamespace namespace3 in options.CodeCompileUnit.Namespaces) { if (namespace3.Name == name) { namespace2 = namespace3; } } if (namespace2 == null) { namespace2 = new CodeNamespace(name); options.CodeCompileUnit.Namespaces.Add(namespace2); } return(namespace2); }
static CodeNamespace GetTargetCodeNamespace(XmlSerializerImportOptions options) { CodeNamespace targetCodeNamespace = null; string clrNamespace = options.ClrNamespace ?? string.Empty; foreach (CodeNamespace ns in options.CodeCompileUnit.Namespaces) { if (ns.Name == clrNamespace) { targetCodeNamespace = ns; } } if (targetCodeNamespace == null) { targetCodeNamespace = new CodeNamespace(clrNamespace); options.CodeCompileUnit.Namespaces.Add(targetCodeNamespace); } return(targetCodeNamespace); }
public void Build_CodeGeneratorOptions_TargetFrameworkVersion() { CodeGeneratorOptions options = new CodeGeneratorOptions { TargetFrameworkVersion = TargetFrameworkVersion.Version35 }; XmlSerializerImportOptions importOptions = PerformBuild(options); string extensionAssemblyQualifiedName = typeof(TypedDataSetSchemaImporterExtensionFx35).AssemblyQualifiedName; Assert.That(importOptions.WebReferenceOptions.SchemaImporterExtensions, Has.Member(extensionAssemblyQualifiedName)); options = new CodeGeneratorOptions { TargetFrameworkVersion = TargetFrameworkVersion.Version30 }; importOptions = PerformBuild(options); extensionAssemblyQualifiedName = typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName; Assert.That(importOptions.WebReferenceOptions.SchemaImporterExtensions, Has.Member(extensionAssemblyQualifiedName)); }
private void AddStateForXmlSerializerImport(WsdlImporter importer) { webReferenceOptions.CodeGenerationOptions = CodeGenerationOptions.GenerateOrder | CodeGenerationOptions.GenerateNewAsync | CodeGenerationOptions.GenerateOldAsync | CodeGenerationOptions.EnableDataBinding | CodeGenerationOptions.GenerateProperties; webReferenceOptions.SchemaImporterExtensions.Add(typeof(TypedDataSetSchemaImporterExtension).AssemblyQualifiedName); webReferenceOptions.SchemaImporterExtensions.Add(typeof(DataSetSchemaImporterExtension).AssemblyQualifiedName); var importOptions = new XmlSerializerImportOptions(codeCompileUnit); importOptions.CodeProvider = codeDomProvider; importOptions.WebReferenceOptions = webReferenceOptions; if (Options.Namespaces.ContainsKey("*")) { importOptions.ClrNamespace = Options.Namespaces["*"]; } importer.State.Add(typeof(XmlSerializerImportOptions), importOptions); }
private void SyncUpCodeCompileUnit(Dictionary <object, object> state) { if (state == null) { return; } foreach (KeyValuePair <object, object> pair in state) { XsdDataContractImporter dcImporter = pair.Value as XsdDataContractImporter; if (dcImporter != null) { this.codeCompileUnit = dcImporter.CodeCompileUnit; return; } XmlSerializerImportOptions xmlImporter = pair.Value as XmlSerializerImportOptions; if (xmlImporter != null) { this.codeCompileUnit = xmlImporter.CodeCompileUnit; return; } } }
public string GenFromWsdl( string uri, bool createAsync, string targetNamespace, string outputFile, Boolean generateClient) { var pd = new prepareData(); var msg = checkAndPrepareData(uri, outputFile, targetNamespace, pd); if (!msg.IsNullOrWhiteSpace()) { return(msg); } MetadataSet mdSet = new MetadataSet(); mdSet.MetadataSections.Add(MetadataSection.CreateFromServiceDescription(WebDescription.ServiceDescription.Read(pd.MainTempFile))); foreach (var item in pd.Imperts) { using (var xr = XmlReader.Create(item)) mdSet.MetadataSections.Add(MetadataSection.CreateFromSchema(XmlSchema.Read(xr, null))); } WsdlImporter importer = new WsdlImporter(mdSet); var xsdDCImporter = new XsdDataContractImporter(); xsdDCImporter.Options = new ImportOptions(); xsdDCImporter.Options.Namespaces.Add("*", pd.TargetCSNamespace); importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter); var xmlOptions = new XmlSerializerImportOptions(); xmlOptions.ClrNamespace = pd.TargetCSNamespace; importer.State.Add(typeof(XmlSerializerImportOptions), xmlOptions); var generator = new ServiceContractGenerator(); generator.NamespaceMappings.Add("*", pd.TargetCSNamespace); //var options = ServiceContractGenerationOptions.TypedMessages; var options = ServiceContractGenerationOptions.None; if (generateClient) { options |= ServiceContractGenerationOptions.ClientClass; } if (createAsync) { options |= ServiceContractGenerationOptions.TaskBasedAsynchronousMethod; } generator.Options = options; foreach (var contract in importer.ImportAllContracts()) { generator.GenerateServiceContractType(contract); } if (generator.Errors.Count != 0) { return(generator.Errors.Select(x => x.Message).JoinValuesToString(separator: Environment.NewLine)); } StringBuilder sb = new StringBuilder(); using (var sw = new StringWriter(sb)) CodeDomProvider.CreateProvider("C#") .GenerateCodeFromCompileUnit( generator.TargetCompileUnit, new IndentedTextWriter(sw), new CodeGeneratorOptions() { BracingStyle = "C" }); File.WriteAllText(outputFile, sb.ToString()); return(null); }
public void Build_CodeGenerationOptions_DefaultsToNone() { XmlSerializerImportOptions importOptions = PerformBuild(new CodeGeneratorOptions()); Assert.That(importOptions.WebReferenceOptions.CodeGenerationOptions, Is.EqualTo(CodeGenerationOptions.None)); }