Author: atsushi
Date: 2008-02-08 02:51:08 -0500 (Fri, 08 Feb 2008)
New Revision: 95221

Modified:
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncodingBindingElement.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BindingContext.cs
   trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelListener.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelFactory.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelListener.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MtomMessageEncodingBindingElement.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelFactory.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelListener.cs
   
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncodingBindingElement.cs
Log:
2008-02-08  Atsushi Enomoto  <[EMAIL PROTECTED]>

        * TcpChannelFactory.cs, TcpChannelListener.cs, 
          HttpChannelFactory.cs, HttpChannelListener.cs,
          MsmqChannelFactory.cs, MsmqChannelListener.cs,
          TextMessageEncodingBindingElement.cs,
          BinaryMessageEncodingBindingElement.cs,
          MtomMessageEncodingBindingElement.cs :
          message encoder should be retrieved only through public API.
        * BindingContext.cs : so my old guess was wrong.

        See also: http://blogs.msdn.com/drnick/archive/2006/05/10/594134.aspx



Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncodingBindingElement.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncodingBindingElement.cs
   2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncodingBindingElement.cs
   2008-02-08 07:51:08 UTC (rev 95221)
@@ -85,9 +85,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelFactory<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelFactory<TChannel> (context);
                }
 
                public override IChannelListener<TChannel> 
BuildChannelListener<TChannel> (
@@ -95,9 +94,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelListener<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelListener<TChannel> (context);
                }
 
                public override bool CanBuildChannelListener<TChannel> (

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BindingContext.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BindingContext.cs
        2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/BindingContext.cs
        2008-02-08 07:51:08 UTC (rev 95221)
@@ -45,11 +45,6 @@
                string listen_uri_relative;
                ListenUriMode listen_uri_mode;
 
-               // My guess is that BuildChannelFactory/Listener in
-               // MessageEncodingBindingElements contributes information to
-               // here.
-               MessageEncoder message_encoder;
-
                public BindingContext (CustomBinding binding,
                        BindingParameterCollection parameters)
                {
@@ -110,11 +105,6 @@
                        get { return new BindingElementCollection (elements); }
                }
 
-               internal MessageEncoder MessageEncoder {
-                       get { return message_encoder; }
-                       set { message_encoder = value; }
-               }
-
                internal BindingElement DequeueBindingElement ()
                {
                        return DequeueBindingElement (true);

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog    
    2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog    
    2008-02-08 07:51:08 UTC (rev 95221)
@@ -1,3 +1,16 @@
+2008-02-08  Atsushi Enomoto  <[EMAIL PROTECTED]>
+
+       * TcpChannelFactory.cs, TcpChannelListener.cs, 
+         HttpChannelFactory.cs, HttpChannelListener.cs,
+         MsmqChannelFactory.cs, MsmqChannelListener.cs,
+         TextMessageEncodingBindingElement.cs,
+         BinaryMessageEncodingBindingElement.cs,
+         MtomMessageEncodingBindingElement.cs :
+         message encoder should be retrieved only through public API.
+       * BindingContext.cs : so my old guess was wrong.
+
+       See also: http://blogs.msdn.com/drnick/archive/2006/05/10/594134.aspx
+
 2008-02-05  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * HttpTransportBindingElement.cs : implemented copy constructor.

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
    2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelFactory.cs
    2008-02-08 07:51:08 UTC (rev 95221)
@@ -45,7 +45,13 @@
                public HttpChannelFactory (HttpTransportBindingElement source, 
BindingContext ctx)
                {
                        this.source = source;
-                       encoder = ctx.MessageEncoder;
+                       foreach (BindingElement be in 
ctx.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        if (encoder == null)
                                encoder = new TextMessageEncoder 
(MessageVersion.Default, Encoding.UTF8);
                }

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelListener.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelListener.cs
   2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/HttpChannelListener.cs
   2008-02-08 07:51:08 UTC (rev 95221)
@@ -54,7 +54,13 @@
                        // FIXME: consider ListenUriMode
                        listen_uri = new Uri (context.ListenUriBaseAddress,
                                context.ListenUriRelativeAddress);
-                       encoder = context.MessageEncoder;
+                       foreach (BindingElement be in 
context.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        if (encoder == null)
                                encoder = new TextMessageEncoder 
(MessageVersion.Default, Encoding.UTF8);
                }

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelFactory.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelFactory.cs
    2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelFactory.cs
    2008-02-08 07:51:08 UTC (rev 95221)
@@ -45,7 +45,13 @@
                public MsmqChannelFactory (MsmqTransportBindingElement source, 
BindingContext ctx)
                {
                        this.source = source;
-                       encoder = ctx.MessageEncoder;
+                       foreach (BindingElement be in 
ctx.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        if (encoder == null)
                                encoder = new BinaryMessageEncoder ();
                }

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelListener.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelListener.cs
   2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MsmqChannelListener.cs
   2008-02-08 07:51:08 UTC (rev 95221)
@@ -56,7 +56,13 @@
                                // FIXME: consider ListenUriMode.Unique
                                throw new NotImplementedException ();
 
-                       encoder = context.MessageEncoder;
+                       foreach (BindingElement be in 
context.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        if (encoder == null)
                                encoder = new BinaryMessageEncoder ();
                }

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MtomMessageEncodingBindingElement.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MtomMessageEncodingBindingElement.cs
     2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/MtomMessageEncodingBindingElement.cs
     2008-02-08 07:51:08 UTC (rev 95221)
@@ -68,9 +68,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelFactory<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelFactory<TChannel> (context);
                }
 
                public override IChannelListener<TChannel> 
BuildChannelListener<TChannel> (
@@ -78,9 +77,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelListener<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelListener<TChannel> (context);
                }
 
                public override bool CanBuildChannelListener<TChannel> (

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelFactory.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelFactory.cs
     2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelFactory.cs
     2008-02-08 07:51:08 UTC (rev 95221)
@@ -28,7 +28,13 @@
                public TcpChannelFactory (TcpTransportBindingElement source, 
BindingContext ctx)
                {
                        this.source = source;
-                       encoder = ctx.MessageEncoder;
+                       foreach (BindingElement be in 
ctx.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        if (encoder == null)
                                encoder = new TextMessageEncoder 
(MessageVersion.Default, Encoding.UTF8);
                }

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelListener.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelListener.cs
    2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TcpChannelListener.cs
    2008-02-08 07:51:08 UTC (rev 95221)
@@ -43,7 +43,13 @@
                        else
                                throw new NotImplementedException ();
                        
-                       encoder = context.MessageEncoder;
+                       foreach (BindingElement be in 
context.RemainingBindingElements) {
+                               MessageEncodingBindingElement mbe = be as 
MessageEncodingBindingElement;
+                               if (mbe != null) {
+                                       encoder = 
mbe.CreateMessageEncoderFactory ().Encoder;
+                                       break;
+                               }
+                       }
                        
                        if (encoder == null)
                                encoder = new BinaryMessageEncoder ();

Modified: 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncodingBindingElement.cs
===================================================================
--- 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncodingBindingElement.cs
     2008-02-08 03:44:51 UTC (rev 95220)
+++ 
trunk/olive/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncodingBindingElement.cs
     2008-02-08 07:51:08 UTC (rev 95221)
@@ -100,9 +100,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelFactory<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelFactory<TChannel> (context);
                }
 
                public override IChannelListener<TChannel> 
BuildChannelListener<TChannel> (
@@ -110,9 +109,8 @@
                {
                        if (context == null)
                                throw new ArgumentNullException ("context");
-                       context.MessageEncoder =
-                               CreateMessageEncoderFactory ().Encoder;
-                       return context.BuildInnerChannelListener<TChannel> ();
+                       context.RemainingBindingElements.Add (this);
+                       return base.BuildChannelListener<TChannel> (context);
                }
 
                public override bool CanBuildChannelListener<TChannel> (

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to