incubator-stonehenge-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From drew...@apache.org
Subject svn commit: r728166 - in /incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation: ./ Properties/
Date Fri, 19 Dec 2008 21:48:13 GMT
Author: drewbai
Date: Fri Dec 19 13:48:13 2008
New Revision: 728166

URL: http://svn.apache.org/viewvc?rev=728166&view=rev
Log:
intial commit (second solution)

Added:
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/CustomCertValidator.cs
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorImplementation.csproj
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorService.cs
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/ProcessOrder.cs
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/AssemblyInfo.cs
    incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/stocktrader.snk
  (with props)

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/CustomCertValidator.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/CustomCertValidator.cs?rev=728166&view=auto
==============================================================================
--- incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/CustomCertValidator.cs
(added)
+++ incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/CustomCertValidator.cs
Fri Dec 19 13:48:13 2008
@@ -0,0 +1,44 @@
+//  .Net StockTrader Sample WCF Application for Benchmarking, Performance Analysis and Design
Considerations for Service-Oriented Applications
+
+//======================================================================================================
+// This is the Order Processor Service Custom Certificate validator.  It utilizes the provide
base class,
+// CustomCertificateValidator, that comes with Config Service.  This base class uses a list
of thumbprints
+// for valid certificates we want to accept for clients connecting with client certificates
to the secured
+// message security mode endpoint.  See the StockTrader Setup and Configuration Guide for
details.  You
+// must override the base method getAllowedThumbprints and provide your custom list, per
below.  For OPS,
+// the only two certs that will be allowed are those that ship with the StockTrader sample.
 
+//======================================================================================================
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Trade.Utility;
+
+namespace Trade.OrderProcessorImplementation
+{
+    /// <summary>
+    /// The Order Processor Service custom X.509 certificate validator, that uses the base
class
+    /// provided with Configuration Service.  This class is referenced in the config file,
with the
+    /// OPS_M_Security_Behavior behavior configuration for the host exe.
+    /// </summary>
+    public class CustomCertValidator : CustomCertificateValidator
+    {
+        /// <summary>
+        /// Override to provide our list of valid cert thumbprints for the service.
+        /// </summary>
+        /// <returns></returns>
+        protected override string[] getAllowedThumbprints()
+        {
+            List<string> thumbprints = new List<string>();
+
+            //This is the thumbprint for the BSLClient Certificate in the BSLClient.pfx file.
 Spaces should be removed.
+            thumbprints.Add("59d185eae27b5d89df9a90927353206cc89b8a1b");
+
+            //This is the thumbprint for the OPSHost Certificate in the OPSHost.pfx file.
 Spaces should be removed. We add
+            //this one as well for allowing the service certificate to be used when a node
checks its own endpoints.
+            thumbprints.Add("fa0f58bb605fa43369e279e8f9088872fde09943");
+
+            return thumbprints.ToArray();
+        }
+    }
+}

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorImplementation.csproj
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorImplementation.csproj?rev=728166&view=auto
==============================================================================
--- incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorImplementation.csproj
(added)
+++ incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorImplementation.csproj
Fri Dec 19 13:48:13 2008
@@ -0,0 +1,113 @@
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{657AD453-B00F-4F8A-9A94-25874320DE2C}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Trade.OrderProcessorImplementation</RootNamespace>
+    <AssemblyName>Trade.OrderProcessorImplementation</AssemblyName>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>stocktrader.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089,
processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\..\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.IdentityModel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Messaging" />
+    <Reference Include="System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.Runtime.Serialization.dll</HintPath>
+    </Reference>
+    <Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089,
processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.ServiceModel.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Transactions" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Trade.BusinessServiceDataContract, Version=2.0.2.0, Culture=neutral,
PublicKeyToken=aaca655dc76c580b, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\SharedLibraries\BusinessService\Trade.BusinessServiceDataContract.dll</HintPath>
+    </Reference>
+    <Reference Include="Trade.DALFactory, Version=2.0.2.0, Culture=neutral, PublicKeyToken=aaca655dc76c580b,
processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\SharedLibraries\Trade.DALFactory.dll</HintPath>
+    </Reference>
+    <Reference Include="Trade.IDAL, Version=2.0.2.0, Culture=neutral, PublicKeyToken=aaca655dc76c580b,
processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\SharedLibraries\Trade.IDAL.dll</HintPath>
+    </Reference>
+    <Reference Include="Trade.OrderProcessorContract, Version=2.0.2.0, Culture=neutral,
PublicKeyToken=aaca655dc76c580b, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\SharedLibraries\OrderProcessorService\Trade.OrderProcessorContract.dll</HintPath>
+    </Reference>
+    <Reference Include="Trade.OrderProcessorServiceConfigurationSettings, Version=2.0.2.0,
Culture=neutral, PublicKeyToken=aaca655dc76c580b, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\SharedLibraries\Trade.OrderProcessorServiceConfigurationSettings.dll</HintPath>
+    </Reference>
+    <Reference Include="Trade.Utility, Version=2.0.2.0, Culture=neutral, PublicKeyToken=aaca655dc76c580b,
processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\SharedLibraries\Trade.Utility.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CustomCertValidator.cs" />
+    <Compile Include="OrderProcessorService.cs" />
+    <Compile Include="ProcessOrder.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="stocktrader.snk" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and
uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" ..\..\..\..\SharedLibraries
+copy "$(TargetDir)$(TargetName).pdb" ..\..\..\..\SharedLibraries</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorService.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorService.cs?rev=728166&view=auto
==============================================================================
--- incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorService.cs
(added)
+++ incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/OrderProcessorService.cs
Fri Dec 19 13:48:13 2008
@@ -0,0 +1,113 @@
+//  .Net StockTrader Sample WCF Application for Benchmarking, Performance Analysis and Design
Considerations for Service-Oriented Applications
+
+//======================================================================================================
+// The Order Processor Service implementation class/business logic.
+//======================================================================================================
+
+
+using System;
+using System.Configuration;
+using System.Diagnostics;
+using System.Messaging;
+using System.Transactions;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using System.Runtime.Serialization;
+//using ConfigService.ServiceConfigurationBase;
+//using ConfigService.ServiceConfigurationUtility;
+//using ConfigService.ServiceConfigurationHelper;
+using Trade.BusinessServiceDataContract;
+using Trade.OrderProcessorContract;
+using Trade.OrderProcessorServiceConfigurationSettings;
+using Trade.Utility;
+//using Trade.OrderProcessorAsyncClient;
+
+namespace Trade.OrderProcessorImplementation
+{
+    
+    /// <summary>
+    /// Service class which implements the Order Processor service contract.
+    /// ReleaseServiceInstanceOnTransactionComplete is marked as false  to support transacted
batches from the 
+    /// transacted (persisted) durable MSMQ message queue. This is required!
+    /// </summary>
+    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
+    public class OrderProcessor : IOrderProcessor
+    {
+        public OrderProcessor()
+        {
+            
+        }
+
+        /// <summary>
+        /// Interesting in that this service contract is a one-way contract. However, it
+        //  turns out this online check works fine in that we are loosely couple when working
with MSMQ
+        //  and still tightly coupled on one-way TCP or HTTP bindings.  The behavior is such
+        //  that this method will fail from calling client only on TCP/HTTP one-way (Async)
+        //  bindings, which happens regardless on any method call; but will not fail on MSMQ
bindings 
+        //  if the messaging service is running.  If MSMQ messaging service is not running
at the endpoint, 
+        //  we will have endpoint not found detection as desired.
+        /// </summary>
+        public void isOnline()
+        {
+            return;
+        }
+       
+
+        /// <summary>
+        /// SubmitOrder service operation is a service operation that processes order messages
from the client
+        /// coming in via TCP, HTTP, or a non-transacted (volatile) MSMQ WCF binding from
either the BSL or another remote instance
+        /// of the Order Processor Service running in 'Forward' mode. 
+        /// This method *always*  uses a System.Transaction tx to ensure database integrity.
 
+        /// However, since it is receiving from a non-persisted format, the order could possibly
be lost
+        /// even as database integrity is maintained on the processing of the order itself.
+        /// This is because if a received order is not processed successfully to the database,
the message 
+        /// will not be automatically preserved by the source it is being received from since
that source
+        /// is not a durable (persisted) source.
+        /// </summary>
+        /// <param name="order">Order to submit.</param>
+        public void SubmitOrder(OrderDataModel order)
+        {
+            System.Transactions.TransactionOptions txOps = new TransactionOptions();
+            txOps.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
+            txOps.Timeout = TimeSpan.FromSeconds(Settings.SYSTEMDOTTRANSACTION_TIMEOUT);
+            //Start our System.Transactions tx with the options set above.
+            using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required,
txOps))
+            {
+                try
+                {
+                    processOrder(order);
+
+                    //Complete transaction scope!
+                    tx.Complete();
+                }
+                catch 
+                {
+                    throw;
+                }
+            }
+        return;
+        }
+
+        /// <summary>
+        /// Processes the order and creates holding, or sells stock.
+        /// </summary>
+        /// <param name="queuedOrder">Order to process.</param>
+        private void processOrder(OrderDataModel queuedOrder)
+        {
+            //You could extend this application by transforming the order message
+            //as it comes in to another format, if required.  In this case, 
+            //no transformation actually takes place since the types are the same.  
+            //You can imagine different systems bridged might have different schema, 
+            //however, and transformations could be rather easily accomplished here. 
+
+            if (queuedOrder.orderID % Settings.DISPLAYNUMBERORDERITERATIONS == 0)
+            {
+                string message = string.Format("Processing Order {0}, symbol {1}, type {2}.",
queuedOrder.orderID.ToString(), queuedOrder.symbol, queuedOrder.orderType);
+                StockTraderUtility.writeConsoleMessage(message + "\n",EventLogEntryType.Information,false,
Settings.EVENT_LOG);
+            }
+            ProcessOrder orderService = new ProcessOrder();
+            orderService.ProcessAndCompleteOrder(queuedOrder);
+            return;
+        }
+    }
+}

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/ProcessOrder.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/ProcessOrder.cs?rev=728166&view=auto
==============================================================================
--- incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/ProcessOrder.cs
(added)
+++ incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/ProcessOrder.cs
Fri Dec 19 13:48:13 2008
@@ -0,0 +1,154 @@
+//  .Net StockTrader Sample WCF Application for Benchmarking, Performance Analysis and Design
Considerations for Service-Oriented Applications
+
+//======================================================================================================
+// A class that is used to process a submitted order within the StockTraderDB the database,
with required 
+// business logic.  
+//======================================================================================================
+
+//======================================================================================================
+// Code originally contributed by Microsoft Corporation.
+// This contribution to the Stonehenge project is limited strictly 
+// to the source code that is submitted in this submission.  
+// Any technology, including underlying platform technology, 
+// that is referenced or required by the submitted source code 
+// is not a part of the contribution.  
+// For example and not by way of limitation, 
+// any systems/Windows libraries (WPF, WCF, ASP.NET etc.) 
+// required to run the submitted source code is not a part of the contribution
+//======================================================================================================
+
+using System;
+using System.Diagnostics;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using System.ServiceModel.Description;
+using System.ServiceModel.Dispatcher;
+using System.ServiceModel.Channels;
+using Trade.IDAL;
+using Trade.DALFactory;
+using Trade.BusinessServiceDataContract;
+using Trade.OrderProcessorContract;
+using Trade.OrderProcessorServiceConfigurationSettings;
+using Trade.Utility;
+
+namespace Trade.OrderProcessorImplementation
+{
+    public class ProcessOrder 
+    {
+        private IOrder dalOrder;
+         
+        public void ProcessAndCompleteOrder(OrderDataModel order)
+        {
+            try
+            {
+                dalOrder = Trade.DALFactory.Order.Create(Settings.DAL);
+                dalOrder.Open(Settings.TRADEDB_SQL_CONN_STRING);
+                decimal total = 0;
+                int holdingid = -1;
+                QuoteDataModel quote = dalOrder.getQuoteForUpdate(order.symbol);
+                //Get the latest trading price--this is the money going into (or out of)
the users account.
+                order.price = quote.price;
+
+                //Calculate order total, and create/update the Holding. Whole holding 
+                //sells delete the holding, partials sells update the holding with new amount
+                //(and potentially the order too), and buys create a new holding.
+                if (order.orderType == StockTraderUtility.ORDER_TYPE_BUY)
+                {
+                    holdingid = dalOrder.createHolding(order);
+                    total = Convert.ToDecimal(order.quantity) * order.price + order.orderFee;
+                }
+                else
+                    if (order.orderType == StockTraderUtility.ORDER_TYPE_SELL)
+                    {
+                        holdingid = sellHolding(order);
+                        //We will assume here, since the holding cannot be found, it has
already been sold,
+                        //perhaps in another browser session.
+                        if (holdingid == -1 )
+                            return;
+                        total = -1 * Convert.ToDecimal(order.quantity) * order.price + order.orderFee;
+                    }
+
+                //Debit/Credit User Account.  Note, if we did not want to allow unlimited
margin
+                //trading, we would change the ordering a bit and add the biz logic here
to make
+                //sure the user has enough money to actually buy the shares they asked for!
+
+                //Now Update Account Balance.
+                dalOrder.updateAccountBalance(order.accountID, total);
+
+                //Update the stock trading volume and price in the quote table
+                dalOrder.updateStockPriceVolume(order.quantity, quote);
+
+                //Now perform our ACID tx test, if requested based on order type and acid
stock symbols
+                if (order.symbol.Equals(StockTraderUtility.ACID_TEST_BUY) && order.orderType
== StockTraderUtility.ORDER_TYPE_BUY)
+                    throw new Exception(StockTraderUtility.EXCEPTION_MESSAGE_ACID_BUY);
+                else
+                    if (order.symbol.Equals(StockTraderUtility.ACID_TEST_SELL) &&
order.orderType == StockTraderUtility.ORDER_TYPE_SELL)
+                        throw new Exception(StockTraderUtility.EXCEPTION_MESSAGE_ACID_SELL);
+
+                //Finally, close the order
+                order.orderStatus = StockTraderUtility.ORDER_STATUS_CLOSED;
+                order.completionDate = DateTime.Now;
+                order.holdingID = holdingid;
+                dalOrder.closeOrder(order);
+                //Done!
+
+                return;
+            }
+            catch 
+            {
+                throw;
+            }
+            finally
+            {
+                dalOrder.Close();
+            }
+        }
+
+        int sellHolding(OrderDataModel order)
+        {
+            //Note, we need to make this call simply becuase holdingID is not a serialized
+            //property on OrderDataBean; hence we cannot associate a sell order with a specific
+            //holding without first searching for and retrieving the holding by order.OrderID.
+            //A better approach would be to serialize the holdingID property on OrderDataModel,
+            //then this extra query could be avoided.  However, we cannot here becuase WebSphere
+            //Trade 6.1 will not interoperate from the JSP app to .NET backend services if
we do.
+            //Of course, Trade 6.1 could easily be updated to serialize this property on
OrderDataBean,
+            //and then no "compromise" would be needed.  But we want this to work with the
existing IBM 
+            //Trade 6.1 code as downloadable from IBM's site.
+            HoldingDataModel holding = dalOrder.getHoldingForUpdate(order.orderID);
+            if (holding == null)
+                throw new Exception(StockTraderUtility.EXCEPTION_MESSAGE_INVALID_HOLDING_NOT_FOUND);
+            order.accountID = holding.AccountID;
+
+            //There are three distinct business cases here, each needs different treatment:
 
+            // a) Quantity requested is less than total shares in the holding -- update holding.
 
+            // b) Quantity requested is equal to total shares in the holding -- delete holding.
 
+            // c) Quantity requested is greater than total shares in the holding -- delete
holding, update order table.  
+            if (order.quantity < holding.quantity)
+            {
+                dalOrder.updateHolding(holding.holdingID, order.quantity);
+            }
+            else
+                if (holding.quantity == order.quantity)
+                {
+                    dalOrder.deleteHolding(holding.holdingID);
+                }
+                else
+                    //We now need to back-update the order record quantity to reflect
+                    //fact not all shares originally requested were sold since the holding

+                    //had less shares in it, perhaps due to other orders 
+                    //placed against that holding that completed before this one. So we will
+                    //sell the remaining shares, but need to update the final order to reflect
this.
+                    if (order.quantity > holding.quantity)
+                    {
+                        dalOrder.deleteHolding(holding.holdingID);
+                        order.quantity = holding.quantity;
+                        order.accountID = holding.AccountID;
+                        dalOrder.updateOrder(order);
+                    }
+            return holding.holdingID;
+        }
+    }
+}
+

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/AssemblyInfo.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/AssemblyInfo.cs?rev=728166&view=auto
==============================================================================
--- incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/AssemblyInfo.cs
(added)
+++ incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/Properties/AssemblyInfo.cs
Fri Dec 19 13:48:13 2008
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Trade.OrderProcessorImplementation")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct(".NET StockTrader")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d45bdf08-d1fe-4a76-97ef-23813b802953")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("2.0.2.0")]
+[assembly: AssemblyFileVersion("2.0.2.0")]

Added: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/stocktrader.snk
URL: http://svn.apache.org/viewvc/incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/stocktrader.snk?rev=728166&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/stonehenge/contrib/stocktrader/dotnet/StockTrader/OrderProcessorImplementation/stocktrader.snk
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



Mime
View raw message