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