Author: bendewey
Date: Wed Jul 29 02:24:00 2009
New Revision: 798753
URL: http://svn.apache.org/viewvc?rev=798753&view=rev
Log:
STONEHENGE-92 thanks Avantika
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/BusinessServiceImplementation/TradeService.cs
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/OrderProcessorASyncClient/OrderProcessorAsyncClient.cs
incubator/stonehenge/trunk/stocktrader/dotnet/common/BasicClient/BasicClient.cs
incubator/stonehenge/trunk/stocktrader/dotnet/trader_client/BusinessServiceClient/BusinessServiceClient.cs
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/BusinessServiceImplementation/TradeService.cs
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/business_service/BusinessServiceImplementation/TradeService.cs?rev=798753&r1=798752&r2=798753&view=diff
==============================================================================
---
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/BusinessServiceImplementation/TradeService.cs
(original)
+++
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/BusinessServiceImplementation/TradeService.cs
Wed Jul 29 02:24:00 2009
@@ -829,7 +829,7 @@
//This creates a new client with the
orderMode specified using the config info
//from the database. Specifically, the row
containing "DOTNET_BS" in the table
//BSTOOPS
- TradeOrderServiceAsyncClient asyncclient =
new TradeOrderServiceAsyncClient(bsConfig.OPSName);
+ TradeOrderServiceAsyncClient asyncclient =
new TradeOrderServiceAsyncClient(bsConfig.OPSName, bsConfig.OPS);
asyncclient.processOrderASync(order);
@@ -874,7 +874,7 @@
//easily knowing where communication and proxy
logic sits; and make changes to services
//you might want to interface with vs.
littering proxy calls throughout the
//business tier itself.
- TradeOrderServiceAsyncClient asyncclient = new
TradeOrderServiceAsyncClient(bsConfig.OPS);
+ TradeOrderServiceAsyncClient asyncclient = new
TradeOrderServiceAsyncClient(bsConfig.OPSName, bsConfig.OPS);
asyncclient.processOrderASync(order);
dalOrder.CommitADOTransaction();
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/OrderProcessorASyncClient/OrderProcessorAsyncClient.cs
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/business_service/OrderProcessorASyncClient/OrderProcessorAsyncClient.cs?rev=798753&r1=798752&r2=798753&view=diff
==============================================================================
---
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/OrderProcessorASyncClient/OrderProcessorAsyncClient.cs
(original)
+++
incubator/stonehenge/trunk/stocktrader/dotnet/business_service/OrderProcessorASyncClient/OrderProcessorAsyncClient.cs
Wed Jul 29 02:24:00 2009
@@ -69,11 +69,11 @@
/// in the database BSTOPS table
/// </summary>
/// <param name="orderMode">The order mode, determines what type of
binding/remote interface is used for communication.</param>
- public TradeOrderServiceAsyncClient(string orderMode)
+ public TradeOrderServiceAsyncClient(string clientConfig, string url)
{
try
{
- opsclient = new Client.Client(typeof(IOrderProcessor),
ConfigurationManager.AppSettings.Get(orderMode));
+ opsclient = new Client.Client(typeof(IOrderProcessor),
ConfigurationManager.AppSettings.Get(clientConfig), url);
}
catch
{
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/common/BasicClient/BasicClient.cs
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/common/BasicClient/BasicClient.cs?rev=798753&r1=798752&r2=798753&view=diff
==============================================================================
---
incubator/stonehenge/trunk/stocktrader/dotnet/common/BasicClient/BasicClient.cs
(original)
+++
incubator/stonehenge/trunk/stocktrader/dotnet/common/BasicClient/BasicClient.cs
Wed Jul 29 02:24:00 2009
@@ -46,6 +46,7 @@
public Connection _connection;
private Type _type;
private string _clientConfig;
+ private string _url;
private string _userName;
private string _password;
@@ -74,6 +75,25 @@
_connection = new Connection(_type, null, _clientConfig,
null,userName,password);
}
+ public ClientList(Type clientContractType, string clientConfig, string
url)
+ {
+ _clientConfig = clientConfig;
+ _type = clientContractType;
+ _url = url;
+
+ _connection = new Connection(_type, null, _clientConfig, null,
url);
+ }
+
+ public ClientList(Type clientContractType, string clientConfig, string
url, string userName, string password)
+ {
+ _clientConfig = clientConfig;
+ _type = clientContractType;
+ _url = url;
+ _userName = userName;
+ _password = password;
+ _connection = new Connection(_type, null, _clientConfig, null,
url, userName, password);
+ }
+
public class Connection
{
private IChannel _channel;
@@ -83,7 +103,7 @@
public Type _type;
string _userName;
string _password;
-
+ string _url;
/// <summary>
/// Creates a new Connection instance, which stores all the
information for a cached Channel instance
@@ -101,6 +121,15 @@
_factory = factory;
}
+ public Connection(Type type, IChannel channel, string
clientConfig, ChannelFactory factory,string url)
+ {
+ _type = type;
+ _channel = channel;
+ _clientConfig = clientConfig;
+ _factory = factory;
+ _url = url;
+ }
+
public Connection(Type type, IChannel channel, string
clientConfig, ChannelFactory factory, string userName, string password)
{
_type = type;
@@ -111,6 +140,18 @@
_password = password;
}
+ public Connection(Type type, IChannel channel, string
clientConfig, ChannelFactory factory, string url, string userName, string
password)
+ {
+ _type = type;
+ _channel = channel;
+ _clientConfig = clientConfig;
+ _factory = factory;
+ _url = url;
+ _userName = userName;
+ _password = password;
+
+ }
+
/// <summary>
/// Uses reflection to create a typed generic object.
/// </summary>
@@ -147,6 +188,27 @@
return channelFactory;
}
+ /// <summary>
+ /// Returns a channel factory as an object type. The channel
factory will be created as type "theType"
+ /// </summary>
+ /// <param name="theType">The type representing the service
contract type.</param>
+ /// <param name="clientConfiguration">The name of the binding
configuration to be used when creating the factory.</param>
+ /// <param name="url">The endpoint address to be used when
creating the channel factory.</param>
+ /// <returns>object representing a channel factory</returns>
+ public static object createChannelFactory(Type theType, string
clientConfiguration, string url, string userName, string password)
+ {
+ object channelFactory =
CreateGeneric(typeof(ChannelFactory<>), theType, new object[] {
clientConfiguration });
+ ((ChannelFactory)channelFactory).Credentials.UserName.UserName
= userName;
+ ((ChannelFactory)channelFactory).Credentials.UserName.Password
= password;
+ if (!string.IsNullOrEmpty(url))
+ {
+ var oldAddress =
((ChannelFactory)channelFactory).Endpoint.Address;
+ ((ChannelFactory)channelFactory).Endpoint.Address = new
EndpointAddress(new Uri(url), oldAddress.Identity);
+ }
+ return channelFactory;
+ }
+
+
public string ClientConfig
{
get
@@ -159,6 +221,7 @@
}
}
+
/// <summary>
/// Returns a channel as an IChannel type. The channel will be
created using a channel factory.
/// </summary>
@@ -193,7 +256,10 @@
{
if (_factory == null)
{
- _factory =
(ChannelFactory)createChannelFactory(_type, ClientConfig,_userName,_password);
+ if (_url == null)
+ _factory =
(ChannelFactory)createChannelFactory(_type, ClientConfig, _userName, _password);
+ else
+ _factory =
(ChannelFactory)createChannelFactory(_type, ClientConfig, _url, _userName,
_password);
}
if (_channel == null)
{
@@ -250,6 +316,7 @@
public ClientList connection;
private string _clientConfig;
private Type _type;
+ private string _url;
/// <summary>
///
@@ -274,6 +341,25 @@
}
}
+ public Client(Type clientContractType, string clientConfig, string url)
+ {
+ _type = clientContractType;
+ _clientConfig = clientConfig;
+ _url = url;
+ if (connectionDictionary == null)
+ connectionDictionary = new Dictionary<string, ClientList>();
+ try
+ {
+ connection = connectionDictionary[_type.FullName];
+ }
+ catch
+ {
+ //No entry!
+ connection = new ClientList(clientContractType, clientConfig,
url);
+ connectionDictionary.Add(_type.FullName, connection);
+ }
+ }
+
/// <summary>
///
/// </summary>
@@ -297,6 +383,25 @@
}
}
+ public Client(Type clientContractType, string clientConfig, string
url, string userName, string password)
+ {
+ _type = clientContractType;
+ _clientConfig = clientConfig;
+ _url = url;
+ if (connectionDictionary == null)
+ connectionDictionary = new Dictionary<string, ClientList>();
+ try
+ {
+ connection = connectionDictionary[_type.FullName];
+ }
+ catch
+ {
+ //No entry!
+ connection = new ClientList(clientContractType, clientConfig,
url, userName, password);
+ connectionDictionary.Add(_type.FullName, connection);
+ }
+ }
+
/// <summary>
/// Property that is referenced in custom client code to get a channel
from the connection list. Hence, when
/// getting a channel via this property, load balancing and failover
will occur.
@@ -320,4 +425,3 @@
}
}
}
-
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/trader_client/BusinessServiceClient/BusinessServiceClient.cs
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/trader_client/BusinessServiceClient/BusinessServiceClient.cs?rev=798753&r1=798752&r2=798753&view=diff
==============================================================================
---
incubator/stonehenge/trunk/stocktrader/dotnet/trader_client/BusinessServiceClient/BusinessServiceClient.cs
(original)
+++
incubator/stonehenge/trunk/stocktrader/dotnet/trader_client/BusinessServiceClient/BusinessServiceClient.cs
Wed Jul 29 02:24:00 2009
@@ -87,11 +87,11 @@
{
if (clientConfig.BSName.Equals(Settings.BS_LABEL))
{
- bslclient = new Client.Client(typeof(ITradeServices),
ConfigurationManager.AppSettings.Get(clientConfig.BSName));
+ bslclient = new Client.Client(typeof(ITradeServices),
ConfigurationManager.AppSettings.Get(clientConfig.BSName), clientConfig.BS);
}
else
{
- bslclient = new Client.Client(typeof(ITradeServices),
ConfigurationManager.AppSettings.Get(clientConfig.BSName), Settings.BSL_USERID,
Settings.BSL_PASSWORD);
+ bslclient = new Client.Client(typeof(ITradeServices),
ConfigurationManager.AppSettings.Get(clientConfig.BSName), clientConfig.BS,
Settings.BSL_USERID, Settings.BSL_PASSWORD);
}
}
catch
@@ -452,4 +452,4 @@
}
}
-}
+}
\ No newline at end of file