Author: chintana
Date: Mon Aug 31 11:35:43 2009
New Revision: 809543
URL: http://svn.apache.org/viewvc?rev=809543&view=rev
Log:
New PHP config service.
* Adding operations defined in the .Net config service WSDL.
* Removing previously defined operations which are no longer used.
* Removing config_svc_processor.php file, now the business logic in is the
config_svc.php file itself.
* Removing old class info and adding new classes (codegened using the .Net
config service WSDL).
Removed:
incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc_processor.php
Modified:
incubator/stonehenge/trunk/stocktrader/php/config_service/class_info.php
incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc.php
Modified:
incubator/stonehenge/trunk/stocktrader/php/config_service/class_info.php
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/config_service/class_info.php?rev=809543&r1=809542&r2=809543&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/config_service/class_info.php
(original)
+++ incubator/stonehenge/trunk/stocktrader/php/config_service/class_info.php
Mon Aug 31 11:35:43 2009
@@ -1,290 +1,247 @@
-<?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.
- */
-
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class DBConfig
-{
- /**
- * @var string $DBName Name of the database server.
- * (maps to the xs:string XML schema type )
- */
- public $DBName;
-
- /**
- * @var string $DBHostName host name of the database server
- * (maps to the xs:anyURI XML schema type)
- */
- public $DBHostName;
-
- /**
- * @var int $DBPort port of the database server
- * (maps to the xs:unsignedInt XML schema type )
- */
- public $DBPort;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class GetDBConfigs
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class DBConfigs
-{
- /**
- * @var array of object DBConfig $DBConfig
- */
- public $DBConfig;
-}
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ActiveDB
-{
- /**
- * @var string $DBName Name of the database server.
- * (maps to the xs:string XML schema type )
- */
- public $DBName;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class GetActiveDB
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ServiceLocation
-{
- /**
- * @var string $ServiceName Name of the service
- * (maps to the xs:string XML schema type )
- */
- public $ServiceName;
-
- /**
- * @var string $ServiceURL end point url of the service
- * (maps to the xs:anyURI XML schema type)
- */
- public $ServiceURL;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class GetServiceLocations
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ServiceLocations
-{
- /**
- * @var array of object ServiceLocation $ServiceLocation
- */
- public $ServiceLocation;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ClientToBS
-{
- /**
- * @var string $Client Name of the client
- * (maps to the xs:string XML schema type )
- */
- public $Client;
-
- /**
- * @var string $BS Name of the business service
- * (maps to the xs:string XML schema type)
- */
- public $BS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class GetClientToBSConnections
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ClientToBSConnections
-{
- /**
- * @var array of object ClientToBS $ClientToBS
- */
- public $ClientToBS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class BSToOPS
-{
- /**
- * @var string $BS Name of the business service
- * (maps to the xs:string XML schema type )
- */
- public $BS;
-
- /**
- * @var string $OPS Name of the order processor service
- * (maps to the xs:string XML schema type)
- */
- public $OPS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class GetBSToOPSConnections
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class BSToOPSConnections
-{
- /**
- * @var array of object BSToOPS $BSToOPS
- */
- public $BSToOPS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ClientConfigRequest
-{
- /**
- * @var string $Client Name of the client
- * (maps to the xs:string XML schema type )
- */
- public $Client;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class ClientConfigResponse
-{
- /**
- * @var string $BS end point url of business service
- * (maps to the xs:anyURI XML schema type )
- */
- public $BS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class BSConfigRequest
-{
- /**
- * @var string $BS Name of the business service
- * (maps to the xs:unsignedInt XML schema type )
- */
- public $BS;
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class BSConfigResponse
-{
- /**
- * @var string $DBName name of the database
- * (maps to the xs:string XML schema type )
- */
- public $DBName;
-
- /**
- * @var string $DBHostName host name of database server
- * (maps to the xs:anyURI XML schema type )
- */
- public $DBHostName;
-
- /**
- * @var int $DBPort port of the database server
- * (maps to the xs:unsignedInt XML schema type )
- */
- public $DBPort;
-
- /**
- * @var string $OPS end point url of order processor service
- * (maps to the xs:anyURI XML schema type )
- */
- public $OPS;
-
- /**
- * @var boolean $Sec denotes whether secure version of order processor
- */
- public $Sec;
-
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class OPSConfigRequest
-{
-}
-
-/**
- * @namespace http://apache.org/stonehenge/stocktrader/xsd
- */
-class OPSConfigResponse
-{
- /**
- * @var string $DBName name of the database
- * (maps to the xs:string XML schema type )
- */
- public $DBName;
-
- /**
- * @var string $DBhostName host name of database server
- * (maps to the xs:anyURI XML schema type )
- */
- public $DBHostName;
-
- /**
- * @var int $DBport port of the database server
- * (maps to the xs:unsignedInt XML schema type )
- */
- public $DBPort;
-}
-?>
+<?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.
+ */
+
+
+// PHP classes corresponding to the data types in defined in WSDL
+
+class GetClientConfig {
+
+ /**
+ * @var (object)ClientConfigRequest
+ */
+ public $client;
+
+}
+
+class ClientConfigRequest {
+
+}
+
+class GetClientConfigResponse {
+
+ /**
+ * @var (object)ClientConfigResponse
+ */
+ public $GetClientConfigResult;
+
+}
+
+class ClientConfigResponse {
+
+ /**
+ * @var string $BS Business service endpoint URL
+ */
+ public $BS;
+
+ /**
+ * @var string $BSName Business service name
+ */
+ public $BSName;
+
+ /**
+ * @var boolean $Sec Whether service is secured or not
+ */
+ public $Sec;
+
+}
+
+class GetBSConfig {
+
+ /**
+ * @var (object)BSConfigRequest
+ */
+ public $bs;
+
+}
+
+class BSConfigRequest {
+ /**
+ * @var string $BSName BS Name
+ */
+ public $BSName;
+}
+
+class GetBSConfigResponse {
+
+ /**
+ * @var (object)BSConfigResponse
+ */
+ public $GetBSConfigResult;
+
+}
+
+class BSConfigResponse {
+
+ /**
+ * @var string $DBHost Database host
+ */
+ public $DBHostName;
+
+ /**
+ * @var string $DBName Database name
+ */
+ public $DBName;
+
+ /**
+ * @var string $DBPort Database port
+ */
+ public $DBPort;
+
+ /**
+ * @var string $OPS OPS endpoint URL
+ */
+ public $OPS;
+
+ /**
+ * @var string $OPSName OPS Name
+ */
+ public $OPSName;
+
+ /**
+ * @var boolean $Sec Service is secured or not
+ */
+ public $Sec;
+
+}
+
+class GetOPSConfig {
+
+ /**
+ * @var (object)OPSConfigRequest
+ */
+ public $ops;
+
+}
+
+class OPSConfigRequest {
+
+}
+
+class GetOPSConfigResponse {
+
+ /**
+ * @var (object)OPSConfigResponse
+ */
+ public $GetOPSConfigResult;
+
+}
+
+class OPSConfigResponse {
+
+}
+
+class SetClientToBS {
+
+ /**
+ * @var (object)ClientToBS
+ */
+ public $clientConfig;
+
+}
+
+class ClientToBS {
+
+}
+
+class SetClientToBSResponse {
+
+}
+
+class SetBSToOPS {
+
+ /**
+ * @var (object)BSToOPS
+ */
+ public $bsConfig;
+
+}
+
+class BSToOPS {
+
+}
+
+class SetBSToOPSResponse {
+
+}
+
+class GetBSLocations {
+
+}
+
+class GetBSLocationsResponse {
+
+ /**
+ * @var (object)ArrayOfServiceLocation
+ */
+ public $GetBSLocationsResult;
+
+}
+
+class ArrayOfServiceLocation {
+
+ /**
+ * @var array[0, unbounded] of (object)ServiceLocation
+ */
+ public $ServiceLocation;
+
+}
+
+class ServiceLocation {
+ /**
+ * @var boolean $Sec Whether service is secured or not
+ */
+ public $Sec;
+
+ /**
+ * @var string $ServiceName Name of the service
+ */
+ public $ServiceName;
+
+ /**
+ * @var string $ServiceURL Endpoint URL of the service
+ */
+ public $ServiceURL;
+}
+
+class GetOPSLocations {
+
+}
+
+class GetOPSLocationsResponse {
+
+ /**
+ * @var (object)ArrayOfServiceLocation
+ */
+ public $GetOPSLocationsResult;
+
+}
+
+class SetServiceLocation {
+
+ /**
+ * @var (object)ServiceLocation
+ */
+ public $location;
+
+}
+
+class SetServiceLocationResponse {
+
+}
+
+?>
Modified:
incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc.php
URL:
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc.php?rev=809543&r1=809542&r2=809543&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc.php
(original)
+++ incubator/stonehenge/trunk/stocktrader/php/config_service/config_svc.php
Mon Aug 31 11:35:43 2009
@@ -1,660 +1,333 @@
-<?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 ("config_svc_processor.php");
-
-/** Set database configurations of a DB
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object DBConfig $DBConfig
- */
-function storeDBConfig($DBConfig)
-{
- if($DBConfig)
- {
- /* we support MSSQL and MySQL only. If DBName is something
else, we should not process anything */
- if(($DBConfig->DBName == DBNAME_MSSQL) || ($DBConfig->DBName ==
DBNAME_MYSQL))
- {
- $db = GetDatabase();
-
- /* "BEGIN TRAN" initialize a transaction; which
privides control so that later we can cancel
- * the transaction, if something goes wrong. */
- if($db->ExecuteQuery("BEGIN TRAN"))
- {
- $result = getDBConfig($DBConfig->DBName, $db);
- if($result)
- {
- /* this detail is already available. So
we should update the records */
- $query = "UPDATE dbconfig WITH
(ROWLOCK) SET hostname='$DBConfig->DBHostName', ".
- "PORT='$DBConfig->DBPort' WHERE
dbname = '$DBConfig->DBName'";
- $status = $db->ExecuteQuery($query);
- }
- else
- {
- /* details related to this database is
not stored. So we have to insert a new record */
- $query = "INSERT INTO dbconfig (dbname,
hostname, port, active) VALUES (".
- "'$DBConfig->DBName',
'$DBConfig->DBHostName', '$DBConfig->DBPort', 'N');";
- $status = $db->ExecuteQuery($query);
- }
-
- if($status)
- {
- /* Transaction is successfull, we can
safely commit the transaction into the database. */
- $db->ExecuteQuery("COMMIT TRAN");
- }
- else
- {
- /* Transaction is not successfull, we
have to rollback the transaction */
- $db->ExecuteQuery("ROLLBACK TRAN");
- error_log("Storing DBConfig failed.
\n");
- }
- }
- else
- {
- error_log("Cannot initialise a transaction
using BEGIN TRAN. \n");
- }
-
- $db->CloseDatabase();
- }
- else
- {
- error_log("Cannot support database $DBConfig->DBName.
Supported databases are ".
- DBNAME_MSSQL." and ".DBNAME_MYSQL.".\n");
- }
- }
-}
-
-/** Get database configuration for all DBs
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object GetDBConfigs $GetDBConfigs
- * @return object DBConfigs $DBConfigs
- */
-function getDBConfigs($GetDBConfigs)
-{
- $db = GetDatabase();
-
- $query = "Set NOCOUNT ON; SELECT dbname, hostname, port FROM dbconfig";
-
- $result = $db->ExecuteQuery($query);
- if ($result)
- {
- $rowNum = 0;
- $DBConfigs = new DBConfigs();
- while($DBName = $db->GetSQLValue($result, $rowNum, 0))
- {
- $config = new DBConfig();
- $config->DBName = $DBName; //Get the DB Name
- $config->DBHostName = $db->GetSQLValue($result,
$rowNum, 1); //Get the host name.
- $config->DBPort = $db->GetSQLValue($result, $rowNum,
2); //Get the port
- $DBConfigs->DBConfig[$rowNum] = $config;
- $rowNum = $rowNum + 1;
- }
- }
-
- $db->CloseDatabase();
- return $DBConfigs;
-}
-
-/** Sets active database.
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object ActiveDB $ActiveDB Name of the active database
- */
-function setActiveDB($ActiveDB)
-{
- if($ActiveDB)
- {
- $DBName = $ActiveDB->DBName;
- /* we support MSSQL and MySQL only. If DBName is something
else, we should not process anything */
- if(($DBName == DBNAME_MSSQL) || ($DBName == DBNAME_MYSQL))
- {
-
- $db = GetDatabase();
-
- /* check whether DBConfig related to this database is
already there. If not there, we can't
- * set it as active */
- if(getDBConfig($DBName, $db))
- {
- /* "BEGIN TRAN" initialize a transaction; which
privides control so that later we can cancel
- * the transaction, if something goes wrong. */
- if($db->ExecuteQuery("BEGIN TRAN"))
- {
- $query = "UPDATE dbconfig WITH
(ROWLOCK) SET active='Y' WHERE dbname='$DBName'";
- $status = $db->ExecuteQuery($query);
-
- if($status)
- {
- /* Transaction is successfull,
we can safely commit the transaction into the database. */
- $db->ExecuteQuery("COMMIT
TRAN");
- }
- else
- {
- /* Transaction is not
successfull, we have to rollback the transaction */
- $db->ExecuteQuery("ROLLBACK
TRAN");
- error_log("Storing Active DB
failed. \n");
- }
- }
- else
- {
- error_log("Cannot initialise a
transaction using BEGIN TRAN. \n");
- }
- }
- else
- {
- error_log("Cannot find DBConfig related to
$DBName. Could not be able to set active \n");
- }
- $db->CloseDatabase();
- }
- else
- {
- error_log("Cannot set database $DBName as active.
Supported databases are ".
- DBNAME_MSSQL." and ".DBNAME_MYSQL.".\n");
- }
- }
-}
-
-/** Get active database.
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object GetActiveDB $GetActiveDB
- * @return object ActiveDB $CurrentActiveDB Name of the active database
- */
-function getActiveDB($GetActiveDB)
-{
- $db = GetDatabase();
-
- $DBConfig = getActiveDBConfig($db);
- if($DBConfig)
- {
- $config = new ActiveDB();
- $config->DBName = $DBConfig->DBName;
- }
- else
- {
- error_log("Cannot find details about active database \n");
- }
-
- $db->CloseDatabase();
- return $config;
-}
-
-/** Sets service location (End point URL) of a given service.
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object ServiceLocation $ServiceLocation
- */
-function setServiceLocation($ServiceLocation)
-{
- if($ServiceLocation)
- {
- if(isBusinessServiceDefined($ServiceLocation->ServiceName)
- ||
isOrderProcessorServiceDefined($ServiceLocation->ServiceName)
- ||
isOrderProcessorSecDefined($ServiceLocation->ServiceName))
- {
- $db = GetDatabase();
-
- /* "BEGIN TRAN" initialize a transaction; which
privides control so that later we can cancel
- * the transaction, if something goes wrong. */
- if($db->ExecuteQuery("BEGIN TRAN"))
- {
- $result =
getServiceLocation($ServiceLocation->ServiceName, $db);
- if($result)
- {
- /* this detail is already available. So
we should update the records */
- $query = "UPDATE service WITH (ROWLOCK)
SET url='$ServiceLocation->ServiceURL' ".
- "WHERE SERVICENAME =
'$ServiceLocation->ServiceName'";
- $status = $db->ExecuteQuery($query);
- }
- else
- {
- /* details related to this database is
not stored. So we have to insert a new record */
- $query = "INSERT INTO service
(servicename, url) VALUES (".
-
"'$ServiceLocation->ServiceName', '$ServiceLocation->ServiceURL')";
- $status = $db->ExecuteQuery($query);
- }
-
-
- if($status)
- {
- /* Transaction is successfull, we can
safely commit the transaction into the database. */
- $db->ExecuteQuery("COMMIT TRAN");
- }
- else
- {
- /* Transaction is not successfull, we
have to rollback the transaction */
- $db->ExecuteQuery("ROLLBACK TRAN");
- error_log("Storing service location
configuration failed. \n");
- }
- }
- else
- {
- error_log("Cannot initialise a transaction
using BEGIN TRAN. \n");
- }
-
- $db->CloseDatabase();
- }
- else
- {
- error_log("Service name $ServiceLocation->ServiceName
is not supported by the system.\n");
- }
- }
-}
-
-/** Gets all service locations
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object GetServiceLocations $GetServiceLocations
- * @return object ServiceLocations $ServiceLocations
- */
-function getServiceLocations($GetServiceLocations)
-{
- $db = GetDatabase();
-
- $query = "SET NOCOUNT ON; SELECT servicename, url FROM service";
-
- $result = $db->ExecuteQuery($query);
- if ($result)
- {
- $rowNum = 0;
- $ServiceLocations = new ServiceLocations();
- while($ServiceName = $db->GetSQLValue($result, $rowNum, 0))
- {
- $config = new ServiceLocation();
- $config->ServiceName = $ServiceName; //Get the
service name
- $config->ServiceURL = $db->GetSQLValue($result,
$rowNum, 1); //Get the URL
- $ServiceLocations->ServiceLocation[$rowNum] = $config;
- $rowNum = $rowNum + 1;
- }
- }
-
- $db->CloseDatabase();
- return $ServiceLocations;
-}
-
-/** Sets connection from client to business service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object ClientToBS $ClientToBS
- */
-function setConnectionFromClientToBS($ClientToBS)
-{
- if($ClientToBS)
- {
- /* check whether given business service and client name are
valid */
- if(isBusinessServiceDefined($ClientToBS->BS))
- {
- if(isClientDefined($ClientToBS->Client))
- {
- /* both client name and business service are
valid. we can store it */
- $db = GetDatabase();
-
- /* "BEGIN TRAN" initialize a transaction; which
privides control so that later we can cancel
- * the transaction, if something goes wrong. */
- if($db->ExecuteQuery("BEGIN TRAN"))
- {
- $result =
getClientToBS($ClientToBS->Client, $db);
- if($result)
- {
- /* this detail is already
available. So we should update the records */
- $query = "UPDATE clienttobs
WITH (ROWLOCK) SET bs='$ClientToBS->BS' ".
- "WHERE client =
'$ClientToBS->Client'";
- $status =
$db->ExecuteQuery($query);
- }
- else
- {
- /* details related to this
database is not stored. So we have to insert a new record */
- $query = "INSERT INTO
clienttobs (client, bs) VALUES (".
- "'$ClientToBS->Client',
'$ClientToBS->BS')";
- $status =
$db->ExecuteQuery($query);
- }
-
- if($status)
- {
- /* Transaction is successfull,
we can safely commit the transaction into the database. */
- $db->ExecuteQuery("COMMIT
TRAN");
- }
- else
- {
- /* Transaction is not
successfull, we have to rollback the transaction */
- $db->ExecuteQuery("ROLLBACK
TRAN");
- error_log("Storing service
location configuration failed. \n");
- }
- }
- else
- {
- error_log("Cannot initialise a
transaction using BEGIN TRAN. \n");
- }
-
- $db->CloseDatabase();
- }
- else
- {
- error_log("Client with name $ClientToBS->Client
is not supported by the system. \n");
- }
- }
- else
- {
- error_log("Business service with name $ClientToBS->BS
is not supported by the system. \n");
- }
- }
-}
-
-/** Get all connections from client to business service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object GetClientToBSConnections $GetClientToBSConnections
- * @return object ClientToBSConnections $ClientToBSConnections
- */
-function getClientToBSConnections($GetClientToBSConnections)
-{
- $db = GetDatabase();
-
- $query = "SET NOCOUNT ON; SELECT client, bs FROM clienttobs";
-
- $result = $db->ExecuteQuery($query);
- if ($result)
- {
- $rowNum = 0;
- $ClientToBSConnections = new ClientToBSConnections();
- while($ClientName = $db->GetSQLValue($result, $rowNum, 0))
- {
- $config = new ClientToBS();
- $config->Client = $ClientName; //Get the client name
- $config->BS = $db->GetSQLValue($result, $rowNum, 1);
//Get the BS Name
- $ClientToBSConnections->ClientToBS[$rowNum] = $config;
- $rowNum = $rowNum + 1;
- }
- }
-
- $db->CloseDatabase();
- return $ClientToBSConnections;
-}
-
-/** Sets connection from business service to order processor service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object BSToOPS $BSToOPS
- */
-function setConnectionFromBSToOPS($BSToOPS)
-{
- if($BSToOPS)
- {
- /* check whether given business service and order processor
service are valid */
- if(isBusinessServiceDefined($BSToOPS->BS))
- {
- if(isOrderProcessorServiceDefined($BSToOPS->OPS) ||
isOrderProcessorSecDefined($BSToOPS->OPS))
- {
- /* both order processor and business service
are valid. we can store it */
- $db = GetDatabase();
-
- /* "BEGIN TRAN" initialize a transaction; which
privides control so that later we can cancel
- * the transaction, if something goes wrong. */
- if($db->ExecuteQuery("BEGIN TRAN"))
- {
- $result = getBSToOPS($BSToOPS->BS, $db);
- if($result)
- {
- /* this detail is already
available. So we should update the records */
- $query = "UPDATE bstoops WITH
(ROWLOCK) SET ops='$BSToOPS->OPS' ".
- "WHERE bs = '$BSToOPS->BS'";
- $status =
$db->ExecuteQuery($query);
- }
- else
- {
- /* details related to this
database is not stored. So we have to insert a new record */
- $query = "INSERT INTO bstoops
(bs, ops) VALUES ('$BSToOPS->BS', '$BSToOPS->OPS')";
- $status =
$db->ExecuteQuery($query);
- }
-
- if($status)
- {
- /* Transaction is successfull,
we can safely commit the transaction into the database. */
- $db->ExecuteQuery("COMMIT
TRAN");
- }
- else
- {
- /* Transaction is not
successfull, we have to rollback the transaction */
- $db->ExecuteQuery("ROLLBACK
TRAN");
- error_log("Storing service
location configuration failed. \n");
- }
- }
- else
- {
- error_log("Cannot initialise a
transaction using BEGIN TRAN. \n");
- }
-
- $db->CloseDatabase();
- }
- else
- {
- error_log("Order processor with name
$BSToOPS->OPS is not supported by the system. \n");
- }
- }
- else
- {
- error_log("Business service with name $BSToOPS->BS is
not supported by the system. \n");
- }
- }
-}
-
-/** Get all connections from business service to order processor service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object GetBSToOPSConnections $GetBSToOPSConnections
- * @return object BSToOPSConnections $BSToOPSConnections
- */
-function getBSToOPSConnections($GetBSToOPSConnections)
-{
- $db = GetDatabase();
-
- $query = "SET NOCOUNT ON; SELECT bs, ops FROM bstoops";
-
- $result = $db->ExecuteQuery($query);
- if ($result)
- {
- $rowNum = 0;
- $BSToOPSConnections = new BSToOPSConnections();
- while($BSName = $db->GetSQLValue($result, $rowNum, 0))
- {
- $config = new BSToOPS();
- $config->BS = $BSName; //Get the BS name
- $config->OPS = $db->GetSQLValue($result, $rowNum, 1);
//Get the OPS Name
- $BSToOPSConnections->BSToOPS[$rowNum] = $config;
- $rowNum = $rowNum + 1;
- }
- }
-
- $db->CloseDatabase();
- return $BSToOPSConnections;
-}
-
-/** Get configurations of a client
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object ClientConfigRequest $ClientConfigRequest
- * @return object ClientConfigResponse $ClientConfigResponse End point url of
business service
- */
-function getClientConfig($ClientConfigRequest)
-{
- if($ClientConfigRequest)
- {
- $db = GetDatabase();
-
- $ClientToBS = getClientToBS($ClientConfigRequest->Client, $db);
- if($ClientToBS)
- {
- $serviceLocation = getServiceLocation($ClientToBS->BS,
$db);
- if($serviceLocation)
- {
- $config = new ClientConfigResponse();
- $config->BS = $serviceLocation->ServiceURL;
- }
- else
- {
- error_log("Cannot find service location for
business service $ClientToBS->BS \n");
- }
- }
- else
- {
- error_log("Cannot find details about business service
connected to clinet ".
- "[$ClientConfigRequest->Client]. \n");
- }
-
- $db->CloseDatabase();
- }
-
- return $config;
-}
-
-/** Get configurations of a business service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object BSConfigRequest $BSConfigRequest Name of the business service
- * @return object BSConfigResponse $BSConfigResponse
- */
-function getBSConfig($BSConfigRequest)
-{
- if($BSConfigRequest)
- {
- $db = GetDatabase();
-
- $BSToOPS = getBSToOPS($BSConfigRequest->BS, $db);
- if($BSToOPS)
- {
- $serviceLocation = getServiceLocation($BSToOPS->OPS,
$db);
- if($serviceLocation)
- {
- /* found the end point url of order processor
service. Now check for active database settings */
- $DBConfig = getActiveDBConfig($db);
- if($DBConfig)
- {
- $config = new BSConfigResponse();
- $config->DBName = $DBConfig->DBName;
- $config->DBHostName =
$DBConfig->DBHostName;
- $config->DBPort = $DBConfig->DBPort;
- $config->OPS =
$serviceLocation->ServiceURL;
-
if(isOrderProcessorSecDefined($BSToOPS->OPS))
- {
- $config->Sec = true;
- }
- else
- {
- $config->Sec = false;
- }
- }
- else
- {
- error_log("Cannot find details about
active database \n");
- }
- }
- else
- {
- error_log("Cannot find service location for
order processor service $BSToOPS->OPS \n");
- }
- }
- else
- {
- error_log("Cannot find details about order processor
service connected to business service ".
- " [$BSConfigRequest->BS]. \n");
- }
-
- $db->CloseDatabase();
- }
- return $config;
-}
-
-/** Get configurations of a order processor service
- * @namespace http://apache.org/stonehenge/stocktrader
- * @param object OPSConfigRequest $OPSConfigRequest
- * @return object OPSConfigResponse $OPSConfigResponse
- */
-function getOPSConfig($OPS)
-{
- $db = GetDatabase();
-
- $DBConfig = getActiveDBConfig($db);
- if($DBConfig)
- {
- $config = new OPSConfigResponse();
- $config->DBName = $DBConfig->DBName;
- $config->DBHostName = $DBConfig->DBHostName;
- $config->DBPort = $DBConfig->DBPort;
- }
- else
- {
- error_log("Cannot find details about active database \n");
- }
-
- $db->CloseDatabase();
- return $config;
-}
-
-$operations = array(
- "DBConfig"=>"storeDBConfig",
- "GetDBConfigs" => "getDBConfigs",
- "ActiveDB" => "setActiveDB",
- "GetActiveDB" => "getActiveDB",
- "ServiceLocation" => "setServiceLocation",
- "GetServiceLocations" => "getServiceLocations",
- "ClientToBS" => "setConnectionFromClientToBS",
- "GetClientToBSConnections" => "getClientToBSConnections",
- "BSToOPS" => "setConnectionFromBSToOPS",
- "GetBSToOPSConnections" => "getBSToOPSConnections",
- "ClientConfigRequest" => "getClientConfig",
- "BSConfigRequest" => "getBSConfig",
- "OPSConfigRequest" => "getOPSConfig"
-);
-
-$opParams = array(
- "storeDBConfig"=>"MIXED",
- "getDBConfigs" => "MIXED",
- "setActiveDB" => "MIXED",
- "getActiveDB" => "MIXED",
- "setServiceLocation" => "MIXED",
- "getServiceLocations" => "MIXED",
- "setConnectionFromClientToBS" => "MIXED",
- "getClientToBSConnections" => "MIXED",
- "setConnectionFromBSToOPS" => "MIXED",
- "getBSToOPSConnections" => "MIXED",
- "getClientConfig" => "MIXED",
- "getBSConfig" => "MIXED",
- "getOPSConfig" => "MIXED"
-);
-
-$classmap = array(
- "DBConfig" => "DBConfig",
- "GetDBConfigs" => "GetDBConfigs",
- "DBConfigs" => "DBConfigs",
- "ActiveDB" => "ActiveDB",
- "GetActiveDB" => "GetActiveDB",
- "ServiceLocation" => "ServiceLocation",
- "GetServiceLocations" => "GetServiceLocations",
- "ServiceLocations" => "ServiceLocations",
- "ClientToBS" => "ClientToBS",
- "GetClientToBSConnections" => "GetClientToBSConnections",
- "BSToOPS" => "BSToOPS",
- "GetBSToOPSConnections" => "GetBSToOPSConnections",
- "ClientConfigRequest" => "ClientConfigRequest",
- "ClientConfigResponse" => "ClientConfigResponse",
- "BSConfigRequest" => "BSConfigRequest",
- "BSConfigResponse" => "BSConfigResponse",
- "OPSConfigRequest" => "OPSConfigRequest",
- "OPSConfigResponse" => "OPSConfigResponse");
-
-$svr = new WSService(array(
- "operations"=>$operations,
- "bindingStyle"=>"doclit",
- "opParams" => $opParams,
- "serviceName" => "config_svc",
- "wsdl" => "../resources/wsdl/config_svc.wsdl",
- "classmap" => $classmap));
-
-
-$svr->reply();
-
-
-?>
+<?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_layer/data_access_layer.php");
+require_once ("class_info.php");
+
+// define the class map
+$class_map = array(
+ "GetClientConfig" => "GetClientConfig",
+ "ClientConfigRequest" => "ClientConfigRequest",
+ "GetClientConfigResponse" => "GetClientConfigResponse",
+ "ClientConfigResponse" => "ClientConfigResponse",
+ "GetBSConfig" => "GetBSConfig",
+ "BSConfigRequest" => "BSConfigRequest",
+ "GetBSConfigResponse" => "GetBSConfigResponse",
+ "BSConfigResponse" => "BSConfigResponse",
+ "GetOPSConfig" => "GetOPSConfig",
+ "OPSConfigRequest" => "OPSConfigRequest",
+ "GetOPSConfigResponse" => "GetOPSConfigResponse",
+ "OPSConfigResponse" => "OPSConfigResponse",
+ "SetClientToBS" => "SetClientToBS",
+ "ClientToBS" => "ClientToBS",
+ "SetClientToBSResponse" => "SetClientToBSResponse",
+ "SetBSToOPS" => "SetBSToOPS",
+ "BSToOPS" => "BSToOPS",
+ "SetBSToOPSResponse" => "SetBSToOPSResponse",
+ "GetBSLocations" => "GetBSLocations",
+ "GetBSLocationsResponse" => "GetBSLocationsResponse",
+ "ArrayOfServiceLocation" => "ArrayOfServiceLocation",
+ "ServiceLocation" => "ServiceLocation",
+ "GetOPSLocations" => "GetOPSLocations",
+ "GetOPSLocationsResponse" => "GetOPSLocationsResponse",
+ "SetServiceLocation" => "SetServiceLocation",
+ "SetServiceLocationResponse" => "SetServiceLocationResponse");
+
+// define PHP functions that maps to WSDL operations
+/**
+ * Service function GetClientConfig
+ * @param object of GetClientConfig $input
+ * @return object of GetClientConfigResponse
+ */
+function GetClientConfig($input) {
+ // NOTE: $input is of type GetClientConfig
+ // NOTE: should return an object of type GetClientConfigResponse
+
+ $db = GetDatabase();
+
+ $client = addslashes($input->client->ClientName);
+
+ $client_config = new GetClientConfigResponse();
+
+ // getting the BS configured for the client
+ $query = "SELECT bs FROM clienttobs WHERE client = '" . $client . "'";
+ $result = $db->ExecuteQuery($query);
+
+ $bs = ''; // hold the BS corresponding to the input CLIENT
+
+ if ($result) {
+ $bs = $db->GetSQLValue($result, 0, 0);
+ }
+
+ if ($bs) {
+ $query = "SELECT sec, servicename, url FROM service WHERE servicename
= '$bs'";
+ $result = $db->ExecuteQuery($query);
+
+ if ($result) {
+ $client_config->GetClientConfigResult = new ClientConfigResponse();
+ $client_config->GetClientConfigResult->Sec =
$db->GetSQLValue($result, 0, 0) ? "true" : "false";
+ $client_config->GetClientConfigResult->BSName =
$db->GetSQLValue($result, 0, 1);
+ $client_config->GetClientConfigResult->BS =
$db->GetSQLValue($result, 0, 2);
+ }
+ }
+
+ return $client_config;
+}
+
+
+/**
+ * Service function GetBSConfig
+ * @param object of GetBSConfig $input
+ * @return object of GetBSConfigResponse
+ */
+function GetBSConfig($input) {
+ // NOTE: $input is of type GetBSConfig
+ // NOTE: should return an object of type GetBSConfigResponse
+
+ $db = GetDatabase();
+
+ $bs = addslashes($input->bs->BSName);
+
+ $bs_config = new GetBSConfigResponse();
+
+ if ($bs) {
+
+ $query = "SELECT ops FROM bstoops WHERE bs = '" . $bs . "'";
+ $result = $db->ExecuteQuery ( $query );
+
+ $ops = ''; // hold the OPS corresponding to the input BS
+
+
+ if ($result) {
+ $ops = $db->GetSQLValue ( $result, 0, 0 );
+ }
+
+ if ($ops) {
+ $query = "SELECT sec, servicename, url FROM service WHERE
servicename = '$ops'";
+ $result = $db->ExecuteQuery ( $query );
+
+ if ($result) {
+ $bs_config->GetBSConfigResult = new BSConfigResponse ( );
+ $bs_config->GetBSConfigResult->Sec = $db->GetSQLValue (
$result, 0, 0 ) ? "true" : "false";
+ $bs_config->GetBSConfigResult->OPSName = $db->GetSQLValue (
$result, 0, 1 );
+ $bs_config->GetBSConfigResult->OPS = $db->GetSQLValue (
$result, 0, 2 );
+
+ $host = '';
+
+ if (preg_match ( "/mssql/i", $db->connectionInfo->type )) {
+ $host = preg_split ( "/,/", $db->connectionInfo->server );
+ } else if (preg_match ( "/mysql/i", $db->connectionInfo->type
)) {
+ $host = preg_split ( "/:/", $db->connectionInfo->server );
+ }
+
+ $bs_config->GetBSConfigResult->DBHostName = $host [0];
+ $bs_config->GetBSConfigResult->DBName =
$db->connectionInfo->database;
+ $bs_config->GetBSConfigResult->DBPort = $host [1];
+ }
+ }
+
+ }
+
+ return $bs_config;
+}
+
+
+/**
+ * Service function GetOPSConfig
+ * @param object of GetOPSConfig $input
+ * @return object of GetOPSConfigResponse
+ */
+function GetOPSConfig($input) {
+ // TODO: fill in the business logic
+ // NOTE: $input is of type GetOPSConfig
+ // NOTE: should return an object of type GetOPSConfigResponse
+
+}
+
+
+/**
+ * Service function SetClientToBS
+ * @param object of SetClientToBS $input
+ * @return object of SetClientToBSResponse
+ */
+function SetClientToBS($input) {
+ // NOTE: $input is of type SetClientToBS
+ // NOTE: should return an object of type SetClientToBSResponse
+
+ $db = GetDatabase();
+
+ $client = addslashes($input->clientConfig->Client);
+ $bs = addslashes($input->clientConfig->Bs);
+
+ $query = "UPDATE clienttobs SET bs = '$bs' WHERE client = '$client'";
+
+ $result = $db->ExecuteQuery($query);
+
+ return new SetClientToBSResponse();
+}
+
+
+/**
+ * Service function SetBSToOPS
+ * @param object of SetBSToOPS $input
+ * @return object of SetBSToOPSResponse
+ */
+function SetBSToOPS($input) {
+ // NOTE: $input is of type SetBSToOPS
+ // NOTE: should return an object of type SetBSToOPSResponse
+
+ $db = GetDatabase();
+
+ $bs = addslashes($input->bsConfig->Bs);
+ $ops = addslashes($input->bsConfig->Ops);
+
+ $query = "UPDATE bstoops SET ops = '$ops' WHERE bs = '$bs'";
+
+ $result = $db->ExecuteQuery($query);
+
+ return new SetBSToOPSResponse();
+}
+
+
+/**
+ * Service function GetBSLocations
+ * @param object of GetBSLocations $input
+ * @return object of GetBSLocationsResponse
+ */
+function GetBSLocations($input) {
+ // NOTE: $input is of type GetBSLocations
+ // NOTE: should return an object of type GetBSLocationsResponse
+
+ $db = GetDatabase();
+
+ $query = "SELECT sec, servicename, url FROM service WHERE servicename LIKE
'%_BS'";
+
+ $result = $db->ExecuteQuery($query);
+
+ $locations = new GetBSLocationsResponse();
+ $locations->GetBSLocationsResult = new ArrayOfServiceLocation();
+
+ if ($result) {
+ for ($i = 0; $db->GetSQLValue($result, $i, 1); $i++) {
+ $locations->GetBSLocationsResult->ServiceLocation[$i] = new
ServiceLocation();
+ $locations->GetBSLocationsResult->ServiceLocation[$i]->Sec =
$db->GetSQLValue($result, $i, 0) ? "true" : "false";
+ $locations->GetBSLocationsResult->ServiceLocation[$i]->ServiceName
= $db->GetSQLValue($result, $i, 1);
+ $locations->GetBSLocationsResult->ServiceLocation[$i]->ServiceURL
= $db->GetSQLValue($result, $i, 2);
+ }
+ }
+
+ return $locations;
+}
+
+
+/**
+ * Service function GetOPSLocations
+ * @param object of GetOPSLocations $input
+ * @return object of GetOPSLocationsResponse
+ */
+function GetOPSLocations($input) {
+ // NOTE: $input is of type GetOPSLocations
+ // NOTE: should return an object of type GetOPSLocationsResponse
+
+ $db = GetDatabase();
+
+ $query = "SELECT sec, servicename, url FROM service WHERE servicename LIKE
'%_OPS'";
+
+ $result = $db->ExecuteQuery($query);
+
+ $locations = new GetOPSLocationsResponse();
+ $locations->GetOPSLocationsResult = new ArrayOfServiceLocation();
+
+ if ($result) {
+ for ($i = 0; $db->GetSQLValue($result, $i, 1); $i++) {
+ $locations->GetOPSLocationsResult->ServiceLocation[$i] = new
ServiceLocation();
+ $locations->GetOPSLocationsResult->ServiceLocation[$i]->Sec =
$db->GetSQLValue($result, $i, 0) ? "true" : "false";
+
$locations->GetOPSLocationsResult->ServiceLocation[$i]->ServiceName =
$db->GetSQLValue($result, $i, 1);
+ $locations->GetOPSLocationsResult->ServiceLocation[$i]->ServiceURL
= $db->GetSQLValue($result, $i, 2);
+ }
+ }
+
+ return $locations;
+}
+
+
+/**
+ * Service function SetServiceLocation
+ * @param object of SetServiceLocation $input
+ * @return object of SetServiceLocationResponse
+ */
+function SetServiceLocation($input) {
+ // NOTE: $input is of type SetServiceLocation
+ // NOTE: should return an object of type SetServiceLocationResponse
+
+ $db = GetDatabase();
+
+ $sec = ($input->location->Sec == "true") ? 1 : 0;
+ $sname = addslashes($input->location->ServiceName);
+ $surl = addslashes($input->location->ServiceURL);
+
+ $query = "SELECT servicename FROM service WHERE servicename = '$sname'";
+ $result = $db->ExecuteQuery($query);
+ $q2 = '';
+
+ if ($result && $db->GetSQLValue($result, 0, 0)) {
+ // update
+ $q2 = "UPDATE service SET url = '$surl', sec = $sec WHERE servicename
= '$sname'";
+ } else {
+ $q2 = "INSERT INTO service(servicename, url, sec) VALUES ('$sname',
'$surl', $sec)";
+ }
+
+ $r2 = $db->ExecuteQuery($q2);
+
+ return new SetServiceLocationResponse();
+}
+
+
+// define the operations map
+$operations = array(
+ "GetClientConfig" => "GetClientConfig",
+ "GetBSConfig" => "GetBSConfig",
+ "GetOPSConfig" => "GetOPSConfig",
+ "SetClientToBS" => "SetClientToBS",
+ "SetBSToOPS" => "SetBSToOPS",
+ "GetBSLocations" => "GetBSLocations",
+ "GetOPSLocations" => "GetOPSLocations",
+ "SetServiceLocation" => "SetServiceLocation");
+
+// define the actions => operations map
+$actions = array(
+
"http://apache.org/stonehenge/stocktrader/ConfigServiceService/GetClientConfig"
=> "GetClientConfig",
+
"http://apache.org/stonehenge/stocktrader/ConfigServiceService/GetBSConfig" =>
"GetBSConfig",
+
"http://apache.org/stonehenge/stocktrader/ConfigServiceService/GetOPSConfig" =>
"GetOPSConfig",
+ "ClientToBS" => "SetClientToBS",
+ "BSToOPS" => "SetBSToOPS",
+
"http://apache.org/stonehenge/stocktrader/ConfigServiceService/GetBSLocations"
=> "GetBSLocations",
+
"http://apache.org/stonehenge/stocktrader/ConfigServiceService/GetOPSLocations"
=> "GetOPSLocations",
+ "ServiceLocation" => "SetServiceLocation");
+
+// create service in WSDL mode
+$service = new WSService(array ("wsdl" =>"../resources/wsdl/config_svc.wsdl",
+ "actions" => $actions,
+ "classmap" => $class_map,
+ "operations" => $operations));
+
+// process client requests and reply
+$service->reply();
+
+
+?>