Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@955 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
48 changed files with 3245 additions and 1035 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1,287 +1,448 @@
@@ -1,287 +1,448 @@
|
||||
//// created on 10/11/2002 at 2:08 PM
|
||||
//
|
||||
//using System;
|
||||
//using System.Collections;
|
||||
//using System.IO;
|
||||
//using System.Text;
|
||||
//using System.Runtime.InteropServices;
|
||||
//using System.Diagnostics;
|
||||
//using System.Xml;
|
||||
//using System.Net;
|
||||
//using System.Web.Services.Description;
|
||||
//using System.CodeDom;
|
||||
//using System.CodeDom.Compiler;
|
||||
//using System.Reflection;
|
||||
//
|
||||
//using ICSharpCode.SharpDevelop.Project;
|
||||
//using ICSharpCode.Core;
|
||||
//
|
||||
//namespace ICSharpCode.SharpDevelop.Gui
|
||||
//{
|
||||
// /// <summary>
|
||||
// /// Summary description for WebReference.
|
||||
// /// </summary>
|
||||
// public class WebReference
|
||||
// {
|
||||
// ///
|
||||
// /// <summary>Creates a ServiceDescription object from a valid URI</summary>
|
||||
// ///
|
||||
// public static ServiceDescription ReadServiceDescription(string uri) {
|
||||
// ServiceDescription desc = null;
|
||||
//
|
||||
// try {
|
||||
// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
|
||||
// WebResponse response = request.GetResponse();
|
||||
//
|
||||
// desc = ServiceDescription.Read(response.GetResponseStream());
|
||||
// response.Close();
|
||||
// desc.RetrievalUrl = uri;
|
||||
// } catch (Exception) {
|
||||
// // possibly error reading WSDL?
|
||||
// return null;
|
||||
// }
|
||||
// if(desc.Services.Count == 0)
|
||||
// return null;
|
||||
//
|
||||
// return desc;
|
||||
// }
|
||||
//
|
||||
// ///
|
||||
// /// <summary>Generates a valid directory from a URI</summary>
|
||||
// ///
|
||||
// public static string GetDirectoryFromUri(string uri) {
|
||||
// // TODO: construct the namespace using th URL in the WSDL
|
||||
// string tmp = uri;
|
||||
// if(uri.IndexOf("://") > -1) {
|
||||
// tmp = uri.Substring(uri.IndexOf("://") + 3);
|
||||
// }
|
||||
// tmp = tmp.Substring(0, tmp.LastIndexOf("/"));
|
||||
// string[] dirs = tmp.Split(new Char[] {'/'});
|
||||
//
|
||||
// StringBuilder savedir = new StringBuilder();
|
||||
// savedir.Append(dirs[0]);
|
||||
//
|
||||
// return savedir.ToString();
|
||||
// }
|
||||
//
|
||||
// ///
|
||||
// /// <summary>Generates a valid Namespace from a URI</summary>
|
||||
// ///
|
||||
// public static string GetNamespaceFromUri(string uri) {
|
||||
// // TODO: construct the namespace using th URL in the WSDL
|
||||
// string tmp = uri;
|
||||
// if(uri.IndexOf("://") > -1) {
|
||||
// tmp = uri.Substring(uri.IndexOf("://") + 3);
|
||||
// }
|
||||
// tmp = tmp.Substring(0, tmp.LastIndexOf("/"));
|
||||
// string[] dirs = tmp.Split(new Char[] {'/'});
|
||||
//
|
||||
// return(dirs[0]);
|
||||
// }
|
||||
//
|
||||
//// public static ProjectReference GenerateWebProxyDLL(IProject project, ServiceDescription desc) {
|
||||
//// ProjectReference refInfo = null;
|
||||
////
|
||||
//// string serviceName = String.Empty;
|
||||
//// if(desc.Services.Count > 0) {
|
||||
//// serviceName = desc.Services[0].Name;
|
||||
//// } else {
|
||||
//// serviceName = "UnknownService";
|
||||
//// }
|
||||
////
|
||||
//// string nmspace = GetNamespaceFromUri(desc.RetrievalUrl);
|
||||
////
|
||||
//// StringBuilder savedir = new StringBuilder();
|
||||
//// savedir.Append(project.BaseDirectory);
|
||||
//// savedir.Append(Path.DirectorySeparatorChar);
|
||||
//// savedir.Append("WebReferences");
|
||||
//// // second, create the path if it doesn't exist
|
||||
//// DirectoryInfo di;
|
||||
//// if(!Directory.Exists(savedir.ToString()))
|
||||
//// {
|
||||
//// di = Directory.CreateDirectory(savedir.ToString());
|
||||
//// }
|
||||
////
|
||||
//// // generate the assembly
|
||||
//// ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
|
||||
//// importer.AddServiceDescription(desc, null, null);
|
||||
////
|
||||
//// CodeNamespace codeNamespace = new CodeNamespace(nmspace);
|
||||
//// CodeCompileUnit codeUnit = new CodeCompileUnit();
|
||||
//// codeUnit.Namespaces.Add(codeNamespace);
|
||||
//// ServiceDescriptionImportWarnings warnings = importer.Import(codeNamespace, codeUnit);
|
||||
////
|
||||
//// CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
|
||||
//// System.CodeDom.Compiler.ICodeCompiler compiler;
|
||||
////
|
||||
////
|
||||
//// if(provider != null) {
|
||||
//// compiler = provider.CreateCompiler();
|
||||
//// CompilerParameters parms = new CompilerParameters();
|
||||
//// parms.ReferencedAssemblies.Add("System.Dll");
|
||||
//// parms.ReferencedAssemblies.Add("System.Xml.Dll");
|
||||
//// parms.ReferencedAssemblies.Add("System.Web.Services.Dll");
|
||||
//// parms.OutputAssembly = project.BaseDirectory + Path.DirectorySeparatorChar + "WebReferences" + Path.DirectorySeparatorChar + nmspace + ".Reference.Dll";
|
||||
//// CompilerResults results = compiler.CompileAssemblyFromDom(parms, codeUnit);
|
||||
//// Assembly assembly = results.CompiledAssembly;
|
||||
////
|
||||
//// if(assembly != null) {
|
||||
//// refInfo = new ProjectReference();
|
||||
//// refInfo.ReferenceType = ReferenceType.Assembly;
|
||||
//// refInfo.Reference = parms.OutputAssembly;
|
||||
//// }
|
||||
//// }
|
||||
////
|
||||
//// return refInfo;
|
||||
//// }
|
||||
////
|
||||
//// ///
|
||||
//// /// <summary>Generates a Web Service proxy DLL from a URI</summary>
|
||||
//// ///
|
||||
//// public static ProjectReference GenerateWebProxyDLL(IProject project, string url) {
|
||||
////
|
||||
//// ServiceDescription desc = ReadServiceDescription(url);
|
||||
//// return GenerateWebProxyDLL(project, desc);
|
||||
////
|
||||
//// }
|
||||
////
|
||||
//// public static ArrayList GenerateWebProxyCode(IProject project, ServiceDescription desc)
|
||||
//// {
|
||||
//// ArrayList fileList = null;
|
||||
////
|
||||
////
|
||||
//// string serviceName = String.Empty;
|
||||
//// if(desc.Services.Count > 0) {
|
||||
//// serviceName = desc.Services[0].Name;
|
||||
//// } else {
|
||||
//// serviceName = "UnknownService";
|
||||
//// }
|
||||
////
|
||||
//// string webRefFolder = "Web References";
|
||||
//// string nmspace = GetNamespaceFromUri(desc.RetrievalUrl);
|
||||
////
|
||||
//// StringBuilder savedir = new StringBuilder();
|
||||
//// savedir.Append(project.BaseDirectory);
|
||||
//// savedir.Append(Path.DirectorySeparatorChar);
|
||||
//// savedir.Append(webRefFolder);
|
||||
//// savedir.Append(Path.DirectorySeparatorChar);
|
||||
//// savedir.Append(GetDirectoryFromUri(desc.RetrievalUrl) + Path.DirectorySeparatorChar + serviceName);
|
||||
////
|
||||
//// // second, create the path if it doesn't exist
|
||||
//// DirectoryInfo di;
|
||||
//// if(!Directory.Exists(savedir.ToString()))
|
||||
//// {
|
||||
//// di = Directory.CreateDirectory(savedir.ToString());
|
||||
//// }
|
||||
////
|
||||
//// // generate the assembly
|
||||
//// ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
|
||||
//// importer.AddServiceDescription(desc, null, null);
|
||||
////
|
||||
//// CodeNamespace codeNamespace = new CodeNamespace(nmspace);
|
||||
//// CodeCompileUnit codeUnit = new CodeCompileUnit();
|
||||
//// codeUnit.Namespaces.Add(codeNamespace);
|
||||
//// ServiceDescriptionImportWarnings warnings = importer.Import(codeNamespace, codeUnit);
|
||||
////
|
||||
//// CodeDomProvider provider;
|
||||
//// System.CodeDom.Compiler.ICodeGenerator generator;
|
||||
////
|
||||
//// String ext = String.Empty;
|
||||
//// switch(project.ProjectType) {
|
||||
//// case "C#":
|
||||
//// provider = new Microsoft.CSharp.CSharpCodeProvider();
|
||||
//// ext = "cs";
|
||||
//// break;
|
||||
//// case "VBNET":
|
||||
//// provider = new Microsoft.VisualBasic.VBCodeProvider();
|
||||
//// ext = "vb";
|
||||
//// break;
|
||||
////
|
||||
//// default:
|
||||
//// // project type not supported error
|
||||
//// provider = null;
|
||||
//// break;
|
||||
//// }
|
||||
////
|
||||
//// string filename = savedir.ToString() + Path.DirectorySeparatorChar + serviceName + "WebProxy." + ext;
|
||||
//// string wsdlfilename = savedir.ToString() + Path.DirectorySeparatorChar + serviceName + ".wsdl";
|
||||
////
|
||||
//// if(provider != null) {
|
||||
//// StreamWriter sw = new StreamWriter(filename);
|
||||
////
|
||||
//// generator = provider.CreateGenerator();
|
||||
//// CodeGeneratorOptions options = new CodeGeneratorOptions();
|
||||
//// options.BracingStyle = "C";
|
||||
//// generator.GenerateCodeFromCompileUnit(codeUnit, sw, options);
|
||||
//// sw.Close();
|
||||
////
|
||||
//// if(File.Exists(filename))
|
||||
//// {
|
||||
//// fileList = new ArrayList();
|
||||
////
|
||||
//// // add project files to the list
|
||||
//// ProjectFile pfile = new ProjectFile();
|
||||
////
|
||||
//// pfile.Name = project.BaseDirectory + Path.DirectorySeparatorChar + webRefFolder;
|
||||
//// pfile.BuildAction = BuildAction.Nothing;
|
||||
//// pfile.Subtype = Subtype.WebReferences;
|
||||
//// pfile.DependsOn = String.Empty;
|
||||
//// pfile.Data = String.Empty;
|
||||
//// fileList.Add(pfile);
|
||||
////
|
||||
//// /*
|
||||
//// pfile = new ProjectFile();
|
||||
//// pfile.Name = project.BaseDirectory + @"\Web References\" + nmspace;
|
||||
//// pfile.BuildAction = BuildAction.Nothing;
|
||||
//// pfile.Subtype = Subtype.Directory;
|
||||
//// pfile.DependsOn = project.BaseDirectory + @"\Web References\";
|
||||
//// pfile.WebReferenceUrl = String.Empty;
|
||||
//// fileList.Add(pfile);
|
||||
//// */
|
||||
//// /*
|
||||
//// pfile = new ProjectFile();
|
||||
//// pfile.Name = project.BaseDirectory + @"\Web References\" + nmspace + @"\" + serviceName;
|
||||
//// pfile.BuildAction = BuildAction.Nothing;
|
||||
//// pfile.Subtype = Subtype.Directory;
|
||||
//// pfile.DependsOn = project.BaseDirectory + @"\Web References\" + nmspace + @"\";
|
||||
//// pfile.WebReferenceUrl = desc.RetrievalUrl;
|
||||
//// fileList.Add(pfile);
|
||||
//// */
|
||||
//// // the Web Reference Proxy
|
||||
//// pfile = new ProjectFile();
|
||||
//// pfile.Name = filename;
|
||||
//// pfile.BuildAction = BuildAction.Compile;
|
||||
//// pfile.Subtype = Subtype.Code;
|
||||
//// pfile.DependsOn = project.BaseDirectory + Path.DirectorySeparatorChar + webRefFolder;
|
||||
//// pfile.Data = desc.RetrievalUrl;
|
||||
//// fileList.Add(pfile);
|
||||
////
|
||||
//// // the WSDL File used to generate the Proxy
|
||||
//// desc.Write(wsdlfilename);
|
||||
//// pfile = new ProjectFile();
|
||||
//// pfile.Name = wsdlfilename;
|
||||
//// pfile.BuildAction = BuildAction.Nothing;
|
||||
//// pfile.Subtype = Subtype.Code;
|
||||
//// pfile.DependsOn = project.BaseDirectory + Path.DirectorySeparatorChar + webRefFolder;
|
||||
//// pfile.Data = desc.RetrievalUrl;
|
||||
//// fileList.Add(pfile);
|
||||
//// }
|
||||
//// }
|
||||
////
|
||||
//// return fileList;
|
||||
//// }
|
||||
////
|
||||
//// ///
|
||||
//// /// <summary>Generates a Web Service proxy class from a URI</summary>
|
||||
//// ///
|
||||
//// public static ArrayList GenerateWebProxyCode(IProject project, string url) {
|
||||
////
|
||||
////
|
||||
//// ServiceDescription desc = ReadServiceDescription(url);
|
||||
////
|
||||
//// return GenerateWebProxyCode(project, desc);
|
||||
////
|
||||
////
|
||||
//// }
|
||||
// }
|
||||
//}
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using System; |
||||
using System.CodeDom; |
||||
using System.CodeDom.Compiler; |
||||
using System.Collections; |
||||
using System.Collections.Generic; |
||||
using System.IO; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
using System.Xml.Schema; |
||||
using System.Xml.Serialization; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Gui |
||||
{ |
||||
public class WebReference |
||||
{ |
||||
List<ProjectItem> items; |
||||
string url = String.Empty; |
||||
string relativePath = String.Empty; |
||||
DiscoveryClientProtocol protocol; |
||||
IProject project; |
||||
string webReferencesDirectory = String.Empty; |
||||
string proxyNamespace = String.Empty; |
||||
string name = String.Empty; |
||||
WebReferenceUrl webReferenceUrl; |
||||
|
||||
public WebReference(IProject project, string url, string name, string proxyNamespace, DiscoveryClientProtocol protocol) |
||||
{ |
||||
this.project = project; |
||||
this.url = url; |
||||
this.protocol = protocol; |
||||
this.proxyNamespace = proxyNamespace; |
||||
this.name = name; |
||||
GetRelativePath(); |
||||
} |
||||
|
||||
public static bool ProjectContainsWebReferencesFolder(IProject project) |
||||
{ |
||||
return GetWebReferencesProjectItem(project) != null; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Checks that the project has the System.Web.Services assembly referenced.
|
||||
/// </summary>
|
||||
/// <param name="project"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ProjectContainsWebServicesReference(IProject project) |
||||
{ |
||||
foreach (ProjectItem item in project.Items) { |
||||
if (item.ItemType == ItemType.Reference && item.Include != null) { |
||||
if (item.Include.Trim().StartsWith("System.Web.Services", StringComparison.InvariantCultureIgnoreCase)) { |
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public static WebReferencesProjectItem GetWebReferencesProjectItem(IProject project) |
||||
{ |
||||
return GetWebReferencesProjectItem(project.Items); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Returns the reference name. If the folder that will contain the
|
||||
/// web reference already exists this method looks for a new folder by
|
||||
/// adding a digit to the end of the reference name.
|
||||
/// </summary>
|
||||
public static string GetReferenceName(string webReferenceFolder, string name) |
||||
{ |
||||
// If it is already in the project, or it does exists we get a new name.
|
||||
int count = 1; |
||||
string referenceName = name; |
||||
string folder = Path.Combine(webReferenceFolder, name); |
||||
while (System.IO.Directory.Exists(folder)) { |
||||
referenceName = String.Concat(name, count.ToString()); |
||||
folder = Path.Combine(webReferenceFolder, referenceName); |
||||
++count; |
||||
} |
||||
return referenceName; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets all the file items that belong to the named web reference in
|
||||
/// the specified project.
|
||||
/// </summary>
|
||||
/// <param name="name">The name of the web reference to look for. This is
|
||||
/// not the full path of the web reference, just the last folder's name.</param>
|
||||
/// <remarks>
|
||||
/// This method does not return the WebReferenceUrl project item only the
|
||||
/// files that are part of the web reference.
|
||||
/// </remarks>
|
||||
public static List<ProjectItem> GetFileItems(IProject project, string name) |
||||
{ |
||||
List<ProjectItem> items = new List<ProjectItem>(); |
||||
|
||||
// Find web references folder.
|
||||
WebReferencesProjectItem webReferencesProjectItem = GetWebReferencesProjectItem(project); |
||||
if (webReferencesProjectItem != null) { |
||||
|
||||
// Look for files that are in the web reference folder.
|
||||
string webReferenceDirectory = Path.Combine(Path.Combine(project.Directory, webReferencesProjectItem.Include), name); |
||||
foreach (ProjectItem item in project.Items) { |
||||
FileProjectItem fileItem = item as FileProjectItem; |
||||
if (fileItem != null) { |
||||
if (FileUtility.IsBaseDirectory(webReferenceDirectory, fileItem.FileName)) { |
||||
items.Add(fileItem); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
return items; |
||||
} |
||||
|
||||
public WebReferencesProjectItem WebReferencesProjectItem { |
||||
get { |
||||
return GetWebReferencesProjectItem(Items); |
||||
} |
||||
} |
||||
|
||||
public WebReferenceUrl WebReferenceUrl { |
||||
get { |
||||
if (webReferenceUrl == null) { |
||||
items = CreateProjectItems(); |
||||
} |
||||
return webReferenceUrl; |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the web references directory which is the parent folder for
|
||||
/// this web reference.
|
||||
/// </summary>
|
||||
public string WebReferencesDirectory { |
||||
get { |
||||
return webReferencesDirectory; |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the directory where the web reference files will be saved.
|
||||
/// </summary>
|
||||
public string Directory { |
||||
get { |
||||
return Path.Combine(project.Directory, relativePath); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name of the web reference.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Changing the name will also change the directory where the
|
||||
/// web reference files are saved.
|
||||
/// </remarks>
|
||||
public string Name { |
||||
get { |
||||
return name; |
||||
} |
||||
set { |
||||
name = value; |
||||
OnNameChanged(); |
||||
} |
||||
} |
||||
|
||||
public List<ProjectItem> Items { |
||||
get { |
||||
if (items == null) { |
||||
items = CreateProjectItems(); |
||||
} |
||||
return items; |
||||
} |
||||
} |
||||
|
||||
public string WebProxyFileName { |
||||
get { |
||||
return GetFullProxyFileName(); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the changes that this web reference has undergone after being
|
||||
/// refreshed.
|
||||
/// </summary>
|
||||
public WebReferenceChanges GetChanges(IProject project) |
||||
{ |
||||
WebReferenceChanges changes = new WebReferenceChanges(); |
||||
|
||||
List<ProjectItem> existingItems = GetFileItems(project, name); |
||||
|
||||
// Check for new items.
|
||||
changes.NewItems.AddRange(GetNewItems(existingItems)); |
||||
|
||||
// Check for removed items.
|
||||
changes.ItemsRemoved.AddRange(GetRemovedItems(existingItems)); |
||||
|
||||
return changes; |
||||
} |
||||
|
||||
public void Save() |
||||
{ |
||||
System.IO.Directory.CreateDirectory(Directory); |
||||
GenerateWebProxy(); |
||||
protocol.WriteAll(Directory, "Reference.map"); |
||||
} |
||||
|
||||
ServiceDescriptionCollection GetServiceDescriptionCollection(DiscoveryClientProtocol protocol) |
||||
{ |
||||
ServiceDescriptionCollection services = new ServiceDescriptionCollection(); |
||||
foreach (DictionaryEntry entry in protocol.References) { |
||||
ContractReference contractRef = entry.Value as ContractReference; |
||||
DiscoveryDocumentReference discoveryRef = entry.Value as DiscoveryDocumentReference; |
||||
if (contractRef != null) { |
||||
services.Add(contractRef.Contract); |
||||
} |
||||
} |
||||
return services; |
||||
} |
||||
|
||||
XmlSchemas GetXmlSchemas(DiscoveryClientProtocol protocol) |
||||
{ |
||||
XmlSchemas schemas = new XmlSchemas(); |
||||
foreach (DictionaryEntry entry in protocol.References) { |
||||
SchemaReference schemaRef = entry.Value as SchemaReference; |
||||
if (schemaRef != null) { |
||||
schemas.Add(schemaRef.Schema); |
||||
} |
||||
} |
||||
return schemas; |
||||
} |
||||
|
||||
void GenerateWebProxy() |
||||
{ |
||||
GenerateWebProxy(proxyNamespace, GetFullProxyFileName(), GetServiceDescriptionCollection(protocol), GetXmlSchemas(protocol)); |
||||
} |
||||
|
||||
static void GenerateWebProxy(string proxyNamespace, string fileName, ServiceDescriptionCollection serviceDescriptions, XmlSchemas schemas) |
||||
{ |
||||
ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); |
||||
|
||||
foreach (ServiceDescription description in serviceDescriptions) { |
||||
importer.AddServiceDescription(description, null, null); |
||||
} |
||||
|
||||
foreach (XmlSchema schema in schemas) { |
||||
importer.Schemas.Add(schema); |
||||
} |
||||
|
||||
CodeNamespace codeNamespace = new CodeNamespace(proxyNamespace); |
||||
CodeCompileUnit codeUnit = new CodeCompileUnit(); |
||||
codeUnit.Namespaces.Add(codeNamespace); |
||||
ServiceDescriptionImportWarnings warnings = importer.Import(codeNamespace, codeUnit); |
||||
|
||||
CodeDomProvider provider; |
||||
|
||||
switch(Path.GetExtension(fileName).ToLower()) { |
||||
case ".cs": |
||||
provider = new Microsoft.CSharp.CSharpCodeProvider(); |
||||
break; |
||||
case ".vb": |
||||
provider = new Microsoft.VisualBasic.VBCodeProvider(); |
||||
break; |
||||
|
||||
default: |
||||
// extension not supported
|
||||
provider = null; |
||||
break; |
||||
} |
||||
|
||||
if(provider != null) { |
||||
StreamWriter sw = new StreamWriter(fileName); |
||||
CodeGeneratorOptions options = new CodeGeneratorOptions(); |
||||
options.BracingStyle = "C"; |
||||
provider.GenerateCodeFromCompileUnit(codeUnit, sw, options); |
||||
sw.Close(); |
||||
} |
||||
} |
||||
|
||||
string GetFullProxyFileName() |
||||
{ |
||||
return Path.Combine(project.Directory, GetProxyFileName()); |
||||
} |
||||
|
||||
string GetProxyFileName() |
||||
{ |
||||
string fileName = String.Concat("Reference", GetProxyFileNameExtension(project.Language)); |
||||
return Path.Combine(relativePath, fileName); |
||||
} |
||||
|
||||
string GetProxyFileNameExtension(string language) |
||||
{ |
||||
switch (language) { |
||||
case "C#": |
||||
return ".cs"; |
||||
case "VBNet": |
||||
return ".vb"; |
||||
default: |
||||
throw new NotImplementedException(String.Concat("Unhandled language: ", language)); |
||||
} |
||||
} |
||||
|
||||
static WebReferencesProjectItem GetWebReferencesProjectItem(List<ProjectItem> items) |
||||
{ |
||||
foreach (ProjectItem item in items) { |
||||
if (item.ItemType == ItemType.WebReferences) { |
||||
return (WebReferencesProjectItem)item; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Updates the various relative paths due to the change in the web
|
||||
/// reference name.
|
||||
/// </summary>
|
||||
void OnNameChanged() |
||||
{ |
||||
GetRelativePath(); |
||||
|
||||
if (items != null) { |
||||
items = CreateProjectItems(); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the web references relative path.
|
||||
/// </summary>
|
||||
void GetRelativePath() |
||||
{ |
||||
ProjectItem webReferencesProjectItem = GetWebReferencesProjectItem(project); |
||||
string webReferencesDirectoryName; |
||||
if (webReferencesProjectItem != null) { |
||||
webReferencesDirectoryName = webReferencesProjectItem.Include.Trim('\\', '/'); |
||||
} else { |
||||
webReferencesDirectoryName = "Web References"; |
||||
} |
||||
webReferencesDirectory = Path.Combine(project.Directory, webReferencesDirectoryName); |
||||
relativePath = Path.Combine(webReferencesDirectoryName, name); |
||||
} |
||||
|
||||
List<ProjectItem> CreateProjectItems() |
||||
{ |
||||
List<ProjectItem> items = new List<ProjectItem>(); |
||||
|
||||
// Web references item.
|
||||
if (!ProjectContainsWebReferencesFolder(project)) { |
||||
WebReferencesProjectItem webReferencesItem = new WebReferencesProjectItem(project); |
||||
webReferencesItem.Include = "Web References\\"; |
||||
items.Add(webReferencesItem); |
||||
} |
||||
|
||||
// Web reference url.
|
||||
webReferenceUrl = new WebReferenceUrl(project); |
||||
webReferenceUrl.Include = url; |
||||
webReferenceUrl.UpdateFromURL = url; |
||||
webReferenceUrl.RelPath = relativePath; |
||||
items.Add(webReferenceUrl); |
||||
|
||||
// References.
|
||||
foreach (DictionaryEntry entry in protocol.References) { |
||||
DiscoveryReference discoveryRef = entry.Value as DiscoveryReference; |
||||
if (discoveryRef != null) { |
||||
FileProjectItem item = new FileProjectItem(project, ItemType.None); |
||||
item.Include = Path.Combine(relativePath, discoveryRef.DefaultFilename); |
||||
items.Add(item); |
||||
} |
||||
} |
||||
|
||||
// Proxy
|
||||
FileProjectItem proxyItem = new FileProjectItem(project, ItemType.Compile); |
||||
proxyItem.Include = GetProxyFileName(); |
||||
proxyItem.Properties.Set("AutoGen", "True"); |
||||
proxyItem.Properties.Set("DesignTime", "True"); |
||||
proxyItem.DependentUpon = "Reference.map"; |
||||
items.Add(proxyItem); |
||||
|
||||
// Reference map.
|
||||
FileProjectItem mapItem = new FileProjectItem(project, ItemType.None); |
||||
mapItem.Include = Path.Combine(relativePath, "Reference.map"); |
||||
mapItem.Properties.Set("Generator", "MSDiscoCodeGenerator"); |
||||
mapItem.Properties.Set("LastGenOutput", "Reference.cs"); |
||||
items.Add(mapItem); |
||||
|
||||
// System.Web.Services reference.
|
||||
if (!ProjectContainsWebServicesReference(project)) { |
||||
ReferenceProjectItem webServicesReferenceItem = new ReferenceProjectItem(project, "System.Web.Services"); |
||||
items.Add(webServicesReferenceItem); |
||||
} |
||||
return items; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Checks the file project items against the file items this web reference
|
||||
/// has and adds any items that do not exist in the project.
|
||||
/// </summary>
|
||||
List<ProjectItem> GetNewItems(List<ProjectItem> projectWebReferenceItems) |
||||
{ |
||||
List<ProjectItem> newItems = new List<ProjectItem>(); |
||||
|
||||
foreach (ProjectItem item in Items) { |
||||
if (item is WebReferenceUrl) { |
||||
// Ignore.
|
||||
} else if (!ContainsFileName(projectWebReferenceItems, item.FileName)) { |
||||
newItems.Add(item); |
||||
} |
||||
} |
||||
|
||||
return newItems; |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Checks the file project items against the file items this web reference
|
||||
/// has and adds any items that have been removed but still exist in the
|
||||
/// project.
|
||||
/// </summary>
|
||||
List<ProjectItem> GetRemovedItems(List<ProjectItem> projectWebReferenceItems) |
||||
{ |
||||
List<ProjectItem> removedItems = new List<ProjectItem>(); |
||||
|
||||
foreach (ProjectItem item in projectWebReferenceItems) { |
||||
if (!ContainsFileName(Items, item.FileName)) { |
||||
removedItems.Add(item); |
||||
} |
||||
} |
||||
|
||||
return removedItems; |
||||
} |
||||
|
||||
static bool ContainsFileName(List<ProjectItem> items, string fileName) |
||||
{ |
||||
foreach (ProjectItem item in items) { |
||||
if (FileUtility.IsEqualFileName(item.FileName, fileName)) { |
||||
return true; |
||||
} |
||||
} |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
|
@ -0,0 +1,54 @@
@@ -0,0 +1,54 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Gui |
||||
{ |
||||
/// <summary>
|
||||
/// Contains the changes that a WebReference has undergone after being
|
||||
/// refreshed.
|
||||
/// </summary>
|
||||
public class WebReferenceChanges |
||||
{ |
||||
List<ProjectItem> newItems = new List<ProjectItem>(); |
||||
List<ProjectItem> itemsRemoved = new List<ProjectItem>(); |
||||
|
||||
public WebReferenceChanges() |
||||
{ |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Items that are new and need to be added to the project.
|
||||
/// </summary>
|
||||
public List<ProjectItem> NewItems { |
||||
get { |
||||
return newItems; |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Items that are missing and need to be removed from the project.
|
||||
/// </summary>
|
||||
public List<ProjectItem> ItemsRemoved { |
||||
get { |
||||
return itemsRemoved; |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Returns whether there are any changes.
|
||||
/// </summary>
|
||||
public bool Changed { |
||||
get { |
||||
return itemsRemoved.Count > 0 || newItems.Count > 0; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,265 @@
@@ -0,0 +1,265 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.Core; |
||||
using System; |
||||
using System.Web.Services.Description; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Gui |
||||
{ |
||||
public class WebServicesView : System.Windows.Forms.UserControl |
||||
{ |
||||
const int ServiceDescriptionImageIndex = 0; |
||||
const int ServiceImageIndex = 1; |
||||
const int PortImageIndex = 2; |
||||
const int OperationImageIndex = 3; |
||||
|
||||
public WebServicesView() |
||||
{ |
||||
InitializeComponent(); |
||||
AddImages(); |
||||
AddStringResources(); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Removes all web services currently on display.
|
||||
/// </summary>
|
||||
public void Clear() |
||||
{ |
||||
webServicesListView.Items.Clear(); |
||||
webServicesTreeView.Nodes.Clear(); |
||||
} |
||||
|
||||
public void Add(ServiceDescriptionCollection serviceDescriptions) |
||||
{ |
||||
if (serviceDescriptions.Count == 0) { |
||||
return; |
||||
} |
||||
|
||||
webServicesListView.BeginUpdate(); |
||||
try { |
||||
foreach (ServiceDescription description in serviceDescriptions) { |
||||
Add(description); |
||||
} |
||||
} finally { |
||||
webServicesListView.EndUpdate(); |
||||
} |
||||
} |
||||
|
||||
#region Windows Forms Designer generated code
|
||||
/// <summary>
|
||||
/// This method is required for Windows Forms designer support.
|
||||
/// Do not change the method contents inside the source code editor. The Forms designer might
|
||||
/// not be able to load this method if it was changed manually.
|
||||
/// </summary>
|
||||
private void InitializeComponent() |
||||
{ |
||||
this.splitContainer = new System.Windows.Forms.SplitContainer(); |
||||
this.webServicesTreeView = new System.Windows.Forms.TreeView(); |
||||
this.webServicesListView = new System.Windows.Forms.ListView(); |
||||
this.propertyColumnHeader = new System.Windows.Forms.ColumnHeader(); |
||||
this.valueColumnHeader = new System.Windows.Forms.ColumnHeader(); |
||||
this.splitContainer.Panel1.SuspendLayout(); |
||||
this.splitContainer.Panel2.SuspendLayout(); |
||||
this.splitContainer.SuspendLayout(); |
||||
this.SuspendLayout(); |
||||
//
|
||||
// splitContainer
|
||||
//
|
||||
this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.splitContainer.Location = new System.Drawing.Point(0, 0); |
||||
this.splitContainer.Name = "splitContainer"; |
||||
//
|
||||
// splitContainer.Panel1
|
||||
//
|
||||
this.splitContainer.Panel1.Controls.Add(this.webServicesTreeView); |
||||
//
|
||||
// splitContainer.Panel2
|
||||
//
|
||||
this.splitContainer.Panel2.Controls.Add(this.webServicesListView); |
||||
this.splitContainer.Size = new System.Drawing.Size(471, 305); |
||||
this.splitContainer.SplitterDistance = 156; |
||||
this.splitContainer.TabIndex = 1; |
||||
//
|
||||
// webServicesTreeView
|
||||
//
|
||||
this.webServicesTreeView.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.webServicesTreeView.Location = new System.Drawing.Point(0, 0); |
||||
this.webServicesTreeView.Name = "webServicesTreeView"; |
||||
this.webServicesTreeView.Size = new System.Drawing.Size(156, 305); |
||||
this.webServicesTreeView.TabIndex = 0; |
||||
this.webServicesTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.WebServicesTreeViewAfterSelect); |
||||
//
|
||||
// webServicesListView
|
||||
//
|
||||
this.webServicesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { |
||||
this.propertyColumnHeader, |
||||
this.valueColumnHeader}); |
||||
this.webServicesListView.Dock = System.Windows.Forms.DockStyle.Fill; |
||||
this.webServicesListView.Location = new System.Drawing.Point(0, 0); |
||||
this.webServicesListView.Name = "webServicesListView"; |
||||
this.webServicesListView.Size = new System.Drawing.Size(311, 305); |
||||
this.webServicesListView.TabIndex = 2; |
||||
this.webServicesListView.UseCompatibleStateImageBehavior = false; |
||||
this.webServicesListView.View = System.Windows.Forms.View.Details; |
||||
//
|
||||
// propertyColumnHeader
|
||||
//
|
||||
this.propertyColumnHeader.Text = "Property"; |
||||
this.propertyColumnHeader.Width = 120; |
||||
//
|
||||
// valueColumnHeader
|
||||
//
|
||||
this.valueColumnHeader.Text = "Value"; |
||||
this.valueColumnHeader.Width = 191; |
||||
//
|
||||
// WebServicesView
|
||||
//
|
||||
this.Controls.Add(this.splitContainer); |
||||
this.Name = "WebServicesView"; |
||||
this.Size = new System.Drawing.Size(471, 305); |
||||
this.splitContainer.Panel1.ResumeLayout(false); |
||||
this.splitContainer.Panel2.ResumeLayout(false); |
||||
this.splitContainer.ResumeLayout(false); |
||||
this.ResumeLayout(false); |
||||
} |
||||
private System.Windows.Forms.ColumnHeader propertyColumnHeader; |
||||
private System.Windows.Forms.ColumnHeader valueColumnHeader; |
||||
private System.Windows.Forms.TreeView webServicesTreeView; |
||||
private System.Windows.Forms.ListView webServicesListView; |
||||
private System.Windows.Forms.SplitContainer splitContainer; |
||||
|
||||
#endregion
|
||||
|
||||
void WebServicesTreeViewAfterSelect(object sender, TreeViewEventArgs e) |
||||
{ |
||||
ListViewItem item; |
||||
webServicesListView.Items.Clear(); |
||||
|
||||
if(e.Node.Tag is ServiceDescription) { |
||||
ServiceDescription desc = (ServiceDescription)e.Node.Tag; |
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.RetrievalUriProperty}"); |
||||
item.SubItems.Add(desc.RetrievalUrl); |
||||
webServicesListView.Items.Add(item); |
||||
} |
||||
else if(e.Node.Tag is Service) { |
||||
Service service = (Service)e.Node.Tag; |
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}"); |
||||
item.SubItems.Add(service.Documentation); |
||||
webServicesListView.Items.Add(item); |
||||
} |
||||
else if(e.Node.Tag is Port) { |
||||
Port port = (Port)e.Node.Tag; |
||||
|
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}"); |
||||
item.SubItems.Add(port.Documentation); |
||||
webServicesListView.Items.Add(item); |
||||
|
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.BindingProperty}"); |
||||
item.SubItems.Add(port.Binding.Name); |
||||
webServicesListView.Items.Add(item); |
||||
|
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ServiceNameProperty}"); |
||||
item.SubItems.Add(port.Service.Name); |
||||
webServicesListView.Items.Add(item); |
||||
} |
||||
else if(e.Node.Tag is Operation) { |
||||
Operation operation = (Operation)e.Node.Tag; |
||||
|
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.DocumentationProperty}"); |
||||
item.SubItems.Add(operation.Documentation); |
||||
webServicesListView.Items.Add(item); |
||||
|
||||
item = new ListViewItem(); |
||||
item.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ParametersProperty}"); |
||||
item.SubItems.Add(operation.ParameterOrderString); |
||||
webServicesListView.Items.Add(item); |
||||
} |
||||
} |
||||
|
||||
void Add(ServiceDescription description) |
||||
{ |
||||
TreeNode rootNode = new TreeNode(GetName(description)); |
||||
rootNode.Tag = description; |
||||
rootNode.ImageIndex = ServiceDescriptionImageIndex; |
||||
rootNode.SelectedImageIndex = ServiceDescriptionImageIndex; |
||||
webServicesTreeView.Nodes.Add(rootNode); |
||||
|
||||
foreach(Service service in description.Services) { |
||||
// Add a Service node
|
||||
TreeNode serviceNode = new TreeNode(service.Name); |
||||
serviceNode.Tag = service; |
||||
serviceNode.ImageIndex = ServiceImageIndex; |
||||
serviceNode.SelectedImageIndex = ServiceImageIndex; |
||||
rootNode.Nodes.Add(serviceNode); |
||||
|
||||
foreach(Port port in service.Ports) { |
||||
TreeNode portNode = new TreeNode(port.Name); |
||||
portNode.Tag = port; |
||||
portNode.ImageIndex = PortImageIndex; |
||||
portNode.SelectedImageIndex = PortImageIndex; |
||||
serviceNode.Nodes.Add(portNode); |
||||
|
||||
// Get the operations
|
||||
System.Web.Services.Description.Binding binding = description.Bindings[port.Binding.Name]; |
||||
if (binding != null) { |
||||
PortType portType = description.PortTypes[binding.Type.Name]; |
||||
if (portType != null) { |
||||
foreach(Operation operation in portType.Operations) { |
||||
TreeNode operationNode = new TreeNode(operation.Name); |
||||
operationNode.Tag = operation; |
||||
operationNode.ImageIndex = OperationImageIndex; |
||||
operationNode.SelectedImageIndex = OperationImageIndex; |
||||
portNode.Nodes.Add(operationNode); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
webServicesTreeView.ExpandAll(); |
||||
} |
||||
|
||||
string GetName(ServiceDescription description) |
||||
{ |
||||
if (description.Name != null) { |
||||
return description.Name; |
||||
} else if (description.RetrievalUrl != null) { |
||||
Uri uri = new Uri(description.RetrievalUrl); |
||||
if (uri.Segments.Length > 0) { |
||||
return uri.Segments[uri.Segments.Length - 1]; |
||||
} else { |
||||
return uri.Host; |
||||
} |
||||
} |
||||
return String.Empty; |
||||
} |
||||
|
||||
void AddImages() |
||||
{ |
||||
ImageList imageList = new ImageList(); |
||||
imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Library")); |
||||
imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Interface")); |
||||
imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class")); |
||||
imageList.Images.Add(ResourceService.GetBitmap("Icons.16x16.Method")); |
||||
|
||||
webServicesTreeView.ImageList = imageList; |
||||
} |
||||
|
||||
void AddStringResources() |
||||
{ |
||||
valueColumnHeader.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.ValueColumnHeader}"); |
||||
propertyColumnHeader.Text = StringParser.Parse("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.AddWebReferenceDialog.PropertyColumnHeader}"); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using System; |
||||
using System.Windows.Forms; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
public class WebReferenceNodeBuilder |
||||
{ |
||||
WebReferenceNodeBuilder() |
||||
{ |
||||
} |
||||
|
||||
public static TreeNode AddWebReferencesFolderNode(ProjectNode projectNode, WebReference webReference) |
||||
{ |
||||
if (webReference.WebReferencesProjectItem != null) { |
||||
WebReferencesFolderNode webReferencesFolderNode = new WebReferencesFolderNode(webReference.WebReferencesProjectItem); |
||||
webReferencesFolderNode.FileNodeStatus = FileNodeStatus.InProject; |
||||
webReferencesFolderNode.AddTo(projectNode); |
||||
return webReferencesFolderNode; |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static TreeNode AddWebReference(WebReferencesFolderNode webReferencesFolderNode, WebReference webReference) |
||||
{ |
||||
WebReferenceNode node = new WebReferenceNode(webReference); |
||||
node.FileNodeStatus = FileNodeStatus.InProject; |
||||
node.AddTo(webReferencesFolderNode); |
||||
return node; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using System; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
public class WebReferenceNode : DirectoryNode |
||||
{ |
||||
public WebReferenceNode(WebReference webReference) : this(webReference.Directory) |
||||
{ |
||||
ProjectItem = webReference.WebReferenceUrl; |
||||
} |
||||
|
||||
public WebReferenceNode(string directory) : base(directory) |
||||
{ |
||||
SpecialFolder = SpecialFolder.WebReference; |
||||
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/WebReferenceNode"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
public class WebReferencesFolderNode : DirectoryNode |
||||
{ |
||||
public WebReferencesFolderNode(WebReferencesProjectItem projectItem) : this(projectItem.Directory) |
||||
{ |
||||
ProjectItem = projectItem; |
||||
} |
||||
|
||||
public WebReferencesFolderNode(string directory) : base(directory) |
||||
{ |
||||
sortOrder = 0; |
||||
SpecialFolder = SpecialFolder.WebReferencesFolder; |
||||
ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/WebReferencesFolderNode"; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,27 @@
@@ -0,0 +1,27 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.ComponentModel; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Project |
||||
{ |
||||
public class WebReferencesProjectItem : FileProjectItem |
||||
{ |
||||
public WebReferencesProjectItem(IProject project) : base(project, ItemType.WebReferences) |
||||
{ |
||||
} |
||||
|
||||
[Browsable(false)] |
||||
public string Directory { |
||||
get { |
||||
return Path.Combine(Project.Directory, Include).Trim('\\', '/'); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,168 @@
@@ -0,0 +1,168 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
[TestFixture] |
||||
public class DirectoryNodeFactoryTests |
||||
{ |
||||
DirectoryNode appDesignerFolderNode; |
||||
DirectoryNode ordinaryFolderNode; |
||||
DirectoryNode webReferencesFolderNode; |
||||
DirectoryNode missingWebReferencesFolderNode; |
||||
DirectoryNode missingOrdinaryFolderNode; |
||||
DirectoryNode webReferenceNode; |
||||
|
||||
string projectDirectory = "c:\\projects\\test"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.Language = "C#"; |
||||
project.FileName = Path.Combine(projectDirectory, "foo.csproj"); |
||||
project.AppDesignerFolder = "Properties"; |
||||
|
||||
WebReferencesProjectItem webReferencesItem = new WebReferencesProjectItem(project); |
||||
webReferencesItem.Include = "Web References\\"; |
||||
project.Items.Add(webReferencesItem); |
||||
|
||||
FileProjectItem fileItem = new FileProjectItem(project, ItemType.Folder); |
||||
fileItem.Include = "MissingFolder\\"; |
||||
project.Items.Add(fileItem); |
||||
|
||||
ProjectNode projectNode = new ProjectNode(project); |
||||
|
||||
appDesignerFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(projectDirectory, "Properties")); |
||||
ordinaryFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(project.Directory, "Test")); |
||||
webReferencesFolderNode = DirectoryNodeFactory.CreateDirectoryNode(projectNode, project, Path.Combine(project.Directory, webReferencesItem.Include)); |
||||
webReferenceNode = DirectoryNodeFactory.CreateDirectoryNode(webReferencesFolderNode, project, Path.Combine(Path.Combine(project.Directory, webReferencesItem.Include), "localhost")); |
||||
|
||||
missingWebReferencesFolderNode = DirectoryNodeFactory.CreateDirectoryNode(webReferencesItem, FileNodeStatus.Missing); |
||||
missingOrdinaryFolderNode = DirectoryNodeFactory.CreateDirectoryNode(fileItem, FileNodeStatus.Missing); |
||||
} |
||||
|
||||
[Test] |
||||
public void AppDesignerFolderNodeIsSpecialAppDesignerFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.AppDesigner, appDesignerFolderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void AppDesignerFolderNodeDirectory() |
||||
{ |
||||
Assert.AreEqual(Path.Combine(projectDirectory, "Properties"), appDesignerFolderNode.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void OrdinaryFolderNodeIsNotSpecialFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.None, ordinaryFolderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void OrdinaryFolderNodeDirectory() |
||||
{ |
||||
Assert.AreEqual(Path.Combine(projectDirectory, "Test"), ordinaryFolderNode.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void OrdinaryFolderNodeType() |
||||
{ |
||||
Assert.IsTrue(ordinaryFolderNode is DirectoryNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesFolderNodeIsSpecialWebReferencesFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.WebReferencesFolder, webReferencesFolderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesFolderNodeType() |
||||
{ |
||||
Assert.IsTrue(webReferencesFolderNode is WebReferencesFolderNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesFolderNodeDirectory() |
||||
{ |
||||
Assert.AreEqual(Path.Combine(projectDirectory, "Web References\\"), webReferencesFolderNode.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceNodeIsSpecialWebReferencesFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.WebReference, webReferenceNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceNodeType() |
||||
{ |
||||
Assert.IsTrue(webReferenceNode is WebReferenceNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceNodeDirectory() |
||||
{ |
||||
Assert.AreEqual(Path.Combine(projectDirectory, "Web References\\localhost"), webReferenceNode.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingWebReferencesFolderNodeIsMissing() |
||||
{ |
||||
Assert.AreEqual(FileNodeStatus.Missing, missingWebReferencesFolderNode.FileNodeStatus); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingWebReferencesFolderNodeIsSpecialWebReferencesFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.WebReferencesFolder, missingWebReferencesFolderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingWebReferencesFolderNodeType() |
||||
{ |
||||
Assert.IsTrue(missingWebReferencesFolderNode is WebReferencesFolderNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingOrdinaryFolderNodeIsMissing() |
||||
{ |
||||
Assert.AreEqual(FileNodeStatus.Missing, missingOrdinaryFolderNode.FileNodeStatus); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingOrdinaryFolderNodeIsNotSpecialFolder() |
||||
{ |
||||
Assert.AreEqual(SpecialFolder.None, missingOrdinaryFolderNode.SpecialFolder); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingOrdinaryFolderNodeType() |
||||
{ |
||||
Assert.IsTrue(missingOrdinaryFolderNode is DirectoryNode); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingOrdinaryFolderName() |
||||
{ |
||||
Assert.AreEqual("c:\\projects\\test\\MissingFolder", missingOrdinaryFolderNode.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void MissingOrdinaryFolderProjectItemExists() |
||||
{ |
||||
Assert.IsNotNull(missingOrdinaryFolderNode.ProjectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,46 @@
@@ -0,0 +1,46 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the DirectoryNode.IsWebReferencesFolder method.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class IsWebReferencesFolderTests |
||||
{ |
||||
[Test] |
||||
public void IsWebReferencesFolder1() |
||||
{ |
||||
MSBuildProject p = new MSBuildProject(); |
||||
p.FileName = "C:\\projects\\test\\foo.csproj"; |
||||
WebReferencesProjectItem item = new WebReferencesProjectItem(p); |
||||
item.Include = "Web References\\"; |
||||
p.Items.Add(item); |
||||
|
||||
Assert.IsTrue(DirectoryNode.IsWebReferencesFolder(p, "C:\\projects\\test\\Web References")); |
||||
} |
||||
|
||||
[Test] |
||||
public void IsNotWebReferencesFolder1() |
||||
{ |
||||
MSBuildProject p = new MSBuildProject(); |
||||
p.FileName = "C:\\projects\\test\\foo.csproj"; |
||||
WebReferencesProjectItem item = new WebReferencesProjectItem(p); |
||||
item.Include = "Web References\\"; |
||||
p.Items.Add(item); |
||||
|
||||
Assert.IsFalse(DirectoryNode.IsWebReferencesFolder(p, "C:\\projects\\test\\foo")); |
||||
} |
||||
|
||||
} |
||||
} |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that a new web reference does not generate a WebReferencesProjectItem
|
||||
/// if the project already contains a web reference folder.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class ProjectHasExistingWebRefFolderTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
ProjectItem webReferencesProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.Language = "C#"; |
||||
WebReferencesProjectItem item = new WebReferencesProjectItem(project); |
||||
item.Include = "Web References\\"; |
||||
project.Items.Add(item); |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
webReferencesProjectItem = WebReferenceTestHelper.GetProjectItem(webReference.Items, "Web References\\", ItemType.WebReferences); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProjectItemContainsWebReferencesFolder() |
||||
{ |
||||
Assert.IsTrue(SD.WebReference.ProjectContainsWebReferencesFolder(project)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesProjectItemDoesNotExist() |
||||
{ |
||||
Assert.IsNull(webReferencesProjectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,94 @@
@@ -0,0 +1,94 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the WebReference.GetProjectItems method returns the
|
||||
/// correct project items from a project.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class ProjectWebReferenceItemsTests |
||||
{ |
||||
List<ProjectItem> projectItems; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.Language = "C#"; |
||||
project.FileName = "c:\\projects\\test\\foo.csproj"; |
||||
|
||||
// Web references item.
|
||||
WebReferencesProjectItem webReferencesItem = new WebReferencesProjectItem(project); |
||||
webReferencesItem.Include = "Web References\\"; |
||||
project.Items.Add(webReferencesItem); |
||||
|
||||
// Web reference url.
|
||||
WebReferenceUrl webReferenceUrl = new WebReferenceUrl(project); |
||||
webReferenceUrl.Include = "http://localhost/test.asmx"; |
||||
webReferenceUrl.UpdateFromURL = "http://localhost/test.asmx"; |
||||
webReferenceUrl.RelPath = "Web References\\localhost"; |
||||
project.Items.Add(webReferenceUrl); |
||||
|
||||
FileProjectItem discoFileItem = new FileProjectItem(project, ItemType.None); |
||||
discoFileItem.Include = "Web References\\localhost\\test.disco"; |
||||
project.Items.Add(discoFileItem); |
||||
|
||||
FileProjectItem wsdlFileItem = new FileProjectItem(project, ItemType.None); |
||||
wsdlFileItem.Include = "Web References\\localhost\\test.wsdl"; |
||||
project.Items.Add(wsdlFileItem); |
||||
|
||||
// Proxy
|
||||
FileProjectItem proxyItem = new FileProjectItem(project, ItemType.Compile); |
||||
proxyItem.Include = "Web References\\localhost\\Reference.cs"; |
||||
proxyItem.DependentUpon = "Reference.map"; |
||||
project.Items.Add(proxyItem); |
||||
|
||||
// Reference map.
|
||||
FileProjectItem mapItem = new FileProjectItem(project, ItemType.None); |
||||
mapItem.Include = "Web References\\localhost\\Reference.map"; |
||||
project.Items.Add(mapItem); |
||||
|
||||
// System.Web.Services reference.
|
||||
ReferenceProjectItem webServicesReferenceItem = new ReferenceProjectItem(project, "System.Web.Services"); |
||||
project.Items.Add(webServicesReferenceItem); |
||||
|
||||
projectItems = WebReference.GetFileItems(project, "localhost"); |
||||
} |
||||
|
||||
[Test] |
||||
public void ReferenceMapFileItemFound() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetProjectItem(projectItems, "Web References\\localhost\\Reference.map", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemFound() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetProjectItem(projectItems, "Web References\\localhost\\Reference.cs", ItemType.Compile)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WsdlFileItemFound() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetProjectItem(projectItems, "Web References\\localhost\\test.wsdl", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void DiscoFileItemFound() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetProjectItem(projectItems, "Web References\\localhost\\test.disco", ItemType.None)); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Non-standard web references folder name.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class RenamedWebReferencesFolderTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
MSBuildProject project; |
||||
WebReferenceUrl webReferenceUrl; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetupFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.FileName = "C:\\Projects\\Web.csproj"; |
||||
project.Language = "C#"; |
||||
WebReferencesProjectItem item = new WebReferencesProjectItem(project); |
||||
item.Include = "Foo\\"; |
||||
project.Items.Add(item); |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
webReferenceUrl = (WebReferenceUrl)WebReferenceTestHelper.GetProjectItem(webReference.Items, ItemType.WebReferenceUrl); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceRelativePath() |
||||
{ |
||||
Assert.AreEqual("Foo\\localhost", webReferenceUrl.RelPath); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesFolder() |
||||
{ |
||||
Assert.AreEqual("C:\\Projects\\Foo", webReference.WebReferencesDirectory); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that an exception is thrown if an unsupported project language
|
||||
/// is used with the web reference
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class UnsupportedLanguageTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
FileProjectItem proxyFileProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[Test] |
||||
[ExpectedException(typeof(NotImplementedException))] |
||||
public void NotSupportedProjectLanguage() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.Language = "Foo"; |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
|
||||
proxyFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\Reference.vb", ItemType.Compile); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that the generated filename ends with .vb if the project is
|
||||
/// a vb project.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class VBNetWebReferenceTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
FileProjectItem proxyFileProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.Language = "VBNet"; |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
|
||||
proxyFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\Reference.vb", ItemType.Compile); |
||||
} |
||||
|
||||
[Test] |
||||
public void VBProxyFileExists() |
||||
{ |
||||
Assert.IsNotNull(proxyFileProjectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the WebReferenceChanges class.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class WebReferenceChangesTest |
||||
{ |
||||
SD.WebReferenceChanges changes; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
// Set up the project.
|
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.Language = "C#"; |
||||
project.FileName = "c:\\projects\\test\\foo.csproj"; |
||||
|
||||
// Web references item.
|
||||
WebReferencesProjectItem webReferencesItem = new WebReferencesProjectItem(project); |
||||
webReferencesItem.Include = "Web References\\"; |
||||
project.Items.Add(webReferencesItem); |
||||
|
||||
// Web reference url.
|
||||
WebReferenceUrl webReferenceUrl = new WebReferenceUrl(project); |
||||
webReferenceUrl.Include = "http://localhost/test.asmx"; |
||||
webReferenceUrl.UpdateFromURL = "http://localhost/test.asmx"; |
||||
webReferenceUrl.RelPath = "Web References\\localhost"; |
||||
project.Items.Add(webReferenceUrl); |
||||
|
||||
FileProjectItem discoFileItem = new FileProjectItem(project, ItemType.None); |
||||
discoFileItem.Include = "Web References\\localhost\\test.disco"; |
||||
project.Items.Add(discoFileItem); |
||||
|
||||
FileProjectItem wsdlFileItem = new FileProjectItem(project, ItemType.None); |
||||
wsdlFileItem.Include = "Web References\\localhost\\test.wsdl"; |
||||
project.Items.Add(wsdlFileItem); |
||||
|
||||
// Proxy
|
||||
FileProjectItem proxyItem = new FileProjectItem(project, ItemType.Compile); |
||||
proxyItem.Include = "Web References\\localhost\\Reference.cs"; |
||||
proxyItem.DependentUpon = "Reference.map"; |
||||
project.Items.Add(proxyItem); |
||||
|
||||
// Reference map.
|
||||
FileProjectItem mapItem = new FileProjectItem(project, ItemType.None); |
||||
mapItem.Include = "Web References\\localhost\\Reference.map"; |
||||
project.Items.Add(mapItem); |
||||
|
||||
// System.Web.Services reference.
|
||||
ReferenceProjectItem webServicesReferenceItem = new ReferenceProjectItem(project, "System.Web.Services"); |
||||
project.Items.Add(webServicesReferenceItem); |
||||
|
||||
// Set up the web reference.
|
||||
DiscoveryClientProtocol protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = "http://localhost/new.asmx"; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/new.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
SD.WebReference webReference = new SD.WebReference(project, "http://localhost/new.asmx", "localhost", "ProxyNamespace", protocol); |
||||
changes = webReference.GetChanges(project); |
||||
} |
||||
|
||||
[Test] |
||||
public void HasChanged() |
||||
{ |
||||
Assert.IsTrue(changes.Changed); |
||||
} |
||||
|
||||
[Test] |
||||
public void HasNewWsdlFile() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetFileProjectItem(changes.NewItems, "Web References\\localhost\\new.wsdl", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void HasNewDiscoFile() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetFileProjectItem(changes.NewItems, "Web References\\localhost\\new.disco", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void OldWsdlFileRemoved() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetFileProjectItem(changes.ItemsRemoved, "Web References\\localhost\\test.wsdl", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void OldDiscoFileRemoved() |
||||
{ |
||||
Assert.IsNotNull(WebReferenceTestHelper.GetFileProjectItem(changes.ItemsRemoved, "Web References\\localhost\\test.disco", ItemType.None)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceUrlNotConsideredNewItem() |
||||
{ |
||||
Assert.IsNull(WebReferenceTestHelper.GetProjectItem(changes.NewItems, ItemType.WebReferenceUrl)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceUrlNotConsideredRemoved() |
||||
{ |
||||
Assert.IsNull(WebReferenceTestHelper.GetProjectItem(changes.ItemsRemoved, ItemType.WebReferenceUrl)); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.Core; |
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Checks that the web reference folder name is changed if
|
||||
/// one exists with the same name.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class WebReferenceFolderAlreadyExistsTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
MSBuildProject project; |
||||
WebReferenceUrl webReferenceUrl; |
||||
FileProjectItem discoFileProjectItem; |
||||
FileProjectItem referenceMapFileProjectItem; |
||||
FileProjectItem wsdlFileProjectItem; |
||||
FileProjectItem proxyFileProjectItem; |
||||
|
||||
string oldName = "localhost"; |
||||
string name = "localhost1"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetupFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.FileName = "C:\\Projects\\Web.csproj"; |
||||
project.Language = "C#"; |
||||
WebReferencesProjectItem item = new WebReferencesProjectItem(project); |
||||
item.Include = "Web References\\"; |
||||
project.Items.Add(item); |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, oldName, proxyNamespace, protocol); |
||||
|
||||
// Force generation of items.
|
||||
List<ProjectItem> items = webReference.Items; |
||||
|
||||
// Change the web reference name.
|
||||
webReference.Name = name; |
||||
webReferenceUrl = (WebReferenceUrl)WebReferenceTestHelper.GetProjectItem(webReference.Items, ItemType.WebReferenceUrl); |
||||
|
||||
discoFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost1\\test.disco", ItemType.None); |
||||
referenceMapFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost1\\Reference.map", ItemType.None); |
||||
wsdlFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost1\\test.wsdl", ItemType.None); |
||||
proxyFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost1\\Reference.cs", ItemType.Compile); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceRelativePath() |
||||
{ |
||||
Assert.AreEqual("Web References\\localhost1", webReferenceUrl.RelPath); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceName() |
||||
{ |
||||
Assert.AreEqual(name, webReference.Name); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceDirectory() |
||||
{ |
||||
Assert.AreEqual(Path.Combine(project.Directory, "Web References\\localhost1"), webReference.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileName() |
||||
{ |
||||
Assert.AreEqual("C:\\Projects\\Web References\\localhost1\\Reference.cs", webReference.WebProxyFileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void DiscoFileItemExists() |
||||
{ |
||||
Assert.IsNotNull(discoFileProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void WsdlFileItemExists() |
||||
{ |
||||
Assert.IsNotNull(wsdlFileProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void ReferenceMapFileItemExists() |
||||
{ |
||||
Assert.IsNotNull(referenceMapFileProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemExists() |
||||
{ |
||||
Assert.IsNotNull(proxyFileProjectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the generated items are not changed if the items have been
|
||||
/// added to the project. Previously a WebReferencesProjectItem would be
|
||||
/// missing after the items have been added to the project.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class WebReferenceProjectItemsCachedTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
WebReferencesProjectItem webReferencesProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.FileName = "C:\\projects\\test\\foo.csproj"; |
||||
project.Language = "C#"; |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
|
||||
foreach (ProjectItem item in webReference.Items) { |
||||
project.Items.Add(item); |
||||
} |
||||
webReferencesProjectItem = webReference.WebReferencesProjectItem; |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesProjectItemExists() |
||||
{ |
||||
Assert.IsNotNull(webReferencesProjectItem); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,209 @@
@@ -0,0 +1,209 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests the generated project items for a web reference.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class WebReferenceProjectItemsTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
WebReferenceUrl webReferenceUrl; |
||||
FileProjectItem discoFileProjectItem; |
||||
FileProjectItem referenceMapFileProjectItem; |
||||
FileProjectItem wsdlFileProjectItem; |
||||
FileProjectItem proxyFileProjectItem; |
||||
WebReferencesProjectItem webReferencesProjectItem; |
||||
ReferenceProjectItem webServicesReferenceProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.FileName = "C:\\projects\\test\\foo.csproj"; |
||||
project.Language = "C#"; |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
|
||||
webReferenceUrl = webReference.WebReferenceUrl; |
||||
discoFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\test.disco", ItemType.None); |
||||
referenceMapFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\Reference.map", ItemType.None); |
||||
wsdlFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\test.wsdl", ItemType.None); |
||||
proxyFileProjectItem = WebReferenceTestHelper.GetFileProjectItem(webReference.Items, "Web References\\localhost\\Reference.cs", ItemType.Compile); |
||||
webReferencesProjectItem = (WebReferencesProjectItem)WebReferenceTestHelper.GetProjectItem(webReference.Items, "Web References\\", ItemType.WebReferences); |
||||
webServicesReferenceProjectItem = (ReferenceProjectItem)WebReferenceTestHelper.GetProjectItem(webReference.Items, ItemType.Reference); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceInProjectItems() |
||||
{ |
||||
Assert.IsNotNull((WebReferenceUrl)WebReferenceTestHelper.GetProjectItem(webReference.Items, ItemType.WebReferenceUrl)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceInclude() |
||||
{ |
||||
Assert.AreEqual(updateFromUrl, webReferenceUrl.Include); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceHasProject() |
||||
{ |
||||
Assert.IsNotNull(webReferenceUrl.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceHasWebReferencesProjectItem() |
||||
{ |
||||
Assert.IsNotNull(webReference.WebReferencesProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesDirectory() |
||||
{ |
||||
Assert.AreEqual("C:\\projects\\test\\Web References", webReferencesProjectItem.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceUpdateFromUrl() |
||||
{ |
||||
Assert.AreEqual(updateFromUrl, webReferenceUrl.UpdateFromURL); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceUrlBehaviour() |
||||
{ |
||||
Assert.AreEqual("Static", webReferenceUrl.UrlBehavior); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceRelPath() |
||||
{ |
||||
Assert.AreEqual("Web References\\localhost", webReferenceUrl.RelPath); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferenceDirectory() |
||||
{ |
||||
Assert.AreEqual("C:\\projects\\test\\Web References\\localhost", webReference.Directory); |
||||
} |
||||
|
||||
[Test] |
||||
public void DiscoFileItemExists() |
||||
{ |
||||
Assert.IsNotNull(discoFileProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void WsdlFileItemHasProject() |
||||
{ |
||||
Assert.IsNotNull(wsdlFileProjectItem.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void ReferenceMapFileItemGeneratorProperty() |
||||
{ |
||||
Assert.AreEqual("MSDiscoCodeGenerator", referenceMapFileProjectItem.Properties["Generator"]); |
||||
} |
||||
|
||||
[Test] |
||||
public void ReferenceMapFileItemLastGenOutputProperty() |
||||
{ |
||||
Assert.AreEqual("Reference.cs", referenceMapFileProjectItem.Properties["LastGenOutput"]); |
||||
} |
||||
|
||||
[Test] |
||||
public void ReferenceMapFileItemHasProject() |
||||
{ |
||||
Assert.IsNotNull(referenceMapFileProjectItem.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemAutoGenProperty() |
||||
{ |
||||
Assert.AreEqual("True", proxyFileProjectItem.Properties["AutoGen"]); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemDesignTimeProperty() |
||||
{ |
||||
Assert.AreEqual("True", proxyFileProjectItem.Properties["DesignTime"]); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileName() |
||||
{ |
||||
Assert.AreEqual("C:\\projects\\test\\Web References\\localhost\\Reference.cs", webReference.WebProxyFileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemDependentUpon() |
||||
{ |
||||
Assert.AreEqual("Reference.map", proxyFileProjectItem.DependentUpon); |
||||
} |
||||
|
||||
[Test] |
||||
public void ProxyFileItemHasProject() |
||||
{ |
||||
Assert.IsNotNull(proxyFileProjectItem.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesItemHasProject() |
||||
{ |
||||
Assert.IsNotNull(webReferencesProjectItem.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceItemHasProject() |
||||
{ |
||||
Assert.IsNotNull(webServicesReferenceProjectItem.Project); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceItemInclude() |
||||
{ |
||||
Assert.AreEqual("System.Web.Services", webServicesReferenceProjectItem.Include); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebReferencesFolder() |
||||
{ |
||||
Assert.AreEqual("C:\\projects\\test\\Web References", webReference.WebReferencesDirectory); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,85 @@
@@ -0,0 +1,85 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Helper methods used when testing web references
|
||||
/// </summary>
|
||||
public class WebReferenceTestHelper |
||||
{ |
||||
WebReferenceTestHelper() |
||||
{ |
||||
} |
||||
|
||||
public static ProjectItem GetProjectItem(List<ProjectItem> items, string include, ItemType itemType) { |
||||
foreach (ProjectItem item in items) { |
||||
if (item.ItemType == itemType) { |
||||
if (item.Include == include) { |
||||
return item; |
||||
} |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static FileProjectItem GetFileProjectItem(List<ProjectItem> items, string include, ItemType itemType) { |
||||
foreach (ProjectItem item in items) { |
||||
if (item.ItemType == itemType) { |
||||
if (item.Include == include) { |
||||
return (FileProjectItem)item; |
||||
} |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static ProjectItem GetProjectItem(List<ProjectItem> items, ItemType itemType) |
||||
{ |
||||
foreach (ProjectItem item in items) { |
||||
if (item.ItemType == itemType) { |
||||
return item; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static WebReferencesFolderNode GetWebReferencesFolderNode(ProjectNode projectNode) |
||||
{ |
||||
foreach (AbstractProjectBrowserTreeNode node in projectNode.Nodes) { |
||||
if (node is WebReferencesFolderNode) { |
||||
return (WebReferencesFolderNode)node; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static WebReferenceNode GetWebReferenceNode(WebReferencesFolderNode webReferencesFolderNode) { |
||||
foreach (AbstractProjectBrowserTreeNode node in webReferencesFolderNode.Nodes) { |
||||
if (node is WebReferenceNode) { |
||||
return (WebReferenceNode)node; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
public static FileNode GetFileNode(AbstractProjectBrowserTreeNode parent, string fileName) |
||||
{ |
||||
foreach (AbstractProjectBrowserTreeNode node in parent.Nodes) { |
||||
FileNode fileNode = node as FileNode; |
||||
if (fileNode != null && fileNode.FileName == fileName) { |
||||
return fileNode; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,59 @@
@@ -0,0 +1,59 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
[TestFixture] |
||||
public class WebReferenceUrlTests |
||||
{ |
||||
[Test] |
||||
public void FileName() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.FileName = "c:\\projects\\test\\foo.csproj"; |
||||
WebReferenceUrl url = new WebReferenceUrl(project); |
||||
url.RelPath = "Web References\\localhost"; |
||||
url.Include = "http://localhost/test.asmx"; |
||||
|
||||
Assert.AreEqual(Path.Combine(project.Directory, url.RelPath), url.FileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void RelPathEndsWithSlash() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.FileName = "c:\\projects\\test\\foo.csproj"; |
||||
WebReferenceUrl url = new WebReferenceUrl(project); |
||||
url.RelPath = "Web References\\localhost\\"; |
||||
url.Include = "http://localhost/test.asmx"; |
||||
|
||||
Assert.AreEqual(Path.Combine(project.Directory, url.RelPath.Trim('\\')), url.FileName); |
||||
} |
||||
|
||||
[Test] |
||||
public void ChangeFileName() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
project.FileName = "c:\\projects\\test\\foo.csproj"; |
||||
WebReferenceUrl url = new WebReferenceUrl(project); |
||||
url.RelPath = "Web References\\localhost"; |
||||
url.Include = "http://localhost/test.asmx"; |
||||
|
||||
// Change filename - simulate a folder rename.
|
||||
url.FileName = "c:\\projects\\test\\Web References\\mywebservice"; |
||||
|
||||
Assert.AreEqual("http://localhost/test.asmx", url.Include); |
||||
Assert.AreEqual("Web References\\mywebservice", url.RelPath); |
||||
} |
||||
|
||||
} |
||||
} |
@ -0,0 +1,98 @@
@@ -0,0 +1,98 @@
|
||||
// <file>
|
||||
// <copyright see="prj:///doc/copyright.txt"/>
|
||||
// <license see="prj:///doc/license.txt"/>
|
||||
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
|
||||
// <version>$Revision$</version>
|
||||
// </file>
|
||||
|
||||
using ICSharpCode.SharpDevelop; |
||||
using SD = ICSharpCode.SharpDevelop.Gui; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using System; |
||||
using System.IO; |
||||
using System.Collections.Generic; |
||||
using System.Web.Services.Description; |
||||
using System.Web.Services.Discovery; |
||||
|
||||
namespace ICSharpCode.SharpDevelop.Tests.WebReferences |
||||
{ |
||||
/// <summary>
|
||||
/// Tests that the generated project items for a web reference do not include
|
||||
/// a reference to System.Web.Services if one already exists in the project.
|
||||
/// </summary>
|
||||
[TestFixture] |
||||
public class WebServicesReferenceExistsTest |
||||
{ |
||||
SD.WebReference webReference; |
||||
DiscoveryClientProtocol protocol; |
||||
ReferenceProjectItem webServicesReferenceProjectItem; |
||||
MSBuildProject project; |
||||
|
||||
string name = "localhost"; |
||||
string proxyNamespace = "WebReferenceNamespace"; |
||||
string updateFromUrl = "http://localhost/test.asmx"; |
||||
|
||||
[TestFixtureSetUp] |
||||
public void SetUpFixture() |
||||
{ |
||||
project = new MSBuildProject(); |
||||
project.FileName = "C:\\projects\\test\\foo.csproj"; |
||||
project.Language = "C#"; |
||||
|
||||
ReferenceProjectItem referenceItem = new ReferenceProjectItem(project, "System.Web.Services"); |
||||
project.Items.Add(referenceItem); |
||||
|
||||
protocol = new DiscoveryClientProtocol(); |
||||
DiscoveryDocumentReference discoveryRef = new DiscoveryDocumentReference(); |
||||
discoveryRef.Url = updateFromUrl; |
||||
protocol.References.Add(discoveryRef); |
||||
|
||||
ContractReference contractRef = new ContractReference(); |
||||
contractRef.Url = "http://localhost/test.asmx?wsdl"; |
||||
contractRef.ClientProtocol = new DiscoveryClientProtocol(); |
||||
ServiceDescription desc = new ServiceDescription(); |
||||
contractRef.ClientProtocol.Documents.Add(contractRef.Url, desc); |
||||
protocol.References.Add(contractRef); |
||||
|
||||
webReference = new SD.WebReference(project, updateFromUrl, name, proxyNamespace, protocol); |
||||
webServicesReferenceProjectItem = (ReferenceProjectItem)WebReferenceTestHelper.GetProjectItem(webReference.Items, ItemType.Reference); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceItemDoesNotExist() |
||||
{ |
||||
Assert.IsNull(webServicesReferenceProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceDoesNotExist1() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
ReferenceProjectItem referenceItem = new ReferenceProjectItem(project, "System.Windows.Forms"); |
||||
project.Items.Add(referenceItem); |
||||
|
||||
Assert.IsFalse(SD.WebReference.ProjectContainsWebServicesReference(project)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceExists1() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
ReferenceProjectItem referenceItem = new ReferenceProjectItem(project, "system.web.services"); |
||||
project.Items.Add(referenceItem); |
||||
|
||||
Assert.IsTrue(SD.WebReference.ProjectContainsWebServicesReference(project)); |
||||
} |
||||
|
||||
[Test] |
||||
public void WebServicesReferenceExists2() |
||||
{ |
||||
MSBuildProject project = new MSBuildProject(); |
||||
ReferenceProjectItem referenceItem = new ReferenceProjectItem(project, "System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); |
||||
project.Items.Add(referenceItem); |
||||
|
||||
Assert.IsTrue(SD.WebReference.ProjectContainsWebServicesReference(project)); |
||||
} |
||||
} |
||||
} |
Binary file not shown.
Loading…
Reference in new issue