Imported Upstream version 3.6.0

Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
This commit is contained in:
Jo Shields
2014-08-13 10:39:27 +01:00
commit a575963da9
50588 changed files with 8155799 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
2008-08-09 Gert Driesen <drieseng@users.sourceforge.net>
* MetaData.cs: Fixed argument names to match MS.
* SdlChannelSink.cs: Fixed argument names to match MS.
* SUDSGeneratorException.cs: Marked Serializable on 2.0 profile, and
added deserialization ctor.
* SUDSParserException.cs: Marked Serializable on 2.0 profile, and
added deserialization ctor.
2006-03-05 Andrew Skiba <andrews@mainsoft.com>
* SdlChannelSink.cs: : exceptions propagating
incompatible with dotnet. Patch by roeie@mainsoft.com
2005-11-06 Svetlana Zholkovsky <svetlanaz@mainsoft.com>
* MetaData.cs: only TARGET_JVM changes
2005-01-14 Lluis Sanchez Gual <lluis@novell.com>
* MetaDataCodeGenerator.cs: Fix warning.
2004-11-30 Lluis Sanchez Gual <lluis@ximian.com>
* MetaDataExporter.cs: Addded EnumToUnderlying method to get the underlying
type of an enum. This fixes bug #69753.
2004-05-13 Lluis Sanchez Gual <lluis@ximian.com>
* SUDSGeneratorException.cs, SUDSParserException.cs: Removed unneeded
methods and added internal constructor.
* SdlChannelSink.cs: Fixed public constructor.
* SdlChannelSinkProvider.cs: Added missing constructor.
2003-12-10 Lluis Sanchez Gual <lluis@ximian.com>
* MetaDataExporter.cs: Several fixes.
* SdlChannelSink.cs: Implemented.
* SdlChannelSinkProvider.cs: Implemented.
2003-12-05 Lluis Sanchez Gual <lluis@ximian.com>
* MetaData.cs: Added check of compilation results in
ConvertCodeSourceFileToAssemblyFile().
* MetaDataCodeGenerator.cs, MetaDataExporter.cs: Many fixes.
Added support for delegates, base classes, implemented interfaces,
methods, properties, ISerializable, enums, etc.
2003-12-03 Lluis Sanchez Gual <lluis@ximian.com>
* MetaData.cs: Implemented most of methods.
* ServiceType.cs: Implemented.
* MetaDataCodeGenerator.cs: Added. Implements code generation functionality.
* MetaDataExporter.cs: Added. Implements support methods for generating
schemas for MetaData.

View File

@@ -0,0 +1,207 @@
//
// System.Runtime.Remoting.MetadataServices.MetaData
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
// Lluis Sanchez Gual (lluis@ximian.com)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System.Collections;
using System.IO;
using System.Text;
using System.Xml;
using System.Reflection;
using System.Net;
#if !TARGET_JVM
using System.CodeDom.Compiler;
using Microsoft.CSharp;
#endif
namespace System.Runtime.Remoting.MetadataServices
{
public class MetaData
{
internal const string WsdlNamespace = "http://schemas.xmlsoap.org/wsdl/";
internal const string XmlnsNamespace = "http://www.w3.org/2000/xmlns/";
internal const string SchemaNamespace = "http://www.w3.org/2001/XMLSchema";
internal const string SchemaInstanceNamespace = "http://www.w3.org/2001/XMLSchema-instance";
internal const string SudsNamespace = "http://www.w3.org/2000/wsdl/suds";
internal const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/";
internal const string SoapNamespace = "http://schemas.xmlsoap.org/wsdl/soap/";
public MetaData()
{
}
#if !TARGET_JVM
[MonoTODO ("strong name")]
public static void ConvertCodeSourceFileToAssemblyFile (
string codePath,
string assemblyPath,
string strongNameFilename)
{
CSharpCodeProvider prov = new CSharpCodeProvider ();
ICodeCompiler comp = prov.CreateCompiler ();
CompilerParameters pars = new CompilerParameters ();
pars.OutputAssembly = assemblyPath;
CompilerResults cr = comp.CompileAssemblyFromFile(pars, codePath);
CheckResult (cr);
}
[MonoTODO ("strong name")]
public static void ConvertCodeSourceStreamToAssemblyFile (
ArrayList outCodeStreamList,
string assemblyPath,
string strongNameFilename)
{
CSharpCodeProvider prov = new CSharpCodeProvider ();
ICodeCompiler comp = prov.CreateCompiler ();
CompilerParameters pars = new CompilerParameters ();
pars.OutputAssembly = assemblyPath;
CompilerResults cr = comp.CompileAssemblyFromFileBatch (pars, (string[]) outCodeStreamList.ToArray(typeof(string)));
CheckResult (cr);
}
static void CheckResult (CompilerResults cr)
{
if (cr.Errors.Count > 0)
{
foreach (string s in cr.Output)
Console.WriteLine (s);
string errs = "";
foreach (CompilerError error in cr.Errors)
if (error.FileName != "")
errs += error.ToString () + "\n";
throw new Exception ("There where errors during compilation of the assembly:\n" + errs);
}
}
public static void ConvertSchemaStreamToCodeSourceStream (
bool clientProxy,
string outputDirectory,
Stream inputStream,
ArrayList outCodeStreamList)
{
ConvertSchemaStreamToCodeSourceStream (clientProxy, outputDirectory, inputStream, outCodeStreamList, null, null);
}
public static void ConvertSchemaStreamToCodeSourceStream (
bool clientProxy,
string outputDirectory,
Stream inputStream,
ArrayList outCodeStreamList,
string proxyUrl)
{
ConvertSchemaStreamToCodeSourceStream (clientProxy, outputDirectory, inputStream, outCodeStreamList, proxyUrl, null);
}
public static void ConvertSchemaStreamToCodeSourceStream (
bool clientProxy,
string outputDirectory,
Stream inputStream,
ArrayList outCodeStreamList,
string proxyUrl,
string proxyNamespace)
{
MetaDataCodeGenerator cg = new MetaDataCodeGenerator ();
MemoryStream memStream = new MemoryStream ();
CopyStream (inputStream, memStream);
memStream.Position = 0;
cg.GenerateCode (clientProxy, outputDirectory, memStream, outCodeStreamList, proxyUrl, proxyNamespace);
}
#endif
public static void ConvertTypesToSchemaToFile (ServiceType [] types, SdlType sdlType, string path)
{
FileStream fs = new FileStream (path, FileMode.Create, FileAccess.Write);
ConvertTypesToSchemaToStream (types, sdlType, fs);
fs.Close ();
}
public static void ConvertTypesToSchemaToFile (Type [] types, SdlType sdlType, string path)
{
FileStream fs = new FileStream (path, FileMode.Create, FileAccess.Write);
ConvertTypesToSchemaToStream (types, sdlType, fs);
fs.Close ();
}
public static void ConvertTypesToSchemaToStream (Type [] types, SdlType sdlType, Stream outputStream)
{
ServiceType[] st = new ServiceType [types.Length];
for (int n=0; n<types.Length; n++)
st [n] = new ServiceType (types[n]);
ConvertTypesToSchemaToStream (st, sdlType, outputStream);
}
public static void ConvertTypesToSchemaToStream (ServiceType [] serviceTypes, SdlType sdlType, Stream outputStream)
{
MetaDataExporter exporter = new MetaDataExporter ();
MemoryStream memStream = new MemoryStream ();
StreamWriter sw = new StreamWriter (memStream);
XmlTextWriter tw = new XmlTextWriter (sw);
exporter.ExportTypes (serviceTypes, sdlType, tw);
tw.Flush ();
memStream.Position = 0;
CopyStream (memStream, outputStream);
}
public static void RetrieveSchemaFromUrlToFile (string url, string path)
{
FileStream fs = new FileStream (path, FileMode.Create, FileAccess.Write);
RetrieveSchemaFromUrlToStream (url, fs);
fs.Close ();
}
public static void RetrieveSchemaFromUrlToStream (string url, Stream outputStream)
{
WebRequest req = WebRequest.Create (url);
Stream st = req.GetResponse().GetResponseStream();
CopyStream (st, outputStream);
st.Close ();
}
public static void SaveStreamToFile (Stream inputStream, string path)
{
FileStream fs = new FileStream (path, FileMode.Create, FileAccess.Write);
CopyStream (inputStream, fs);
fs.Close ();
}
static void CopyStream (Stream inputStream, Stream outputStream)
{
byte[] buffer = new byte [1024*5];
int nr = 0;
while ((nr = inputStream.Read (buffer, 0, buffer.Length)) > 0)
outputStream.Write (buffer, 0, nr);
}
}
}

View File

@@ -0,0 +1,54 @@
//
// System.Runtime.Remoting.MetadataServices.SUDSGeneratorException
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
#if NET_2_0
using System;
using System.Runtime.Serialization;
#endif
namespace System.Runtime.Remoting.MetadataServices
{
#if NET_2_0
[Serializable]
#endif
public class SUDSGeneratorException : Exception
{
internal SUDSGeneratorException ()
{
}
#if NET_2_0
protected SUDSGeneratorException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
#endif
}
}

View File

@@ -0,0 +1,54 @@
//
// System.Runtime.Remoting.MetadataServices.SUDSParserException
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
#if NET_2_0
using System;
using System.Runtime.Serialization;
#endif
namespace System.Runtime.Remoting.MetadataServices
{
#if NET_2_0
[Serializable]
#endif
public class SUDSParserException : Exception
{
internal SUDSParserException ()
{
}
#if NET_2_0
protected SUDSParserException (SerializationInfo info, StreamingContext context)
: base (info, context)
{
}
#endif
}
}

View File

@@ -0,0 +1,120 @@
//
// System.Runtime.Remoting.MetadataServices.SdlChannelSink
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Messaging;
using System.IO;
using System.Collections;
using System.Text;
namespace System.Runtime.Remoting.MetadataServices
{
public class SdlChannelSink : IServerChannelSink, IChannelSinkBase
{
IServerChannelSink _next;
IChannelReceiver _channel;
public SdlChannelSink (IChannelReceiver receiver, IServerChannelSink nextSink)
{
_next = nextSink;
_channel = receiver;
}
public IServerChannelSink NextChannelSink
{
get { return _next; }
}
public IDictionary Properties
{
get { return null; }
}
public void AsyncProcessResponse (IServerResponseChannelSinkStack sinkStack,
object state,
IMessage msg,
ITransportHeaders headers,
Stream stream)
{
throw new NotSupportedException (); // Never called
}
public Stream GetResponseStream (IServerResponseChannelSinkStack sinkStack,
object state,
IMessage msg,
ITransportHeaders headers)
{
return null;
}
public ServerProcessing ProcessMessage (IServerChannelSinkStack sinkStack,
IMessage requestMsg,
ITransportHeaders requestHeaders,
Stream requestStream,
out IMessage responseMsg,
out ITransportHeaders responseHeaders,
out Stream responseStream)
{
responseMsg = null;
responseStream = null;
responseHeaders = null;
string verb = requestHeaders [CommonTransportKeys.RequestVerb] as string;
string uri = (string) requestHeaders [CommonTransportKeys.RequestUri];
if (verb == "GET" && uri.EndsWith ("?wsdl"))
{
try
{
uri = uri.Substring (0, uri.Length - 5);
Type type = RemotingServices.GetServerTypeForUri (uri);
string url = _channel.GetUrlsForUri (uri)[0];
ServiceType st = new ServiceType (type, url);
responseStream = new MemoryStream ();
MetaData.ConvertTypesToSchemaToStream (new ServiceType[] {st}, SdlType.Wsdl, responseStream);
responseStream.Position = 0;
responseMsg = null;
responseHeaders = new TransportHeaders ();
responseHeaders [CommonTransportKeys.ContentType] = "text/xml";
}
catch (Exception ex)
{
responseHeaders = new TransportHeaders ();
responseHeaders [CommonTransportKeys.HttpStatusCode] = "400";
responseStream = new MemoryStream (Encoding.UTF8.GetBytes (ex.ToString ()));
}
return ServerProcessing.Complete;
}
else
return _next.ProcessMessage (sinkStack, requestMsg, requestHeaders, requestStream, out responseMsg, out responseHeaders, out responseStream);
}
}
}

View File

@@ -0,0 +1,64 @@
//
// System.Runtime.Remoting.MetadataServices.SdlChannelSinkProvider
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System.Runtime.Remoting.Channels;
using System.Collections;
namespace System.Runtime.Remoting.MetadataServices
{
public class SdlChannelSinkProvider : IServerChannelSinkProvider
{
IServerChannelSinkProvider _next;
public SdlChannelSinkProvider()
{
}
public SdlChannelSinkProvider (IDictionary properties, ICollection providerData)
{
}
public IServerChannelSinkProvider Next
{
get { return _next; }
set { _next = value; }
}
public IServerChannelSink CreateSink (IChannelReceiver channel)
{
IServerChannelSink next = (_next != null) ? _next.CreateSink (channel) : null;
return new SdlChannelSink (channel, next);
}
public void GetChannelData (IChannelDataStore localChannelData)
{
}
}
}

View File

@@ -0,0 +1,39 @@
//
// System.Runtime.Remoting.MetadataServices.SdlType
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
namespace System.Runtime.Remoting.MetadataServices
{
[Serializable]
public enum SdlType
{
Sdl,
Wsdl,
}
}

View File

@@ -0,0 +1,60 @@
//
// System.Runtime.Remoting.MetadataServices.ServiceType
//
// Authors:
// Martin Willemoes Hansen (mwh@sysrq.dk)
// Lluis Sanchez Gual (lluis@ximian.com)
//
// (C) 2003 Martin Willemoes Hansen
//
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
namespace System.Runtime.Remoting.MetadataServices
{
public class ServiceType
{
Type _type;
string _url;
public ServiceType (Type type)
{
_type = type;
}
public ServiceType (Type type, string url)
{
_type = type;
_url = url;
}
public Type ObjectType
{
get { return _type; }
}
public string Url
{
get { return _url; }
}
}
}