Imported Upstream version 4.0.3.13

Former-commit-id: 4f1f69b42e04def9a697c2550b23b9cae645ef29
This commit is contained in:
Xamarin Public Jenkins 2015-07-20 03:39:00 -04:00
parent 4cee7df5e0
commit 2c051c3d51
138 changed files with 3829 additions and 206 deletions

View File

@ -85,7 +85,7 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(srcdir)/config.h.in mkinstalldirs \ $(srcdir)/config.h.in mkinstalldirs \
$(srcdir)/mono-core.spec.in $(srcdir)/mono-uninstalled.pc.in \ $(srcdir)/mono-core.spec.in $(srcdir)/mono-uninstalled.pc.in \
AUTHORS COPYING.LIB ChangeLog NEWS compile config.guess \ AUTHORS COPYING.LIB ChangeLog NEWS compile config.guess \
config.rpath config.sub depcomp install-sh missing ltmain.sh config.rpath config.sub install-sh missing ltmain.sh
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \

View File

@ -1 +1 @@
0d2865058e8904b609431e735d1a6a58dd269476 d8620aa82da0a0b38b32fce2756391f51b4f0e09

View File

@ -1 +1 @@
e26c88521f1fb3392393ffb4a102d2f9441ab54f eb6b931cec597bff05367555adbfdfd531547514

View File

@ -122,7 +122,7 @@ mono_code_manager_invalidate (MonoCodeManager *cman)
<div class="api-entry">mono_code_manager_new_dynamic</div> <div class="api-entry">mono_code_manager_new_dynamic</div>
<div class="prototype">MonoCodeManager* <div class="prototype">MonoCodeManager*
mono_code_manager_new_dynamic (int bind_size) mono_code_manager_new_dynamic (void)
</div> </div>
<p /> <p />
@ -134,8 +134,6 @@ mono_code_manager_new_dynamic (int bind_size)
Creates a new code manager suitable for holding native code that can be Creates a new code manager suitable for holding native code that can be
used for single or small methods that need to be deallocated independently used for single or small methods that need to be deallocated independently
of other native code. of other native code.
BIND_SIZE is the amount of memory reserved for storing thunks. If its 0,
the default size is used.
</div> <a name="api:mono_code_manager_new"></a> </div> <a name="api:mono_code_manager_new"></a>

View File

@ -476,6 +476,33 @@ mono_loader_lock (void)
<div class="prototype">Prototype: mono_gc_enable</div> <div class="prototype">Prototype: mono_gc_enable</div>
<p /> <p />
</div> <a name="api:mono_gc_is_finalizer_thread"></a>
<div class="api">
<div class="api-entry">mono_gc_is_finalizer_thread</div>
<div class="prototype">gboolean
mono_gc_is_finalizer_thread (MonoThread *thread)
</div>
<p />
<b>Parameters</b>
<blockquote><dt><i>thread:</i></dt><dd> the thread to test.</dd></blockquote>
<b>Remarks</b>
<p />
In Mono objects are finalized asynchronously on a separate thread.
This routine tests whether the <i>thread</i> argument represents the
finalization thread.
<p />
Returns true if <i>thread</i> is the finalization thread.
</div> <a name="api:mono_gc_out_of_memory"></a>
<div class="api">
<div class="api-entry">mono_gc_out_of_memory</div>
<div class="prototype">Prototype: mono_gc_out_of_memory</div>
<p />
</div> <a name="api:mono_gc_start_world"></a> </div> <a name="api:mono_gc_start_world"></a>
<div class="api"> <div class="api">
<div class="api-entry">mono_gc_start_world</div> <div class="api-entry">mono_gc_start_world</div>
@ -497,6 +524,13 @@ mono_loader_lock (void)
<div class="prototype">Prototype: mono_gc_alloc_fixed</div> <div class="prototype">Prototype: mono_gc_alloc_fixed</div>
<p /> <p />
</div> <a name="api:mono_gc_enable_events"></a>
<div class="api">
<div class="api-entry">mono_gc_enable_events</div>
<div class="prototype">Prototype: mono_gc_enable_events</div>
<p />
</div> <a name="api:mono_gc_free_fixed"></a> </div> <a name="api:mono_gc_free_fixed"></a>
<div class="api"> <div class="api">
<div class="api-entry">mono_gc_free_fixed</div> <div class="api-entry">mono_gc_free_fixed</div>

View File

@ -111,7 +111,7 @@ mono_print_method_from_ip (void *ip)
This prints the name of the method at address <i>ip</i> in the standard This prints the name of the method at address <i>ip</i> in the standard
output. Unlike mono_pmip which returns a string, this routine output. Unlike mono_pmip which returns a string, this routine
prints the value on the standard output. prints the value on the standard output.
</div> <a name="api:mono_print_thread_dump"></a> </div> <a name="api:mono_print_thread_dump"></a>
<div class="api"> <div class="api">

View File

@ -108,6 +108,7 @@ MonoObject* <a href="#api:mono_object_isinst">mono_object_isinst</a>
gpointer <a href="#api:mono_object_unbox">mono_object_unbox</a> (MonoObject *obj); gpointer <a href="#api:mono_object_unbox">mono_object_unbox</a> (MonoObject *obj);
MonoObject* <a href="#api:mono_object_castclass_mbyref">mono_object_castclass_mbyref</a> (MonoObject *obj, MonoObject* <a href="#api:mono_object_castclass_mbyref">mono_object_castclass_mbyref</a> (MonoObject *obj,
MonoClass *klass); MonoClass *klass);
<a href="#api:mono_object_is_alive"></a>
guint <a href="#api:mono_object_get_size">mono_object_get_size</a> (MonoObject* o); guint <a href="#api:mono_object_get_size">mono_object_get_size</a> (MonoObject* o);
MonoObject* <a href="#api:mono_value_box">mono_value_box</a> (MonoDomain *domain, MonoObject* <a href="#api:mono_value_box">mono_value_box</a> (MonoDomain *domain,
MonoClass *class, MonoClass *class,
@ -422,6 +423,13 @@ mono_object_castclass_mbyref (MonoObject *obj, MonoClass *klass)
<blockquote> <i>obj</i> if <i>obj</i> is derived from <i>klass</i>, throws an exception otherwise <blockquote> <i>obj</i> if <i>obj</i> is derived from <i>klass</i>, throws an exception otherwise
</blockquote> </blockquote>
</div> <a name="api:mono_object_is_alive"></a>
<div class="api">
<div class="api-entry">mono_object_is_alive</div>
<div class="prototype">Prototype: mono_object_is_alive</div>
<p />
</div> <a name="api:mono_object_get_size"></a> </div> <a name="api:mono_object_get_size"></a>
<div class="api"> <div class="api">
<div class="api-entry">mono_object_get_size</div> <div class="api-entry">mono_object_get_size</div>

View File

@ -104,12 +104,12 @@
<div class="api-entry">mono_profiler_install</div> <div class="api-entry">mono_profiler_install</div>
<div class="prototype">void <div class="prototype">void
mono_profiler_install (MonoProfiler *prof, int version, MonoProfileFunc callback) mono_profiler_install (MonoProfiler *prof, MonoProfileFunc callback)
</div> </div>
<p /> <p />
<b>Parameters</b> <b>Parameters</b>
<blockquote><dt><i>prof:</i></dt><dd> a MonoProfiler structure pointer, or a pointer to a derived structure.</dd><dt><i>version:</i></dt><dd> profiler API version (see profiler.h)</dd><dt><i>callback:</i></dt><dd> the function to invoke at shutdown</dd></blockquote> <blockquote><dt><i>prof:</i></dt><dd> a MonoProfiler structure pointer, or a pointer to a derived structure.</dd><dt><i>callback:</i></dt><dd> the function to invoke at shutdown</dd></blockquote>
<b>Remarks</b> <b>Remarks</b>
<p /> <p />
Use mono_profiler_install to activate profiling in the Mono runtime. Use mono_profiler_install to activate profiling in the Mono runtime.

View File

@ -14,6 +14,7 @@ mobile_SUBDIRS := build class
mobile_static_SUBDIRS := build class mobile_static_SUBDIRS := build class
binary_reference_assemblies_SUBDIRS := build class binary_reference_assemblies_SUBDIRS := build class
net_4_5_SUBDIRS := build mcs class nunit24 ilasm tools tests errors docs net_4_5_SUBDIRS := build mcs class nunit24 ilasm tools tests errors docs
xammac_net_4_5_SUBDIRS := build class
xbuild_12_SUBDIRS := build class tools/xbuild xbuild_12_SUBDIRS := build class tools/xbuild
xbuild_14_SUBDIRS := build class tools/xbuild xbuild_14_SUBDIRS := build class tools/xbuild
@ -57,6 +58,7 @@ $(_boot_:%=profile-do--monodroid--%): profile-do--monodroid--%:
$(_boot_:%=profile-do--monotouch--%): profile-do--monotouch--%: profile-do--build--% $(_boot_:%=profile-do--monotouch--%): profile-do--monotouch--%: profile-do--build--%
$(_boot_:%=profile-do--monotouch_runtime--%): profile-do--monotouch_runtime--%: profile-do--build--% $(_boot_:%=profile-do--monotouch_runtime--%): profile-do--monotouch_runtime--%: profile-do--build--%
$(_boot_:%=profile-do--xammac--%): profile-do--xammac--%: profile-do--build--% $(_boot_:%=profile-do--xammac--%): profile-do--xammac--%: profile-do--build--%
$(_boot_:%=profile-do--xammac_net_4_5--%): profile-do--xammac_net_4_5--%: profile-do--build--%
$(_boot_:%=profile-do--mobile--%): profile-do--mobile--%: profile-do--build--% $(_boot_:%=profile-do--mobile--%): profile-do--mobile--%: profile-do--build--%
$(_boot_:%=profile-do--mobile_static--%): profile-do--mobile_static--%: profile-do--build--% $(_boot_:%=profile-do--mobile_static--%): profile-do--mobile_static--%: profile-do--build--%
$(_boot_:%=profile-do--build--%): profile-do--build--%: profile-do--basic--% $(_boot_:%=profile-do--build--%): profile-do--build--%: profile-do--basic--%

View File

@ -34,7 +34,7 @@ static class Consts
// Use these assembly version constants to make code more maintainable. // Use these assembly version constants to make code more maintainable.
// //
public const string MonoVersion = "4.0.2.0"; public const string MonoVersion = "4.0.3.0";
public const string MonoCompany = "Mono development team"; public const string MonoCompany = "Mono development team";
public const string MonoProduct = "Mono Common Language Infrastructure"; public const string MonoProduct = "Mono Common Language Infrastructure";
public const string MonoCopyright = "(c) Various Mono authors"; public const string MonoCopyright = "(c) Various Mono authors";

View File

@ -9,7 +9,6 @@ static class AssemblyRef
public const string EcmaPublicKey = "b77a5c561934e089"; public const string EcmaPublicKey = "b77a5c561934e089";
public const string MicrosoftPublicKey = "b03f5f7f11d50a3a"; public const string MicrosoftPublicKey = "b03f5f7f11d50a3a";
public const string MicrosoftVSDesigner = Consts.AssemblyMicrosoft_VSDesigner;
public const string SystemDesign = Consts.AssemblySystem_Design; public const string SystemDesign = Consts.AssemblySystem_Design;
public const string SystemDrawing = Consts.AssemblySystem_Drawing; public const string SystemDrawing = Consts.AssemblySystem_Drawing;
public const string SystemWeb = Consts.AssemblySystem_Web; public const string SystemWeb = Consts.AssemblySystem_Web;

View File

@ -18,6 +18,7 @@ net_4_5_SUBDIRS = $(monotouch_SUBDIRS) System.Reflection.Emit.ILGeneration Syste
monodroid_SUBDIRS = $(net_4_5_SUBDIRS) monodroid_SUBDIRS = $(net_4_5_SUBDIRS)
xammac_SUBDIRS = $(net_4_5_SUBDIRS) xammac_SUBDIRS = $(net_4_5_SUBDIRS)
xammac_net_4_5_SUBDIRS = $(net_4_5_SUBDIRS)
PROFILE_SUBDIRS = $(net_4_5_SUBDIRS) PROFILE_SUBDIRS = $(net_4_5_SUBDIRS)

View File

@ -26,6 +26,7 @@
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportSecurityBindingElement))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportSecurityBindingElement))]
#if !MOBILE #if !MOBILE
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DnsEndpointIdentity))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DnsEndpointIdentity))]
#if !XAMMAC_4_5
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageSecurityVersion))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageSecurityVersion))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.BasicSecurityProfileVersion))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.BasicSecurityProfileVersion))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecureConversationVersion))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecureConversationVersion))]
@ -36,6 +37,7 @@
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SupportingTokenParameters))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.SupportingTokenParameters))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.UserNameSecurityTokenParameters))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.Tokens.UserNameSecurityTokenParameters))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.TrustVersion))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.TrustVersion))]
#endif
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SpnEndpointIdentity))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SpnEndpointIdentity))]
[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UpnEndpointIdentity))] [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UpnEndpointIdentity))]
#endif #endif

View File

@ -75,6 +75,48 @@ monotouch_runtime_dirs := \
System.XML \ System.XML \
Mono.CSharp Mono.CSharp
xammac_4_5_dirs := \
corlib \
System \
Mono.Posix \
System.Core \
System.XML \
Mono.Security \
System \
I18N \
System.Numerics \
Mono.Data.Tds \
System.Transactions \
System.EnterpriseServices \
System.Data \
System.Runtime.Serialization \
System.Xml.Linq \
Mono.Data.Sqlite \
System.Runtime.Serialization.Formatters.Soap \
System.ComponentModel.DataAnnotations \
System.IdentityModel \
System.IdentityModel.Selectors \
Mono.Messaging \
System.Configuration.Install \
System.Messaging \
System.Web.Services \
System.Net \
System.ServiceModel \
System.ServiceModel.Web \
System.Json \
System.Data.Services.Client \
System.IO.Compression \
System.IO.Compression.FileSystem \
System.ComponentModel.Composition.4.5 \
System.Windows \
System.Xml.Serialization \
Mono.CSharp \
Microsoft.CSharp \
Mono.CompilerServices.SymbolWriter \
System.Data.Linq \
System.Net.Http \
$(pcl_facade_dirs)
net_4_5_dirs := \ net_4_5_dirs := \
corlib \ corlib \
System \ System \
@ -217,6 +259,7 @@ monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs)
mobile_static_SUBDIRS := $(mobile_static_dirs) mobile_static_SUBDIRS := $(mobile_static_dirs)
mobile_SUBDIRS := $(mobile_dynamic_dirs) mobile_SUBDIRS := $(mobile_dynamic_dirs)
xammac_SUBDIRS := $(xammac_dirs) xammac_SUBDIRS := $(xammac_dirs)
xammac_net_4_5_SUBDIRS := $(xammac_4_5_dirs)
binary_reference_assemblies_SUBDIRS := reference-assemblies binary_reference_assemblies_SUBDIRS := reference-assemblies
net_4_5_SUBDIRS := $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler net_4_5_SUBDIRS := $(net_4_5_dirs) $(xbuild_4_0_dirs) aot-compiler
xbuild_12_SUBDIRS := $(xbuild_4_0_dirs) xbuild_12_SUBDIRS := $(xbuild_4_0_dirs)
@ -224,7 +267,7 @@ xbuild_14_SUBDIRS := $(xbuild_4_0_dirs)
include ../build/rules.make include ../build/rules.make
SUBDIRS = $(mobile_static_dirs) $(mobile_dynamic_dirs) $(monotouch_dirs) $(monodroid_dirs) $(xammac_dirs) $(net_4_5_dirs) SUBDIRS = $(mobile_static_dirs) $(mobile_dynamic_dirs) $(monotouch_dirs) $(monodroid_dirs) $(xammac_dirs) $(net_4_5_dirs) $(xammac_net_4_5_SUBDIRS)
DIST_ONLY_SUBDIRS = dlr aot-compiler reference-assemblies $(xbuild_4_0_dirs) DIST_ONLY_SUBDIRS = dlr aot-compiler reference-assemblies $(xbuild_4_0_dirs)

View File

@ -12,7 +12,7 @@ CLEAN_FILES += $(STRING_MESSAGES)
EXTRA_DISTFILES = \ EXTRA_DISTFILES = \
src/ComponentModel/Strings.resx src/ComponentModel/Strings.resx
VALID_PROFILE := $(filter net_4_5 monotouch monodroid xammac mobile mobile_static, $(PROFILE)) VALID_PROFILE := $(filter net_4_5 monotouch monodroid xammac xammac_net_4_5 mobile mobile_static, $(PROFILE))
ifndef VALID_PROFILE ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.ComponentModel.Composition.dll LIBRARY_NAME = dummy-System.ComponentModel.Composition.dll
NO_INSTALL = yes NO_INSTALL = yes

View File

@ -0,0 +1 @@
#include net_4_5_System.Core.dll.sources

View File

@ -17,7 +17,7 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
EXTRA_DISTFILES = src/DbLinq/Schema/Dbml/DbmlSchema.xsd EXTRA_DISTFILES = src/DbLinq/Schema/Dbml/DbmlSchema.xsd
# This is a .NET 3.5+ assembly # This is a .NET 3.5+ assembly
VALID_PROFILE := $(filter net_4_5, $(PROFILE)) VALID_PROFILE := $(filter xammac_net_4_5 net_4_5, $(PROFILE))
ifndef VALID_PROFILE ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.Data.Linq.dll LIBRARY_NAME = dummy-System.Data.Linq.dll
NO_INSTALL = yes NO_INSTALL = yes

View File

@ -17,9 +17,11 @@ LIB_MCS_FLAGS = \
-resource:Client/System.Data.Services.Client.resources \ -resource:Client/System.Data.Services.Client.resources \
-warn:2 -warn:2
ifndef NO_WINDOWS_BASE
ifneq (2.1, $(FRAMEWORK_VERSION)) ifneq (2.1, $(FRAMEWORK_VERSION))
LIB_MCS_FLAGS += -r:WindowsBase LIB_MCS_FLAGS += -r:WindowsBase
endif endif
endif
include ../../build/library.make include ../../build/library.make

View File

@ -0,0 +1 @@
#include net_4_5_System.Data.Services.Client.dll.sources

View File

@ -8,8 +8,8 @@ LIB_MCS_FLAGS = \
-nowarn:649 \ -nowarn:649 \
-unsafe \ -unsafe \
-r:System \ -r:System \
-r:System.Xml.dll \ -r:System.Xml.dll \
-r:System.Core.dll -d:NET_2_0
MOBILE := $(filter monotouch monodroid xammac mobile mobile_static, $(PROFILE)) MOBILE := $(filter monotouch monodroid xammac mobile mobile_static, $(PROFILE))
ifdef MOBILE ifdef MOBILE

View File

@ -11,11 +11,7 @@ static class Bid
internal static void TraceEx(uint flags, string fmtPrintfW, params object[] args) internal static void TraceEx(uint flags, string fmtPrintfW, params object[] args)
{ {
} }
#if !MOBILE
internal static void TraceSqlReturn(string fmtPrintfW, System.Data.Odbc.ODBC32.RetCode a1, string a2)
{
}
#endif
internal static void ScopeEnter(out IntPtr hScp, string fmt, params object[] args) { internal static void ScopeEnter(out IntPtr hScp, string fmt, params object[] args) {
hScp = NoData; hScp = NoData;
} }

View File

@ -0,0 +1,57 @@
using System.Data.SqlClient;
namespace System.Data.Common {
internal static class DbConnectionStringDefaults {
// all
// internal const string NamedConnection = "";
// Odbc
internal const string Driver = "";
internal const string Dsn = "";
// OleDb
internal const bool AdoNetPooler = false;
internal const string FileName = "";
internal const int OleDbServices = ~(/*DBPROPVAL_OS_AGR_AFTERSESSION*/0x00000008 | /*DBPROPVAL_OS_CLIENTCURSOR*/0x00000004); // -13
internal const string Provider = "";
// OracleClient
internal const bool Unicode = false;
internal const bool OmitOracleConnectionName = false;
// SqlClient
internal const ApplicationIntent ApplicationIntent = System.Data.SqlClient.ApplicationIntent.ReadWrite;
internal const string ApplicationName = ".Net SqlClient Data Provider";
internal const bool AsynchronousProcessing = false;
internal const string AttachDBFilename = "";
internal const int ConnectTimeout = 15;
internal const bool ConnectionReset = true;
internal const bool ContextConnection = false;
internal const string CurrentLanguage = "";
internal const string DataSource = "";
internal const bool Encrypt = false;
internal const bool Enlist = true;
internal const string FailoverPartner = "";
internal const string InitialCatalog = "";
internal const bool IntegratedSecurity = false;
internal const int LoadBalanceTimeout = 0; // default of 0 means don't use
internal const bool MultipleActiveResultSets = false;
internal const bool MultiSubnetFailover = false;
internal const int MaxPoolSize = 100;
internal const int MinPoolSize = 0;
internal const string NetworkLibrary = "";
internal const int PacketSize = 8000;
internal const string Password = "";
internal const bool PersistSecurityInfo = false;
internal const bool Pooling = true;
internal const bool TrustServerCertificate = false;
internal const string TypeSystemVersion = "Latest";
internal const string UserID = "";
internal const bool UserInstance = false;
internal const bool Replication = false;
internal const string WorkstationID = "";
internal const string TransactionBinding = "Implicit Unbind";
internal const int ConnectRetryCount = 1;
internal const int ConnectRetryInterval = 10;
}
}

View File

@ -1,16 +0,0 @@
using System.Text;
using System.Runtime.InteropServices;
namespace System.Data.Odbc {
internal abstract class OdbcHandle : SafeHandle {
protected OdbcHandle(ODBC32.SQL_HANDLE handleType, OdbcHandle parentHandle) : base(IntPtr.Zero, true) {
throw new NotImplementedException ();
}
internal ODBC32.RetCode GetDiagnosticRecord(short record, out string sqlState, StringBuilder message, out int nativeError, out short cchActual) {
throw new NotImplementedException ();
}
}
}

View File

@ -74,7 +74,7 @@ static class Res
public const string ADP_InvalidDataType = "ADP_InvalidDataType"; public const string ADP_InvalidDataType = "ADP_InvalidDataType";
public const string ADP_InvalidDateTimeDigits = "ADP_InvalidDateTimeDigits"; public const string ADP_InvalidDateTimeDigits = "ADP_InvalidDateTimeDigits";
public const string ADP_InvalidDestinationBufferIndex = "ADP_InvalidDestinationBufferIndex"; public const string ADP_InvalidDestinationBufferIndex = "ADP_InvalidDestinationBufferIndex";
public const string ADP_InvalidEnumerationValue = "The {0} enumeration value, {1}, is invalid."; public const string ADP_InvalidEnumerationValue = "ADP_InvalidEnumerationValue";
public const string ADP_InvalidFormatValue = "ADP_InvalidFormatValue"; public const string ADP_InvalidFormatValue = "ADP_InvalidFormatValue";
public const string ADP_InvalidImplicitConversion = "ADP_InvalidImplicitConversion"; public const string ADP_InvalidImplicitConversion = "ADP_InvalidImplicitConversion";
public const string ADP_InvalidKey = "ADP_InvalidKey"; public const string ADP_InvalidKey = "ADP_InvalidKey";
@ -99,7 +99,7 @@ static class Res
public const string ADP_InvalidUDL = "ADP_InvalidUDL"; public const string ADP_InvalidUDL = "ADP_InvalidUDL";
public const string ADP_InvalidValue = "ADP_InvalidValue"; public const string ADP_InvalidValue = "ADP_InvalidValue";
public const string ADP_InvalidXMLBadVersion = "ADP_InvalidXMLBadVersion"; public const string ADP_InvalidXMLBadVersion = "ADP_InvalidXMLBadVersion";
public const string ADP_KeywordNotSupported = "Keyword not supported: '{0}'."; public const string ADP_KeywordNotSupported = "ADP_KeywordNotSupported";
public const string ADP_LiteralValueIsInvalid = "ADP_LiteralValueIsInvalid"; public const string ADP_LiteralValueIsInvalid = "ADP_LiteralValueIsInvalid";
public const string ADP_LocalTransactionPresent = "ADP_LocalTransactionPresent"; public const string ADP_LocalTransactionPresent = "ADP_LocalTransactionPresent";
public const string ADP_MismatchedAsyncResult = "ADP_MismatchedAsyncResult"; public const string ADP_MismatchedAsyncResult = "ADP_MismatchedAsyncResult";

View File

@ -1,12 +0,0 @@
using System.ComponentModel;
namespace System.Data
{
sealed class ResCategoryAttribute : CategoryAttribute
{
public ResCategoryAttribute (string category)
: base (category)
{
}
}
}

View File

@ -0,0 +1,131 @@
//
// System.Data.Common.DataColumnMapping.cs
//
// Authors:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002-2003
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.ComponentModel;
using System.Data;
namespace System.Data.Common {
#if NET_2_0
[TypeConverterAttribute ("System.Data.Common.DataColumnMapping+DataColumnMappingConverter, " + Consts.AssemblySystem_Data)]
#else
[TypeConverterAttribute (typeof (DataColumnMappingConverter))]
#endif
public sealed class DataColumnMapping : MarshalByRefObject, IColumnMapping, ICloneable
{
#region Fields
string sourceColumn;
string dataSetColumn;
#endregion // Fields
#region Constructors
public DataColumnMapping ()
{
sourceColumn = String.Empty;
dataSetColumn = String.Empty;
}
public DataColumnMapping (string sourceColumn, string dataSetColumn)
{
this.sourceColumn = sourceColumn;
this.dataSetColumn = dataSetColumn;
}
#endregion // Constructors
#region Properties
#if ONLY_1_1
[DataSysDescription ("DataColumn.ColumnName")]
#endif
[DefaultValue ("")]
public string DataSetColumn {
get { return dataSetColumn; }
set { dataSetColumn = value; }
}
#if !NET_2_0
[DataSysDescription ("Source column name - case sensitive.")]
#endif
[DefaultValue ("")]
public string SourceColumn {
get { return sourceColumn; }
set { sourceColumn = value; }
}
#endregion // Properties
#region Methods
[EditorBrowsable (EditorBrowsableState.Advanced)]
public DataColumn GetDataColumnBySchemaAction (DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
{
if (dataTable.Columns.Contains (dataSetColumn))
return dataTable.Columns [dataSetColumn];
if (schemaAction == MissingSchemaAction.Ignore)
return null;
if (schemaAction == MissingSchemaAction.Error)
throw new InvalidOperationException (String.Format ("Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'", DataSetColumn, dataTable.TableName, SourceColumn));
return new DataColumn (dataSetColumn, dataType);
}
#if NET_2_0
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static DataColumn GetDataColumnBySchemaAction (string sourceColumn, string dataSetColumn, DataTable dataTable, Type dataType, MissingSchemaAction schemaAction)
{
if (dataTable.Columns.Contains (dataSetColumn))
return dataTable.Columns [dataSetColumn];
if (schemaAction == MissingSchemaAction.Ignore)
return null;
if (schemaAction == MissingSchemaAction.Error)
throw new InvalidOperationException (String.Format ("Missing the DataColumn '{0}' in the DataTable '{1}' for the SourceColumn '{2}'", dataSetColumn, dataTable.TableName, sourceColumn));
return new DataColumn (dataSetColumn, dataType);
}
#endif
object ICloneable.Clone ()
{
return new DataColumnMapping (SourceColumn, DataSetColumn);
}
public override string ToString ()
{
return SourceColumn;
}
#endregion // Methods
}
}

View File

@ -0,0 +1,338 @@
//
// System.Data.Common.DataColumnMappingCollection
//
// Authors:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002-2003
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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;
using System.Collections;
using System.ComponentModel;
using System.Data;
namespace System.Data.Common
{
public sealed class DataColumnMappingCollection : MarshalByRefObject, IColumnMappingCollection , IList, ICollection, IEnumerable
{
#region Fields
readonly ArrayList list;
readonly Hashtable sourceColumns;
readonly Hashtable dataSetColumns;
#endregion // Fields
#region Constructors
public DataColumnMappingCollection ()
{
list = new ArrayList ();
sourceColumns = new Hashtable ();
dataSetColumns = new Hashtable ();
}
#endregion // Constructors
#region Properties
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The number of items in the collection")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public int Count {
get { return list.Count; }
}
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The specified DataColumnMapping object.")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataColumnMapping this [int index] {
get { return (DataColumnMapping)(list[index]); }
set {
DataColumnMapping mapping = (DataColumnMapping)(list[index]);
sourceColumns[mapping] = value;
dataSetColumns[mapping] = value;
list[index] = value;
}
}
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The specified DataColumnMapping object.")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataColumnMapping this [string sourceColumn] {
get {
if (!Contains(sourceColumn))
throw new IndexOutOfRangeException("DataColumnMappingCollection doesn't contain DataColumnMapping with SourceColumn '" + sourceColumn + "'.");
return (DataColumnMapping) sourceColumns [sourceColumn];
}
set {
this [list.IndexOf (sourceColumns [sourceColumn])] = value;
}
}
object ICollection.SyncRoot {
get { return list.SyncRoot; }
}
bool ICollection.IsSynchronized {
get { return list.IsSynchronized; }
}
object IColumnMappingCollection.this [string index] {
get { return this [index]; }
set {
if (!(value is DataColumnMapping))
throw new ArgumentException ();
this [index] = (DataColumnMapping) value;
}
}
object IList.this [int index] {
get { return this [index]; }
set {
if (!(value is DataColumnMapping))
throw new ArgumentException ();
this [index] = (DataColumnMapping) value;
}
}
bool IList.IsReadOnly {
get { return false; }
}
bool IList.IsFixedSize {
get { return false; }
}
#endregion // Properties
#region Methods
public int Add (object value)
{
if (!(value is DataColumnMapping))
throw new InvalidCastException ();
list.Add (value);
sourceColumns [((DataColumnMapping) value).SourceColumn] = value;
dataSetColumns [((DataColumnMapping )value).DataSetColumn] = value;
return list.IndexOf (value);
}
public DataColumnMapping Add (string sourceColumn, string dataSetColumn)
{
DataColumnMapping mapping = new DataColumnMapping (sourceColumn, dataSetColumn);
Add (mapping);
return mapping;
}
#if NET_2_0
public void AddRange (Array values)
{
for (int i = 0; i < values.Length; ++i)
Add (values.GetValue (i));
}
#endif
public void AddRange (DataColumnMapping[] values)
{
foreach (DataColumnMapping mapping in values)
Add (mapping);
}
public void Clear ()
{
list.Clear ();
}
public bool Contains (object value)
{
if (!(value is DataColumnMapping))
throw new InvalidCastException("Object is not of type DataColumnMapping");
return (list.Contains (value));
}
public bool Contains (string value)
{
return (sourceColumns.Contains (value));
}
public void CopyTo (Array array, int index)
{
list.CopyTo (array,index);
}
#if NET_2_0
public void CopyTo (DataColumnMapping [] array, int index)
{
list.CopyTo (array, index);
}
#endif
public DataColumnMapping GetByDataSetColumn (string value)
{
// this should work case-insenstive.
if (!(dataSetColumns [value] == null))
return (DataColumnMapping) (dataSetColumns [value]);
else {
string lowcasevalue = value.ToLower ();
object [] keyarray = new object [dataSetColumns.Count];
dataSetColumns.Keys.CopyTo (keyarray, 0);
for (int i = 0; i < keyarray.Length; i++) {
string temp = (string) keyarray [i];
if (lowcasevalue.Equals (temp.ToLower ()))
return (DataColumnMapping) (dataSetColumns [keyarray [i]]);
}
return null;
}
}
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static DataColumnMapping GetColumnMappingBySchemaAction (DataColumnMappingCollection columnMappings, string sourceColumn, MissingMappingAction mappingAction)
{
if (columnMappings.Contains (sourceColumn))
return columnMappings[sourceColumn];
if (mappingAction == MissingMappingAction.Ignore)
return null;
if (mappingAction == MissingMappingAction.Error)
throw new InvalidOperationException (String.Format ("Missing SourceColumn mapping for '{0}'", sourceColumn));
return new DataColumnMapping (sourceColumn, sourceColumn);
}
#if NET_2_0
[MonoTODO]
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static DataColumn GetDataColumn (DataColumnMappingCollection columnMappings, string sourceColumn, Type dataType, DataTable dataTable, MissingMappingAction mappingAction, MissingSchemaAction schemaAction)
{
throw new NotImplementedException ();
}
#endif
public IEnumerator GetEnumerator ()
{
return list.GetEnumerator ();
}
IColumnMapping IColumnMappingCollection.Add (string sourceColumnName, string dataSetColumnName)
{
return Add (sourceColumnName, dataSetColumnName);
}
IColumnMapping IColumnMappingCollection.GetByDataSetColumn (string dataSetColumnName)
{
return GetByDataSetColumn (dataSetColumnName);
}
public int IndexOf (object value)
{
return list.IndexOf (value);
}
public int IndexOf (string sourceColumn)
{
return list.IndexOf (sourceColumns [sourceColumn]);
}
public int IndexOfDataSetColumn (string dataSetColumn)
{
// this should work case-insensitive
if (!(dataSetColumns [dataSetColumn] == null))
return list.IndexOf (dataSetColumns [dataSetColumn]);
else {
string lowcasevalue = dataSetColumn.ToLower ();
object [] keyarray = new object[dataSetColumns.Count];
dataSetColumns.Keys.CopyTo (keyarray,0);
for (int i = 0; i < keyarray.Length; i++) {
string temp = (string) keyarray [i];
if (lowcasevalue.Equals (temp.ToLower ()))
return list.IndexOf (dataSetColumns [keyarray [i]]);
}
return -1;
}
}
public void Insert (int index, object value)
{
list.Insert (index, value);
sourceColumns [((DataColumnMapping) value).SourceColumn] = value;
dataSetColumns [((DataColumnMapping) value).DataSetColumn] = value;
}
#if NET_2_0
public void Insert (int index, DataColumnMapping value)
{
list.Insert (index, value);
sourceColumns [value.SourceColumn] = value;
dataSetColumns [value.DataSetColumn] = value;
}
#endif
public void Remove (object value)
{
int index = list.IndexOf (value);
sourceColumns.Remove (((DataColumnMapping) value).SourceColumn);
dataSetColumns.Remove (((DataColumnMapping) value).DataSetColumn);
if (index < 0 || index >=list.Count)
throw new ArgumentException("There is no such element in collection.");
list.Remove (value);
}
#if NET_2_0
public void Remove (DataColumnMapping value)
{
int index = list.IndexOf (value);
sourceColumns.Remove (value.SourceColumn);
dataSetColumns.Remove (value.DataSetColumn);
if ( index < 0 || index >=list.Count)
throw new ArgumentException("There is no such element in collection.");
list.Remove (value);
}
#endif
public void RemoveAt (int index)
{
if (index < 0 || index >=list.Count)
throw new IndexOutOfRangeException("There is no element in collection.");
Remove (list [index]);
}
public void RemoveAt (string sourceColumn)
{
RemoveAt (list.IndexOf (sourceColumns [sourceColumn]));
}
#endregion // Methods
}
}

View File

@ -0,0 +1,59 @@
//
// System.Data.Common.DataColumnMappingConverter.cs
//
// Author:
// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
//
// (C) 2004 Andreas Nahr
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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;
using System.Globalization;
using System.ComponentModel;
namespace System.Data.Common
{
internal sealed class DataColumnMappingConverter : ExpandableObjectConverter
{
[MonoTODO]
public DataColumnMappingConverter ()
{
throw new NotImplementedException ();
}
[MonoTODO]
public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
throw new NotImplementedException ();
}
[MonoTODO]
public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
{
throw new NotImplementedException ();
}
}
}

View File

@ -0,0 +1,159 @@
//
// System.Data.Common.DataTableMapping.cs
//
// Authors:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002-2003
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.ComponentModel;
using System.Data;
namespace System.Data.Common {
#if NET_2_0
[TypeConverterAttribute ("System.Data.Common.DataTableMapping+DataTableMappingConverter, " + Consts.AssemblySystem_Data)]
#else
[TypeConverterAttribute (typeof (DataTableMappingConverter))]
#endif
public sealed class DataTableMapping : MarshalByRefObject, ITableMapping, ICloneable
{
#region Fields
string sourceTable;
string dataSetTable;
DataColumnMappingCollection columnMappings;
#endregion // Fields
#region Constructors
public DataTableMapping ()
{
dataSetTable = String.Empty;
sourceTable = String.Empty;
columnMappings = new DataColumnMappingCollection ();
}
public DataTableMapping (string sourceTable, string dataSetTable)
: this ()
{
this.sourceTable = sourceTable;
this.dataSetTable = dataSetTable;
}
public DataTableMapping (string sourceTable, string dataSetTable, DataColumnMapping[] columnMappings)
: this (sourceTable, dataSetTable)
{
this.columnMappings.AddRange (columnMappings);
}
#endregion // Constructors
#region Properties
#if !NET_2_0
[DataSysDescription ("Individual columns mappings when this table mapping is matched.")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
public DataColumnMappingCollection ColumnMappings {
get { return columnMappings; }
}
#if !NET_2_0
[DataSysDescription ("DataTable.TableName")]
#endif
[DefaultValue ("")]
public string DataSetTable {
get { return dataSetTable; }
set { dataSetTable = value; }
}
IColumnMappingCollection ITableMapping.ColumnMappings {
get { return ColumnMappings; }
}
#if !NET_2_0
[DataSysDescription ("The DataTableMapping source table name. This name is case sensitive.")]
#endif
[DefaultValue ("")]
public string SourceTable {
get { return sourceTable; }
set { sourceTable = value; }
}
#endregion // Properties
#region Methods
[EditorBrowsable (EditorBrowsableState.Advanced)]
public DataColumnMapping GetColumnMappingBySchemaAction (string sourceColumn, MissingMappingAction mappingAction)
{
return DataColumnMappingCollection.GetColumnMappingBySchemaAction (columnMappings, sourceColumn, mappingAction);
}
#if NET_2_0
[MonoTODO]
[EditorBrowsable (EditorBrowsableState.Advanced)]
public DataColumn GetDataColumn (string sourceColumn,
Type dataType,
DataTable dataTable,
MissingMappingAction mappingAction,
MissingSchemaAction schemaAction)
{
throw new NotImplementedException ();
}
#endif
[EditorBrowsable (EditorBrowsableState.Advanced)]
public DataTable GetDataTableBySchemaAction (DataSet dataSet, MissingSchemaAction schemaAction)
{
if (dataSet.Tables.Contains (DataSetTable))
return dataSet.Tables [DataSetTable];
if (schemaAction == MissingSchemaAction.Ignore)
return null;
if (schemaAction == MissingSchemaAction.Error)
throw new InvalidOperationException (String.Format ("Missing the '{0} DataTable for the '{1}' SourceTable", DataSetTable, SourceTable));
return new DataTable (DataSetTable);
}
object ICloneable.Clone ()
{
DataColumnMapping [] arr = new DataColumnMapping [columnMappings.Count];
columnMappings.CopyTo (arr, 0);
return new DataTableMapping (SourceTable, DataSetTable, arr);
}
public override string ToString ()
{
return SourceTable;
}
#endregion // Methods
}
}

View File

@ -0,0 +1,326 @@
//
// System.Data.Common.DataTableMappingCollection.cs
//
// Author:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002-2003
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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;
using System.Collections;
using System.ComponentModel;
namespace System.Data.Common
{
[ListBindable (false)]
[EditorAttribute ("Microsoft.VSDesigner.Data.Design.DataTableMappingCollectionEditor, "+ Consts.AssemblyMicrosoft_VSDesigner, "System.Drawing.Design.UITypeEditor, "+ Consts.AssemblySystem_Drawing )]
public sealed class DataTableMappingCollection : MarshalByRefObject, ITableMappingCollection, IList, ICollection, IEnumerable
{
#region Fields
ArrayList mappings;
Hashtable sourceTables;
Hashtable dataSetTables;
#endregion
#region Constructors
public DataTableMappingCollection()
{
mappings = new ArrayList ();
sourceTables = new Hashtable ();
dataSetTables = new Hashtable ();
}
#endregion // Constructors
#region Properties
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The number of items in the collection")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public int Count {
get { return mappings.Count; }
}
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The specified DataTableMapping object")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataTableMapping this [int index] {
get { return (DataTableMapping)(mappings[index]); }
set {
DataTableMapping mapping = (DataTableMapping) mappings[index];
sourceTables [mapping.SourceTable] = value;
dataSetTables [mapping.DataSetTable] = value;
mappings [index] = value;
}
}
[Browsable (false)]
#if !NET_2_0
[DataSysDescription ("The specified DataTableMapping object")]
#endif
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataTableMapping this [string sourceTable] {
get { return (DataTableMapping) sourceTables[sourceTable]; }
set { this [mappings.IndexOf (sourceTables[sourceTable])] = value; }
}
object IList.this [int index] {
get { return (object)(this[index]); }
set {
if (!(value is DataTableMapping))
throw new ArgumentException ();
this[index] = (DataTableMapping)value;
}
}
bool ICollection.IsSynchronized {
get { return mappings.IsSynchronized; }
}
object ICollection.SyncRoot {
get { return mappings.SyncRoot; }
}
bool IList.IsFixedSize {
get { return false; }
}
bool IList.IsReadOnly {
get { return false; }
}
object ITableMappingCollection.this [string index] {
get { return this [index]; }
set {
if (!(value is DataTableMapping))
throw new ArgumentException ();
this [index] = (DataTableMapping) value;
}
}
#endregion // Properties
#region Methods
public int Add (object value)
{
if (!(value is System.Data.Common.DataTableMapping))
throw new InvalidCastException ("The object passed in was not a DataTableMapping object.");
sourceTables [((DataTableMapping) value).SourceTable] = value;
dataSetTables [((DataTableMapping) value).DataSetTable] = value;
return mappings.Add (value);
}
public DataTableMapping Add (string sourceTable, string dataSetTable)
{
DataTableMapping mapping = new DataTableMapping (sourceTable, dataSetTable);
Add (mapping);
return mapping;
}
#if NET_2_0
public void AddRange (Array values)
{
for (int i = 0; i < values.Length; ++i)
Add (values.GetValue (i));
}
#endif
public void AddRange (DataTableMapping[] values)
{
foreach (DataTableMapping dataTableMapping in values)
this.Add (dataTableMapping);
}
public void Clear ()
{
sourceTables.Clear ();
dataSetTables.Clear ();
mappings.Clear ();
}
public bool Contains (object value)
{
return mappings.Contains (value);
}
public bool Contains (string value)
{
return sourceTables.Contains (value);
}
public void CopyTo (Array array, int index)
{
mappings.CopyTo (array, index);
}
#if NET_2_0
public void CopyTo (DataTableMapping[] array, int index)
{
mappings.CopyTo (array, index);
}
#endif
public DataTableMapping GetByDataSetTable (string dataSetTable)
{
// this should work case-insenstive.
if (!(dataSetTables[dataSetTable] == null))
return (DataTableMapping) (dataSetTables [dataSetTable]);
else {
string lowcasevalue = dataSetTable.ToLower ();
object [] keyarray = new object [dataSetTables.Count];
dataSetTables.Keys.CopyTo (keyarray, 0);
for (int i=0; i<keyarray.Length; i++) {
string temp = (string) keyarray [i];
if (lowcasevalue.Equals (temp.ToLower ()))
return (DataTableMapping) (dataSetTables [keyarray [i]]);
}
return null;
}
}
[EditorBrowsable (EditorBrowsableState.Advanced)]
public static DataTableMapping GetTableMappingBySchemaAction (DataTableMappingCollection tableMappings, string sourceTable, string dataSetTable, MissingMappingAction mappingAction)
{
if (tableMappings.Contains (sourceTable))
return tableMappings[sourceTable];
if (mappingAction == MissingMappingAction.Error)
throw new InvalidOperationException (String.Format ("Missing source table mapping: '{0}'",
sourceTable));
if (mappingAction == MissingMappingAction.Ignore)
return null;
return new DataTableMapping (sourceTable, dataSetTable);
}
public IEnumerator GetEnumerator ()
{
return mappings.GetEnumerator ();
}
public int IndexOf (object value)
{
return mappings.IndexOf (value);
}
public int IndexOf (string sourceTable)
{
return IndexOf (sourceTables[sourceTable]);
}
public int IndexOfDataSetTable (string dataSetTable)
{
// this should work case-insensitive
if (!(dataSetTables[dataSetTable] == null))
return IndexOf ((DataTableMapping)(dataSetTables[dataSetTable]));
else {
string lowcasevalue = dataSetTable.ToLower();
object [] keyarray = new object[dataSetTables.Count];
dataSetTables.Keys.CopyTo(keyarray,0);
for (int i=0; i<keyarray.Length; i++) {
string temp = (string) keyarray[i];
if (lowcasevalue.Equals(temp.ToLower()))
return IndexOf ((DataTableMapping)(dataSetTables[keyarray[i]]));
}
return -1;
}
}
public void Insert (int index, object value)
{
mappings.Insert (index, value);
sourceTables [((DataTableMapping) value).SourceTable] = value;
dataSetTables [((DataTableMapping) value).DataSetTable] = value;
}
#if NET_2_0
public void Insert (int index, DataTableMapping value)
{
mappings.Insert (index, value);
sourceTables [value.SourceTable] = value;
dataSetTables [value.DataSetTable] = value;
}
#endif
ITableMapping ITableMappingCollection.Add (string sourceTableName, string dataSetTableName)
{
ITableMapping tableMapping = new DataTableMapping (sourceTableName, dataSetTableName);
Add (tableMapping);
return tableMapping;
}
ITableMapping ITableMappingCollection.GetByDataSetTable (string dataSetTableName)
{
return this [mappings.IndexOf (dataSetTables [dataSetTableName])];
}
public void Remove (object value)
{
if (!(value is DataTableMapping))
throw new InvalidCastException ();
int index = mappings.IndexOf (value);
if (index < 0 || index >= mappings.Count)
throw new ArgumentException("There is no such element in collection.");
mappings.Remove ((DataTableMapping) value);
}
#if NET_2_0
public void Remove (DataTableMapping value)
{
int index = mappings.IndexOf (value);
if (index < 0 || index >= mappings.Count)
throw new ArgumentException("There is no such element in collection.");
mappings.Remove ((DataTableMapping) value);
}
#endif
public void RemoveAt (int index)
{
if (index < 0 || index >= mappings.Count)
throw new IndexOutOfRangeException("There is no element in collection.");
mappings.RemoveAt (index);
}
public void RemoveAt (string sourceTable)
{
RemoveAt (mappings.IndexOf (sourceTables[sourceTable]));
}
#endregion // Methods
}
}

View File

@ -0,0 +1,59 @@
//
// System.Data.Common.DataTableMappingConverter.cs
//
// Author:
// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
//
// (C) 2004 Andreas Nahr
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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;
using System.Globalization;
using System.ComponentModel;
namespace System.Data.Common
{
internal sealed class DataTableMappingConverter : ExpandableObjectConverter
{
[MonoTODO]
public DataTableMappingConverter ()
{
throw new NotImplementedException ();
}
[MonoTODO]
public override object ConvertTo (ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
throw new NotImplementedException ();
}
[MonoTODO]
public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
{
throw new NotImplementedException ();
}
}
}

View File

@ -0,0 +1,257 @@
//
// System.Data.Common.DbConnectionOptions
// adapted from older (pre beta1) DbConnectionString
//
// Authors:
// Tim Coleman (tim@timcoleman.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// Copyright (C) Tim Coleman, 2003
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Collections;
using System.Collections.Specialized;
using System.Security;
using System.Text;
namespace System.Data.Common {
internal class DbConnectionOptions {
#region Fields
internal NameValueCollection options;
internal string normalizedConnectionString;
#endregion // Fields
#region Constructors
internal DbConnectionOptions ()
{
}
protected internal DbConnectionOptions (DbConnectionOptions connectionOptions)
{
options = connectionOptions.options;
}
public DbConnectionOptions (string connectionString)
{
options = new NameValueCollection ();
ParseConnectionString (connectionString);
}
[MonoTODO]
public DbConnectionOptions (string connectionString, Hashtable synonyms, bool useFirstKeyValuePair)
: this (connectionString)
{
}
#endregion // Constructors
#region Properties
[MonoTODO]
public bool IsEmpty {
get { throw new NotImplementedException (); }
}
public string this [string keyword] {
get { return options [keyword]; }
}
public ICollection Keys {
get { return options.Keys; }
}
#endregion // Properties
#region Methods
[MonoTODO]
protected void BuildConnectionString (StringBuilder builder, string[] withoutOptions, string insertValue)
{
throw new NotImplementedException ();
}
public bool ContainsKey (string keyword)
{
return (options.Get (keyword) != null);
}
public bool ConvertValueToBoolean (string keyname, bool defaultvalue)
{
if (ContainsKey (keyname))
return Boolean.Parse (this [keyname].Trim ());
return defaultvalue;
}
public int ConvertValueToInt32 (string keyname, int defaultvalue)
{
if (ContainsKey (keyname))
return Int32.Parse (this [keyname].Trim ());
return defaultvalue;
}
[MonoTODO]
public bool ConvertValueToIntegratedSecurity ()
{
throw new NotImplementedException ();
}
public string ConvertValueToString (string keyname, string defaultValue)
{
if (ContainsKey (keyname))
return this [keyname];
return defaultValue;
}
[MonoTODO]
protected internal virtual PermissionSet CreatePermissionSet ()
{
throw new NotImplementedException ();
}
[MonoTODO]
protected internal virtual string Expand ()
{
throw new NotImplementedException ();
}
[MonoTODO]
public static string RemoveKeyValuePairs (string connectionString, string[] keynames)
{
throw new NotImplementedException ();
}
[MonoTODO]
public string UsersConnectionString (bool hisPasswordPwd)
{
throw new NotImplementedException ();
}
internal void ParseConnectionString (string connectionString)
{
if (connectionString.Length == 0)
return;
connectionString += ";";
bool inQuote = false;
bool inDQuote = false;
bool inName = true;
string name = String.Empty;
string value = String.Empty;
StringBuilder sb = new StringBuilder ();
for (int i = 0; i < connectionString.Length; i += 1) {
char c = connectionString [i];
char peek;
if (i == connectionString.Length - 1)
peek = '\0';
else
peek = connectionString [i + 1];
switch (c) {
case '\'':
if (inDQuote)
sb.Append (c);
else if (peek.Equals (c)) {
sb.Append (c);
i += 1;
}
else
inQuote = !inQuote;
break;
case '"':
if (inQuote)
sb.Append (c);
else if (peek.Equals (c)) {
sb.Append (c);
i += 1;
}
else
inDQuote = !inDQuote;
break;
case ';':
if (inDQuote || inQuote)
sb.Append (c);
else {
if (name != String.Empty && name != null) {
value = sb.ToString ();
// FIXME - KeywordLookup is an NOP
// options [KeywordLookup (name.Trim ())] = value;
options [name.Trim ()] = value;
}
inName = true;
name = String.Empty;
value = String.Empty;
sb = new StringBuilder ();
}
break;
case '=':
if (inDQuote || inQuote || !inName)
sb.Append (c);
else if (peek.Equals (c)) {
sb.Append (c);
i += 1;
}
else {
name = sb.ToString ();
sb = new StringBuilder ();
inName = false;
}
break;
case ' ':
if (inQuote || inDQuote)
sb.Append (c);
else if (sb.Length > 0 && !peek.Equals (';'))
sb.Append (c);
break;
default:
sb.Append (c);
break;
}
}
StringBuilder normalized = new StringBuilder ();
ArrayList keys = new ArrayList ();
keys.AddRange (Keys);
keys.Sort ();
foreach (string key in keys)
{
string entry = String.Format ("{0}=\"{1}\";", key, this [key].Replace ("\"", "\"\""));
normalized.Append (entry);
}
normalizedConnectionString = normalized.ToString ();
}
#endregion // Methods
}
}
#endif

View File

@ -0,0 +1,113 @@
//
// System.Data.Common.DbConnectionString
//
// Authors:
// Tim Coleman (tim@timcoleman.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// Copyright (C) Tim Coleman, 2003
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Collections;
using System.Collections.Specialized;
using System.Runtime.Serialization;
using System.Text;
namespace System.Data.Common {
[Obsolete ()]
internal class DbConnectionString : DbConnectionOptions, ISerializable {
#region Fields
KeyRestrictionBehavior behavior;
#endregion // Fields
#region Constructors
protected internal DbConnectionString (DbConnectionString constr)
{
options = constr.options;
}
public DbConnectionString (string connectionString)
: base (connectionString)
{
options = new NameValueCollection ();
ParseConnectionString (connectionString);
}
[MonoTODO]
protected DbConnectionString (SerializationInfo si, StreamingContext sc)
{
}
[MonoTODO]
public DbConnectionString (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
: this (connectionString)
{
this.behavior = behavior;
}
#endregion // Constructors
#region Properties
public KeyRestrictionBehavior Behavior {
get { return behavior; }
}
[MonoTODO]
public string Restrictions {
get { throw new NotImplementedException (); }
}
#endregion // Properties
#region Methods
[MonoTODO]
public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
{
throw new NotImplementedException ();
}
protected virtual string KeywordLookup (string keyname)
{
return keyname;
}
[MonoTODO]
public virtual void PermissionDemand ()
{
throw new NotImplementedException ();
}
#endregion // Methods
}
}
#endif

View File

@ -0,0 +1,802 @@
//
// System.Data.Common.DbConnectionStringBuilder.cs
//
// Author:
// Sureshkumar T (tsureshkumar@novell.com)
// Gert Driesen (drieseng@users.sourceforge.net
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Reflection;
using System.Text;
namespace System.Data.Common
{
public class DbConnectionStringBuilder : IDictionary, ICollection, IEnumerable, ICustomTypeDescriptor
{
#region Fields
readonly Dictionary<string, object> _dictionary;
readonly bool useOdbcRules;
#endregion Fields
#region Constructors
public DbConnectionStringBuilder () : this (false)
{
}
public DbConnectionStringBuilder (bool useOdbcRules)
{
this.useOdbcRules = useOdbcRules;
_dictionary = new Dictionary <string, object> (StringComparer.InvariantCultureIgnoreCase);
}
#endregion // Constructors
#region Properties
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
[EditorBrowsable (EditorBrowsableState.Never)]
[Browsable (false)]
[DesignOnly (true)]
public bool BrowsableConnectionString {
get { throw new NotImplementedException (); }
set { throw new NotImplementedException (); }
}
[RefreshProperties (RefreshProperties.All)]
public string ConnectionString {
get {
IDictionary<string, object> dictionary = (IDictionary <string, object>) _dictionary;
StringBuilder sb = new StringBuilder ();
foreach (string key in Keys) {
object value = null;
if (!dictionary.TryGetValue (key, out value))
continue;
string val = value.ToString ();
AppendKeyValuePair (sb, key, val, useOdbcRules);
}
return sb.ToString ();
}
set {
Clear ();
if (value == null)
return;
if (value.Trim ().Length == 0)
return;
ParseConnectionString (value);
}
}
[Browsable (false)]
public virtual int Count
{
get { return _dictionary.Count; }
}
[Browsable (false)]
public virtual bool IsFixedSize
{
get { return false; }
}
[Browsable (false)]
public bool IsReadOnly
{
get { throw new NotImplementedException (); }
}
[Browsable (false)]
public virtual object this [string keyword] {
get {
if (ContainsKey (keyword))
return _dictionary [keyword];
else
throw new ArgumentException (string.Format (
"Keyword '{0}' does not exist",
keyword));
}
set {
if (value == null) {
Remove (keyword);
return;
}
if (keyword == null)
throw new ArgumentNullException ("keyword");
if (keyword.Length == 0)
throw CreateInvalidKeywordException (keyword);
for (int i = 0; i < keyword.Length; i++) {
char c = keyword [i];
if (i == 0 && (Char.IsWhiteSpace (c) || c == ';'))
throw CreateInvalidKeywordException (keyword);
if (i == (keyword.Length - 1) && Char.IsWhiteSpace (c))
throw CreateInvalidKeywordException (keyword);
if (Char.IsControl (c))
throw CreateInvalidKeywordException (keyword);
}
if (ContainsKey (keyword))
_dictionary [keyword] = value;
else
_dictionary.Add (keyword, value);
}
}
[Browsable (false)]
public virtual ICollection Keys
{
get {
string [] keys = new string [_dictionary.Keys.Count];
((ICollection<string>) _dictionary.Keys).CopyTo (keys, 0);
ReadOnlyCollection<string> keyColl = new ReadOnlyCollection<string> (keys);
return keyColl;
}
}
bool ICollection.IsSynchronized
{
get { throw new NotImplementedException (); }
}
object ICollection.SyncRoot
{
get { throw new NotImplementedException (); }
}
object IDictionary.this [object keyword]
{
get { return this [(string) keyword]; }
set { this [(string) keyword] = value; }
}
[Browsable (false)]
public virtual ICollection Values {
get {
object [] values = new object [_dictionary.Values.Count];
((ICollection<object>) _dictionary.Values).CopyTo (values, 0);
ReadOnlyCollection<object> valuesColl = new ReadOnlyCollection<object> (values);
return valuesColl;
}
}
#endregion // Properties
#region Methods
public void Add (string keyword, object value)
{
this [keyword] = value;
}
public static void AppendKeyValuePair (StringBuilder builder, string keyword, string value,
bool useOdbcRules)
{
if (builder == null)
throw new ArgumentNullException ("builder");
if (keyword == null)
throw new ArgumentNullException ("keyName");
if (keyword.Length == 0)
throw new ArgumentException ("Empty keyword is not valid.");
if (builder.Length > 0)
builder.Append (';');
if (!useOdbcRules)
builder.Append (keyword.Replace ("=", "=="));
else
builder.Append (keyword);
builder.Append ('=');
if (value == null || value.Length == 0)
return;
if (!useOdbcRules) {
bool dquoteFound = (value.IndexOf ('\"') > -1);
bool squoteFound = (value.IndexOf ('\'') > -1);
if (dquoteFound && squoteFound) {
builder.Append ('\"');
builder.Append (value.Replace ("\"", "\"\""));
builder.Append ('\"');
} else if (dquoteFound) {
builder.Append ('\'');
builder.Append (value);
builder.Append ('\'');
} else if (squoteFound || value.IndexOf ('=') > -1 || value.IndexOf (';') > -1) {
builder.Append ('\"');
builder.Append (value);
builder.Append ('\"');
} else if (ValueNeedsQuoting (value)) {
builder.Append ('\"');
builder.Append (value);
builder.Append ('\"');
} else
builder.Append (value);
} else {
int braces = 0;
bool semicolonFound = false;
int len = value.Length;
bool needBraces = false;
int lastChar = -1;
for (int i = 0; i < len; i++) {
int peek = 0;
if (i == (len - 1))
peek = -1;
else
peek = value [i + 1];
char c = value [i];
switch (c) {
case '{':
braces++;
break;
case '}':
if (peek.Equals (c)) {
i++;
continue;
} else {
braces--;
if (peek != -1)
needBraces = true;
}
break;
case ';':
semicolonFound = true;
break;
default:
break;
}
lastChar = c;
}
if (value [0] == '{' && (lastChar != '}' || (braces == 0 && needBraces))) {
builder.Append ('{');
builder.Append (value.Replace ("}", "}}"));
builder.Append ('}');
return;
}
bool isDriver = (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0);
if (isDriver) {
if (value [0] == '{' && lastChar == '}' && !needBraces) {
builder.Append (value);
return;
}
builder.Append ('{');
builder.Append (value.Replace ("}", "}}"));
builder.Append ('}');
return;
}
if (value [0] == '{' && (braces != 0 || lastChar != '}') && needBraces) {
builder.Append ('{');
builder.Append (value.Replace ("}", "}}"));
builder.Append ('}');
return;
}
if (value [0] != '{' && semicolonFound) {
builder.Append ('{');
builder.Append (value.Replace ("}", "}}"));
builder.Append ('}');
return;
}
builder.Append (value);
}
}
public static void AppendKeyValuePair (StringBuilder builder, string keyword, string value)
{
AppendKeyValuePair (builder, keyword, value, false);
}
public virtual void Clear ()
{
_dictionary.Clear ();
}
public virtual bool ContainsKey (string keyword)
{
if (keyword == null)
throw new ArgumentNullException ("keyword");
return _dictionary.ContainsKey (keyword);
}
public virtual bool EquivalentTo (DbConnectionStringBuilder connectionStringBuilder)
{
bool ret = true;
try {
if (Count != connectionStringBuilder.Count)
ret = false;
else {
foreach (string key in Keys) {
if (!this [key].Equals (connectionStringBuilder [key])) {
ret = false;
break;
}
}
}
} catch (ArgumentException) {
ret = false;
}
return ret;
}
[MonoTODO]
protected virtual void GetProperties (Hashtable propertyDescriptors)
{
throw new NotImplementedException ();
}
[MonoTODO]
protected internal void ClearPropertyDescriptors ()
{
throw new NotImplementedException ();
}
public virtual bool Remove (string keyword)
{
if (keyword == null)
throw new ArgumentNullException ("keyword");
return _dictionary.Remove (keyword);
}
public virtual bool ShouldSerialize (string keyword)
{
throw new NotImplementedException ();
}
void ICollection.CopyTo (Array array, int index)
{
if (array == null)
throw new ArgumentNullException ("array");
KeyValuePair<string, object> [] arr = array as KeyValuePair<string, object> [];
if (arr == null)
throw new ArgumentException ("Target array type is not compatible with the type of items in the collection");
((ICollection<KeyValuePair<string, object>>) _dictionary).CopyTo (arr, index);
}
void IDictionary.Add (object keyword, object value)
{
this.Add ((string) keyword, value);
}
bool IDictionary.Contains (object keyword)
{
return ContainsKey ((string) keyword);
}
IDictionaryEnumerator IDictionary.GetEnumerator ()
{
return (IDictionaryEnumerator) _dictionary.GetEnumerator ();
}
void IDictionary.Remove (object keyword)
{
Remove ((string) keyword);
}
IEnumerator IEnumerable.GetEnumerator ()
{
return (IEnumerator) _dictionary.GetEnumerator ();
}
private static object _staticAttributeCollection = null;
AttributeCollection ICustomTypeDescriptor.GetAttributes ()
{
object value = _staticAttributeCollection;
if (value == null) {
CLSCompliantAttribute clsAttr = new CLSCompliantAttribute (true);
DefaultMemberAttribute defMemAttr = new DefaultMemberAttribute ("Item");
Attribute [] attrs = {clsAttr, defMemAttr};
value = new AttributeCollection (attrs);
}
System.Threading.Interlocked.CompareExchange (ref _staticAttributeCollection, value, null);
return _staticAttributeCollection as AttributeCollection;
}
string ICustomTypeDescriptor.GetClassName ()
{
return this.GetType ().ToString ();
}
string ICustomTypeDescriptor.GetComponentName ()
{
return null;
}
TypeConverter ICustomTypeDescriptor.GetConverter ()
{
return new CollectionConverter ();
}
EventDescriptor ICustomTypeDescriptor.GetDefaultEvent ()
{
return null;
}
PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty ()
{
return null;
}
object ICustomTypeDescriptor.GetEditor (Type editorBaseType)
{
return null;
}
EventDescriptorCollection ICustomTypeDescriptor.GetEvents ()
{
return EventDescriptorCollection.Empty;
}
EventDescriptorCollection ICustomTypeDescriptor.GetEvents (Attribute [] attributes)
{
return EventDescriptorCollection.Empty;
}
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties ()
{
return PropertyDescriptorCollection.Empty;
}
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties (Attribute [] attributes)
{
return PropertyDescriptorCollection.Empty;
}
object ICustomTypeDescriptor.GetPropertyOwner (PropertyDescriptor pd)
{
throw new NotImplementedException ();
}
public override string ToString ()
{
return ConnectionString;
}
public virtual bool TryGetValue (string keyword, out object value)
{
// FIXME : not sure, difference between this [keyword] and this method
bool found = ContainsKey (keyword);
if (found)
value = this [keyword];
else
value = null;
return found;
}
static ArgumentException CreateInvalidKeywordException (string keyword)
{
return new ArgumentException ("A keyword cannot contain "
+ "control characters, leading semicolons or "
+ "leading or trailing whitespace.", keyword);
}
static ArgumentException CreateConnectionStringInvalidException (int index)
{
return new ArgumentException ("Format of initialization "
+ "string does not conform to specifications at "
+ "index " + index + ".");
}
static bool ValueNeedsQuoting (string value)
{
foreach (char c in value) {
if (char.IsWhiteSpace (c))
return true;
}
return false;
}
void ParseConnectionString (string connectionString)
{
if (useOdbcRules)
ParseConnectionStringOdbc (connectionString);
else
ParseConnectionStringNonOdbc (connectionString);
}
void ParseConnectionStringOdbc (string connectionString)
{
bool inQuote = false;
bool inDQuote = false;
bool inName = true;
bool inBraces = false;
string name = String.Empty;
string val = String.Empty;
StringBuilder sb = new StringBuilder ();
int len = connectionString.Length;
for (int i = 0; i < len; i++) {
char c = connectionString [i];
int peek = (i == (len - 1)) ? -1 : connectionString [i + 1];
switch (c) {
case '{':
if (inName) {
sb.Append (c);
continue;
}
if (sb.Length == 0)
inBraces = true;
sb.Append (c);
break;
case '}':
if (inName || !inBraces) {
sb.Append (c);
continue;
}
if (peek == -1) {
sb.Append (c);
inBraces = false;
} else if (peek.Equals (c)) {
sb.Append (c);
sb.Append (c);
i++;
} else {
int next = NextNonWhitespaceChar (connectionString, i);
if (next != -1 && ((char) next) != ';')
throw CreateConnectionStringInvalidException (next);
sb.Append (c);
inBraces = false;
}
break;
case ';':
if (inName || inBraces) {
sb.Append (c);
continue;
}
if (name.Length > 0 && sb.Length > 0) {
val = sb.ToString ();
name = name.ToLower ().TrimEnd ();
this [name] = val;
} else if (sb.Length > 0)
throw CreateConnectionStringInvalidException (c);
inName = true;
name = String.Empty;
sb.Length = 0;
break;
case '=':
if (inBraces || !inName) {
sb.Append (c);
continue;
}
name = sb.ToString ();
if (name.Length == 0)
throw CreateConnectionStringInvalidException (c);
sb.Length = 0;
inName = false;
break;
default:
if (inDQuote || inQuote || inBraces)
sb.Append (c);
else if (char.IsWhiteSpace (c)) {
// ignore leading whitespace
if (sb.Length > 0) {
int nextChar = SkipTrailingWhitespace (connectionString, i);
if (nextChar == -1)
sb.Append (c);
else
i = nextChar;
}
} else
sb.Append (c);
break;
}
}
if ((inName && sb.Length > 0) || inDQuote || inQuote || inBraces)
throw CreateConnectionStringInvalidException (len - 1);
if (name.Length > 0 && sb.Length > 0) {
val = sb.ToString ();
name = name.ToLower ().TrimEnd ();
this [name] = val;
}
}
void ParseConnectionStringNonOdbc (string connectionString)
{
bool inQuote = false;
bool inDQuote = false;
bool inName = true;
string name = String.Empty;
string val = String.Empty;
StringBuilder sb = new StringBuilder ();
int len = connectionString.Length;
for (int i = 0; i < len; i++) {
char c = connectionString [i];
int peek = (i == (len - 1)) ? -1 : connectionString [i + 1];
switch (c) {
case '\'':
if (inName) {
sb.Append (c);
continue;
}
if (inDQuote)
sb.Append (c);
else if (inQuote) {
if (peek == -1)
inQuote = false;
else if (peek.Equals (c)) {
sb.Append (c);
i++;
} else {
int next = NextNonWhitespaceChar (connectionString, i);
if (next != -1 && ((char) next) != ';')
throw CreateConnectionStringInvalidException (next);
inQuote = false;
}
if (!inQuote) {
val = sb.ToString ();
name = name.ToLower ().TrimEnd ();
this [name] = val;
inName = true;
name = String.Empty;
sb.Length = 0;
}
} else if (sb.Length == 0)
inQuote = true;
else
sb.Append (c);
break;
case '"':
if (inName) {
sb.Append (c);
continue;
}
if (inQuote)
sb.Append (c);
else if (inDQuote) {
if (peek == -1)
inDQuote = false;
else if (peek.Equals (c)) {
sb.Append (c);
i++;
} else {
int next = NextNonWhitespaceChar (connectionString, i);
if (next != -1 && ((char) next) != ';')
throw CreateConnectionStringInvalidException (next);
inDQuote = false;
}
} else if (sb.Length == 0)
inDQuote = true;
else
sb.Append (c);
break;
case ';':
if (inName) {
sb.Append (c);
continue;
}
if (inDQuote || inQuote)
sb.Append (c);
else {
if (name.Length > 0 && sb.Length > 0) {
val = sb.ToString ();
name = name.ToLower ().TrimEnd ();
this [name] = val;
} else if (sb.Length > 0)
throw CreateConnectionStringInvalidException (c);
inName = true;
name = String.Empty;
sb.Length = 0;
}
break;
case '=':
if (inDQuote || inQuote || !inName)
sb.Append (c);
else if (peek != -1 && peek.Equals (c)) {
sb.Append (c);
i++;
} else {
name = sb.ToString ();
if (name.Length == 0)
throw CreateConnectionStringInvalidException (c);
sb.Length = 0;
inName = false;
}
break;
default:
if (inDQuote || inQuote)
sb.Append (c);
else if (char.IsWhiteSpace (c)) {
// ignore leading whitespace
if (sb.Length > 0) {
int nextChar = SkipTrailingWhitespace (connectionString, i);
if (nextChar == -1)
sb.Append (c);
else
i = nextChar;
}
} else
sb.Append (c);
break;
}
}
if ((inName && sb.Length > 0) || inDQuote || inQuote)
throw CreateConnectionStringInvalidException (len -1);
if (name.Length > 0 && sb.Length > 0) {
val = sb.ToString ();
name = name.ToLower ().TrimEnd ();
this [name] = val;
}
}
static int SkipTrailingWhitespace (string value, int index)
{
int len = value.Length;
for (int i = (index + 1); i < len; i++) {
char c = value [i];
if (c == ';')
return (i - 1);
if (!char.IsWhiteSpace (c))
return -1;
}
return len - 1;
}
static int NextNonWhitespaceChar (string value, int index)
{
int len = value.Length;
for (int i = (index + 1); i < len; i++) {
char c = value [i];
if (!char.IsWhiteSpace (c))
return (int) c;
}
return -1;
}
#endregion // Public Methods
}
}
#endif // NET_2_0 using

View File

@ -0,0 +1,317 @@
//
// System.Data.Common.DbDataPermission.cs
//
// Authors:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002-2003
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Security;
using System.Security.Permissions;
namespace System.Data.Common {
[Serializable]
public abstract class DBDataPermission : CodeAccessPermission, IUnrestrictedPermission {
#region Fields
private const int version = 1;
private bool allowBlankPassword;
private PermissionState state;
private Hashtable _connections;
#endregion // Fields
#region Constructors
#if NET_2_0
[Obsolete ("use DBDataPermission (PermissionState.None)", true)]
#endif
protected DBDataPermission ()
: this (PermissionState.None)
{
}
protected DBDataPermission (DBDataPermission permission)
{
if (permission == null)
throw new ArgumentNullException ("permission");
state = permission.state;
if (state != PermissionState.Unrestricted) {
allowBlankPassword = permission.allowBlankPassword;
_connections = (Hashtable) permission._connections.Clone ();
}
}
protected DBDataPermission (DBDataPermissionAttribute permissionAttribute)
{
if (permissionAttribute == null)
throw new ArgumentNullException ("permissionAttribute");
_connections = new Hashtable ();
if (permissionAttribute.Unrestricted) {
state = PermissionState.Unrestricted;
}
else {
state = PermissionState.None;
allowBlankPassword = permissionAttribute.AllowBlankPassword;
if (permissionAttribute.ConnectionString.Length > 0) {
Add (permissionAttribute.ConnectionString, permissionAttribute.KeyRestrictions,
permissionAttribute.KeyRestrictionBehavior);
}
}
}
protected DBDataPermission (PermissionState state)
{
this.state = PermissionHelper.CheckPermissionState (state, true);
_connections = new Hashtable ();
}
#if NET_2_0
[Obsolete ("use DBDataPermission (PermissionState.None)", true)]
protected
#else
public
#endif
DBDataPermission (PermissionState state, bool allowBlankPassword)
: this (state)
{
this.allowBlankPassword = allowBlankPassword;
}
#endregion // Constructors
#region Properties
public bool AllowBlankPassword {
get { return allowBlankPassword; }
set { allowBlankPassword = value; }
}
#endregion // Properties
#region Methods
public virtual void Add (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
{
state = PermissionState.None;
_connections [connectionString] = new object [2] { restrictions, behavior };
}
protected void Clear ()
{
_connections.Clear ();
}
public override IPermission Copy ()
{
DBDataPermission dbdp = CreateInstance ();
dbdp.allowBlankPassword = this.allowBlankPassword;
dbdp._connections = (Hashtable) this._connections.Clone ();
return dbdp;
}
protected virtual DBDataPermission CreateInstance ()
{
return (DBDataPermission) Activator.CreateInstance (this.GetType (), new object [1] { PermissionState.None });
}
public override void FromXml (SecurityElement securityElement)
{
PermissionHelper.CheckSecurityElement (securityElement, "securityElement", version, version);
// Note: we do not (yet) care about the return value
// as we only accept version 1 (min/max values)
state = (PermissionHelper.IsUnrestricted (securityElement) ?
PermissionState.Unrestricted : PermissionState.None);
allowBlankPassword = false;
string blank = securityElement.Attribute ("AllowBlankPassword");
if (blank != null) {
#if NET_2_0
// avoid possible exceptions with Fx 2.0
if (!Boolean.TryParse (blank, out allowBlankPassword))
allowBlankPassword = false;
#else
try {
allowBlankPassword = Boolean.Parse (blank);
}
catch {
allowBlankPassword = false;
}
#endif
}
if (securityElement.Children != null) {
foreach (SecurityElement child in securityElement.Children) {
string connect = child.Attribute ("ConnectionString");
string restricts = child.Attribute ("KeyRestrictions");
KeyRestrictionBehavior behavior = (KeyRestrictionBehavior) Enum.Parse (
typeof (KeyRestrictionBehavior), child.Attribute ("KeyRestrictionBehavior"));
if ((connect != null) && (connect.Length > 0))
Add (connect, restricts, behavior);
}
}
}
public override IPermission Intersect (IPermission target)
{
// FIXME: restrictions not completely implemented - nor documented
DBDataPermission dbdp = Cast (target);
if (dbdp == null)
return null;
if (IsUnrestricted ()) {
if (dbdp.IsUnrestricted ()) {
DBDataPermission u = CreateInstance ();
u.state = PermissionState.Unrestricted;
return u;
}
return dbdp.Copy ();
}
if (dbdp.IsUnrestricted ())
return Copy ();
if (IsEmpty () || dbdp.IsEmpty ())
return null;
DBDataPermission p = CreateInstance ();
p.allowBlankPassword = (allowBlankPassword && dbdp.allowBlankPassword);
foreach (DictionaryEntry de in _connections) {
object o = dbdp._connections [de.Key];
if (o != null)
p._connections.Add (de.Key, de.Value);
}
return (p._connections.Count > 0) ? p : null;
}
public override bool IsSubsetOf (IPermission target)
{
// FIXME: restrictions not completely implemented - nor documented
DBDataPermission dbdp = Cast (target);
if (dbdp == null)
return IsEmpty ();
if (dbdp.IsUnrestricted ())
return true;
if (IsUnrestricted ())
return dbdp.IsUnrestricted ();
if (allowBlankPassword && !dbdp.allowBlankPassword)
return false;
if (_connections.Count > dbdp._connections.Count)
return false;
foreach (DictionaryEntry de in _connections) {
object o = dbdp._connections [de.Key];
if (o == null)
return false;
// FIXME: this is a subset of what is required
// it seems that we must process both the connect string
// and the restrictions - but this has other effects :-/
}
return true;
}
public bool IsUnrestricted ()
{
return (state == PermissionState.Unrestricted);
}
public override SecurityElement ToXml ()
{
SecurityElement se = PermissionHelper.Element (this.GetType (), version);
if (IsUnrestricted ()) {
se.AddAttribute ("Unrestricted", "true");
}
else {
// attribute is present for both True and False
se.AddAttribute ("AllowBlankPassword", allowBlankPassword.ToString ());
foreach (DictionaryEntry de in _connections) {
SecurityElement child = new SecurityElement ("add");
child.AddAttribute ("ConnectionString", (string) de.Key);
object[] restrictionsInfo = (object[]) de.Value;
child.AddAttribute ("KeyRestrictions", (string) restrictionsInfo [0]);
KeyRestrictionBehavior krb = (KeyRestrictionBehavior) restrictionsInfo [1];
child.AddAttribute ("KeyRestrictionBehavior", krb.ToString ());
se.AddChild (child);
}
}
return se;
}
public override IPermission Union (IPermission target)
{
// FIXME: restrictions not completely implemented - nor documented
DBDataPermission dbdp = Cast (target);
if (dbdp == null)
return Copy ();
if (IsEmpty () && dbdp.IsEmpty ())
return Copy ();
DBDataPermission p = CreateInstance ();
if (IsUnrestricted () || dbdp.IsUnrestricted ()) {
p.state = PermissionState.Unrestricted;
}
else {
p.allowBlankPassword = (allowBlankPassword || dbdp.allowBlankPassword);
p._connections = new Hashtable (_connections.Count + dbdp._connections.Count);
foreach (DictionaryEntry de in _connections)
p._connections.Add (de.Key, de.Value);
// don't duplicate
foreach (DictionaryEntry de in dbdp._connections)
p._connections [de.Key] = de.Value;
}
return p;
}
// helpers
private bool IsEmpty ()
{
return ((state != PermissionState.Unrestricted) && (_connections.Count == 0));
}
private DBDataPermission Cast (IPermission target)
{
if (target == null)
return null;
DBDataPermission dbdp = (target as DBDataPermission);
if (dbdp == null) {
PermissionHelper.ThrowInvalidPermission (target, this.GetType ());
}
return dbdp;
}
#endregion // Methods
}
}

View File

@ -0,0 +1,113 @@
//
// System.Data.Common.DbDataPermissionAttribute.cs
//
// Authors:
// Rodrigo Moya (rodrigo@ximian.com)
// Tim Coleman (tim@timcoleman.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// (C) Ximian, Inc
// Copyright (C) Tim Coleman, 2002
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.ComponentModel;
using System.Security.Permissions;
using System.Globalization;
namespace System.Data.Common {
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
AttributeTargets.Method, AllowMultiple=true, Inherited=false)]
[Serializable]
public abstract class DBDataPermissionAttribute : CodeAccessSecurityAttribute {
#region Fields
bool allowBlankPassword;
string keyRestrictions;
KeyRestrictionBehavior keyRestrictionBehavior;
string connectionString;
#endregion // Fields
#region Constructors
protected DBDataPermissionAttribute (SecurityAction action)
: base (action)
{
}
#endregion // Constructors
#region Properties
public bool AllowBlankPassword {
get { return allowBlankPassword; }
set { allowBlankPassword = value; }
}
public string KeyRestrictions {
get {
if (keyRestrictions == null)
return String.Empty;
return keyRestrictions;
}
set { keyRestrictions = value; }
}
public string ConnectionString {
get {
if (connectionString == null)
return String.Empty;
return connectionString;
}
set { connectionString = value; }
}
public KeyRestrictionBehavior KeyRestrictionBehavior {
get { return keyRestrictionBehavior; }
set {
ExceptionHelper.CheckEnumValue (typeof (KeyRestrictionBehavior), value);
keyRestrictionBehavior = value;
}
}
#endregion // Properties
#region // Methods
[EditorBrowsableAttribute (EditorBrowsableState.Never)]
public bool ShouldSerializeConnectionString ()
{
// FIXME: configurable ? why is this in the attribute class ?
return false;
}
[EditorBrowsableAttribute (EditorBrowsableState.Never)]
public bool ShouldSerializeKeyRestrictions ()
{
// FIXME: configurable ? why is this in the attribute class ?
return false;
}
#endregion // Methods
}
}

View File

@ -326,7 +326,7 @@ namespace System.Data.Odbc
ret = libodbc.SQLAllocHandle (OdbcHandleType.Env, IntPtr.Zero, ref henv); ret = libodbc.SQLAllocHandle (OdbcHandleType.Env, IntPtr.Zero, ref henv);
if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo)) { if ((ret != OdbcReturn.Success) && (ret != OdbcReturn.SuccessWithInfo)) {
OdbcErrorCollection errors = new OdbcErrorCollection (); OdbcErrorCollection errors = new OdbcErrorCollection ();
errors.Add (new OdbcError (SafeDriver, "Error in " + SafeDriver, "", 1)); errors.Add (new OdbcError (this));
e = new OdbcException (errors); e = new OdbcException (errors);
MessageHandler (e); MessageHandler (e);
throw e; throw e;
@ -519,7 +519,7 @@ namespace System.Data.Odbc
string state = RemoveTrailingNullChar (Encoding.Unicode.GetString (buf_SqlState)); string state = RemoveTrailingNullChar (Encoding.Unicode.GetString (buf_SqlState));
string message = Encoding.Unicode.GetString (buf_MsgText, 0, txtlen * 2); string message = Encoding.Unicode.GetString (buf_MsgText, 0, txtlen * 2);
errors.Add (new OdbcError (SafeDriver, message, state, nativeerror)); errors.Add (new OdbcError (message, state, nativeerror));
} }
string source = SafeDriver; string source = SafeDriver;

View File

@ -0,0 +1,219 @@
//
// System.Data.Odbc.OdbcConnectionStringBuilder
//
// Authors:
// Nidhi Rawal (rawalnidhi_rawal@yahoo.com)
//
// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
//
// 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.Collections;
using System.ComponentModel;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.Odbc;
using System.Reflection;
using System.Text;
namespace System.Data.Odbc
{
[DefaultProperty ("Driver")]
[TypeConverter ("System.Data.Odbc.OdbcConnectionStringBuilder+OdbcConnectionStringBuilderConverter, " + Consts.AssemblySystem_Data)]
public sealed class OdbcConnectionStringBuilder : DbConnectionStringBuilder
{
#region Fields
string driver;
string dsn;
#endregion //Fields
#region Constructors
public OdbcConnectionStringBuilder () : base (true)
{
}
public OdbcConnectionStringBuilder (string connectionString) : base (true)
{
if (connectionString == null) {
base.ConnectionString = string.Empty;
return;
}
base.ConnectionString = connectionString;
}
#endregion // Constructors
#region Properties
public override Object this [string keyword] {
get {
if (keyword == null)
throw new ArgumentNullException ("keyword");
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
return Driver;
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
return Dsn;
return base [keyword];
}
set {
if (value == null) {
Remove (keyword);
return;
}
if (keyword == null)
throw new ArgumentNullException ("keyword");
string text_value = value.ToString ();
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
Driver = text_value;
return;
} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
dsn = text_value;
} else if (value.ToString ().IndexOf (';') != -1) {
text_value = "{" + text_value + "}";
}
base [keyword] = value;
}
}
public override ICollection Keys {
get {
List<string> keys = new List<string> ();
keys.Add ("Dsn");
keys.Add ("Driver");
ICollection base_keys = base.Keys;
foreach (string keyword in base_keys) {
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
continue;
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
continue;
keys.Add (keyword);
}
string [] final = new string [keys.Count];
keys.CopyTo (final);
return final;
}
}
[DisplayName ("Driver")]
[RefreshProperties (RefreshProperties.All)]
public string Driver {
get {
if (driver == null)
return string.Empty;
return driver;
}
set {
if (value == null)
throw new ArgumentNullException ("Driver");
driver = value;
if (value.Length > 0) {
int startBrace = value.IndexOf ('{');
int endBrace = value.IndexOf ('}');
if (startBrace == -1 || endBrace == -1)
value = "{" + value + "}";
else if (startBrace > 0 || endBrace < (value.Length - 1))
value = "{" + value + "}";
}
base ["Driver"] = value;
}
}
[DisplayName ("Dsn")]
[RefreshProperties (RefreshProperties.All)]
public string Dsn {
get {
if (dsn == null)
return string.Empty;
return dsn;
}
set {
if (value == null)
throw new ArgumentNullException ("Dsn");
dsn = value;
base ["Dsn"] = dsn;
}
}
#endregion // Properties
#region Methods
public override bool ContainsKey (string keyword)
{
if (keyword == null)
throw new ArgumentNullException ("keyword");
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
return true;
if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
return true;
return base.ContainsKey (keyword);
}
public override bool Remove (string keyword)
{
if (keyword == null)
throw new ArgumentNullException ("keyword");
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0)
driver = string.Empty;
else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0)
dsn = string.Empty;
return base.Remove (keyword);
}
public override void Clear ()
{
driver = null;
dsn = null;
base.Clear ();
}
public override bool TryGetValue (string keyword, out Object value)
{
if (keyword == null )
throw new ArgumentNullException ("keyword");
bool found = base.TryGetValue (keyword, out value);
if (found)
return found;
if (string.Compare (keyword, "Driver", StringComparison.InvariantCultureIgnoreCase) == 0) {
value = string.Empty;
return true;
} else if (string.Compare (keyword, "Dsn", StringComparison.InvariantCultureIgnoreCase) == 0) {
value = string.Empty;
return true;
}
return false;
}
#endregion // Methods
}
}
#endif // NET_2_0 using

View File

@ -0,0 +1,104 @@
//
// System.Data.Odbc.OdbcError
//
// Author:
// Brian Ritchie (brianlritchie@hotmail.com)
//
// Copyright (C) Brian Ritchie, 2002
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Text;
namespace System.Data.Odbc
{
[Serializable]
public sealed class OdbcError
{
readonly string _message;
string _source;
readonly string _state;
readonly int _nativeerror;
#region Constructors
internal OdbcError (OdbcConnection connection)
{
_nativeerror = 1;
_source = connection.SafeDriver;
_message = "Error in " + _source;
_state = string.Empty;
}
internal OdbcError (string message, string state, int nativeerror)
{
_message = message;
_state = state;
_nativeerror = nativeerror;
}
#endregion // Constructors
#region Properties
public string Message {
get { return _message; }
}
public int NativeError {
get { return _nativeerror; }
}
public string Source {
get { return _source; }
}
public string SQLState {
get { return _state; }
}
#endregion // Properties
#region methods
public override string ToString ()
{
return Message;
}
internal void SetSource (string source)
{
_source = source;
}
#endregion
}
}

View File

@ -0,0 +1,87 @@
//
// System.Data.Odbc.OdbcPermission
//
// Authors:
// Umadevi S (sumadevi@novell.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Data.Common;
using System.Security;
using System.Security.Permissions;
namespace System.Data.Odbc
{
[Serializable]
public sealed class OdbcPermission : DBDataPermission
{
#region Constructors
[Obsolete ("use OdbcPermission(PermissionState.None)", true)]
public OdbcPermission ()
: base (PermissionState.None)
{
}
public OdbcPermission (PermissionState state)
: base (state)
{
}
[Obsolete ("use OdbcPermission(PermissionState.None)", true)]
public OdbcPermission (PermissionState state, bool allowBlankPassword)
: base (state)
{
AllowBlankPassword = allowBlankPassword;
}
// required for Copy method
internal OdbcPermission (DBDataPermission permission)
: base (permission)
{
}
// easier (and common) permission creation from attribute class
internal OdbcPermission (DBDataPermissionAttribute attribute)
: base (attribute)
{
}
#endregion
#region Methods
public override IPermission Copy ()
{
return new OdbcPermission (this);
}
public override void Add (string connectionString, string restrictions, KeyRestrictionBehavior behavior)
{
base.Add (connectionString, restrictions, behavior);
}
#endregion
}
}

View File

@ -0,0 +1,64 @@
//
// System.Data.Odbc.OdbcPermissionAttribute
//
// Authors:
// Umadevi S (sumadevi@novell.com)
// Sebastien Pouliot <sebastien@ximian.com>
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Data.Common;
using System.Security;
using System.Security.Permissions;
namespace System.Data.Odbc {
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class |
AttributeTargets.Struct | AttributeTargets.Constructor |
AttributeTargets.Method, AllowMultiple=true,
Inherited=false)]
[Serializable]
public sealed class OdbcPermissionAttribute : DBDataPermissionAttribute {
#region Constructors
public OdbcPermissionAttribute (SecurityAction action)
: base (action)
{
}
#endregion
#region Properties
#endregion
#region Methods
public override IPermission CreatePermission ()
{
return new OdbcPermission (this);
}
#endregion
}
}

View File

@ -379,7 +379,7 @@ namespace System.Data.SqlClient
keys.Add("User Instance"); keys.Add("User Instance");
keys.Add("Context Connection"); keys.Add("Context Connection");
keys.Add("Transaction Binding"); keys.Add("Transaction Binding");
var coll = new System.Collections.ObjectModel.ReadOnlyCollection<string>(keys); ReadOnlyCollection<string> coll = new ReadOnlyCollection<string>(keys);
return coll; return coll;
} }
} }
@ -528,7 +528,7 @@ namespace System.Data.SqlClient
values.Add(_userInstance); values.Add(_userInstance);
values.Add(_contextConnection); values.Add(_contextConnection);
values.Add(_transactionBinding); values.Add(_transactionBinding);
var coll = new System.Collections.ObjectModel.ReadOnlyCollection<object>(values); ReadOnlyCollection<object> coll = new ReadOnlyCollection<object>(values);
return coll; return coll;
} }
} }

View File

@ -81,6 +81,7 @@ System.Data/ISafeDataRecord.cs
System.Data/IsolationLevel.cs System.Data/IsolationLevel.cs
System.Data/ITableMapping.cs System.Data/ITableMapping.cs
System.Data/ITableMappingCollection.cs System.Data/ITableMappingCollection.cs
System.Data/KeyRestrictionBehavior.cs
System.Data/LoadOption.cs System.Data/LoadOption.cs
System.Data/MappingType.cs System.Data/MappingType.cs
System.Data/MergeFailedEventArgs.cs System.Data/MergeFailedEventArgs.cs
@ -128,12 +129,23 @@ System.Data/XmlDiffLoader.cs
System.Data.Common/CatalogLocation.cs System.Data.Common/CatalogLocation.cs
System.Data.Common/ComparerFactory.cs System.Data.Common/ComparerFactory.cs
System.Data.Common/DataAdapter.cs System.Data.Common/DataAdapter.cs
System.Data.Common/DataColumnMappingCollection.cs
System.Data.Common/DataColumnMapping.cs
System.Data.Common/DataColumnMappingConverter.cs
System.Data.Common/DataContainer.cs System.Data.Common/DataContainer.cs
System.Data.Common/DataTableMappingCollection.cs
System.Data.Common/DataTableMapping.cs
System.Data.Common/DataTableMappingConverter.cs
System.Data.Common/DbCommandBuilder.cs System.Data.Common/DbCommandBuilder.cs
System.Data.Common/DbConnectionStringBuilder.cs
System.Data.Common/DbConnectionStringBuilderHelper.cs System.Data.Common/DbConnectionStringBuilderHelper.cs
System.Data.Common/DbCommand.cs System.Data.Common/DbCommand.cs
System.Data.Common/DbConnection.cs System.Data.Common/DbConnection.cs
System.Data.Common/DbConnectionOptions.cs
System.Data.Common/DbConnectionString.cs
System.Data.Common/DbDataAdapter.cs System.Data.Common/DbDataAdapter.cs
System.Data.Common/DbDataPermissionAttribute.cs
System.Data.Common/DbDataPermission.cs
System.Data.Common/DbDataReader.cs System.Data.Common/DbDataReader.cs
System.Data.Common/DbDataSourceEnumerator.cs System.Data.Common/DbDataSourceEnumerator.cs
System.Data.Common/DbException.cs System.Data.Common/DbException.cs
@ -197,7 +209,9 @@ System.Data.Odbc/OdbcDescriptionAttribute.cs
System.Data.Odbc/OdbcColumn.cs System.Data.Odbc/OdbcColumn.cs
System.Data.Odbc/OdbcCommand.cs System.Data.Odbc/OdbcCommand.cs
System.Data.Odbc/OdbcConnection.cs System.Data.Odbc/OdbcConnection.cs
System.Data.Odbc/OdbcConnectionStringBuilder.cs
System.Data.Odbc/OdbcDataReader.cs System.Data.Odbc/OdbcDataReader.cs
System.Data.Odbc/OdbcError.cs
System.Data.Odbc/OdbcErrorCollection.cs System.Data.Odbc/OdbcErrorCollection.cs
System.Data.Odbc/OdbcException.cs System.Data.Odbc/OdbcException.cs
System.Data.Odbc/OdbcMetaDataColumnNames.cs System.Data.Odbc/OdbcMetaDataColumnNames.cs
@ -214,6 +228,8 @@ System.Data.Odbc/OdbcRowUpdatedEventArgs.cs
System.Data.Odbc/OdbcRowUpdatedEventHandler.cs System.Data.Odbc/OdbcRowUpdatedEventHandler.cs
System.Data.Odbc/OdbcRowUpdatingEventArgs.cs System.Data.Odbc/OdbcRowUpdatingEventArgs.cs
System.Data.Odbc/OdbcRowUpdatingEventHandler.cs System.Data.Odbc/OdbcRowUpdatingEventHandler.cs
System.Data.Odbc/OdbcPermissionAttribute.cs
System.Data.Odbc/OdbcPermission.cs
System.Data.Odbc/OdbcInfoMessageEventArgs.cs System.Data.Odbc/OdbcInfoMessageEventArgs.cs
System.Data.Odbc/OdbcInfoMessageEventHandler.cs System.Data.Odbc/OdbcInfoMessageEventHandler.cs
System.Data.Odbc/OdbcCommandBuilder.cs System.Data.Odbc/OdbcCommandBuilder.cs
@ -302,38 +318,19 @@ ReferenceSources/Bid.cs
ReferenceSources/BidArgumentTypeAttribute.cs ReferenceSources/BidArgumentTypeAttribute.cs
ReferenceSources/BidMethodAttribute.cs ReferenceSources/BidMethodAttribute.cs
ReferenceSources/DataStorage.cs ReferenceSources/DataStorage.cs
ReferenceSources/DbConnectionStringDefaults.cs
ReferenceSources/InOutOfProcHelper.cs ReferenceSources/InOutOfProcHelper.cs
ReferenceSources/ODB.cs ReferenceSources/ODB.cs
ReferenceSources/Res.cs ReferenceSources/Res.cs
ReferenceSources/ResCategoryAttribute.cs
ReferenceSources/SafeNativeMethods.cs ReferenceSources/SafeNativeMethods.cs
ReferenceSources/ThisAssembly.cs ReferenceSources/ThisAssembly.cs
ReferenceSources/OdbcHandle.cs
../../../external/referencesource/System.Data/Misc/HResults.cs ../../../external/referencesource/System.Data/Misc/HResults.cs
../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs ../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
../../../external/referencesource/System.Data/System/Data/Common/DataColumnMapping.cs
../../../external/referencesource/System.Data/System/Data/Common/DataColumnMappingCollection.cs
../../../external/referencesource/System.Data/System/Data/Common/DataTableMapping.cs
../../../external/referencesource/System.Data/System/Data/Common/DataTableMappingCollection.cs
../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs ../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionOptions.cs
../../../external/referencesource/System.Data/System/Data/Common/DBConnectionString.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringBuilder.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringCommon.cs
../../../external/referencesource/System.Data/System/Data/Common/DBDataPermission.cs
../../../external/referencesource/System.Data/System/Data/Common/DBDataPermissionAttribute.cs
../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs ../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs
../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs ../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs
../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs ../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs
../../../external/referencesource/System.Data/System/Data/Common/NameValuePair.cs
../../../external/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
../../../external/referencesource/System.Data/System/Data/Odbc/Odbc32.cs
../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionString.cs
../../../external/referencesource/System.Data/System/Data/Odbc/OdbcConnectionStringbuilder.cs
../../../external/referencesource/System.Data/System/Data/Odbc/OdbcError.cs
../../../external/referencesource/System.Data/System/Data/Odbc/OdbcPermission.cs
../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs
../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs ../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs

View File

@ -0,0 +1,41 @@
//
// System.Data.KeyRestrictionBehavior
//
// Author:
// Tim Coleman <tim@timcoleman.com>
//
// Copyright (C) Tim Coleman, 2003
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// 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.Data {
[Serializable]
public enum KeyRestrictionBehavior
{
AllowOnly,
PreventUsage
}
}

View File

@ -500,7 +500,7 @@ namespace MonoTests.System.Data.Common {
{ {
NonAbstractDBDataPermission empty = new NonAbstractDBDataPermission (PermissionState.None); NonAbstractDBDataPermission empty = new NonAbstractDBDataPermission (PermissionState.None);
NonAbstractDBDataPermission union = (NonAbstractDBDataPermission) empty.Union (empty); NonAbstractDBDataPermission union = (NonAbstractDBDataPermission) empty.Union (empty);
Assert.IsNull (union, "Empty U Empty"); Assert.IsNotNull (union, "Empty U Empty");
NonAbstractDBDataPermission dbdp1 = new NonAbstractDBDataPermission (PermissionState.None); NonAbstractDBDataPermission dbdp1 = new NonAbstractDBDataPermission (PermissionState.None);
dbdp1.Add (defaultConnectString, String.Empty, KeyRestrictionBehavior.AllowOnly); dbdp1.Add (defaultConnectString, String.Empty, KeyRestrictionBehavior.AllowOnly);

View File

@ -1 +1 @@
0ff9d109c2cf0e230c09e3069a3bb7a6f7873181 a797cf50afab63bc3e3b32e1cc95d46c9c8d5ef8

View File

@ -80,6 +80,7 @@ System.Data/ISafeDataRecord.cs
System.Data/IsolationLevel.cs System.Data/IsolationLevel.cs
System.Data/ITableMapping.cs System.Data/ITableMapping.cs
System.Data/ITableMappingCollection.cs System.Data/ITableMappingCollection.cs
System.Data/KeyRestrictionBehavior.cs
System.Data/LoadOption.cs System.Data/LoadOption.cs
System.Data/MappingType.cs System.Data/MappingType.cs
System.Data/MergeFailedEventArgs.cs System.Data/MergeFailedEventArgs.cs
@ -126,12 +127,23 @@ System.Data/XmlDiffLoader.cs
System.Data.Common/CatalogLocation.cs System.Data.Common/CatalogLocation.cs
System.Data.Common/ComparerFactory.cs System.Data.Common/ComparerFactory.cs
System.Data.Common/DataAdapter.cs System.Data.Common/DataAdapter.cs
System.Data.Common/DataColumnMappingCollection.cs
System.Data.Common/DataColumnMapping.cs
System.Data.Common/DataColumnMappingConverter.cs
System.Data.Common/DataContainer.cs System.Data.Common/DataContainer.cs
System.Data.Common/DataTableMappingCollection.cs
System.Data.Common/DataTableMapping.cs
System.Data.Common/DataTableMappingConverter.cs
System.Data.Common/DbCommandBuilder.cs System.Data.Common/DbCommandBuilder.cs
System.Data.Common/DbConnectionStringBuilder.cs
System.Data.Common/DbConnectionStringBuilderHelper.cs System.Data.Common/DbConnectionStringBuilderHelper.cs
System.Data.Common/DbCommand.cs System.Data.Common/DbCommand.cs
System.Data.Common/DbConnection.cs System.Data.Common/DbConnection.cs
System.Data.Common/DbConnectionOptions.cs
System.Data.Common/DbConnectionString.cs
System.Data.Common/DbDataAdapter.cs System.Data.Common/DbDataAdapter.cs
System.Data.Common/DbDataPermissionAttribute.cs
System.Data.Common/DbDataPermission.cs
System.Data.Common/DbDataReader.cs System.Data.Common/DbDataReader.cs
System.Data.Common/DbDataSourceEnumerator.cs System.Data.Common/DbDataSourceEnumerator.cs
System.Data.Common/DbException.cs System.Data.Common/DbException.cs
@ -175,7 +187,6 @@ Microsoft.SqlServer.Server/TriggerAction.cs
Microsoft.SqlServer.Server/SqlTriggerContext.cs Microsoft.SqlServer.Server/SqlTriggerContext.cs
Microsoft.SqlServer.Server/SqlProcedureAttribute.cs Microsoft.SqlServer.Server/SqlProcedureAttribute.cs
Microsoft.SqlServer.Server/SqlTriggerAttribute.cs Microsoft.SqlServer.Server/SqlTriggerAttribute.cs
System.Data.SqlClient/SortOrder.cs
System.Data.SqlClient/SqlNotificationType.cs System.Data.SqlClient/SqlNotificationType.cs
System.Data.SqlClient/SqlNotificationInfo.cs System.Data.SqlClient/SqlNotificationInfo.cs
System.Data.SqlClient/SqlNotificationSource.cs System.Data.SqlClient/SqlNotificationSource.cs
@ -243,31 +254,19 @@ ReferenceSources/Bid.cs
ReferenceSources/BidArgumentTypeAttribute.cs ReferenceSources/BidArgumentTypeAttribute.cs
ReferenceSources/BidMethodAttribute.cs ReferenceSources/BidMethodAttribute.cs
ReferenceSources/DataStorage.cs ReferenceSources/DataStorage.cs
ReferenceSources/DbConnectionStringDefaults.cs
ReferenceSources/InOutOfProcHelper.cs ReferenceSources/InOutOfProcHelper.cs
ReferenceSources/ODB.cs ReferenceSources/ODB.cs
ReferenceSources/Res.cs ReferenceSources/Res.cs
ReferenceSources/ResCategoryAttribute.cs
ReferenceSources/SafeNativeMethods.cs ReferenceSources/SafeNativeMethods.cs
ReferenceSources/ThisAssembly.cs ReferenceSources/ThisAssembly.cs
../../../external/referencesource/System.Data/Misc/HResults.cs ../../../external/referencesource/System.Data/Misc/HResults.cs
../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs ../../../external/referencesource/System.Data/System/Data/Common/AdapterUtil.cs
../../../external/referencesource/System.Data/System/Data/Common/DataColumnMapping.cs
../../../external/referencesource/System.Data/System/Data/Common/DataColumnMappingCollection.cs
../../../external/referencesource/System.Data/System/Data/Common/DataTableMapping.cs
../../../external/referencesource/System.Data/System/Data/Common/DataTableMappingCollection.cs
../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs ../../../external/referencesource/System.Data/System/Data/Common/DataRecordInternal.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionOptions.cs
../../../external/referencesource/System.Data/System/Data/Common/DBConnectionString.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringBuilder.cs
../../../external/referencesource/System.Data/System/Data/Common/DbConnectionStringCommon.cs
../../../external/referencesource/System.Data/System/Data/Common/DBDataPermission.cs
../../../external/referencesource/System.Data/System/Data/Common/DBDataPermissionAttribute.cs
../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs ../../../external/referencesource/System.Data/System/Data/Common/dbdatarecord.cs
../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs ../../../external/referencesource/System.Data/System/Data/Common/dbenumerator.cs
../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs ../../../external/referencesource/System.Data/System/Data/Common/FieldNameLookup.cs
../../../external/referencesource/System.Data/System/Data/Common/NameValuePair.cs
../../../external/referencesource/System.Data/System/Data/Common/NameValuePermission.cs
../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs ../../../external/referencesource/System.Data/System/Data/ProviderBase/DbConnectionPoolProviderInfo.cs
../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs ../../../external/referencesource/System.Data/System/Data/SqlClient/ApplicationIntent.cs
../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs ../../../external/referencesource/System.Data/System/Data/SQLTypes/INullable.cs
@ -289,3 +288,4 @@ ReferenceSources/ThisAssembly.cs
../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLSingle.cs ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLSingle.cs
../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLString.cs ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLString.cs
../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLUtility.cs ../../../external/referencesource/System.Data/System/Data/SQLTypes/SQLUtility.cs

View File

@ -0,0 +1 @@
#include System.Data.dll.sources

View File

@ -15,7 +15,7 @@ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
EXTRA_DISTFILES = EXTRA_DISTFILES =
VALID_PROFILE := $(filter net_4_5, $(PROFILE)) VALID_PROFILE := $(filter net_4_5 xammac_net_4_5, $(PROFILE))
ifndef VALID_PROFILE ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.IdentityModel.Selectors.dll LIBRARY_NAME = dummy-System.IdentityModel.Selectors.dll
NO_INSTALL = yes NO_INSTALL = yes

View File

@ -2,9 +2,11 @@ thisdir = class/System.IdentityModel
SUBDIRS = SUBDIRS =
include ../../build/rules.make include ../../build/rules.make
ifndef NO_SYSTEM_WEB_APPSERVICES_DEPENDENCY
ifeq (4, $(FRAMEWORK_VERSION_MAJOR)) ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
OTHER_LIB_MCS_FLAGS = -r:System.Web.ApplicationServices.dll OTHER_LIB_MCS_FLAGS = -r:System.Web.ApplicationServices.dll
endif endif
endif
LIBRARY = System.IdentityModel.dll LIBRARY = System.IdentityModel.dll
LIB_MCS_FLAGS = \ LIB_MCS_FLAGS = \
@ -12,12 +14,15 @@ LIB_MCS_FLAGS = \
/r:System.dll \ /r:System.dll \
/r:System.Xml.dll \ /r:System.Xml.dll \
/r:System.Security.dll \ /r:System.Security.dll \
/r:System.Web.dll \
/r:System.Configuration.dll \ /r:System.Configuration.dll \
/r:Mono.Security.dll \ /r:Mono.Security.dll \
/r:System.Runtime.Serialization.dll \ /r:System.Runtime.Serialization.dll \
$(OTHER_LIB_MCS_FLAGS) $(OTHER_LIB_MCS_FLAGS)
ifndef NO_SYSTEM_WEB_DEPENDENCY
LIB_MCS_FLAGS += /r:System.Web.dll
endif
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
EXTRA_DISTFILES = \ EXTRA_DISTFILES = \
@ -26,7 +31,7 @@ EXTRA_DISTFILES = \
Test/Resources/test.pfx \ Test/Resources/test.pfx \
Test/Resources/test2.pfx Test/Resources/test2.pfx
VALID_PROFILE := $(filter net_4_5, $(PROFILE)) VALID_PROFILE := $(filter net_4_5 xammac_net_4_5, $(PROFILE))
ifndef VALID_PROFILE ifndef VALID_PROFILE
LIBRARY_NAME = dummy-System.IdentityModel.dll LIBRARY_NAME = dummy-System.IdentityModel.dll
NO_INSTALL = yes NO_INSTALL = yes

View File

@ -1,3 +1,4 @@
#if !NO_SYSTEM_WEB_DEPENDENCY
// //
// CustomUserNameSecurityTokenAuthenticator.cs // CustomUserNameSecurityTokenAuthenticator.cs
// //
@ -133,3 +134,4 @@ namespace System.IdentityModel.Selectors
} }
} }
} }
#endif

View File

@ -1,3 +1,4 @@
#if !NO_SYSTEM_WEB_DEPENDENCY
// //
// UserNamePasswordValidator.cs // UserNamePasswordValidator.cs
// //
@ -80,3 +81,4 @@ namespace System.IdentityModel.Selectors
} }
} }
} }
#endif

View File

@ -6,17 +6,22 @@ LIBRARY = System.Messaging.dll
LIB_MCS_FLAGS = /resource:System.Messaging/MessageQueue.resx \ LIB_MCS_FLAGS = /resource:System.Messaging/MessageQueue.resx \
/r:System.dll \ /r:System.dll \
/r:System.Configuration.Install.dll \ /r:System.Configuration.Install.dll \
/r:System.Drawing.dll \
/r:System.Windows.Forms.dll \
/r:System.Xml \ /r:System.Xml \
/r:Mono.Messaging.dll /r:Mono.Messaging.dll
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:0618 -nowarn:219 -nowarn:169 \ TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) -nowarn:0618 -nowarn:219 -nowarn:169 \
/r:nunit.mocks.dll /r:nunit.mocks.dll
EXTRA_DISTFILES = System.Messaging/MessageQueue.resx EXTRA_DISTFILES = System.Messaging/MessageQueue.resx
ifdef MESSAGING_NO_WINFORMS ifndef NO_SYSTEM_DRAWING_DEPENDENCY
LIB_MCS_FLAGS += /r:System.Drawing.dll
endif
ifdef NO_WINFORMS_DEPENDENCY
LIB_MCS_FLAGS += -d:NO_WINFORMS_DEPENDENCY LIB_MCS_FLAGS += -d:NO_WINFORMS_DEPENDENCY
else
LIB_MCS_FLAGS += /r:System.Windows.Forms.dll
endif endif
include ../../build/library.make include ../../build/library.make

View File

@ -28,6 +28,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// //
#if !NO_SYSTEM_DRAWING_DEPENDENCY
using System.ComponentModel; using System.ComponentModel;
using System.Drawing.Design; using System.Drawing.Design;
@ -53,3 +54,4 @@ namespace System.Messaging.Design
} }
} }
} }
#endif

View File

@ -32,7 +32,9 @@
using System; using System;
using System.Collections; using System.Collections;
using System.ComponentModel; using System.ComponentModel;
#if !NO_SYSTEM_DRAWING_DEPENDENCY
using System.Drawing; using System.Drawing;
#endif
using System.Messaging.Design; using System.Messaging.Design;
using System.Threading; using System.Threading;
@ -258,7 +260,9 @@ namespace System.Messaging
} }
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
#if !NO_SYSTEM_DRAWING_DEPENDENCY
[TypeConverter (typeof(SizeConverter))] [TypeConverter (typeof(SizeConverter))]
#endif
[MessagingDescription ("MQ_MaximumJournalSize")] [MessagingDescription ("MQ_MaximumJournalSize")]
public long MaximumJournalSize { public long MaximumJournalSize {
get { get {
@ -270,7 +274,9 @@ namespace System.Messaging
} }
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
#if !NO_SYSTEM_DRAWING_DEPENDENCY
[TypeConverter (typeof(SizeConverter))] [TypeConverter (typeof(SizeConverter))]
#endif
[MessagingDescription ("MQ_MaximumQueueSize")] [MessagingDescription ("MQ_MaximumQueueSize")]
public long MaximumQueueSize { public long MaximumQueueSize {
get { get {

View File

@ -31,7 +31,9 @@ using System;
using System.Collections; using System.Collections;
using System.ComponentModel; using System.ComponentModel;
using System.Configuration.Install; using System.Configuration.Install;
#if !NO_SYSTEM_DRAWING_DEPENDENCY
using System.Drawing; using System.Drawing;
#endif
namespace System.Messaging namespace System.Messaging
{ {
@ -88,7 +90,9 @@ namespace System.Messaging
set {throw new NotImplementedException();} set {throw new NotImplementedException();}
} }
#if !NO_SYSTEM_DRAWING_DEPENDENCY
[TypeConverter (typeof(SizeConverter))] [TypeConverter (typeof(SizeConverter))]
#endif
public long MaximumJournalSize { public long MaximumJournalSize {
[MonoTODO] [MonoTODO]
get {throw new NotImplementedException();} get {throw new NotImplementedException();}
@ -96,7 +100,9 @@ namespace System.Messaging
set {throw new NotImplementedException();} set {throw new NotImplementedException();}
} }
#if !NO_SYSTEM_DRAWING_DEPENDENCY
[TypeConverter (typeof(SizeConverter))] [TypeConverter (typeof(SizeConverter))]
#endif
public long MaximumQueueSize { public long MaximumQueueSize {
[MonoTODO] [MonoTODO]
get {throw new NotImplementedException();} get {throw new NotImplementedException();}
@ -183,4 +189,4 @@ namespace System.Messaging
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
} }

View File

@ -0,0 +1 @@
#include net_4_5_System.Runtime.Serialization.dll.sources

View File

@ -7,13 +7,19 @@ LIB_MCS_FLAGS = -r:System.dll -r:System.Xml.dll -r:System.Runtime.Serialization.
ifneq (2.1, $(FRAMEWORK_VERSION)) ifneq (2.1, $(FRAMEWORK_VERSION))
LIB_MCS_FLAGS += -d:NET_3_5 -d:NET_3_0 \ LIB_MCS_FLAGS += -d:NET_3_5 -d:NET_3_0 \
-r:System.Configuration.dll \ -r:System.Configuration.dll
-r:System.Web.Extensions.dll
ifndef NO_SYSTEM_WEB_DEPENDENCY
LIB_MCS_FLAGS += -r:System.Web.Extensions.dll
endif endif
endif
ifndef NO_SYSTEM_SERVICEMODEL_ACTIVATION_DEPENDENCY
ifeq (4, $(FRAMEWORK_VERSION_MAJOR)) ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
LIB_MCS_FLAGS += -r:System.ServiceModel.Activation.dll LIB_MCS_FLAGS += -r:System.ServiceModel.Activation.dll
endif endif
endif
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)

View File

@ -146,7 +146,7 @@ namespace System.ServiceModel.Channels
return context.GetInnerProperty<T> (); return context.GetInnerProperty<T> ();
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
void IWsdlExportExtension.ExportContract (WsdlExporter exporter, WsdlContractConversionContext context) void IWsdlExportExtension.ExportContract (WsdlExporter exporter, WsdlContractConversionContext context)
{ {

View File

@ -84,7 +84,7 @@ namespace System.ServiceModel.Description
// clientRuntime.MessageInspectors.Add (something); // clientRuntime.MessageInspectors.Add (something);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
protected virtual void AddServerErrorHandlers (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) protected virtual void AddServerErrorHandlers (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{ {
endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add (new WebHttpErrorHandler ()); endpointDispatcher.ChannelDispatcher.ErrorHandlers.Add (new WebHttpErrorHandler ());
@ -103,7 +103,7 @@ namespace System.ServiceModel.Description
public virtual void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher) public virtual void ApplyDispatchBehavior (ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{ {
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
endpointDispatcher.DispatchRuntime.OperationSelector = GetOperationSelector (endpoint); endpointDispatcher.DispatchRuntime.OperationSelector = GetOperationSelector (endpoint);
@ -146,7 +146,7 @@ namespace System.ServiceModel.Description
} }
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
internal class DispatchPairFormatter : IDispatchMessageFormatter internal class DispatchPairFormatter : IDispatchMessageFormatter
{ {
public DispatchPairFormatter (IDispatchMessageFormatter request, IDispatchMessageFormatter reply) public DispatchPairFormatter (IDispatchMessageFormatter request, IDispatchMessageFormatter reply)

View File

@ -52,7 +52,7 @@ namespace System.ServiceModel
public WebHttpBinding (string configurationName) public WebHttpBinding (string configurationName)
{ {
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
BindingsSection bindingsSection = ConfigUtil.BindingsSection; BindingsSection bindingsSection = ConfigUtil.BindingsSection;
WebHttpBindingElement el = (WebHttpBindingElement) bindingsSection ["webHttpBinding"].ConfiguredBindings.FirstOrDefault (c => c.Name == configurationName); WebHttpBindingElement el = (WebHttpBindingElement) bindingsSection ["webHttpBinding"].ConfiguredBindings.FirstOrDefault (c => c.Name == configurationName);
if (el != null) { if (el != null) {
@ -88,7 +88,7 @@ namespace System.ServiceModel
get { return EnvelopeVersion.None; } get { return EnvelopeVersion.None; }
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[DefaultValue (false)] [DefaultValue (false)]
public bool AllowCookies { public bool AllowCookies {
get { return t.AllowCookies; } get { return t.AllowCookies; }

View File

@ -0,0 +1,39 @@
#include mobile_System.ServiceModel.Web.dll.sources
System.ServiceModel.Web/IncomingWebRequestContext.cs
System.ServiceModel.Web/OutgoingWebResponseContext.cs
System.ServiceModel.Syndication/Atom10FeedFormatter.cs
System.ServiceModel.Syndication/Atom10FeedFormatter_1.cs
System.ServiceModel.Syndication/Atom10ItemFormatter.cs
System.ServiceModel.Syndication/Atom10ItemFormatter_1.cs
System.ServiceModel.Syndication/AtomPub10CategoriesDocumentFormatter.cs
System.ServiceModel.Syndication/AtomPub10ServiceDocumentFormatter.cs
System.ServiceModel.Syndication/AtomPub10ServiceDocumentFormatter_1.cs
System.ServiceModel.Syndication/CategoriesDocument.cs
System.ServiceModel.Syndication/CategoriesDocumentFormatter.cs
System.ServiceModel.Syndication/ISyndicationElement.cs
System.ServiceModel.Syndication/InlineCategoriesDocument.cs
System.ServiceModel.Syndication/ReferencedCategoriesDocument.cs
System.ServiceModel.Syndication/ResourceCollectionInfo.cs
System.ServiceModel.Syndication/Rss20FeedFormatter.cs
System.ServiceModel.Syndication/Rss20FeedFormatter_1.cs
System.ServiceModel.Syndication/Rss20ItemFormatter.cs
System.ServiceModel.Syndication/Rss20ItemFormatter_1.cs
System.ServiceModel.Syndication/ServiceDocument.cs
System.ServiceModel.Syndication/ServiceDocumentFormatter.cs
System.ServiceModel.Syndication/SyndicationCategory.cs
System.ServiceModel.Syndication/SyndicationContent.cs
System.ServiceModel.Syndication/SyndicationElementExtension.cs
System.ServiceModel.Syndication/SyndicationElementExtensionCollection.cs
System.ServiceModel.Syndication/SyndicationExtensions.cs
System.ServiceModel.Syndication/SyndicationFeed.cs
System.ServiceModel.Syndication/SyndicationFeedFormatter.cs
System.ServiceModel.Syndication/SyndicationItem.cs
System.ServiceModel.Syndication/SyndicationItemFormatter.cs
System.ServiceModel.Syndication/SyndicationLink.cs
System.ServiceModel.Syndication/SyndicationPerson.cs
System.ServiceModel.Syndication/SyndicationVersions.cs
System.ServiceModel.Syndication/TextSyndicationContent.cs
System.ServiceModel.Syndication/TextSyndicationContentKind.cs
System.ServiceModel.Syndication/UrlSyndicationContent.cs
System.ServiceModel.Syndication/Workspace.cs
System.ServiceModel.Syndication/XmlSyndicationContent.cs

View File

@ -1,3 +1,4 @@
#if !XAMMAC_4_5
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization; using System.Runtime.Serialization;
@ -187,3 +188,4 @@ namespace Mono.Xml.XPath
class Dummy {} class Dummy {}
} }
#endif #endif
#endif

View File

@ -0,0 +1,69 @@
using System.Collections.Generic;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.CompilerServices;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;
using System.Text;
using System.Xml;
namespace System.ServiceModel
{
public class InstanceContext
{
public InstanceContext (object dummy) {}
}
}
namespace System.ServiceModel.PeerResolvers
{
class Dummy {}
}
namespace System.ServiceModel.Configuration
{
class Dummy {}
}
namespace System.ServiceModel.Channels.Http
{
}
namespace System.ServiceModel.Channels.NetTcp
{
}
namespace System.ServiceModel.Dispatcher
{
public sealed class EndpointDispatcher
{
internal EndpointDispatcher ()
{
}
}
}
namespace System.ServiceModel.Channels
{
public static class UrlUtility {
public static string UrlEncode (string s, Encoding e)
{
return System.Net.WebUtility.UrlEncode (s);
}
public static string UrlDecode (string s, Encoding e)
{
return System.Net.WebUtility.UrlDecode (s);
}
}
}
namespace System.ServiceModel.Description
{
public interface IPolicyExportExtension {}
public interface IPolicyImportExtension {}
public interface IWsdlExportExtension {}
public interface IWsdlImportExtension {}
}
namespace System.ServiceModel.Channels
{
public interface ITransportTokenAssertionProvider {}
}

View File

@ -18,6 +18,10 @@ LIB_MCS_FLAGS = \
/r:System.Runtime.Serialization.dll \ /r:System.Runtime.Serialization.dll \
$(RESOURCE_FILES:%=/resource:%) $(RESOURCE_FILES:%=/resource:%)
ifdef XAMMAC_4_5
LIB_REFS += System.ServiceModel.Internals
endif
ifneq (2.1, $(FRAMEWORK_VERSION)) ifneq (2.1, $(FRAMEWORK_VERSION))
LIB_MCS_FLAGS += /d:NET_3_0 \ LIB_MCS_FLAGS += /d:NET_3_0 \
/r:System.Configuration.dll \ /r:System.Configuration.dll \
@ -27,22 +31,41 @@ LIB_MCS_FLAGS += /d:NET_3_0 \
/r:System.IdentityModel.Selectors.dll \ /r:System.IdentityModel.Selectors.dll \
/r:System.Transactions.dll \ /r:System.Transactions.dll \
/r:System.Messaging.dll \ /r:System.Messaging.dll \
/r:System.Web.dll \
/r:System.Web.Services.dll \ /r:System.Web.Services.dll \
/r:Mono.Security.dll /r:Mono.Security.dll
ifdef XAMAMC_4_5
LIB_MCS_FLAGS += /r:System.Net.dll
endif
ifndef NO_SYSTEM_WEB_DEPENDENCY
LIB_MCS_FLAGS += /r:System.Web.dll
endif
endif endif
ifeq (4, $(FRAMEWORK_VERSION_MAJOR)) ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
ifndef NO_SYSTEM_WEB_APPSERVICES_DEPENDENCY
LIB_MCS_FLAGS += /r:System.Web.ApplicationServices.dll LIB_MCS_FLAGS += /r:System.Web.ApplicationServices.dll
endif
ifndef NO_SYSTEM_SERVICEMODEL_ACTIVATION_DEPENDENCY
activation = $(the_libdir_base)System.ServiceModel.Activation.dll activation = $(the_libdir_base)System.ServiceModel.Activation.dll
servicemodel_deps = $(activation) servicemodel_deps = $(activation)
endif
ifneq (plainservice/,$(intermediate)) ifneq (plainservice/,$(intermediate))
ifndef NO_SYSTEM_SERVICEMODEL_ACTIVATION_DEPENDENCY
LIB_MCS_FLAGS += -define:HAS_ACTIVATION -r:System.ServiceModel.Activation.dll LIB_MCS_FLAGS += -define:HAS_ACTIVATION -r:System.ServiceModel.Activation.dll
endif
ifndef NO_SYSTEM_WEB_APPSERVICES_DEPENDENCY
LIB_MCS_FLAGS += -r:System.Web.ApplicationServices.dll LIB_MCS_FLAGS += -r:System.Web.ApplicationServices.dll
endif endif
endif endif
endif
TEST_MCS_FLAGS = $(LIB_MCS_FLAGS) TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
TEST_EXTRA_FILES = \ TEST_EXTRA_FILES = \
@ -87,4 +110,4 @@ CLEAN_FILES = $(the_libdir_base)plainservice/System.ServiceModel.dll
ifndef intermediate ifndef intermediate
csproj-local: csproj-local:
$(MAKE) csproj-local intermediate=plainservice/ $(MAKE) csproj-local intermediate=plainservice/
endif endif

View File

@ -131,7 +131,7 @@ namespace System.ServiceModel.Channels
return new BinaryMessageEncoderFactory (this); return new BinaryMessageEncoderFactory (this);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
void IWsdlExportExtension.ExportContract (WsdlExporter exporter, void IWsdlExportExtension.ExportContract (WsdlExporter exporter,
WsdlContractConversionContext context) WsdlContractConversionContext context)

View File

@ -137,7 +137,7 @@ namespace System.ServiceModel.Channels
OperationContext ctx = OperationContext.Current; OperationContext ctx = OperationContext.Current;
// FIXME: support more fault code depending on the exception type. // FIXME: support more fault code depending on the exception type.
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
// FIXME: set correct fault reason. // FIXME: set correct fault reason.
if (ctx != null && ctx.EndpointDispatcher.ChannelDispatcher.IncludeExceptionDetailInFaults) { if (ctx != null && ctx.EndpointDispatcher.ChannelDispatcher.IncludeExceptionDetailInFaults) {
ExceptionDetail detail = new ExceptionDetail (error); ExceptionDetail detail = new ExceptionDetail (error);

View File

@ -185,7 +185,7 @@ namespace System.ServiceModel.Channels
return typeof (TChannel) == typeof (IRequestChannel); return typeof (TChannel) == typeof (IRequestChannel);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public override bool CanBuildChannelListener<TChannel> ( public override bool CanBuildChannelListener<TChannel> (
BindingContext context) BindingContext context)
{ {
@ -201,7 +201,7 @@ namespace System.ServiceModel.Channels
return new HttpChannelFactory<TChannel> (this, context); return new HttpChannelFactory<TChannel> (this, context);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
internal static object ListenerBuildLock = new object (); internal static object ListenerBuildLock = new object ();
public override IChannelListener<TChannel> BuildChannelListener<TChannel> ( public override IChannelListener<TChannel> BuildChannelListener<TChannel> (
@ -242,7 +242,7 @@ namespace System.ServiceModel.Channels
set { throw new NotImplementedException (); } set { throw new NotImplementedException (); }
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
void IPolicyExportExtension.ExportPolicy ( void IPolicyExportExtension.ExportPolicy (
MetadataExporter exporter, MetadataExporter exporter,
PolicyConversionContext context) PolicyConversionContext context)

View File

@ -68,7 +68,7 @@ namespace System.ServiceModel.Channels
return base.BuildChannelFactory <TChannel> (context); return base.BuildChannelFactory <TChannel> (context);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
public override IChannelListener<TChannel> public override IChannelListener<TChannel>
BuildChannelListener<TChannel> ( BuildChannelListener<TChannel> (
@ -83,7 +83,7 @@ namespace System.ServiceModel.Channels
return new HttpsTransportBindingElement (this); return new HttpsTransportBindingElement (this);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public XmlElement GetTransportTokenAssertion () public XmlElement GetTransportTokenAssertion ()
{ {
var doc = new XmlDocument (); var doc = new XmlDocument ();

View File

@ -59,7 +59,7 @@ namespace System.ServiceModel.Channels
return ctx.GetInnerProperty<T> (); return ctx.GetInnerProperty<T> ();
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
protected virtual void OnImportPolicy (XmlElement assertion, protected virtual void OnImportPolicy (XmlElement assertion,
MessageVersion messageVersion, MessageVersion messageVersion,

View File

@ -99,7 +99,7 @@ namespace System.ServiceModel.Channels
throw new NotImplementedException (); throw new NotImplementedException ();
} }
#if !MOBILE #if !MOBILE && !XAMMAC_4_5
void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter, PolicyConversionContext context) void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter, PolicyConversionContext context)
{ {
throw new NotImplementedException (); throw new NotImplementedException ();

View File

@ -30,7 +30,7 @@ using System.Collections.ObjectModel;
using System.ServiceModel.Description; using System.ServiceModel.Description;
using System.ServiceModel.Channels; using System.ServiceModel.Channels;
using System.ServiceModel.Security; using System.ServiceModel.Security;
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
using System.ServiceModel.Channels.Security; using System.ServiceModel.Channels.Security;
using System.IdentityModel.Selectors; using System.IdentityModel.Selectors;
using System.IdentityModel.Tokens; using System.IdentityModel.Tokens;
@ -44,7 +44,7 @@ namespace System.ServiceModel.Channels
{ {
internal SecurityBindingElement () internal SecurityBindingElement ()
{ {
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
DefaultAlgorithmSuite = SecurityAlgorithmSuite.Default; DefaultAlgorithmSuite = SecurityAlgorithmSuite.Default;
MessageSecurityVersion = MessageSecurityVersion.Default; MessageSecurityVersion = MessageSecurityVersion.Default;
KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy; KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
@ -60,7 +60,7 @@ namespace System.ServiceModel.Channels
internal SecurityBindingElement (SecurityBindingElement other) internal SecurityBindingElement (SecurityBindingElement other)
{ {
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
alg_suite = other.alg_suite; alg_suite = other.alg_suite;
key_entropy_mode = other.key_entropy_mode; key_entropy_mode = other.key_entropy_mode;
security_header_layout = other.security_header_layout; security_header_layout = other.security_header_layout;
@ -79,7 +79,7 @@ namespace System.ServiceModel.Channels
LocalClientSettings = other.LocalClientSettings.Clone (); LocalClientSettings = other.LocalClientSettings.Clone ();
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
SecurityAlgorithmSuite alg_suite; SecurityAlgorithmSuite alg_suite;
SecurityKeyEntropyMode key_entropy_mode; SecurityKeyEntropyMode key_entropy_mode;
SecurityHeaderLayout security_header_layout; SecurityHeaderLayout security_header_layout;
@ -93,7 +93,7 @@ namespace System.ServiceModel.Channels
public LocalClientSecuritySettings LocalClientSettings { get; private set; } public LocalClientSecuritySettings LocalClientSettings { get; private set; }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public SecurityAlgorithmSuite DefaultAlgorithmSuite { public SecurityAlgorithmSuite DefaultAlgorithmSuite {
get { return alg_suite; } get { return alg_suite; }
set { alg_suite = value; } set { alg_suite = value; }
@ -138,7 +138,7 @@ namespace System.ServiceModel.Channels
[MonoTODO ("Implement for TransportSecurityBindingElement")] [MonoTODO ("Implement for TransportSecurityBindingElement")]
public override bool CanBuildChannelFactory<TChannel> (BindingContext context) public override bool CanBuildChannelFactory<TChannel> (BindingContext context)
{ {
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
// not sure this should be like this, but there isn't Symmetric/Asymmetric elements in 2.1 anyways. // not sure this should be like this, but there isn't Symmetric/Asymmetric elements in 2.1 anyways.
return context.CanBuildInnerChannelFactory<TChannel> (); return context.CanBuildInnerChannelFactory<TChannel> ();
#else #else
@ -183,7 +183,7 @@ namespace System.ServiceModel.Channels
protected abstract IChannelFactory<TChannel> protected abstract IChannelFactory<TChannel>
BuildChannelFactoryCore<TChannel> (BindingContext context); BuildChannelFactoryCore<TChannel> (BindingContext context);
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO ("Implement for TransportSecurityBindingElement")] [MonoTODO ("Implement for TransportSecurityBindingElement")]
public override bool CanBuildChannelListener<TChannel> (BindingContext context) public override bool CanBuildChannelListener<TChannel> (BindingContext context)
{ {
@ -270,7 +270,7 @@ namespace System.ServiceModel.Channels
#endif #endif
#region Factory methods #region Factory methods
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public static SymmetricSecurityBindingElement public static SymmetricSecurityBindingElement
CreateAnonymousForCertificateBindingElement () CreateAnonymousForCertificateBindingElement ()
{ {
@ -559,14 +559,14 @@ namespace System.ServiceModel.Channels
CreateUserNameOverTransportBindingElement () CreateUserNameOverTransportBindingElement ()
{ {
var be = new TransportSecurityBindingElement (); var be = new TransportSecurityBindingElement ();
#if !NET_2_1 // FIXME: there should be whatever else to do for 2.1 instead. #if !NET_2_1 && !XAMMAC_4_5 // FIXME: there should be whatever else to do for 2.1 instead.
be.EndpointSupportingTokenParameters.SignedEncrypted.Add (new UserNameSecurityTokenParameters ()); be.EndpointSupportingTokenParameters.SignedEncrypted.Add (new UserNameSecurityTokenParameters ());
#endif #endif
return be; return be;
} }
#endregion #endregion
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
// It seems almost internal, hardcoded like this (I tried // It seems almost internal, hardcoded like this (I tried
// custom parameters that sets IssuedTokenSecurityTokenParameters // custom parameters that sets IssuedTokenSecurityTokenParameters
// like below ones, but that didn't trigger this method). // like below ones, but that didn't trigger this method).

View File

@ -143,7 +143,7 @@ namespace System.ServiceModel.Channels
return new TextMessageEncoderFactory (this); return new TextMessageEncoderFactory (this);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
protected override void OnImportPolicy (XmlElement assertion, protected override void OnImportPolicy (XmlElement assertion,
MessageVersion messageVersion, MessageVersion messageVersion,

View File

@ -92,7 +92,7 @@ namespace System.ServiceModel.Channels
return context.GetInnerProperty<T> (); return context.GetInnerProperty<T> ();
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
internal static XmlElement CreateTransportBinding (XmlElement transportToken) internal static XmlElement CreateTransportBinding (XmlElement transportToken)
{ {
var doc = new XmlDocument (); var doc = new XmlDocument ();

View File

@ -65,7 +65,7 @@ namespace System.ServiceModel.Channels
throw new NotImplementedException (); throw new NotImplementedException ();
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
[MonoTODO] [MonoTODO]
protected override IChannelListener<TChannel> protected override IChannelListener<TChannel>
BuildChannelListenerCore<TChannel> ( BuildChannelListenerCore<TChannel> (

View File

@ -35,7 +35,9 @@ using System.ServiceModel.Channels;
using System.ServiceModel.Configuration; using System.ServiceModel.Configuration;
using System.ServiceModel.Description; using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher; using System.ServiceModel.Dispatcher;
#if !XAMMAC_4_5
using System.Web.Configuration; using System.Web.Configuration;
#endif
using SysConfig = System.Configuration.Configuration; using SysConfig = System.Configuration.Configuration;
@ -43,6 +45,7 @@ namespace System.ServiceModel.Configuration
{ {
internal static class ConfigUtil internal static class ConfigUtil
{ {
#if !XAMMAC_4_5
static object GetSection (string name) static object GetSection (string name)
{ {
if (ServiceHostingEnvironment.InAspNet) if (ServiceHostingEnvironment.InAspNet)
@ -242,6 +245,7 @@ namespace System.ServiceModel.Configuration
{ {
return new EndpointAddress (el.Address, el.Identity != null ? el.Identity.CreateInstance () : null, el.Headers.Headers); return new EndpointAddress (el.Address, el.Identity != null ? el.Identity.CreateInstance () : null, el.Headers.Headers);
} }
#endif
public static EndpointIdentity CreateInstance (this IdentityElement el) public static EndpointIdentity CreateInstance (this IdentityElement el)
{ {
@ -299,6 +303,7 @@ namespace System.ServiceModel.Configuration
return CreateCertificateFrom (el.StoreLocation, el.StoreName, el.X509FindType, el.FindValue); return CreateCertificateFrom (el.StoreLocation, el.StoreName, el.X509FindType, el.FindValue);
} }
#if !XAMMAC_4_5
public static BindingCollectionElement FindCollectionElement (Binding binding, SysConfig config) public static BindingCollectionElement FindCollectionElement (Binding binding, SysConfig config)
{ {
var section = (BindingsSection) config.GetSection ("system.serviceModel/bindings"); var section = (BindingsSection) config.GetSection ("system.serviceModel/bindings");
@ -309,6 +314,7 @@ namespace System.ServiceModel.Configuration
return null; return null;
} }
#endif
} }
enum NamedConfigCategory enum NamedConfigCategory

View File

@ -40,7 +40,7 @@ using System.ServiceModel.Security.Tokens;
namespace System.ServiceModel.Description namespace System.ServiceModel.Description
{ {
public class ClientCredentials public class ClientCredentials
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
: IEndpointBehavior : IEndpointBehavior
#else #else
: SecurityCredentialsManager, IEndpointBehavior : SecurityCredentialsManager, IEndpointBehavior
@ -128,7 +128,7 @@ namespace System.ServiceModel.Description
return new ClientCredentials (this); return new ClientCredentials (this);
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public override SecurityTokenManager CreateSecurityTokenManager () public override SecurityTokenManager CreateSecurityTokenManager ()
{ {
return new ClientCredentialsSecurityTokenManager (this); return new ClientCredentialsSecurityTokenManager (this);

View File

@ -112,7 +112,7 @@ namespace System.ServiceModel.Description
{ {
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
//IWsdlExportExtension //IWsdlExportExtension
void IWsdlExportExtension.ExportContract (WsdlExporter exporter, void IWsdlExportExtension.ExportContract (WsdlExporter exporter,

View File

@ -100,7 +100,7 @@ namespace System.ServiceModel.Description
set { type = value; } set { type = value; }
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
internal XsdDataContractImporter DataContractImporter { get; set; } internal XsdDataContractImporter DataContractImporter { get; set; }
internal XmlSerializerMessageContractImporterInternal XmlSerializationImporter { get; set; } internal XmlSerializerMessageContractImporterInternal XmlSerializationImporter { get; set; }
internal System.CodeDom.CodeTypeReference CodeTypeReference { get; set; } internal System.CodeDom.CodeTypeReference CodeTypeReference { get; set; }

View File

@ -104,7 +104,7 @@ namespace System.ServiceModel.Description
{ {
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
void IWsdlExportExtension.ExportContract ( void IWsdlExportExtension.ExportContract (
WsdlExporter exporter, WsdlExporter exporter,
WsdlContractConversionContext context) WsdlContractConversionContext context)

View File

@ -36,7 +36,7 @@ namespace System.ServiceModel.Diagnostics
{ {
public MessageLoggingSettings () public MessageLoggingSettings ()
{ {
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
var e = ConfigUtil.DiagnosticSection.MessageLogging; var e = ConfigUtil.DiagnosticSection.MessageLogging;
LogEntireMessage = e.LogEntireMessage; LogEntireMessage = e.LogEntireMessage;
LogKnownPii = e.LogKnownPii; LogKnownPii = e.LogKnownPii;

View File

@ -214,7 +214,7 @@ namespace System.ServiceModel.Dispatcher
void ThrowIfOpened () void ThrowIfOpened ()
{ {
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
// FIXME: get callback client runtime status when ChannelDispatcher is not available. // FIXME: get callback client runtime status when ChannelDispatcher is not available.
var state = Parent.ChannelDispatcher != null ? Parent.ChannelDispatcher.State : CommunicationState.Created; // Parent.CallbackClientRuntime.ChannelFactory.State; var state = Parent.ChannelDispatcher != null ? Parent.ChannelDispatcher.State : CommunicationState.Created; // Parent.CallbackClientRuntime.ChannelFactory.State;
switch (state) { switch (state) {

View File

@ -31,8 +31,10 @@ using System.Collections.ObjectModel;
using System.Reflection; using System.Reflection;
#if !NET_2_1 #if !NET_2_1
using System.IdentityModel.Policy; using System.IdentityModel.Policy;
#if !XAMMAC_4_5
using System.Web.Security; using System.Web.Security;
#endif #endif
#endif
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.ServiceModel; using System.ServiceModel;
@ -43,7 +45,7 @@ namespace System.ServiceModel.Dispatcher
{ {
public sealed class DispatchRuntime public sealed class DispatchRuntime
{ {
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
internal DispatchRuntime (EndpointDispatcher dispatcher, ClientRuntime callbackClientRuntime) internal DispatchRuntime (EndpointDispatcher dispatcher, ClientRuntime callbackClientRuntime)
{ {
UnhandledDispatchOperation = new DispatchOperation ( UnhandledDispatchOperation = new DispatchOperation (

View File

@ -50,7 +50,7 @@ namespace System.ServiceModel
{ {
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public BasicHttpBinding (string configurationName) public BasicHttpBinding (string configurationName)
: this () : this ()
{ {
@ -110,7 +110,7 @@ namespace System.ServiceModel
SecurityBindingElement element; SecurityBindingElement element;
switch (Security.Mode) { switch (Security.Mode) {
case BasicHttpSecurityMode.Message: case BasicHttpSecurityMode.Message:
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate) if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate)
@ -121,7 +121,7 @@ namespace System.ServiceModel
#endif #endif
case BasicHttpSecurityMode.TransportWithMessageCredential: case BasicHttpSecurityMode.TransportWithMessageCredential:
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate) if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate)
@ -135,7 +135,7 @@ namespace System.ServiceModel
return null; return null;
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
element.SetKeyDerivation (false); element.SetKeyDerivation (false);
element.SecurityHeaderLayout = SecurityHeaderLayout.Lax; element.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
#endif #endif
@ -150,7 +150,7 @@ namespace System.ServiceModel
ReaderQuotas.CopyTo (tm.ReaderQuotas); ReaderQuotas.CopyTo (tm.ReaderQuotas);
return tm; return tm;
} else { } else {
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
return new MtomMessageEncodingBindingElement ( return new MtomMessageEncodingBindingElement (

View File

@ -50,7 +50,7 @@ namespace System.ServiceModel
{ {
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public BasicHttpsBinding (string configurationName) public BasicHttpsBinding (string configurationName)
: this () : this ()
{ {
@ -101,7 +101,8 @@ namespace System.ServiceModel
SecurityBindingElement element; SecurityBindingElement element;
switch (Security.Mode) { switch (Security.Mode) {
case BasicHttpsSecurityMode.TransportWithMessageCredential: case BasicHttpsSecurityMode.TransportWithMessageCredential:
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate) if (Security.Message.ClientCredentialType != BasicHttpMessageCredentialType.Certificate)
@ -115,7 +116,7 @@ namespace System.ServiceModel
return null; return null;
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
element.SetKeyDerivation (false); element.SetKeyDerivation (false);
element.SecurityHeaderLayout = SecurityHeaderLayout.Lax; element.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
#endif #endif
@ -130,7 +131,7 @@ namespace System.ServiceModel
ReaderQuotas.CopyTo (tm.ReaderQuotas); ReaderQuotas.CopyTo (tm.ReaderQuotas);
return tm; return tm;
} else { } else {
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
throw new NotImplementedException (); throw new NotImplementedException ();
#else #else
return new MtomMessageEncodingBindingElement ( return new MtomMessageEncodingBindingElement (

View File

@ -90,7 +90,7 @@ namespace System.ServiceModel
if (endpointConfig == null) if (endpointConfig == null)
return; return;
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
try { try {
// It should automatically use XmlXapResolver // It should automatically use XmlXapResolver
var cfg = new SilverlightClientConfigLoader ().Load (XmlReader.Create ("ServiceReferences.ClientConfig")); var cfg = new SilverlightClientConfigLoader ().Load (XmlReader.Create ("ServiceReferences.ClientConfig"));
@ -160,7 +160,7 @@ namespace System.ServiceModel
#endif #endif
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
private void ApplyBehavior (string behaviorConfig) private void ApplyBehavior (string behaviorConfig)
{ {
BehaviorsSection behaviorsSection = ConfigUtil.BehaviorsSection; BehaviorsSection behaviorsSection = ConfigUtil.BehaviorsSection;

View File

@ -45,7 +45,7 @@ namespace System.ServiceModel
} }
Message incoming_message; Message incoming_message;
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
EndpointDispatcher dispatcher; EndpointDispatcher dispatcher;
#endif #endif
IContextChannel channel; IContextChannel channel;
@ -83,7 +83,7 @@ namespace System.ServiceModel
} }
#if !NET_2_1 #if !NET_2_1 && !XAMMAC_4_5
public EndpointDispatcher EndpointDispatcher { public EndpointDispatcher EndpointDispatcher {
get { return dispatcher; } get { return dispatcher; }
set { dispatcher = value; } set { dispatcher = value; }

View File

@ -25,7 +25,8 @@
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// //
#if NET_2_1 #if NET_2_1 || XAMMAC_4_5
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ServiceModel.Channels; using System.ServiceModel.Channels;

View File

@ -0,0 +1,64 @@
#include mobile_System.ServiceModel.dll.sources
System.ServiceModel.Channels/IChannelListener.cs
System.ServiceModel.Channels/IReplyChannel.cs
System.ServiceModel.Channels/IReplySessionChannel.cs
System.ServiceModel.Configuration/CertificateElement.cs
System.ServiceModel.Configuration/CertificateReferenceElement.cs
System.ServiceModel.Configuration/ConfigUtil.cs
System.ServiceModel.Configuration/DnsElement.cs
System.ServiceModel.Configuration/IdentityElement.cs
System.ServiceModel.Configuration/RsaElement.cs
System.ServiceModel.Configuration/ServicePrincipalNameElement.cs
System.ServiceModel.Configuration/UserPrincipalNameElement.cs
System.ServiceModel.Configuration/X509ClientCertificateCredentialsElement.cs
System.ServiceModel.Configuration/X509DefaultServiceCertificateElement.cs
System.ServiceModel.Configuration/X509ScopedServiceCertificateElement.cs
System.ServiceModel.Description/MetadataLocation.cs
System.ServiceModel.Description/MetadataReference.cs
System.ServiceModel.Description/MetadataSection.cs
System.ServiceModel.Description/MetadataSectionSerializerBase.cs
System.ServiceModel.Description/MetadataSet.cs
System.ServiceModel.Dispatcher/ActionMessageFilter.cs
System.ServiceModel.Dispatcher/ActionMessageFilterTable.cs
System.ServiceModel.Dispatcher/ICallContextInitializer.cs
System.ServiceModel.Dispatcher/IMessageFilterTable.cs
System.ServiceModel.Dispatcher/IOperationInvoker.cs
System.ServiceModel.Dispatcher/MatchAllMessageFilter.cs
System.ServiceModel.Dispatcher/MatchNoneMessageFilter.cs
System.ServiceModel.Dispatcher/MessageFilter.cs
System.ServiceModel.Dispatcher/MessageFilterTable.cs
System.ServiceModel.Dispatcher/MultipleMessageFilterMatchesException.cs
System.ServiceModel.Dispatcher/SeekableXPathNavigator.cs
System.ServiceModel.Dispatcher/XPathMessageFilter.cs
System.ServiceModel.Security.Tokens/SecurityContextSecurityToken.cs
System.ServiceModel.Security.Tokens/SslnegoCookieResolver.cs
System.ServiceModel.Security/ChannelProtectionRequirements.cs
System.ServiceModel.Security/IdentityVerifier.cs
System.ServiceModel.Security/IssuedTokenClientCredential.cs
System.ServiceModel.Security/KeyEntropyMode.cs
System.ServiceModel.Security/MessagePartSpecification.cs
System.ServiceModel.Security/PeerCredential.cs
System.ServiceModel.Security/ScopedMessagePartSpecification.cs
System.ServiceModel.Security/SecurityAlgorithmSuite.cs
System.ServiceModel.Security/SecurityContextKeyIdentifierClause.cs
System.ServiceModel.Security/SecurityMessageProperty.cs
System.ServiceModel.Security/SecurityStateEncoder.cs
System.ServiceModel.Security/SecurityTokenAttachmentMode.cs
System.ServiceModel.Security/SecurityTokenSpecification.cs
System.ServiceModel.Security/SupportingTokenSpecification.cs
System.ServiceModel.Security/X509CertificateInitiatorClientCredential.cs
System.ServiceModel.Security/X509CertificateRecipientClientCredential.cs
System.ServiceModel.Security/X509PeerCertificateAuthentication.cs
System.ServiceModel.Security/X509ServiceCertificateAuthentication.cs
System.ServiceModel/DnsEndpointIdentity.cs
System.ServiceModel/EndpointAddressAugust2004.cs
System.ServiceModel/EndpointIdentity.cs
System.ServiceModel/IDuplexClientChannel.cs
System.ServiceModel/OperationBehaviorAttribute.cs
System.ServiceModel/RsaEndpointIdentity.cs
System.ServiceModel/ServiceSecurityContext.cs
System.ServiceModel/SpnEndpointIdentity.cs
System.ServiceModel/UpnEndpointIdentity.cs
System.ServiceModel/X509CertificateEndpointIdentity.cs
System.ServiceModel.Dispatcher/IErrorHandler.cs
Dummy_XM_4_5.cs

View File

@ -20,13 +20,16 @@ LIB_MCS_FLAGS = \
-r:System.dll \ -r:System.dll \
-r:System.EnterpriseServices.dll \ -r:System.EnterpriseServices.dll \
-r:System.Xml.dll \ -r:System.Xml.dll \
-r:System.Web.dll
ifndef NO_SYSTEM_WEB_DEPENDENCY
LIB_MCS_FLAGS += -r:System.Web.dll
plainweb_dir = $(the_libdir_base)plainweb plainweb_dir = $(the_libdir_base)plainweb
LOCAL_MCS_FLAGS = -lib:$(plainweb_dir) LOCAL_MCS_FLAGS = -lib:$(plainweb_dir)
plainweb = $(plainweb_dir)/System.Web.dll plainweb = $(plainweb_dir)/System.Web.dll
system_web_services_deps = $(plainweb) system_web_services_deps = $(plainweb)
LOCAL_MCS_FLAGS += -lib:$(plainweb_dir)
endif
ifneq (1, $(FRAMEWORK_VERSION_MAJOR)) ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
LIB_MCS_FLAGS += \ LIB_MCS_FLAGS += \
@ -53,4 +56,4 @@ $(the_libdir_base)$(LIBRARY): $(system_web_services_deps)
$(plainweb): $(plainweb):
(cd ../System.Web; $(MAKE) $@) (cd ../System.Web; $(MAKE) $@)
.NOTPARALLEL: $(plainweb) .NOTPARALLEL: $(plainweb)

View File

@ -71,7 +71,7 @@ namespace System.Web.Services.Description
RegisterExtensionType (typeof (Soap12HeaderBinding)); RegisterExtensionType (typeof (Soap12HeaderBinding));
RegisterExtensionType (typeof (Soap12OperationBinding)); RegisterExtensionType (typeof (Soap12OperationBinding));
#if !MOBILE #if !MOBILE && !XAMMAC_4_5
/* /*
* Currently, the mobile profile has not support for * Currently, the mobile profile has not support for
* System.Configuration, so there are no external modules * System.Configuration, so there are no external modules
@ -164,7 +164,7 @@ namespace System.Web.Services.Description
/* /*
* The mobile profile lacks support for configuration * The mobile profile lacks support for configuration
*/ */
#if MOBILE #if MOBILE || XAMMAC_4_5
public static ArrayList BuildExtensionImporters () public static ArrayList BuildExtensionImporters ()
{ {
return new ArrayList (0); return new ArrayList (0);

View File

@ -142,7 +142,7 @@ namespace System.Web.Services.Description {
schemas.Add (serviceDescription.Types.Schemas); schemas.Add (serviceDescription.Types.Schemas);
} }
#if !MOBILE #if !MOBILE && !XAMMAC_4_5
public ServiceDescriptionImportWarnings Import (CodeNamespace codeNamespace, CodeCompileUnit codeCompileUnit) public ServiceDescriptionImportWarnings Import (CodeNamespace codeNamespace, CodeCompileUnit codeCompileUnit)
{ {
foreach (ProtocolImporter importer in GetSupportedImporters ()) { foreach (ProtocolImporter importer in GetSupportedImporters ()) {
@ -163,9 +163,6 @@ namespace System.Web.Services.Description {
list.Add (new HttpPostProtocolImporter ()); list.Add (new HttpPostProtocolImporter ());
return list; return list;
} }
#endif
#if !MOBILE
[MonoTODO] // where to use Verbose and Extensions in options? [MonoTODO] // where to use Verbose and Extensions in options?
public static StringCollection GenerateWebReferences ( public static StringCollection GenerateWebReferences (

View File

@ -487,7 +487,7 @@ namespace System.Web.Services.Protocols {
xmlImporter.IncludeTypes (Type); xmlImporter.IncludeTypes (Type);
soapImporter.IncludeTypes (Type); soapImporter.IncludeTypes (Type);
#if MOBILE #if MOBILE || XAMMAC_4_5
SoapExtensions = new SoapExtensionRuntimeConfig [2][]; SoapExtensions = new SoapExtensionRuntimeConfig [2][];
#else #else
SoapExtensions = SoapExtension.GetTypeExtensions (Type); SoapExtensions = SoapExtension.GetTypeExtensions (Type);

View File

@ -207,7 +207,7 @@ namespace System.Web.Services.Protocols
soap12Protocol.Initialize (); soap12Protocol.Initialize ();
} }
return soap12Protocol; return soap12Protocol;
#if !MOBILE #if !MOBILE && !XAMMAC_4_5
case "HttpGet": case "HttpGet":
if (httpGetProtocol == null){ if (httpGetProtocol == null){
httpGetProtocol = new HttpGetTypeStubInfo (this); httpGetProtocol = new HttpGetTypeStubInfo (this);

View File

@ -100,7 +100,7 @@ namespace System.Web.Services.Protocols {
return pos; return pos;
} }
#if !MOBILE #if !MOBILE && !XAMMAC_4_5
static void InitializeGlobalExtensions () static void InitializeGlobalExtensions ()
{ {
globalExtensions = new ArrayList[2]; globalExtensions = new ArrayList[2];

View File

@ -0,0 +1,3 @@
#include mobile_System.Web.Services.dll.sources
System.Web.Services.Description/ServiceDescription.cs
System.Web.Services.Description/ServiceDescriptionImportWarnings.cs

View File

@ -35,7 +35,7 @@ using System.Collections.Generic;
using System.Configuration; using System.Configuration;
using System.IO; using System.IO;
using System.Text; using System.Text;
#if NET_4_0 && !MOBILE #if !NO_SYSTEM_WEB_DEPENDENCY && NET_4_0 && !MOBILE
using System.Web.Configuration; using System.Web.Configuration;
#endif #endif
@ -163,7 +163,7 @@ namespace System.Web.Util
static HttpEncoder GetCustomEncoderFromConfig () static HttpEncoder GetCustomEncoderFromConfig ()
{ {
#if MOBILE #if MOBILE || NO_SYSTEM_WEB_DEPENDENCY
return defaultEncoder.Value; return defaultEncoder.Value;
#else #else
var cfg = HttpRuntime.Section; var cfg = HttpRuntime.Section;

View File

@ -511,7 +511,7 @@ namespace System.Web {
if (value == null) if (value == null)
return null; return null;
#if !MOBILE #if !(MOBILE || NO_SYSTEM_WEB_DEPENDENCY)
IHtmlString htmlString = value as IHtmlString; IHtmlString htmlString = value as IHtmlString;
if (htmlString != null) if (htmlString != null)
return htmlString.ToHtmlString (); return htmlString.ToHtmlString ();

View File

@ -595,7 +595,8 @@ namespace System.Diagnostics {
} }
private StreamReader error_stream=null; private StreamReader error_stream=null;
bool error_stream_exposed;
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)]
[MonitoringDescription ("The standard error stream of this process.")] [MonitoringDescription ("The standard error stream of this process.")]
public StreamReader StandardError { public StreamReader StandardError {
@ -608,11 +609,13 @@ namespace System.Diagnostics {
async_mode |= AsyncModes.SyncError; async_mode |= AsyncModes.SyncError;
error_stream_exposed = true;
return(error_stream); return(error_stream);
} }
} }
private StreamWriter input_stream=null; private StreamWriter input_stream=null;
bool input_stream_exposed;
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)]
[MonitoringDescription ("The standard input stream of this process.")] [MonitoringDescription ("The standard input stream of this process.")]
@ -621,11 +624,13 @@ namespace System.Diagnostics {
if (input_stream == null) if (input_stream == null)
throw new InvalidOperationException("Standard input has not been redirected"); throw new InvalidOperationException("Standard input has not been redirected");
input_stream_exposed = true;
return(input_stream); return(input_stream);
} }
} }
private StreamReader output_stream=null; private StreamReader output_stream=null;
bool output_stream_exposed;
[DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden), Browsable (false)]
[MonitoringDescription ("The standard output stream of this process.")] [MonitoringDescription ("The standard output stream of this process.")]
@ -639,6 +644,7 @@ namespace System.Diagnostics {
async_mode |= AsyncModes.SyncOutput; async_mode |= AsyncModes.SyncOutput;
output_stream_exposed = true;
return(output_stream); return(output_stream);
} }
} }
@ -1568,17 +1574,18 @@ namespace System.Diagnostics {
async_error.Close (); async_error.Close ();
if (input_stream != null) { if (input_stream != null) {
input_stream.Close(); if (!input_stream_exposed)
input_stream.Close ();
input_stream = null; input_stream = null;
} }
if (output_stream != null) { if (output_stream != null) {
output_stream.Close(); if (!output_stream_exposed)
output_stream.Close ();
output_stream = null; output_stream = null;
} }
if (error_stream != null) { if (error_stream != null) {
error_stream.Close(); if (!error_stream_exposed)
error_stream.Close ();
error_stream = null; error_stream = null;
} }
} }

View File

@ -840,5 +840,19 @@ namespace MonoTests.System.Diagnostics
public void HasExitedCurrent () { public void HasExitedCurrent () {
Assert.IsFalse (Process.GetCurrentProcess ().HasExited); Assert.IsFalse (Process.GetCurrentProcess ().HasExited);
} }
[Test]
public void DisposeWithDisposedStreams ()
{
var psi = GetCrossPlatformStartInfo ();
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
var p = Process.Start (psi);
p.StandardInput.BaseStream.Dispose ();
p.StandardOutput.BaseStream.Dispose ();
p.Dispose ();
}
} }
} }

Some files were not shown because too many files have changed in this diff Show More