incubator-stonehenge-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shan...@apache.org
Subject svn commit: r743209 - in /incubator/stonehenge/trunk/stocktrader/php/order_processor: ./ conf/ keys/ wsdl/
Date Wed, 11 Feb 2009 04:07:30 GMT
Author: shankar
Date: Wed Feb 11 04:07:29 2009
New Revision: 743209

URL: http://svn.apache.org/viewvc?rev=743209&view=rev
Log:
PHP order processor added. 

Added:
    incubator/stonehenge/trunk/stocktrader/php/order_processor/
    incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/
    incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/database_config.xml
    incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/policy.xml
    incubator/stonehenge/trunk/stocktrader/php/order_processor/data_access_layer.php
    incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/
    incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/alice_cert.cert
    incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_cert.cert
    incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_key.pem
    incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor.php
    incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc.php
    incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc_msec.php
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl0
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd0
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd1
    incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd2

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/database_config.xml
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/database_config.xml?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/database_config.xml (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/database_config.xml Wed Feb 11 04:07:29 2009
@@ -0,0 +1,6 @@
+<config>
+	<server>127.0.0.1,1433</server>
+	<user>trade</user>
+	<password>trade</password>
+	<database>StockTraderDB</database>
+</config>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/policy.xml
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/policy.xml?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/policy.xml (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/conf/policy.xml Wed Feb 11 04:07:29 2009
@@ -0,0 +1,43 @@
+<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
+    <wsp:ExactlyOne>
+        <wsp:All>
+            <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <wsp:Policy>
+                    <sp:ProtectionToken>
+                        <wsp:Policy>
+                            <sp:X509Token sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
+                                <wsp:Policy>
+                                    <sp:WssX509V3Token10/>
+                                </wsp:Policy>
+                            </sp:X509Token>
+                        </wsp:Policy>
+                    </sp:ProtectionToken>
+                    <sp:AlgorithmSuite>
+                        <wsp:Policy>
+                            <sp:Basic256/>
+                        </wsp:Policy>
+                    </sp:AlgorithmSuite>
+                    <sp:Layout>
+                        <wsp:Policy>
+                            <sp:Strict/>
+                        </wsp:Policy>
+                    </sp:Layout>
+                    <sp:IncludeTimestamp/>
+                </wsp:Policy>
+            </sp:SymmetricBinding>
+            <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <wsp:Policy>
+                    <sp:MustSupportRefKeyIdentifier/>
+                    <sp:MustSupportRefEmbeddedToken/>
+                    <sp:MustSupportRefIssuerSerial/>
+                </wsp:Policy>
+            </sp:Wss10>
+            <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <sp:Body/>
+            </sp:SignedParts>
+            <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
+                <sp:Body/>
+            </sp:EncryptedParts>
+        </wsp:All>
+    </wsp:ExactlyOne>
+</wsp:Policy>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/data_access_layer.php
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/data_access_layer.php?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/data_access_layer.php (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/data_access_layer.php Wed Feb 11 04:07:29 2009
@@ -0,0 +1,123 @@
+<?php 
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/**
+ * This class encapsulates information regarding the establishment
+ * of database connection.
+ */
+
+class ConnectionInfo
+{
+	public $server; 	//The database server (eg: 127.0.0.1:1433)
+	public $user;		//User name 
+	public $password;	//Password
+	public $database;	//Database name
+}
+
+/**
+ * The method retrieves information for the database connection
+ * from a configuration file. The name of the config file should
+ * be, database_config.xml, and it should be in the same directory
+ * as this file.
+ * @return non NULL value (ConnectionInfo object), upon successfull 
+ * execution, and NULL if some information regarding the 
+ * connection is not available.
+ */
+
+function GetConnectionInfo()
+{
+	$doc = new DOMDocument();
+	$result = $doc->load('database_config.xml');
+
+	$server = $doc->getElementsByTagName("server")->item(0)->nodeValue;
+	$user = $doc->getElementsByTagName("user")->item(0)->nodeValue;
+	$password = $doc->getElementsByTagName("password")->item(0)->nodeValue;
+	$database = $doc->getElementsByTagName("database")->item(0)->nodeValue;
+
+	if ($server == NULL || $user == NULL || $password == NULL || $database == NULL)
+	{
+		error_log ("SERVER, USER, PASSWORD OR DATABASE IS NULL\n");
+	}
+	else
+	{
+		$ConnInfo = new ConnectionInfo();
+		$ConnInfo->server = $server;
+		$ConnInfo->user = $user;
+		$ConnInfo->password = $password;
+		$ConnInfo->database = $database;
+	}
+	return $ConnInfo;
+}
+
+/**
+ * This method establishes a connection to the database. 
+ * @return dbhandle, upon successfull execution a non null
+ * handle to the database connection is returned. Else it 
+ * will be null.
+ */
+
+function ConnectToDatabase()
+{
+	$connInfo = GetConnectionInfo();
+	if ($connInfo != NULL)
+	{
+		$dbhandle = mssql_connect($connInfo->server, $connInfo->user, $connInfo->password)
+			or die ("Couldn't connect to the server!!!");	    	
+		$selected = mssql_select_db($connInfo->database, $dbhandle) 
+			or die ("Couldn't open the database!!!");
+	}
+	return $dbhandle;
+}
+
+/**
+ * This method executes a query that it receives.
+ * @param query the query to execute
+ * @return non-NULL upon success and NULL otherwise.
+ */
+
+function ExecuteQuery($query)
+{
+	return mssql_query($query);
+}
+
+/**
+ * This method close the connection that is established to the
+ * database.
+ * @param dbhandle handle to the database
+ */
+
+function CloseDatabase($dbhandle)
+{
+	mssql_close($dbhandle);
+}
+
+/**
+ * This method returns the a value from a mssql result set (a tuple
+ * returned after execution of ExecuteQuery method.
+ * @param result, the result obtained from ExecuteQuery method.
+ * @param raw, the raw number
+ * @param column, the column number
+ * @return the value at (raw, column) of the tuple.
+ */
+
+function GetMSSQLValue($result, $raw, $column)
+{
+	return mssql_result($result, $raw, $column);
+}
+?>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/alice_cert.cert
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/alice_cert.cert?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/alice_cert.cert (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/alice_cert.cert Wed Feb 11 04:07:29 2009
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDDDCCAfSgAwIBAgIQM6YEf7FVYx/tZyEXgVComTANBgkqhkiG9w0BAQUFADAw
+MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB
+MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQjEOMAwGA1UECgwFT0FT
+SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQ4wDAYDVQQDDAVB
+bGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoqi99By1VYo0aHrkKCNT
+4DkIgPL/SgahbeKdGhrbu3K2XG7arfD9tqIBIKMfrX4Gp90NJa85AV1yiNsEyvq+
+mUnMpNcKnLXLOjkTmMCqDYbbkehJlXPnaWLzve+mW0pJdPxtf3rbD4PS/cBQIvtp
+jmrDAU8VsZKT8DN5Kyz+EZsCAwEAAaOBkzCBkDAJBgNVHRMEAjAAMDMGA1UdHwQs
+MCowKKImhiRodHRwOi8vaW50ZXJvcC5iYnRlc3QubmV0L2NybC9jYS5jcmwwDgYD
+VR0PAQH/BAQDAgSwMB0GA1UdDgQWBBQK4l0TUHZ1QV3V2QtlLNDm+PoxiDAfBgNV
+HSMEGDAWgBTAnSj8wes1oR3WqqqgHBpNwkkPDzANBgkqhkiG9w0BAQUFAAOCAQEA
+BTqpOpvW+6yrLXyUlP2xJbEkohXHI5OWwKWleOb9hlkhWntUalfcFOJAgUyH30TT
+pHldzx1+vK2LPzhoUFKYHE1IyQvokBN2JjFO64BQukCKnZhldLRPxGhfkTdxQgdf
+5rCK/wh3xVsZCNTfuMNmlAM6lOAg8QduDah3WFZpEA0s2nwQaCNQTNMjJC8tav1C
+Br6+E5FAmwPXP7pJxn9Fw9OXRyqbRA4v2y7YpbGkG2GI9UvOHw6SGvf4FRSthMMO
+35YbpikGsLix3vAsXWWi4rwfVOYzQK0OFPNi9RMCUdSH06m9uLWckiCxjos0FQOD
+ZE9l4ATGy9s9hNVwryOJTw==
+-----END CERTIFICATE-----

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_cert.cert
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_cert.cert?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_cert.cert (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_cert.cert Wed Feb 11 04:07:29 2009
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDCjCCAfKgAwIBAgIQYDju2/6sm77InYfTq65x+DANBgkqhkiG9w0BAQUFADAw
+MQ4wDAYDVQQKDAVPQVNJUzEeMBwGA1UEAwwVT0FTSVMgSW50ZXJvcCBUZXN0IENB
+MB4XDTA1MDMxOTAwMDAwMFoXDTE4MDMxOTIzNTk1OVowQDEOMAwGA1UECgwFT0FT
+SVMxIDAeBgNVBAsMF09BU0lTIEludGVyb3AgVGVzdCBDZXJ0MQwwCgYDVQQDDANC
+b2IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMCquMva4lFDrv3fXQnKK8Ck
+SU7HvVZ0USyJtlL/yhmHH/FQXHyYY+fTcSyWYItWJYiTZ99PAbD+6EKBGbdfuJNU
+JCGaTWc5ZDUISqM/SGtacYe/PD/4+g3swNPzTUQAIBLRY1pkr2cm3s5Ch/f+mYVN
+BR41HnBeIxybw25kkoM7AgMBAAGjgZMwgZAwCQYDVR0TBAIwADAzBgNVHR8ELDAq
+MCiiJoYkaHR0cDovL2ludGVyb3AuYmJ0ZXN0Lm5ldC9jcmwvY2EuY3JsMA4GA1Ud
+DwEB/wQEAwIEsDAdBgNVHQ4EFgQUXeg55vRyK3ZhAEhEf+YT0z986L0wHwYDVR0j
+BBgwFoAUwJ0o/MHrNaEd1qqqoBwaTcJJDw8wDQYJKoZIhvcNAQEFBQADggEBAIiV
+Gv2lGLhRvmMAHSlY7rKLVkv+zEUtSyg08FBT8z/RepUbtUQShcIqwWsemDU8JVts
+ucQLc+g6GCQXgkCkMiC8qhcLAt3BXzFmLxuCEAQeeFe8IATr4wACmEQE37TEqAuW
+EIanPYIplbxYgwP0OBWBSjcRpKRAxjEzuwObYjbll6vKdFHYIweWhhWPrefquFp7
+TefTkF4D3rcctTfWJ76I5NrEVld+7PBnnJNpdDEuGsoaiJrwTW3Ixm40RXvG3fYS
+4hIAPeTCUk3RkYfUkqlaaLQnUrF2hZSgiBNLPe8gGkYORccRIlZCGQDEpcWl1Uf9
+OHw6fC+3hkqolFd5CVI=
+-----END CERTIFICATE-----

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_key.pem
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_key.pem?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_key.pem (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/keys/bob_key.pem Wed Feb 11 04:07:29 2009
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQDAqrjL2uJRQ679310JyivApElOx71WdFEsibZS/8oZhx/xUFx8
+mGPn03EslmCLViWIk2ffTwGw/uhCgRm3X7iTVCQhmk1nOWQ1CEqjP0hrWnGHvzw/
++PoN7MDT801EACAS0WNaZK9nJt7OQof3/pmFTQUeNR5wXiMcm8NuZJKDOwIDAQAB
+AoGBAL9MxBAlVXG68pXAonCF/MtaVC+Uw7qD49WFJzNiJxkRwfWpBSvxY8FbgJP0
+/Addkgb51bk0iUlk0Ni3twEMWga0j9jOJLkDDoXfpHmH5HGTvNa9m241PGQ+kzAU
+dFvFzR0qUTDlBjk4pYoeqoJBTgNZGu3b3BHEbz7O7PAJUQEBAkEA8Rwrf7/pSiPH
+2pfU5StQ77+1Uva5VHpDoKLC5mgAgiPvQm2yBBSXkwPwXHEeRYEOfHydtCrudQY3
+6fVP4Oy1GQJBAMyQsI6CIjEwZzS1KXLb+ulpFBjcK99PydBGKxRue/o0ZpD69siA
+AL4YqyXl4Ai4hEHHe7FxeJe4Wzp6F0A6kXMCQQCpC8QfzHEHTzDnPP7CMm2LupCp
++1wTM6nIrXUS0CZTGFi+7WQbYkinheJ3HcRInOSIOWLkmBkaKWL4gMshezS5AkB8
+1G5pCBBFY/wWtdYtOP/MH0scQH6lLtNAPRFczm7pJ8DPB9ZAU5wgZH1MCxLDP5W1
+bj2U8mFcdCt3a7l0gEjxAkEAwoWqq6i7ZfFg4LUcKElZhjMeF8tKs1fWHhunO80t
+6hQUhBHahc4+AAgoXOMe+KAxa+F6uftjM9eg8rAAZ+6q3g==
+-----END RSA PRIVATE KEY-----

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor.php
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor.php?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor.php (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor.php Wed Feb 11 04:07:29 2009
@@ -0,0 +1,523 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ 
+require_once ("data_access_layer.php");
+
+define ("ORDER_TYPE_BUY", "buy");
+define ("ORDER_TYPE_SELL", "sell");
+define ("ORDER_STATUS_CLOSED", "closed");
+define ("STATUS_SUCCESS", 1);	//This represents a success status.
+define ("STATUS_FAILURE", 0);	//This represents a failure status.
+define ("INVALID_ID", -1); //Since Account ID 0 is valid, we used -1 
+									//to denote invalid
+
+/**
+ * This class encapsulates information regarding an order object.
+ */
+
+class OrderDataBean 
+{
+    public $orderID; // int
+    public $orderType; // string (buy | sell)
+    public $orderStatus; // string (closed | completed | open)
+    public $openDate; // dateTime
+    public $completionDate; // dateTime
+    public $quantity; // double
+    public $price; // decimal
+    public $orderFee; // decimal
+    public $symbol; // string
+}
+
+/**
+ * This class encapsulates an order object, and it contains information
+ * regarding a SubmitOrder request.
+ */
+
+class SubmitOrder 
+{
+    public $order; // OrderDataBean
+}
+
+/**
+ * This class encapsulates information regarding a particular holding.
+ * Each buy order creates a holding object and stores an entry in the
+ * holding table.
+ */
+
+class Holding
+{
+	public $purchasePrice; //decimal
+	public $holdingID; //int
+	public $quantity; //double
+	public $purchaseDate; //dateTime
+	public $accountID;	//string
+	public $quoteSymbol; //string
+}
+
+/**
+ * This class encapsulate information regarding a particular quote. The
+ * quote information related to a particular symbol, have to be analyzed 
+ * in order to process an order.
+ */
+
+class Quote
+{
+	public $low; //decimal
+	public $open1; //decimal
+	public $volume;	//double
+	public $price; //decimal
+	public $high; //decimal
+	public $symbol;	//string
+	public $change1; //decimal
+}
+
+/**
+ * This is the primary function which corresponds to the SubmitOrder 
+ * operation. 
+ */
+
+function ProcessOrder($order)
+{
+	$status = STATUS_SUCCESS;
+	$dbhandle = ConnectToDatabase();
+
+	/*This method with "BEGIN TRAN" initialize a transaction; which privides 
+	control so that later we can cancel a the transaction, if something 
+	goes wrong.*/
+
+	$status = ExecuteQuery("BEGIN TRAN"); 
+	if ($status)
+	{
+		$quote = GetQuoteForUpdate($order->symbol);
+		if ($quote)
+		{
+			$order->price = $quote->price;
+
+			/*Buy or sell orders either first creates a holding or sell a 
+			holding. The return value is the holdingID upon success. If NULL
+			is returned, then the tranaction can not be completed. This is due
+			to either problem of accessing the database or if there is no 
+			maching holding.*/
+
+			/*upon success, total price should be deducted from account's balance. 
+			In case of sell, balance should increase. So, in sell case, total price will be
+			negative value */
+
+			if ($order->orderType == ORDER_TYPE_BUY)
+			{
+				$holdingID = CreateHolding($order);
+				if ($holdingID != INVALID_ID)
+				{
+					$totalPrice = 
+						$order->quantity * $order->price + $order->orderFee;
+				}
+			}
+			if ($order->orderType == ORDER_TYPE_SELL)
+			{
+				$holdingID = SellHolding($order);
+				if ($holdingID != INVALID_ID)
+				{
+					$totalPrice = -1 * $order->quantity * $order->price + 
+						$order->orderFee;
+				}
+			}
+
+			if ($holdingID != INVALID_ID)
+			{
+				$status = UpdateSystemStatus($order, 
+					$quote, $holdingID, $totalPrice);
+			}
+			else
+			{
+				error_log ("Holding id for order with order id ".$order->orderID. " is not valid\n");
+				$status = STATUS_FAILURE;
+			}
+		}
+		else
+		{
+			error_log ("Cannot get quote with symbol ".$order->symbol. "\n");
+			$status = STATUS_FAILURE;
+		}
+
+	}
+	if ($status == STATUS_SUCCESS)
+	{
+		/*Transaction is successfull, we can safely commit the transaction
+		into the database.*/
+
+		ExecuteQuery("COMMIT TRAN");
+	}
+	else
+	{
+		/*Transaction is not successfull, we can safely rollback the 
+		transaction without commiting to the database.*/
+
+		ExecuteQuery("ROLLBACK TRAN");
+	}
+	CloseDatabase($dbhandle);
+}
+
+/**
+ * This method, retrieves all the information related to a particular symbol
+ * from the QUOTE table.
+ * @param symbol is the symbol we are looking for
+ * @return quote object filled with symbol information upons success and else 
+ * NULL is returned.
+ */
+
+function GetQuoteForUpdate($symbol)
+{
+	$query = "Set NOCOUNT ON; SELECT SYMBOL, COMPANYNAME, VOLUME, PRICE, ".
+		"OPEN1, LOW, HIGH, CHANGE1 FROM QUOTE WITH (NOLOCK) WHERE SYMBOL ".
+		"= '$symbol'";
+
+	/*Get the tuple corresponding to the particular symbol*/
+
+	$result =  ExecuteQuery($query);
+	if ($result)
+	{
+		$quote = new Quote();
+		$quote->symbol =  GetMSSQLValue($result, 0, 0);	//Get the symbol.
+		$quote->price = GetMSSQLValue($result, 0, 3); //Get the price.
+		$quote->low = GetMSSQLValue($result, 0, 5); //Get the low value.
+		$quote->high =  GetMSSQLValue($result, 0, 6); //Get the high value.
+	}
+	return $quote;
+}
+
+/**
+ * This method updates all the system information relates to a particular
+ * buy or sell operation.
+ * @param order order object
+ * @param quote  quote object
+ * @param holdingID holdingID of the holding which relates to the current order
+ * @param totalPrice the price change  (amount of money the flows in/out of a
+ * user's account).
+ * @return STATUS_SUCCESS upon success and STATUS_FAILURE otherwise.
+ */
+
+function UpdateSystemStatus($order, $quote, $holdingID, $totalPrice)
+{
+	$status = STATUS_SUCCESS;
+	$accountID = GetAccountIDFromOrder($order);
+	if ($accountID != INVALID_ID)
+	{
+		if(UpdateAccountBalance($accountID, $totalPrice))
+		{
+			if(UpdateStockPriceVolume($order->quantity, $quote))
+			{
+				if(!CloseOrder($order, $holdingID))
+				{
+					error_log ("Cannot close order for order id ". $order->orderID. " \n");
+					$status = STATUS_FAILURE;
+				}
+			}
+			else
+			{
+				error_log ("Cannot update stock price volume for symbol ". $quote->symbol. "\n");
+				$status = STATUS_FAILURE;
+			}
+		}
+		else
+		{
+			error_log ("Cannot update account balace for account id ".$accountID. "\n");
+			$status = STATUS_FAILURE;
+		}
+	}
+	else
+	{
+		error_log ("Account id for order id " .$order->orderID. " is not valid \n");
+		$status = STATUS_FAILURE;
+	}
+	return $status;
+}
+
+/**
+ * This function corresponds to a sell operation. It matches a particular
+ * holding related to a particular order (symbol) and then do the transaction
+ * @param order order object
+ * @return a non NULL holdingID upon success and NULL otherwise.
+ */
+
+function SellHolding($order)
+{
+	$holding = GetHoldingForUpdate($order);
+	if ($holding)
+	{
+		$accountID = $holding->accountID;
+		$quantity = $order->quantity;
+		$holdingQuantity = $holding->quantity;
+
+		if ($order->quantity < $holding->quantity)
+		{
+			if(!UpdateHolding($holding, $order->quantity))
+			{
+				error_log ("Cannot update holding with holding id ".$holding->holdingID. " \n");
+				$holding->holdingID = INVALID_ID;
+			}
+		}
+		else if ($order->quantity == $holding->quantity)
+		{
+			if(!DeleteHolding($holding))
+			{
+				error_log ("Cannot delete holding with holding id ".$holding->holdingID. " \n");
+				$holding->holdingID = INVALID_ID;
+			}
+		}
+		else
+		{
+			if(!DeleteHolding($holding))
+			{
+				error_log ("Cannot delete holding with holding id ".$holding->holdingID. " \n");
+				$holding->holdingID = INVALID_ID;
+			}
+			else
+			{
+				$order->quantity = $holding->quantity;
+				if(!UpdateOrder($order))
+				{
+					error_log ("Cannot update order with order id ".$order->orderID. " \n");
+					$holding->holdingID = INVALID_ID;
+				}
+			}
+		}
+	}
+	else
+	{
+		error_log ("Holding for order id ".$order->orderID. " is not valid \n");
+		return INVALID_ID;
+	}
+	return $holding->holdingID;
+}
+
+/**
+ * This method updates the status of an order as a result of a buy or sell
+ * operation.
+ * @param order order object
+ * @return NON-NULL on success and NULL on failure.
+ */
+
+function UpdateOrder($order)
+{
+	$query = "UPDATE ORDERS WITH (ROWLOCK) SET QUANTITY='$order->quantity' WHERE".
+		" ORDERID='$order->orderID'";
+	return ExecuteQuery($query);
+}
+
+/**
+ * This method updates a particular Holing entry in the HOLDING table.
+ * @param holding is the holding object.
+ * @param quantity is the amount of buy or sell.
+ * $return NON-NULL on success or NULL otherwise.
+ */
+
+function UpdateHolding($holding, $quantity)
+{
+	$query = "UPDATE HOLDING WITH (ROWLOCK) SET QUANTITY=QUANTITY-'$quantity'".
+		" WHERE HOLDINGID='$holding->holdingID'";
+	return ExecuteQuery($query);
+}
+
+/**
+ * Removes an entry from the HOLDING table when a matching order is received.
+ * @param holding is a holding object.
+ * @return NON-NULL value on success and NULL otherwise.
+ */
+
+function DeleteHolding($holding)
+{
+	$query = "DELETE FROM HOLDING WITH (ROWLOCK) WHERE ".
+		"HOLDINGID='$holding->holdingID'";
+	return ExecuteQuery($query);
+}
+
+/**
+ * This method returns a quote object which matches to the particular sell 
+ * order. 
+ * @param order the order object.
+ * @return a Holding object upon success and NULL otherwise.
+ */
+
+function GetHoldingForUpdate($order)
+{
+	$query = "Set NOCOUNT ON; SELECT HOLDING.HOLDINGID, HOLDING.ACCOUNT_ACCOUNTID,".
+		" HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE,".
+		" HOLDING.QUOTE_SYMBOL FROM HOLDING WITH (ROWLOCK) INNER JOIN ORDERS".
+		" ON HOLDING.HOLDINGID = ORDERS.HOLDING_HOLDINGID WHERE ".
+		"(ORDERS.ORDERID = '$order->orderID')";
+
+	/*Get the machining tuple from HOLDING table, that corresponds to the 
+	current sell operation.*/
+
+	$result = ExecuteQuery($query);
+	
+	if ($result)
+	{
+		$holding = new Holding();	
+		$holding->holdingID = GetMSSQLValue($result, 0, 0); //Get the holdingID.
+		$holding->accountID = GetMSSQLValue($result, 0, 1); //Get the accountID.
+		$holding->quantity = GetMSSQLValue($result, 0, 2); //Get the quantity.
+		$holding->purchasePrice = GetMSSQLValue($result, 0, 3); //Get the price.
+		$holding->purchaseDate = GetMSSQLValue($result, 0, 4); //Get the date.
+		$holding->quoteSymbol = GetMSSQLValue($result, 0, 5); //Get the symbol.
+	}
+	else
+	{
+		error_log ("Cannot obtain holding for order id ". $order->orderID . "\n");
+	}
+	return $holding;
+}
+
+/**
+ * This method updates the order status, with newest settings on completion
+ * of processing an order.
+ * @param order order object.
+ * @param holdingID holdingID of the particular holding.
+ * @return NON-NULL on success and NULL on failure.
+ */
+
+function CloseOrder($order, $holdingID)
+{
+	$order->orderStatus = ORDER_STATUS_CLOSED;
+	if ($order->orderType == ORDER_TYPE_SELL)
+	{
+		$holdingID = NULL;
+	}
+	$query = "UPDATE ORDERS WITH (ROWLOCK) SET ".
+		"ORDERSTATUS='".ORDER_STATUS_CLOSED."',".
+		" COMPLETIONDATE=GetDate(), HOLDING_HOLDINGID='$holdingID',".
+		" PRICE='$order->price' WHERE ORDERID='$order->orderID'";
+	return ExecuteQuery($query);
+}
+
+/**
+ * Create an entry in the HOLDING table to represent a particular buy order.
+ * @param order order object filled with order information.
+ * @return the holdingID of the created holding upon success and else it 
+ * returns NULL 
+ */
+
+function CreateHolding($order)
+{
+	$accountID = GetAccountIDFromOrder($order);
+	if ($accountID != INVALID_ID)
+	{
+		$query = "INSERT INTO HOLDING (PURCHASEPRICE, QUANTITY, PURCHASEDATE,".
+			" ACCOUNT_ACCOUNTID, QUOTE_SYMBOL) VALUES ('$order->price',".
+			" '$order->quantity', GetDate(), '$accountID', '$order->symbol');".
+			" SELECT ID=@@IDENTITY";
+		$result = ExecuteQuery($query);
+		if ($result)
+		{
+			$holdingID = GetMSSQLValue($result, 0, 0); 
+		}
+		else
+		{
+			error_log ("Cannot create holding for order id ". $order->orderID . "\n");
+			$holdingID = INVALID_ID;
+		}
+	}
+	else
+	{
+		error_log ("Account id for order with order id ".$order->orderID. " is not valid\n");
+		$holdingID = INVALID_ID;
+	}
+	return $holdingID;
+}
+
+/**
+ * This method retrieves the acccountID from a given order.
+ * @param order the order object.
+ * @return NON-NULL accountID upon success and NULL otherwise. 
+ */
+
+function GetAccountIDFromOrder($order)
+{
+	$query = "Set NOCOUNT ON; SELECT ACCOUNT_ACCOUNTID FROM ORDERS WITH ".
+		"(NOLOCK) WHERE ORDERID='$order->orderID'";
+
+	/*Get a tuple including accountID for a particular order*/
+
+	$result = ExecuteQuery($query);
+	if ($result != NULL)
+	{
+		$accountID = GetMSSQLValue($result, 0, 0); //Get accountID.
+	}
+	else
+	{
+		error_log ("Cannot obtain account id for order with order id ".$order->orderID. "\n");
+		$accountID = INVALID_ID;
+	}
+  	return $accountID; 
+}
+
+/**
+ * This method updates the account balance of the user who buy or sell some
+ * sybmol.
+ * @param accountID is the account to be updated.
+ * @param amount the amount of money by which the account is updated.
+ * @return NON-NULL upon success and NULL on failure.
+ */
+
+function UpdateAccountBalance($accountID, $amount)
+{
+	$query = "UPDATE ACCOUNT WITH (ROWLOCK) SET BALANCE=(BALANCE - '$amount')".
+		" WHERE ACCOUNTID = '$accountID'";
+	return ExecuteQuery($query);
+}
+
+/**
+ * This method updates the QUOTE table with the new price values. In here, a
+ * random value is generated which is between 0.1 and 2, and then the quote
+ * price is changed by multiplying it with the generted random value.
+ * @param quantity the quantity of a particular symbol the client buy or sell.
+ * @return STATUS_SUCCESS upon success and STATUS_FAILURE upon failure.
+ */
+
+function UpdateStockPriceVolume($quantity, $quote)
+{
+	if ($quote)
+	{
+		$rand = rand(1, 20);
+		$priceChangeFactor = ((float)$rand)/10;
+		$quote->price = $quote->price * $priceChangeFactor;
+
+		if($quote->price < 0.05 || $quote->price > 1000)
+		{
+			$quote->price = 100;
+		}
+
+		if ($quote->price < $quote->low)
+		{
+			$quote->low = $quote->price;
+		}
+		if ($quote->price > $quote->high)
+		{
+			$quote->high = $quote->price;
+		}
+
+		$query = "UPDATE QUOTE WITH (ROWLOCK) SET PRICE='$quote->price', ".
+			"LOW='$quote->low', HIGH='$quote->high', CHANGE1='$quote->price' - ".
+			"OPEN1, VOLUME=VOLUME+'$quantity' WHERE SYMBOL='$quote->symbol'";
+
+		$status = ExecuteQuery($query);
+	}
+	return $status;
+}
+?>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc.php
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc.php?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc.php (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc.php Wed Feb 11 04:07:29 2009
@@ -0,0 +1,100 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+require_once ("order_processor.php");
+
+// define the class map
+$class_map = array("anyType" => "anyType", "OrderDataBean" => "OrderDataBean", 
+	"SubmitOrder" => "SubmitOrder", "isOnline" => "isOnline");
+
+class isOnline
+{
+}
+
+
+/**
+ * This method corresponds to the primary operation of the service.It processes
+ * an incomming order object.
+ * @param input, the order object, filled with data correspond to an order
+ * @return accept upon success.
+ */ 
+
+function SubmitOrder($input) 
+{
+	SendAcceptNotification();
+	if ($input->order != NULL)
+	{
+		if(($input->order->orderType == ORDER_TYPE_BUY) || 
+			($input->order->orderType == ORDER_TYPE_SELL))
+		{
+			ProcessOrder($input->order);
+		}
+		else
+		{
+			error_log ("Incoming order type is incorrect.\n");
+		}
+	}
+	else
+	{
+		error_log ("Incoming order request is NULL.\n");
+	}
+}
+
+/**
+ * This method obtains some additional time and let the business service
+ * to store information regarding an order. Then the OrderProcessor can
+ * continue processing the order request that was just stored in the 
+ * database.
+ */
+
+function SendAcceptNotification()
+{
+	header('HTTP/1.1 202 Accepted');
+	header('Content-Length: 0');
+	flush();
+	sleep(1);
+}
+
+/**
+ * This function corresponds to the isOnline operation. This is used by the
+ * Configuration service to make sure that the OrderProcessor service is 
+ * online.
+ * @return just a return is expected to make sure the service is online.
+ */
+
+function isOnline($input) 
+{
+	return;
+}
+
+// define the operations map
+$operations = array("SubmitOrder" => "SubmitOrder", "isOnline" => "isOnline");
+
+// define the actions => operations map
+$actions = array("SubmitOrderOnePhase" => "SubmitOrder", 
+	"isOnline" => "isOnline");
+
+// create service in WSDL mode
+$service = new WSService(array ("wsdl" =>"./wsdl/TradeOrders.wsdl",
+	"operations" => $operations,
+    "actions" => $actions,
+	"classmap" => $class_map,));
+
+// process client requests and reply
+$service->reply();
+?>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc_msec.php
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc_msec.php?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc_msec.php (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/order_processor_svc_msec.php Wed Feb 11 04:07:29 2009
@@ -0,0 +1,108 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+require_once ("order_processor.php");
+
+// define the class map
+$class_map = array("anyType" => "anyType", "OrderDataBean" => "OrderDataBean", 
+	"SubmitOrder" => "SubmitOrder", "isOnline" => "isOnline");
+
+class isOnline
+{
+}
+
+
+/**
+ * This method corresponds to the primary operation of the service.It processes
+ * an incomming order object.
+ * @param input, the order object, filled with data correspond to an order
+ * @return accept upon success.
+ */ 
+
+function SubmitOrder($input) 
+{
+	SendAcceptNotification();
+	if ($input->order != NULL)
+	{
+		if(($input->order->orderType == ORDER_TYPE_BUY) || 
+			($input->order->orderType == ORDER_TYPE_SELL))
+		{
+			ProcessOrder($input->order);
+		}
+		else
+		{
+			error_log ("Incoming order type is incorrect.\n");
+		}
+	}
+	else
+	{
+		error_log ("Incoming order request is NULL.\n");
+	}
+}
+
+/**
+ * This method obtains some additional time and let the business service
+ * to store information regarding an order. Then the OrderProcessor can
+ * continue processing the order request that was just stored in the 
+ * database.
+ */
+
+function SendAcceptNotification()
+{
+	header('HTTP/1.1 202 Accepted');
+	header('Content-Length: 0');
+	flush();
+	sleep(1);
+}
+
+/**
+ * This function corresponds to the isOnline operation. This is used by the
+ * Configuration service to make sure that the OrderProcessor service is 
+ * online.
+ * @return just a return is expected to make sure the service is online.
+ */
+
+function isOnline($input) 
+{
+	return;
+}
+
+// define the operations map
+$operations = array("SubmitOrder" => "SubmitOrder", "isOnline" => "isOnline");
+
+// define the actions => operations map
+$actions = array("SubmitOrderOnePhase" => "SubmitOrder", 
+	"isOnline" => "isOnline");
+
+//This is the security information
+$pvt_key = ws_get_key_from_file("./keys/bob_key.pem");
+$policy_xml = file_get_contents("./conf/policy.xml"); 
+$policy = new WSPolicy($policy_xml);
+$sec_token = new WSSecurityToken(array("privateKey" => $pvt_key));
+
+// create service in WSDL mode
+$service = new WSService(array ("wsdl" =>"./wsdl/TradeOrders.wsdl",
+	"operations" => $operations,
+	"actions" => $actions,
+	"policy" => $policy,
+	"securityToken" => $sec_token,
+	"classmap" => $class_map,));
+
+// process client requests and reply
+$service->reply();
+?>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl Wed Feb 11 04:07:29 2009
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions name="OrderProcessor" targetNamespace="http://Trade.TraderOrderHost" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://Trade.TraderOrderHost" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://Trade.TraderOrderHost" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"
 >
+ <wsp:Policy wsu:Id="NetMsmqBinding_OrderProcessorService_policy">
+  <wsp:ExactlyOne>
+   <wsp:All>
+    <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"/>
+    <wsaw:UsingAddressing/>
+   </wsp:All>
+  </wsp:ExactlyOne>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="NetMsmqBinding_OrderProcessorService1_policy">
+  <wsp:ExactlyOne>
+   <wsp:All>
+    <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"/>
+    <msmq:MsmqVolatile xmlns:msmq="http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"/>
+    <msmq:MsmqBestEffort xmlns:msmq="http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq"/>
+    <wsaw:UsingAddressing/>
+   </wsp:All>
+  </wsp:ExactlyOne>
+ </wsp:Policy>
+ <wsp:Policy wsu:Id="CustomBinding_OrderProcessorService_policy">
+  <wsp:ExactlyOne>
+   <wsp:All>
+    <ow:OneWay xmlns:ow="http://schemas.microsoft.com/ws/2005/05/routing/policy"/>
+    <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"/>
+    <wsaw:UsingAddressing/>
+   </wsp:All>
+  </wsp:ExactlyOne>
+ </wsp:Policy>
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://Trade.TraderOrderHost/Imports">
+      <xsd:import schemaLocation="TradeOrders.xsd0" namespace="http://Trade.TraderOrderHost"/>
+      <xsd:import schemaLocation="TradeOrders.xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
+      <xsd:import schemaLocation="TradeOrders.xsd2" namespace="http://trade.samples.websphere.ibm.com"/>
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="OrderProcessorService_SubmitOrderTransactedQueue_InputMessage">
+    <wsdl:part name="parameters" element="tns:SubmitOrderTransactedQueue"/>
+  </wsdl:message>
+  <wsdl:message name="OrderProcessorService_SubmitOrder_InputMessage">
+    <wsdl:part name="parameters" element="tns:SubmitOrder"/>
+  </wsdl:message>
+  <wsdl:message name="OrderProcessorService_isOnline_InputMessage">
+    <wsdl:part name="parameters" element="tns:isOnline"/>
+  </wsdl:message>
+  <wsdl:portType name="OrderProcessorService">
+    <wsdl:operation name="SubmitOrderTransactedQueue">
+      <wsdl:input wsaw:Action="SubmitOrder" message="tns:OrderProcessorService_SubmitOrderTransactedQueue_InputMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="SubmitOrder">
+      <wsdl:input wsaw:Action="SubmitOrderOnePhase" message="tns:OrderProcessorService_SubmitOrder_InputMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="isOnline">
+      <wsdl:input wsaw:Action="isOnline" message="tns:OrderProcessorService_isOnline_InputMessage"/>
+    </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="BasicHttpBinding_OrderProcessorService" type="i0:OrderProcessorService">
+  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+  <wsdl:operation name="SubmitOrderTransactedQueue">
+   <soap:operation soapAction="SubmitOrder" style="document"/>
+   <wsdl:input>
+    <soap:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="SubmitOrder">
+   <soap:operation soapAction="SubmitOrderOnePhase" style="document"/>
+   <wsdl:input>
+    <soap:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="isOnline">
+   <soap:operation soapAction="isOnline" style="document"/>
+   <wsdl:input>
+    <soap:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="NetMsmqBinding_OrderProcessorService" type="i0:OrderProcessorService">
+  <wsp:PolicyReference URI="#NetMsmqBinding_OrderProcessorService_policy"/>
+  <soap12:binding transport="http://schemas.microsoft.com/soap/msmq"/>
+  <wsdl:operation name="SubmitOrderTransactedQueue">
+   <soap12:operation soapAction="SubmitOrder" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="SubmitOrder">
+   <soap12:operation soapAction="SubmitOrderOnePhase" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="isOnline">
+   <soap12:operation soapAction="isOnline" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="NetMsmqBinding_OrderProcessorService1" type="i0:OrderProcessorService">
+  <wsp:PolicyReference URI="#NetMsmqBinding_OrderProcessorService1_policy"/>
+  <soap12:binding transport="http://schemas.microsoft.com/soap/msmq"/>
+  <wsdl:operation name="SubmitOrderTransactedQueue">
+   <soap12:operation soapAction="SubmitOrder" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="SubmitOrder">
+   <soap12:operation soapAction="SubmitOrderOnePhase" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="isOnline">
+   <soap12:operation soapAction="isOnline" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:binding name="CustomBinding_OrderProcessorService" type="i0:OrderProcessorService">
+  <wsp:PolicyReference URI="#CustomBinding_OrderProcessorService_policy"/>
+  <soap12:binding transport="http://schemas.microsoft.com/soap/tcp"/>
+  <wsdl:operation name="SubmitOrderTransactedQueue">
+   <soap12:operation soapAction="SubmitOrder" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="SubmitOrder">
+   <soap12:operation soapAction="SubmitOrderOnePhase" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+  <wsdl:operation name="isOnline">
+   <soap12:operation soapAction="isOnline" style="document"/>
+   <wsdl:input>
+    <soap12:body use="literal"/>
+   </wsdl:input>
+  </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="OrderProcessor">
+  <wsdl:port name="BasicHttpBinding_OrderProcessorService" binding="tns:BasicHttpBinding_OrderProcessorService">
+   <soap:address location="http://nandika:9010/TradeOrders"/>
+  </wsdl:port>
+  <!--
+  <wsdl:port name="NetMsmqBinding_OrderProcessorService" binding="tns:NetMsmqBinding_OrderProcessorService">
+   <soap12:address location="net.msmq://shankar/private/tradeordersqueuedurable"/>
+   <wsa10:EndpointReference>
+    <wsa10:Address>net.msmq://shankar/private/tradeordersqueuedurable</wsa10:Address>
+   </wsa10:EndpointReference>
+  </wsdl:port>
+  <wsdl:port name="NetMsmqBinding_OrderProcessorService1" binding="tns:NetMsmqBinding_OrderProcessorService1">
+   <soap12:address location="net.msmq://shankar/private/tradeordersqueuevolatile"/>
+   <wsa10:EndpointReference>
+    <wsa10:Address>net.msmq://shankar/private/tradeordersqueuevolatile</wsa10:Address>
+   </wsa10:EndpointReference>
+  </wsdl:port>
+  <wsdl:port name="CustomBinding_OrderProcessorService" binding="tns:CustomBinding_OrderProcessorService">
+   <soap12:address location="net.tcp://shankar:9001/TradeOrders"/>
+   <wsa10:EndpointReference>
+    <wsa10:Address>net.tcp://shankar:9001/TradeOrders</wsa10:Address>
+   </wsa10:EndpointReference>
+  </wsdl:port>
+  -->
+ </wsdl:service>
+</wsdl:definitions>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl0
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl0?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl0 (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.wsdl0 Wed Feb 11 04:07:29 2009
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions targetNamespace="http://Trade.TraderOrderHost" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://Trade.TraderOrderHost" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">
+ <wsdl:types>
+  <xsd:schema targetNamespace="http://Trade.TraderOrderHost/Imports">
+   <xsd:import schemaLocation="TradeOrders.xsd0" namespace="http://Trade.TraderOrderHost"/>
+   <xsd:import schemaLocation="TradeOrders.xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
+   <xsd:import schemaLocation="TradeOrders.xsd2" namespace="http://trade.samples.websphere.ibm.com"/>
+  </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="OrderProcessorService_SubmitOrderTransactedQueue_InputMessage">
+  <wsdl:part name="parameters" element="tns:SubmitOrderTransactedQueue"/>
+ </wsdl:message>
+ <wsdl:message name="OrderProcessorService_SubmitOrder_InputMessage">
+  <wsdl:part name="parameters" element="tns:SubmitOrder"/>
+ </wsdl:message>
+ <wsdl:message name="OrderProcessorService_isOnline_InputMessage">
+  <wsdl:part name="parameters" element="tns:isOnline"/>
+ </wsdl:message>
+ <wsdl:portType name="OrderProcessorService">
+  <wsdl:operation name="SubmitOrderTransactedQueue">
+   <wsdl:input wsaw:Action="SubmitOrder" message="tns:OrderProcessorService_SubmitOrderTransactedQueue_InputMessage"/>
+  </wsdl:operation>
+  <wsdl:operation name="SubmitOrder">
+   <wsdl:input wsaw:Action="SubmitOrderOnePhase" message="tns:OrderProcessorService_SubmitOrder_InputMessage"/>
+  </wsdl:operation>
+  <wsdl:operation name="isOnline">
+   <wsdl:input wsaw:Action="isOnline" message="tns:OrderProcessorService_isOnline_InputMessage"/>
+  </wsdl:operation>
+ </wsdl:portType>
+</wsdl:definitions>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd0
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd0?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd0 (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd0 Wed Feb 11 04:07:29 2009
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema elementFormDefault="qualified" targetNamespace="http://Trade.TraderOrderHost" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://Trade.TraderOrderHost">
+ <xs:import schemaLocation="TradeOrders.xsd2" namespace="http://trade.samples.websphere.ibm.com"/>
+ <xs:element name="SubmitOrderTransactedQueue">
+  <xs:complexType>
+   <xs:sequence>
+    <xs:element minOccurs="0" name="order" nillable="true" type="q1:OrderDataBean" xmlns:q1="http://trade.samples.websphere.ibm.com"/>
+   </xs:sequence>
+  </xs:complexType>
+ </xs:element>
+ <xs:element name="SubmitOrder">
+  <xs:complexType>
+   <xs:sequence>
+    <xs:element minOccurs="0" name="order" nillable="true" type="q2:OrderDataBean" xmlns:q2="http://trade.samples.websphere.ibm.com"/>
+   </xs:sequence>
+  </xs:complexType>
+ </xs:element>
+ <xs:element name="isOnline">
+  <xs:complexType>
+   <xs:sequence/>
+  </xs:complexType>
+ </xs:element>
+</xs:schema>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd1
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd1?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd1 (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd1 Wed Feb 11 04:07:29 2009
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/">
+ <xs:element name="anyType" nillable="true" type="xs:anyType"/>
+ <xs:element name="anyURI" nillable="true" type="xs:anyURI"/>
+ <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/>
+ <xs:element name="boolean" nillable="true" type="xs:boolean"/>
+ <xs:element name="byte" nillable="true" type="xs:byte"/>
+ <xs:element name="dateTime" nillable="true" type="xs:dateTime"/>
+ <xs:element name="decimal" nillable="true" type="xs:decimal"/>
+ <xs:element name="double" nillable="true" type="xs:double"/>
+ <xs:element name="float" nillable="true" type="xs:float"/>
+ <xs:element name="int" nillable="true" type="xs:int"/>
+ <xs:element name="long" nillable="true" type="xs:long"/>
+ <xs:element name="QName" nillable="true" type="xs:QName"/>
+ <xs:element name="short" nillable="true" type="xs:short"/>
+ <xs:element name="string" nillable="true" type="xs:string"/>
+ <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/>
+ <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/>
+ <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/>
+ <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/>
+ <xs:element name="char" nillable="true" type="tns:char"/>
+ <xs:simpleType name="char">
+  <xs:restriction base="xs:int"/>
+ </xs:simpleType>
+ <xs:element name="duration" nillable="true" type="tns:duration"/>
+ <xs:simpleType name="duration">
+  <xs:restriction base="xs:duration">
+   <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/>
+   <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/>
+   <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/>
+  </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="guid" nillable="true" type="tns:guid"/>
+ <xs:simpleType name="guid">
+  <xs:restriction base="xs:string">
+   <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/>
+  </xs:restriction>
+ </xs:simpleType>
+ <xs:attribute name="FactoryType" type="xs:QName"/>
+</xs:schema>

Added: incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd2
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd2?rev=743209&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd2 (added)
+++ incubator/stonehenge/trunk/stocktrader/php/order_processor/wsdl/TradeOrders.xsd2 Wed Feb 11 04:07:29 2009
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema elementFormDefault="qualified" targetNamespace="http://trade.samples.websphere.ibm.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://trade.samples.websphere.ibm.com">
+ <xs:complexType name="OrderDataBean">
+  <xs:sequence>
+   <xs:element minOccurs="0" name="orderID" type="xs:int"/>
+   <xs:element minOccurs="0" name="orderType" nillable="true" type="xs:string"/>
+   <xs:element minOccurs="0" name="orderStatus" nillable="true" type="xs:string"/>
+   <xs:element minOccurs="0" name="openDate" type="xs:dateTime"/>
+   <xs:element minOccurs="0" name="completionDate" type="xs:dateTime"/>
+   <xs:element minOccurs="0" name="quantity" type="xs:double"/>
+   <xs:element minOccurs="0" name="price" type="xs:decimal"/>
+   <xs:element minOccurs="0" name="orderFee" type="xs:decimal"/>
+   <xs:element minOccurs="0" name="symbol" nillable="true" type="xs:string"/>
+  </xs:sequence>
+ </xs:complexType>
+ <xs:element name="OrderDataBean" nillable="true" type="tns:OrderDataBean"/>
+</xs:schema>



Mime
View raw message