49 changed files with 1736 additions and 279 deletions
@ -0,0 +1,29 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ClientOptions |
||||||
|
{ |
||||||
|
public ClientOptions() |
||||||
|
{ |
||||||
|
EnableDataBinding = true; |
||||||
|
GenerateSerializableTypes = true; |
||||||
|
Serializer = "Auto"; |
||||||
|
UseSerializerForFaults = true; |
||||||
|
ReferenceAllAssemblies = true; |
||||||
|
} |
||||||
|
|
||||||
|
public bool GenerateAsynchronousMethods { get; set; } |
||||||
|
public bool EnableDataBinding { get; set; } |
||||||
|
public bool ImportXmlTypes { get; set; } |
||||||
|
public bool GenerateInternalTypes { get; set; } |
||||||
|
public bool GenerateMessageContracts { get; set; } |
||||||
|
public bool GenerateSerializableTypes { get; set; } |
||||||
|
public string Serializer { get; set; } |
||||||
|
public bool UseSerializerForFaults { get; set; } |
||||||
|
public bool ReferenceAllAssemblies { get; set; } |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface ICodeDomProvider |
||||||
|
{ |
||||||
|
string FileExtension { get; } |
||||||
|
|
||||||
|
void GenerateCodeFromCompileUnit(CodeCompileUnit compileUnit, string fileName); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,12 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IFileSystem |
||||||
|
{ |
||||||
|
void CreateDirectoryIfMissing(string path); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,19 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IProjectWithServiceReferences |
||||||
|
{ |
||||||
|
string ServiceReferencesFolder { get; } |
||||||
|
ICodeDomProvider CodeDomProvider { get; } |
||||||
|
|
||||||
|
ServiceReferenceFileName GetServiceReferenceFileName(string serviceReferenceName); |
||||||
|
ServiceReferenceMapFileName GetServiceReferenceMapFileName(string serviceReferenceName); |
||||||
|
void AddServiceReferenceProxyFile(ServiceReferenceFileName fileName); |
||||||
|
void AddServiceReferenceMapFile(ServiceReferenceMapFileName fileName); |
||||||
|
void Save(); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IServiceReferenceCodeDomBuilder |
||||||
|
{ |
||||||
|
CodeCompileUnit GenerateCompileUnit(MetadataSet metadata); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IServiceReferenceFileGenerator : IServiceReferenceProxyGenerator, IServiceReferenceMapGenerator |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,12 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IServiceReferenceMapGenerator |
||||||
|
{ |
||||||
|
void GenerateServiceReferenceMapFile(ServiceReferenceMapFile mapFile); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public interface IServiceReferenceProxyGenerator |
||||||
|
{ |
||||||
|
string ServiceReferenceNamespace { get; set; } |
||||||
|
|
||||||
|
void GenerateProxyFile(MetadataSet metadata, string proxyFileName); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class MetadataFile |
||||||
|
{ |
||||||
|
public MetadataFile() |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.Xml.Serialization; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class MetadataSource |
||||||
|
{ |
||||||
|
public MetadataSource() |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public MetadataSource(string url) |
||||||
|
{ |
||||||
|
Address = url; |
||||||
|
Protocol = "http"; |
||||||
|
} |
||||||
|
|
||||||
|
[XmlAttribute] |
||||||
|
public string Address { get; set; } |
||||||
|
|
||||||
|
[XmlAttribute] |
||||||
|
public string Protocol { get; set; } |
||||||
|
|
||||||
|
[XmlAttribute] |
||||||
|
public string SourceId { get; set; } |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,100 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom.Compiler; |
||||||
|
using System.IO; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ProjectWithServiceReferences : IProjectWithServiceReferences |
||||||
|
{ |
||||||
|
IProject project; |
||||||
|
string serviceReferencesFolder; |
||||||
|
|
||||||
|
public static readonly string DefaultServiceReferencesFolderName = "Service References"; |
||||||
|
|
||||||
|
public ProjectWithServiceReferences(IProject project) |
||||||
|
: this(project, new ServiceReferenceCodeDomProvider(project)) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ProjectWithServiceReferences(IProject project, ICodeDomProvider codeDomProvider) |
||||||
|
{ |
||||||
|
this.project = project; |
||||||
|
this.CodeDomProvider = codeDomProvider; |
||||||
|
} |
||||||
|
|
||||||
|
public string ServiceReferencesFolder { |
||||||
|
get { |
||||||
|
if (serviceReferencesFolder == null) { |
||||||
|
GetServiceReferencesFolder(); |
||||||
|
} |
||||||
|
return serviceReferencesFolder; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void GetServiceReferencesFolder() |
||||||
|
{ |
||||||
|
serviceReferencesFolder = Path.Combine(project.Directory, DefaultServiceReferencesFolderName); |
||||||
|
} |
||||||
|
|
||||||
|
public ICodeDomProvider CodeDomProvider { get; private set; } |
||||||
|
|
||||||
|
public ServiceReferenceFileName GetServiceReferenceFileName(string serviceReferenceName) |
||||||
|
{ |
||||||
|
return new ServiceReferenceFileName(ServiceReferencesFolder, serviceReferenceName); |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceMapFileName GetServiceReferenceMapFileName(string serviceReferenceName) |
||||||
|
{ |
||||||
|
return new ServiceReferenceMapFileName(ServiceReferencesFolder, serviceReferenceName); |
||||||
|
} |
||||||
|
|
||||||
|
public void AddServiceReferenceProxyFile(ServiceReferenceFileName fileName) |
||||||
|
{ |
||||||
|
AddServiceReferenceFileToProject(fileName); |
||||||
|
AddServiceReferencesItemToProject(); |
||||||
|
AddServiceReferenceItemToProject(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
void AddServiceReferenceFileToProject(ServiceReferenceFileName fileName) |
||||||
|
{ |
||||||
|
var projectItem = new FileProjectItem(project, ItemType.Compile); |
||||||
|
projectItem.FileName = fileName.Path; |
||||||
|
projectItem.DependentUpon = "Reference.svcmap"; |
||||||
|
AddProjectItemToProject(projectItem); |
||||||
|
} |
||||||
|
|
||||||
|
void AddProjectItemToProject(ProjectItem item) |
||||||
|
{ |
||||||
|
ProjectService.AddProjectItem(project, item); |
||||||
|
} |
||||||
|
|
||||||
|
void AddServiceReferencesItemToProject() |
||||||
|
{ |
||||||
|
var projectItem = new ServiceReferencesProjectItem(project); |
||||||
|
projectItem.Include = "Service References"; |
||||||
|
AddProjectItemToProject(projectItem); |
||||||
|
} |
||||||
|
|
||||||
|
void AddServiceReferenceItemToProject(ServiceReferenceFileName fileName) |
||||||
|
{ |
||||||
|
var projectItem = new ServiceReferenceProjectItem(project); |
||||||
|
projectItem.Include = @"Service References\" + fileName.ServiceName; |
||||||
|
AddProjectItemToProject(projectItem); |
||||||
|
} |
||||||
|
|
||||||
|
public void Save() |
||||||
|
{ |
||||||
|
project.Save(); |
||||||
|
} |
||||||
|
|
||||||
|
public void AddServiceReferenceMapFile(ServiceReferenceMapFileName fileName) |
||||||
|
{ |
||||||
|
var projectItem = new ServiceReferenceMapFileProjectItem(project, fileName.Path); |
||||||
|
AddProjectItemToProject(projectItem); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceCodeDomBuilder : IServiceReferenceCodeDomBuilder |
||||||
|
{ |
||||||
|
public CodeCompileUnit GenerateCompileUnit(MetadataSet metadata) |
||||||
|
{ |
||||||
|
var importer = new WsdlImporter(metadata); |
||||||
|
var contractGenerator = new ServiceContractGenerator(); |
||||||
|
contractGenerator.Options = ServiceContractGenerationOptions.ClientClass; |
||||||
|
|
||||||
|
foreach (ContractDescription contract in importer.ImportAllContracts()) { |
||||||
|
contractGenerator.GenerateServiceContractType(contract); |
||||||
|
} |
||||||
|
|
||||||
|
return contractGenerator.TargetCompileUnit; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
using System.CodeDom.Compiler; |
||||||
|
using System.IO; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceCodeDomProvider : ICodeDomProvider |
||||||
|
{ |
||||||
|
IProject project; |
||||||
|
CodeDomProvider codeDomProvider; |
||||||
|
|
||||||
|
public ServiceReferenceCodeDomProvider(IProject project) |
||||||
|
{ |
||||||
|
this.project = project; |
||||||
|
} |
||||||
|
|
||||||
|
public string FileExtension { |
||||||
|
get { return CodeDomProvider.FileExtension; } |
||||||
|
} |
||||||
|
|
||||||
|
CodeDomProvider CodeDomProvider { |
||||||
|
get { |
||||||
|
if (codeDomProvider == null) { |
||||||
|
codeDomProvider = project.LanguageProperties.CodeDomProvider; |
||||||
|
} |
||||||
|
return codeDomProvider; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public void GenerateCodeFromCompileUnit(CodeCompileUnit compileUnit, string fileName) |
||||||
|
{ |
||||||
|
using (var writer = new StreamWriter(fileName)) { |
||||||
|
CodeDomProvider.GenerateCodeFromCompileUnit(compileUnit, writer, null); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,44 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceFileGenerator : IServiceReferenceFileGenerator |
||||||
|
{ |
||||||
|
IServiceReferenceProxyGenerator proxyGenerator; |
||||||
|
IServiceReferenceMapGenerator mapGenerator; |
||||||
|
|
||||||
|
public ServiceReferenceFileGenerator(ICodeDomProvider codeDomProvider) |
||||||
|
: this( |
||||||
|
new ServiceReferenceProxyGenerator(codeDomProvider), |
||||||
|
new ServiceReferenceMapGenerator()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceFileGenerator( |
||||||
|
IServiceReferenceProxyGenerator proxyGenerator, |
||||||
|
IServiceReferenceMapGenerator mapGenerator) |
||||||
|
{ |
||||||
|
this.proxyGenerator = proxyGenerator; |
||||||
|
this.mapGenerator = mapGenerator; |
||||||
|
} |
||||||
|
|
||||||
|
public string ServiceReferenceNamespace { |
||||||
|
get { return proxyGenerator.ServiceReferenceNamespace; } |
||||||
|
set { proxyGenerator.ServiceReferenceNamespace = value; } |
||||||
|
} |
||||||
|
|
||||||
|
public void GenerateProxyFile(MetadataSet metadata, string proxyFileName) |
||||||
|
{ |
||||||
|
proxyGenerator.GenerateProxyFile(metadata, proxyFileName); |
||||||
|
} |
||||||
|
|
||||||
|
public void GenerateServiceReferenceMapFile(ServiceReferenceMapFile mapFile) |
||||||
|
{ |
||||||
|
mapGenerator.GenerateServiceReferenceMapFile(mapFile); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,52 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using IO = System.IO; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceFileName |
||||||
|
{ |
||||||
|
string serviceReferencesFolder; |
||||||
|
string serviceName; |
||||||
|
string path; |
||||||
|
|
||||||
|
public ServiceReferenceFileName() |
||||||
|
: this(String.Empty, String.Empty) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceFileName( |
||||||
|
string serviceReferencesFolder, |
||||||
|
string serviceName) |
||||||
|
{ |
||||||
|
this.serviceReferencesFolder = serviceReferencesFolder; |
||||||
|
this.serviceName = serviceName; |
||||||
|
} |
||||||
|
|
||||||
|
public string Path { |
||||||
|
get { |
||||||
|
if (path == null) { |
||||||
|
GetPath(); |
||||||
|
} |
||||||
|
return path; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void GetPath() |
||||||
|
{ |
||||||
|
path = IO.Path.Combine(serviceReferencesFolder, serviceName, "Reference.cs"); |
||||||
|
} |
||||||
|
|
||||||
|
public string ServiceName { |
||||||
|
get { return serviceName; } |
||||||
|
set { serviceName = value; } |
||||||
|
} |
||||||
|
|
||||||
|
public string ServiceReferencesFolder { |
||||||
|
get { return serviceReferencesFolder; } |
||||||
|
set { serviceReferencesFolder = value; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,18 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.IO; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceFileSystem : IFileSystem |
||||||
|
{ |
||||||
|
public void CreateDirectoryIfMissing(string path) |
||||||
|
{ |
||||||
|
if (!Directory.Exists(path)) { |
||||||
|
Directory.CreateDirectory(path); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,71 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.IO; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceGenerator |
||||||
|
{ |
||||||
|
IProjectWithServiceReferences project; |
||||||
|
IServiceReferenceFileGenerator fileGenerator; |
||||||
|
IFileSystem fileSystem; |
||||||
|
|
||||||
|
public ServiceReferenceGenerator(IProject project) |
||||||
|
: this(new ProjectWithServiceReferences(project)) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceGenerator(IProjectWithServiceReferences project) |
||||||
|
: this( |
||||||
|
project, |
||||||
|
new ServiceReferenceFileGenerator(project.CodeDomProvider), |
||||||
|
new ServiceReferenceFileSystem()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceGenerator( |
||||||
|
IProjectWithServiceReferences project, |
||||||
|
IServiceReferenceFileGenerator fileGenerator, |
||||||
|
IFileSystem fileSystem) |
||||||
|
{ |
||||||
|
this.project = project; |
||||||
|
this.fileGenerator = fileGenerator; |
||||||
|
this.fileSystem = fileSystem; |
||||||
|
} |
||||||
|
|
||||||
|
public string Namespace { get; set; } |
||||||
|
|
||||||
|
public void AddServiceReference(MetadataSet metadata) |
||||||
|
{ |
||||||
|
GenerateServiceReferenceProxy(metadata); |
||||||
|
} |
||||||
|
|
||||||
|
void GenerateServiceReferenceProxy(MetadataSet metadata) |
||||||
|
{ |
||||||
|
ServiceReferenceFileName referenceFileName = project.GetServiceReferenceFileName(Namespace); |
||||||
|
CreateFolderForFileIfFolderMissing(referenceFileName.Path); |
||||||
|
|
||||||
|
fileGenerator.GenerateProxyFile(metadata, referenceFileName.Path); |
||||||
|
|
||||||
|
ServiceReferenceMapFileName mapFileName = project.GetServiceReferenceMapFileName(Namespace); |
||||||
|
var mapFile = new ServiceReferenceMapFile(mapFileName); |
||||||
|
fileGenerator.GenerateServiceReferenceMapFile(mapFile); |
||||||
|
|
||||||
|
project.AddServiceReferenceProxyFile(referenceFileName); |
||||||
|
project.AddServiceReferenceMapFile(mapFileName); |
||||||
|
|
||||||
|
project.Save(); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateFolderForFileIfFolderMissing(string fileName) |
||||||
|
{ |
||||||
|
string folder = Path.GetDirectoryName(fileName); |
||||||
|
fileSystem.CreateDirectoryIfMissing(folder); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,71 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Xml.Serialization; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
[XmlRoot(ElementName = "ReferenceGroup", Namespace = "urn:schemas-microsoft-com:xml-wcfservicemap")] |
||||||
|
public class ServiceReferenceMapFile |
||||||
|
{ |
||||||
|
ClientOptions clientOptions = new ClientOptions(); |
||||||
|
List<MetadataSource> metadataSources = new List<MetadataSource>(); |
||||||
|
List<MetadataFile> metadata = new List<MetadataFile>(); |
||||||
|
|
||||||
|
public ServiceReferenceMapFile() |
||||||
|
{ |
||||||
|
ID = Guid.NewGuid().ToString(); |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceMapFile(ServiceReferenceMapFileName fileName) |
||||||
|
: this() |
||||||
|
{ |
||||||
|
FileName = fileName.Path; |
||||||
|
} |
||||||
|
|
||||||
|
public override bool Equals(object obj) |
||||||
|
{ |
||||||
|
var rhs = obj as ServiceReferenceMapFile; |
||||||
|
return FileName == rhs.FileName; |
||||||
|
} |
||||||
|
|
||||||
|
public override int GetHashCode() |
||||||
|
{ |
||||||
|
return base.GetHashCode(); |
||||||
|
} |
||||||
|
|
||||||
|
public static ServiceReferenceMapFile CreateMapFileWithUrl(string url) |
||||||
|
{ |
||||||
|
var mapFile = new ServiceReferenceMapFile(); |
||||||
|
mapFile.AddMetadataSourceForUrl(url); |
||||||
|
return mapFile; |
||||||
|
} |
||||||
|
|
||||||
|
public void AddMetadataSourceForUrl(string url) |
||||||
|
{ |
||||||
|
var metadataSource = new MetadataSource(url) { SourceId = "1" }; |
||||||
|
metadataSources.Add(metadataSource); |
||||||
|
} |
||||||
|
|
||||||
|
[XmlIgnoreAttribute] |
||||||
|
public string FileName { get; set; } |
||||||
|
|
||||||
|
[XmlAttribute] |
||||||
|
public string ID { get; set; } |
||||||
|
|
||||||
|
public ClientOptions ClientOptions { |
||||||
|
get { return clientOptions; } |
||||||
|
set { clientOptions = value; } |
||||||
|
} |
||||||
|
|
||||||
|
public List<MetadataSource> MetadataSources { |
||||||
|
get { return metadataSources; } |
||||||
|
} |
||||||
|
|
||||||
|
public List<MetadataFile> Metadata { |
||||||
|
get { return metadata; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,22 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using IO = System.IO; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceMapFileName |
||||||
|
{ |
||||||
|
string path; |
||||||
|
|
||||||
|
public ServiceReferenceMapFileName(string serviceReferencesFolder, string serviceName) |
||||||
|
{ |
||||||
|
path = IO.Path.Combine(serviceReferencesFolder, serviceName, "Reference.svcmap"); |
||||||
|
} |
||||||
|
|
||||||
|
public string Path { |
||||||
|
get { return path; } |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceMapFileProjectItem : FileProjectItem |
||||||
|
{ |
||||||
|
public ServiceReferenceMapFileProjectItem( |
||||||
|
IProject project, |
||||||
|
string fileName) |
||||||
|
: base(project, ItemType.None) |
||||||
|
{ |
||||||
|
this.FileName = fileName; |
||||||
|
AddMetadata(); |
||||||
|
} |
||||||
|
|
||||||
|
void AddMetadata() |
||||||
|
{ |
||||||
|
SetMetadata("LastGenOutput", "Reference.cs"); |
||||||
|
SetMetadata("Generator", "WCF Proxy Generator"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,24 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.IO; |
||||||
|
using System.Xml.Serialization; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceMapGenerator : IServiceReferenceMapGenerator |
||||||
|
{ |
||||||
|
public void GenerateServiceReferenceMapFile(ServiceReferenceMapFile mapFile) |
||||||
|
{ |
||||||
|
var writer = new StreamWriter(mapFile.FileName); |
||||||
|
GenerateServiceReferenceMapFile(writer, mapFile); |
||||||
|
} |
||||||
|
|
||||||
|
public void GenerateServiceReferenceMapFile(TextWriter textWriter, ServiceReferenceMapFile mapFile) |
||||||
|
{ |
||||||
|
var serializer = new XmlSerializer(typeof(ServiceReferenceMapFile)); |
||||||
|
serializer.Serialize(textWriter, mapFile); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
using System.IO; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class ServiceReferenceProxyGenerator : IServiceReferenceProxyGenerator |
||||||
|
{ |
||||||
|
IServiceReferenceCodeDomBuilder codeDomBuilder; |
||||||
|
ICodeDomProvider codeDomProvider; |
||||||
|
|
||||||
|
public ServiceReferenceProxyGenerator(ICodeDomProvider codeDomProvider) |
||||||
|
: this(codeDomProvider, new ServiceReferenceCodeDomBuilder()) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
public ServiceReferenceProxyGenerator( |
||||||
|
ICodeDomProvider codeDomProvider, |
||||||
|
IServiceReferenceCodeDomBuilder codeDomBuilder) |
||||||
|
{ |
||||||
|
this.codeDomProvider = codeDomProvider; |
||||||
|
this.codeDomBuilder = codeDomBuilder; |
||||||
|
} |
||||||
|
|
||||||
|
public string ServiceReferenceNamespace { get; set; } |
||||||
|
|
||||||
|
public void GenerateProxyFile(MetadataSet metadata, string proxyFileName) |
||||||
|
{ |
||||||
|
CodeCompileUnit compileUnit = codeDomBuilder.GenerateCompileUnit(metadata); |
||||||
|
GenerateProxy(compileUnit, proxyFileName); |
||||||
|
} |
||||||
|
|
||||||
|
void GenerateProxy(CodeCompileUnit compileUnit, string fileName) |
||||||
|
{ |
||||||
|
codeDomProvider.GenerateCodeFromCompileUnit(compileUnit, fileName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
using System.Xml.Schema; |
||||||
|
|
||||||
|
using WSDescription = System.Web.Services.Description; |
||||||
|
using WSDiscovery = System.Web.Services.Discovery; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference |
||||||
|
{ |
||||||
|
public class WebServiceMetadataSet : MetadataSet |
||||||
|
{ |
||||||
|
public static readonly string EmptyMetadataIdentifier = String.Empty; |
||||||
|
|
||||||
|
public WebServiceMetadataSet(WSDiscovery.DiscoveryClientProtocol discoveryClient) |
||||||
|
{ |
||||||
|
AddToMetadata(discoveryClient.Documents); |
||||||
|
} |
||||||
|
|
||||||
|
void AddToMetadata(WSDiscovery.DiscoveryClientDocumentCollection documents) |
||||||
|
{ |
||||||
|
foreach (object document in documents.Values) { |
||||||
|
AddToMetadataIfNotNull(document as WSDescription.ServiceDescription); |
||||||
|
AddToMetadataIfNotNull(document as XmlSchema); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void AddToMetadataIfNotNull(WSDescription.ServiceDescription serviceDescription) |
||||||
|
{ |
||||||
|
if (serviceDescription != null) { |
||||||
|
AddMetadataSection(MetadataSection.ServiceDescriptionDialect, serviceDescription); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void AddMetadataSection(string dialect, object metadata) |
||||||
|
{ |
||||||
|
var metadataSection = new MetadataSection(dialect, EmptyMetadataIdentifier, metadata); |
||||||
|
MetadataSections.Add(metadataSection); |
||||||
|
} |
||||||
|
|
||||||
|
void AddToMetadataIfNotNull(XmlSchema schema) |
||||||
|
{ |
||||||
|
if (schema != null) { |
||||||
|
AddMetadataSection(MetadataSection.XmlSchemaDialect, schema); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Project |
||||||
|
{ |
||||||
|
public class ServiceReferenceProjectItem : ProjectItem |
||||||
|
{ |
||||||
|
public ServiceReferenceProjectItem(IProject project) |
||||||
|
: base(project, ItemType.ServiceReference) |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
internal ServiceReferenceProjectItem(IProject project, IProjectItemBackendStore buildItem) |
||||||
|
: base(project, buildItem) |
||||||
|
{ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,192 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom.Compiler; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.IO; |
||||||
|
using System.Linq; |
||||||
|
using ICSharpCode.SharpDevelop.Dom; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using ICSharpCode.SharpDevelop.Tests.WebReferences; |
||||||
|
using Microsoft.CSharp; |
||||||
|
using NUnit.Framework; |
||||||
|
using Rhino.Mocks; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ProjectWithServiceReferencesTests |
||||||
|
{ |
||||||
|
IProject fakeProject; |
||||||
|
ProjectWithServiceReferences project; |
||||||
|
List<ProjectItem> projectItemsAddedToProject; |
||||||
|
MSBuildBasedProject msbuildProject; |
||||||
|
|
||||||
|
void CreateProject() |
||||||
|
{ |
||||||
|
projectItemsAddedToProject = new List<ProjectItem>(); |
||||||
|
fakeProject = MockRepository.GenerateStub<IProject>(); |
||||||
|
project = new ProjectWithServiceReferences(fakeProject); |
||||||
|
} |
||||||
|
|
||||||
|
void CreateProjectWithMSBuildProject() |
||||||
|
{ |
||||||
|
msbuildProject = WebReferenceTestHelper.CreateTestProject("C#"); |
||||||
|
project = new ProjectWithServiceReferences(msbuildProject); |
||||||
|
} |
||||||
|
|
||||||
|
void SetProjectDirectory(string directory) |
||||||
|
{ |
||||||
|
fakeProject.Stub(p => p.Directory).Return(directory); |
||||||
|
} |
||||||
|
|
||||||
|
void SetProjectCodeDomProvider(LanguageProperties languageProperties) |
||||||
|
{ |
||||||
|
fakeProject.Stub(p => p.LanguageProperties).Return(languageProperties); |
||||||
|
} |
||||||
|
|
||||||
|
ProjectItem GetFirstServiceReferenceFileInMSBuildProject(ServiceReferenceFileName fileName) |
||||||
|
{ |
||||||
|
return msbuildProject.Items.SingleOrDefault(item => item.FileName == fileName.Path); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferencesProjectItem GetFirstWCFMetadataItemInMSBuildProject() |
||||||
|
{ |
||||||
|
return msbuildProject.GetItemsOfType(ItemType.ServiceReferences).SingleOrDefault() as ServiceReferencesProjectItem; |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceProjectItem GetFirstWCFMetadataStorageItemInMSBuildProject() |
||||||
|
{ |
||||||
|
return msbuildProject.GetItemsOfType(ItemType.ServiceReference).SingleOrDefault() as ServiceReferenceProjectItem; |
||||||
|
} |
||||||
|
|
||||||
|
FileProjectItem GetFileFromMSBuildProject(string fileName) |
||||||
|
{ |
||||||
|
return msbuildProject.Items.Single(item => item.FileName == fileName) as FileProjectItem; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void ServiceReferencesFolder_ProjectHasNoServiceReferences_ReturnsServiceReferencesFolderAsProjectSubFolder() |
||||||
|
{ |
||||||
|
CreateProject(); |
||||||
|
SetProjectDirectory(@"d:\projects\MyProject"); |
||||||
|
|
||||||
|
string folder = project.ServiceReferencesFolder; |
||||||
|
string expectedFolder = @"d:\projects\MyProject\Service References"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedFolder, folder); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void CodeDomProvider_UnderlyingProjectUsesCSharpCodeDomProvider_ProjectUsesCSharpCodeDomProvider() |
||||||
|
{ |
||||||
|
CreateProject(); |
||||||
|
SetProjectCodeDomProvider(LanguageProperties.CSharp); |
||||||
|
|
||||||
|
ICodeDomProvider codeDomProvider = project.CodeDomProvider; |
||||||
|
string fileExtension = codeDomProvider.FileExtension; |
||||||
|
|
||||||
|
Assert.AreEqual("cs", fileExtension); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GetServiceReferenceProxyFileName_ProjectHasNoServiceReferences_ReturnsFileNameInServiceReferencesFolderWithSubFolderNamedAfterServiceReference() |
||||||
|
{ |
||||||
|
CreateProject(); |
||||||
|
SetProjectDirectory(@"d:\projects\MyProject"); |
||||||
|
|
||||||
|
ServiceReferenceFileName fileName = project.GetServiceReferenceFileName("Service1"); |
||||||
|
string expectedFileName = @"d:\projects\MyProject\Service References\Service1\Reference.cs"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedFileName, fileName.Path); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_ProxyFileAddedToProjectAsFileToCompile() |
||||||
|
{ |
||||||
|
CreateProjectWithMSBuildProject(); |
||||||
|
|
||||||
|
var proxyFileName = new ServiceReferenceFileName() { |
||||||
|
ServiceReferencesFolder = @"d:\projects\MyProject\Service References", |
||||||
|
ServiceName = "Service1" |
||||||
|
}; |
||||||
|
project.AddServiceReferenceProxyFile(proxyFileName); |
||||||
|
|
||||||
|
ProjectItem item = GetFirstServiceReferenceFileInMSBuildProject(proxyFileName); |
||||||
|
|
||||||
|
string dependentUpon = item.GetMetadata("DependentUpon"); |
||||||
|
|
||||||
|
Assert.AreEqual(ItemType.Compile, item.ItemType); |
||||||
|
Assert.AreEqual("Reference.svcmap", dependentUpon); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Save_SaveProjectChanges_UnderlyingProjectIsSaved() |
||||||
|
{ |
||||||
|
CreateProject(); |
||||||
|
|
||||||
|
project.Save(); |
||||||
|
|
||||||
|
fakeProject.AssertWasCalled(p => p.Save()); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_WCFMetadataItemAddedToProjectForServiceReferencesFolder() |
||||||
|
{ |
||||||
|
CreateProjectWithMSBuildProject(); |
||||||
|
|
||||||
|
var proxyFileName = new ServiceReferenceFileName() { ServiceName = "Service1" }; |
||||||
|
project.AddServiceReferenceProxyFile(proxyFileName); |
||||||
|
|
||||||
|
ServiceReferencesProjectItem item = GetFirstWCFMetadataItemInMSBuildProject(); |
||||||
|
|
||||||
|
Assert.AreEqual("Service References", item.Include); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReferenceProxyFile_ProjectHasNoServiceReferences_WCFMetadataStorageItemAddedToProjectForServiceReferencesFolder() |
||||||
|
{ |
||||||
|
CreateProjectWithMSBuildProject(); |
||||||
|
|
||||||
|
var proxyFileName = new ServiceReferenceFileName() { ServiceName = "Service1" }; |
||||||
|
project.AddServiceReferenceProxyFile(proxyFileName); |
||||||
|
|
||||||
|
ProjectItem item = GetFirstWCFMetadataStorageItemInMSBuildProject(); |
||||||
|
|
||||||
|
Assert.AreEqual(@"Service References\Service1", item.Include); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GetServiceReferenceMapFileName_ProjectHasNoServiceReferences_ReturnsMapFileNameInServiceReferencesFolderWithSubFolderNamedAfterServiceReference() |
||||||
|
{ |
||||||
|
CreateProject(); |
||||||
|
SetProjectDirectory(@"d:\projects\MyProject"); |
||||||
|
|
||||||
|
ServiceReferenceMapFileName fileName = project.GetServiceReferenceMapFileName("Service1"); |
||||||
|
string expectedFileName = @"d:\projects\MyProject\Service References\Service1\Reference.svcmap"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedFileName, fileName.Path); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReferenceMapFile_ProjectHasNoServiceReferences_ServiceReferenceMapAddedToProject() |
||||||
|
{ |
||||||
|
CreateProjectWithMSBuildProject(); |
||||||
|
|
||||||
|
var mapFileName = new ServiceReferenceMapFileName(@"d:\projects\MyProject\Service References", "Service1"); |
||||||
|
project.AddServiceReferenceMapFile(mapFileName); |
||||||
|
|
||||||
|
string fileName = @"d:\projects\MyProject\Service References\Service1\Reference.svcmap"; |
||||||
|
FileProjectItem item = GetFileFromMSBuildProject(fileName); |
||||||
|
|
||||||
|
string lastGenOutput = item.GetMetadata("LastGenOutput"); |
||||||
|
string generator = item.GetMetadata("Generator"); |
||||||
|
|
||||||
|
Assert.AreEqual(ItemType.None, item.ItemType); |
||||||
|
Assert.AreEqual("Reference.cs", lastGenOutput); |
||||||
|
Assert.AreEqual("WCF Proxy Generator", generator); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,42 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ServiceReferenceFileNameTests |
||||||
|
{ |
||||||
|
ServiceReferenceFileName fileName; |
||||||
|
|
||||||
|
void CreateServiceReferenceFileName(string serviceReferencesFolder, string serviceName) |
||||||
|
{ |
||||||
|
fileName = new ServiceReferenceFileName(serviceReferencesFolder, serviceName); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Path_NewInstanceCreated_ReturnsFullPathToFile() |
||||||
|
{ |
||||||
|
CreateServiceReferenceFileName(@"d:\projects\MyProject\Service References", "MyService"); |
||||||
|
|
||||||
|
string path = fileName.Path; |
||||||
|
|
||||||
|
string expectedPath = @"d:\projects\MyProject\Service References\MyService\Reference.cs"; |
||||||
|
|
||||||
|
Assert.AreEqual(expectedPath, path); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void ServiceName_NewInstanceCreated_ReturnsFullPathToFile() |
||||||
|
{ |
||||||
|
CreateServiceReferenceFileName(@"d:\projects\MyProject\Service References", "MyService"); |
||||||
|
|
||||||
|
string serviceName = fileName.ServiceName; |
||||||
|
|
||||||
|
Assert.AreEqual("MyService", serviceName); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,163 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using NUnit.Framework; |
||||||
|
using Rhino.Mocks; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ServiceReferenceGeneratorTests |
||||||
|
{ |
||||||
|
IProjectWithServiceReferences fakeProject; |
||||||
|
IServiceReferenceProxyGenerator fakeProxyGenerator; |
||||||
|
IServiceReferenceMapGenerator fakeReferenceMapGenerator; |
||||||
|
ServiceReferenceGenerator generator; |
||||||
|
ServiceReferenceFileGenerator fileGenerator; |
||||||
|
IFileSystem fakeFileSystem; |
||||||
|
MetadataSet metadata; |
||||||
|
|
||||||
|
void CreateGenerator() |
||||||
|
{ |
||||||
|
metadata = new MetadataSet(); |
||||||
|
|
||||||
|
fakeProject = MockRepository.GenerateStub<IProjectWithServiceReferences>(); |
||||||
|
fakeProxyGenerator = MockRepository.GenerateStub<IServiceReferenceProxyGenerator>(); |
||||||
|
fakeReferenceMapGenerator = MockRepository.GenerateStub<IServiceReferenceMapGenerator>(); |
||||||
|
fileGenerator = new ServiceReferenceFileGenerator(fakeProxyGenerator, fakeReferenceMapGenerator); |
||||||
|
fakeFileSystem = MockRepository.GenerateStub<IFileSystem>(); |
||||||
|
|
||||||
|
generator = new ServiceReferenceGenerator(fakeProject, fileGenerator, fakeFileSystem); |
||||||
|
} |
||||||
|
|
||||||
|
void SetServiceReferenceFileName(string serviceReferenceName, ServiceReferenceFileName fileName) |
||||||
|
{ |
||||||
|
fakeProject.Stub(p => p.GetServiceReferenceFileName(serviceReferenceName)).Return(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceFileName CreateProxyFileName(string serviceReferencesFolder, string serviceName) |
||||||
|
{ |
||||||
|
return new ServiceReferenceFileName(serviceReferencesFolder, serviceName); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceFileName AddProxyFileNameForServiceName(string serviceName) |
||||||
|
{ |
||||||
|
return AddProxyFileNameForServiceName(@"d:\projects\MyProject\Service References", serviceName); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceFileName AddProxyFileNameForServiceName(string serviceReferencesFolder, string serviceName) |
||||||
|
{ |
||||||
|
ServiceReferenceFileName proxyFileName = CreateProxyFileName(serviceReferencesFolder, serviceName); |
||||||
|
SetServiceReferenceFileName(serviceName, proxyFileName); |
||||||
|
return proxyFileName; |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceMapFileName AddMapFileNameForServiceName(string serviceName) |
||||||
|
{ |
||||||
|
return AddMapFileNameForServiceName(@"d:\projects\MyProject\Service References", serviceName); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceMapFileName AddMapFileNameForServiceName(string serviceReferencesFolder, string serviceName) |
||||||
|
{ |
||||||
|
var fileName = new ServiceReferenceMapFileName(serviceReferencesFolder, serviceName); |
||||||
|
SetServiceReferenceMapFileName(serviceName, fileName); |
||||||
|
return fileName; |
||||||
|
} |
||||||
|
|
||||||
|
void SetServiceReferenceMapFileName(string serviceName, ServiceReferenceMapFileName fileName) |
||||||
|
{ |
||||||
|
fakeProject.Stub(p => p.GetServiceReferenceMapFileName(serviceName)).Return(fileName); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_GeneratesServiceReference_MetadataPassedToProxyGenerator() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
AddProxyFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyServiceRef"); |
||||||
|
AddMapFileNameForServiceName("MyServiceRef"); |
||||||
|
generator.Namespace = "MyServiceRef"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
string expectedProxyFileName = @"d:\projects\MyProject\Service References\MyServiceRef\Reference.cs"; |
||||||
|
|
||||||
|
fakeProxyGenerator.AssertWasCalled(p => p.GenerateProxyFile(metadata, expectedProxyFileName)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_ServiceReferenceDoesNotExist_ServiceReferenceFolderCreated() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
AddProxyFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyService1"); |
||||||
|
AddMapFileNameForServiceName("MyService1"); |
||||||
|
generator.Namespace = "MyService1"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
|
||||||
|
string expectedDirectory = @"d:\projects\MyProject\Service References\MyService1"; |
||||||
|
|
||||||
|
fakeFileSystem.AssertWasCalled(f => f.CreateDirectoryIfMissing(expectedDirectory)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_GeneratesServiceReference_ServiceReferenceProxyFileAddedToProject() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
ServiceReferenceFileName expectedProxyFileName = |
||||||
|
AddProxyFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyServiceRef"); |
||||||
|
AddMapFileNameForServiceName("MyServiceRef"); |
||||||
|
generator.Namespace = "MyServiceRef"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
|
||||||
|
fakeProject.AssertWasCalled(p => p.AddServiceReferenceProxyFile(expectedProxyFileName)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_GeneratesServiceReference_ProjectIsSaved() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
AddProxyFileNameForServiceName("MyServiceRef"); |
||||||
|
AddMapFileNameForServiceName("MyServiceRef"); |
||||||
|
generator.Namespace = "MyServiceRef"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
|
||||||
|
fakeProject.AssertWasCalled(p => p.Save()); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_GeneratesServiceReference_ReferenceServiceMapFileIsCreated() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
AddProxyFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyServiceRef"); |
||||||
|
AddMapFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyServiceRef"); |
||||||
|
generator.Namespace = "MyServiceRef"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
|
||||||
|
var expectedMapFile = new ServiceReferenceMapFile() { |
||||||
|
FileName = @"d:\projects\MyProject\Service References\MyServiceRef\Reference.svcmap" |
||||||
|
}; |
||||||
|
|
||||||
|
fakeReferenceMapGenerator.AssertWasCalled(gen => gen.GenerateServiceReferenceMapFile(expectedMapFile)); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void AddServiceReference_GeneratesServiceReference_ReferenceServiceMapFileIsAddedToProject() |
||||||
|
{ |
||||||
|
CreateGenerator(); |
||||||
|
AddProxyFileNameForServiceName("MyServiceRef"); |
||||||
|
ServiceReferenceMapFileName expectedMapFileName = |
||||||
|
AddMapFileNameForServiceName(@"d:\projects\MyProject\Service References", "MyServiceRef"); |
||||||
|
generator.Namespace = "MyServiceRef"; |
||||||
|
|
||||||
|
generator.AddServiceReference(metadata); |
||||||
|
|
||||||
|
fakeProject.AssertWasCalled(p => p.AddServiceReferenceMapFile(expectedMapFileName)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,69 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.IO; |
||||||
|
using System.Text; |
||||||
|
|
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ServiceReferenceMapFileGeneratorTests |
||||||
|
{ |
||||||
|
ServiceReferenceMapGenerator generator; |
||||||
|
|
||||||
|
void CreateFileGenerator() |
||||||
|
{ |
||||||
|
generator = new ServiceReferenceMapGenerator(); |
||||||
|
} |
||||||
|
|
||||||
|
string GenerateMapFile(ServiceReferenceMapFile mapFile) |
||||||
|
{ |
||||||
|
var output = new StringBuilder(); |
||||||
|
var writer = new StringWriter(output); |
||||||
|
|
||||||
|
generator.GenerateServiceReferenceMapFile(writer, mapFile); |
||||||
|
|
||||||
|
return output.ToString(); |
||||||
|
} |
||||||
|
|
||||||
|
ServiceReferenceMapFile CreateServiceReferenceMapFileWithUrl(string url) |
||||||
|
{ |
||||||
|
return ServiceReferenceMapFile.CreateMapFileWithUrl(url); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GenerateServiceReferenceMapFile_MapFileWrittenToStringWriter_SerialisesReferenceGroup() |
||||||
|
{ |
||||||
|
CreateFileGenerator(); |
||||||
|
ServiceReferenceMapFile mapFile = CreateServiceReferenceMapFileWithUrl("http://localhost/MyService1.svc"); |
||||||
|
mapFile.ID = "a606bbd6-26e5-4025-a25e-b8c262422f2a"; |
||||||
|
string output = GenerateMapFile(mapFile); |
||||||
|
|
||||||
|
string expectedOutput = |
||||||
|
@"<?xml version=""1.0"" encoding=""utf-16""?>
|
||||||
|
<ReferenceGroup xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" ID=""a606bbd6-26e5-4025-a25e-b8c262422f2a"" xmlns=""urn:schemas-microsoft-com:xml-wcfservicemap"">
|
||||||
|
<ClientOptions> |
||||||
|
<GenerateAsynchronousMethods>false</GenerateAsynchronousMethods> |
||||||
|
<EnableDataBinding>true</EnableDataBinding> |
||||||
|
<ImportXmlTypes>false</ImportXmlTypes> |
||||||
|
<GenerateInternalTypes>false</GenerateInternalTypes> |
||||||
|
<GenerateMessageContracts>false</GenerateMessageContracts> |
||||||
|
<GenerateSerializableTypes>true</GenerateSerializableTypes> |
||||||
|
<Serializer>Auto</Serializer> |
||||||
|
<UseSerializerForFaults>true</UseSerializerForFaults> |
||||||
|
<ReferenceAllAssemblies>true</ReferenceAllAssemblies> |
||||||
|
</ClientOptions> |
||||||
|
<MetadataSources> |
||||||
|
<MetadataSource Address=""http://localhost/MyService1.svc"" Protocol=""http"" SourceId=""1"" />
|
||||||
|
</MetadataSources> |
||||||
|
<Metadata /> |
||||||
|
</ReferenceGroup>";
|
||||||
|
|
||||||
|
Assert.AreEqual(expectedOutput, output); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,57 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using NUnit.Framework; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ServiceReferenceMapFileTests |
||||||
|
{ |
||||||
|
ServiceReferenceMapFile lhs; |
||||||
|
ServiceReferenceMapFile rhs; |
||||||
|
|
||||||
|
void CreateMapFilesToCompare() |
||||||
|
{ |
||||||
|
lhs = new ServiceReferenceMapFile(); |
||||||
|
rhs = new ServiceReferenceMapFile(); |
||||||
|
} |
||||||
|
|
||||||
|
void AssertFilesAreEqual() |
||||||
|
{ |
||||||
|
bool result = AreFilesEqual(); |
||||||
|
Assert.IsTrue(result); |
||||||
|
} |
||||||
|
|
||||||
|
bool AreFilesEqual() |
||||||
|
{ |
||||||
|
return lhs.Equals(rhs); |
||||||
|
} |
||||||
|
|
||||||
|
void AssertFilesAreNotEqual() |
||||||
|
{ |
||||||
|
bool result = AreFilesEqual(); |
||||||
|
Assert.IsFalse(result); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Equals_FilesAreSame_ReturnsTrue() |
||||||
|
{ |
||||||
|
CreateMapFilesToCompare(); |
||||||
|
|
||||||
|
AssertFilesAreEqual(); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Equals_FilesHaveDifferentFileNames_ReturnsFalse() |
||||||
|
{ |
||||||
|
CreateMapFilesToCompare(); |
||||||
|
lhs.FileName = "a"; |
||||||
|
rhs.FileName = "b"; |
||||||
|
|
||||||
|
AssertFilesAreNotEqual(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,52 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.CodeDom; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using NUnit.Framework; |
||||||
|
using Rhino.Mocks; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class ServiceReferenceProxyGeneratorTests |
||||||
|
{ |
||||||
|
ServiceReferenceProxyGenerator proxyGenerator; |
||||||
|
IProjectWithServiceReferences fakeProject; |
||||||
|
IServiceReferenceCodeDomBuilder fakeCodeDomBuilder; |
||||||
|
ICodeDomProvider fakeCodeDomProvider; |
||||||
|
MetadataSet metadata; |
||||||
|
|
||||||
|
void CreateProxyGenerator() |
||||||
|
{ |
||||||
|
metadata = new MetadataSet(); |
||||||
|
|
||||||
|
fakeCodeDomBuilder = MockRepository.GenerateStub<IServiceReferenceCodeDomBuilder>(); |
||||||
|
fakeProject = MockRepository.GenerateStub<IProjectWithServiceReferences>(); |
||||||
|
fakeCodeDomProvider = MockRepository.GenerateStub<ICodeDomProvider>(); |
||||||
|
proxyGenerator = new ServiceReferenceProxyGenerator(fakeCodeDomProvider, fakeCodeDomBuilder); |
||||||
|
} |
||||||
|
|
||||||
|
CodeCompileUnit CreateCompileUnitToReturnFromCodeDomBuilder(MetadataSet metadata) |
||||||
|
{ |
||||||
|
var compileUnit = new CodeCompileUnit(); |
||||||
|
fakeCodeDomBuilder.Stub(c => c.GenerateCompileUnit(metadata)).Return(compileUnit); |
||||||
|
return compileUnit; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void GenerateProxyFile_ProxyToBeGeneratedForMetadata_CodeGeneratedFromCodeDomForProxyFileInProjectSubFolder() |
||||||
|
{ |
||||||
|
CreateProxyGenerator(); |
||||||
|
CodeCompileUnit compileUnit = CreateCompileUnitToReturnFromCodeDomBuilder(metadata); |
||||||
|
proxyGenerator.ServiceReferenceNamespace = "Test"; |
||||||
|
string expectedProxyFileName = @"d:\projects\MyProject\Service References\Test\Service1\Reference.cs"; |
||||||
|
|
||||||
|
proxyGenerator.GenerateProxyFile(metadata, expectedProxyFileName); |
||||||
|
|
||||||
|
fakeCodeDomProvider.AssertWasCalled(p => p.GenerateCodeFromCompileUnit(compileUnit, expectedProxyFileName)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,97 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using System.Linq; |
||||||
|
using System.ServiceModel.Description; |
||||||
|
using System.Web.Services.Discovery; |
||||||
|
using System.Xml.Schema; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Dialogs.ReferenceDialog.ServiceReference; |
||||||
|
using NUnit.Framework; |
||||||
|
using WSDescription = System.Web.Services.Description; |
||||||
|
using WSDiscovery = System.Web.Services.Discovery; |
||||||
|
|
||||||
|
namespace ICSharpCode.SharpDevelop.Tests.ServiceReferences |
||||||
|
{ |
||||||
|
[TestFixture] |
||||||
|
public class WebServiceMetadataSetTests |
||||||
|
{ |
||||||
|
DiscoveryClientProtocol discoveryProtocol; |
||||||
|
WebServiceMetadataSet metadata; |
||||||
|
|
||||||
|
void CreateDiscoveryProtocol() |
||||||
|
{ |
||||||
|
discoveryProtocol = new DiscoveryClientProtocol(); |
||||||
|
} |
||||||
|
|
||||||
|
WSDescription.ServiceDescription AddServiceDescriptionToDiscoveryProtocol() |
||||||
|
{ |
||||||
|
var serviceDescription = new WSDescription.ServiceDescription(); |
||||||
|
discoveryProtocol.Documents.Add("http://ServiceDescription", serviceDescription); |
||||||
|
return serviceDescription; |
||||||
|
} |
||||||
|
|
||||||
|
void CreateMetadata() |
||||||
|
{ |
||||||
|
metadata = new WebServiceMetadataSet(discoveryProtocol); |
||||||
|
} |
||||||
|
|
||||||
|
XmlSchema AddXmlSchemaToDiscoveryProtocol() |
||||||
|
{ |
||||||
|
var schema = new XmlSchema(); |
||||||
|
discoveryProtocol.Documents.Add("http://XmlSchema", schema); |
||||||
|
return schema; |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_DiscoveryProtocolHasOneServiceDescription_ServiceDescriptionAddedToMetadata() |
||||||
|
{ |
||||||
|
CreateDiscoveryProtocol(); |
||||||
|
WSDescription.ServiceDescription serviceDescription = |
||||||
|
AddServiceDescriptionToDiscoveryProtocol(); |
||||||
|
CreateMetadata(); |
||||||
|
|
||||||
|
MetadataSection section = metadata.MetadataSections.First(); |
||||||
|
|
||||||
|
Assert.AreEqual(serviceDescription, section.Metadata); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_DiscoveryProtocolHasOneServiceDescription_ServiceDescriptionMetadataHasServiceDescriptionDialect() |
||||||
|
{ |
||||||
|
CreateDiscoveryProtocol(); |
||||||
|
WSDescription.ServiceDescription serviceDescription = |
||||||
|
AddServiceDescriptionToDiscoveryProtocol(); |
||||||
|
CreateMetadata(); |
||||||
|
|
||||||
|
MetadataSection section = metadata.MetadataSections.First(); |
||||||
|
|
||||||
|
Assert.AreEqual(MetadataSection.ServiceDescriptionDialect, section.Dialect); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_DiscoveryProtocolHasOneXmlSchema_XmlSchemaAddedToMetadata() |
||||||
|
{ |
||||||
|
CreateDiscoveryProtocol(); |
||||||
|
XmlSchema schema = AddXmlSchemaToDiscoveryProtocol(); |
||||||
|
CreateMetadata(); |
||||||
|
|
||||||
|
MetadataSection section = metadata.MetadataSections.First(); |
||||||
|
|
||||||
|
Assert.AreEqual(schema, section.Metadata); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void Constructor_DiscoveryProtocolHasOneXmlSchema_XmlSchemaAddedToMetadataHasXmlSchemaDialect() |
||||||
|
{ |
||||||
|
CreateDiscoveryProtocol(); |
||||||
|
XmlSchema schema = AddXmlSchemaToDiscoveryProtocol(); |
||||||
|
CreateMetadata(); |
||||||
|
|
||||||
|
MetadataSection section = metadata.MetadataSections.First(); |
||||||
|
|
||||||
|
Assert.AreEqual(MetadataSection.XmlSchemaDialect, section.Dialect); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue