[Ds-java-dev] svn commit r14523 - trunk/solutions/data-services/php

svn at wso2.org svn at wso2.org
Wed Mar 5 02:39:22 PST 2008


Author: manoj
Date: Wed Mar  5 02:39:12 2008
New Revision: 14523

Log:

Added php data service 


Added:
   trunk/solutions/data-services/php/
   trunk/solutions/data-services/php/CustomersInBostonClient.php   (contents, props changed)
   trunk/solutions/data-services/php/CustomersInBostonService.php   (contents, props changed)
   trunk/solutions/data-services/php/DSConstants.php   (contents, props changed)
   trunk/solutions/data-services/php/DSProcessor.php   (contents, props changed)
   trunk/solutions/data-services/php/DataService.php   (contents, props changed)
   trunk/solutions/data-services/php/DataServiceClient.php   (contents, props changed)
   trunk/solutions/data-services/php/MyService.php   (contents, props changed)

Added: trunk/solutions/data-services/php/CustomersInBostonClient.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/CustomersInBostonClient.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,35 @@
+<?php
+/*
+ * Copyright 2005,2006 WSO2, Inc. http://wso2.com
+ *
+ * Licensed 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.
+ */
+
+$requestPayloadString = <<<XML
+<customersInBoston>
+</customersInBoston>
+XML;
+try {
+    $client = new WSClient(array( "to" => "http://localhost:8080/samples/DataService/CustomersInBostonService.php","useWSA"=>TRUE,"action"=>"urn:ds"));
+    $responseMessage = $client->request( $requestPayloadString );
+    printf("Response = %s <br>", htmlspecialchars($responseMessage->str));
+
+} catch (Exception $e) {
+
+    if ($e instanceof WSFault) {
+        printf("Soap Fault: %s\n", $e->Reason);
+    } else {
+        printf("Message = %s\n",$e->getMessage());
+    }
+}
+?>

Added: trunk/solutions/data-services/php/CustomersInBostonService.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/CustomersInBostonService.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,46 @@
+<?php
+/*
+ * Copyright 2005,2006 WSO2, Inc. http://wso2.com
+ *
+ * Licensed 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("DataService.php");
+
+$config = array("username"=>"root",  "password"=>"","dbname"=>"ds","dbhost"=>"localhost");
+
+$inputFormat = <<<XML
+<call-query href="customersInBostonSQL" sqlType="STRING" />
+</request>
+XML;
+
+$outputFormat = <<<XML
+<result element="customers" rowName="customer">
+<element name="customer-name" column="customerName" />
+<element name="contact-last-name" column="contactLastName" />
+<element name="contact-first-name" column="contactFirstName" />
+<element name="phone" column="phone" />
+<element name="city" column="city" />
+<element name="country" column="country" />
+</result>
+XML;
+
+//$sql = "select CUSTOMERNUMBER, CONTACTLASTNAME, CONTACTFIRSTNAME, ADDRESSLINE1, ADDRESSLINE2, CITY, STATE, POSTALCODE, COUNTRY from Customers where CONTACTLASTNAME = ? and CONTACTFIRSTNAME = ?";
+$sql = "select  * from Customers where city = 'Boston' and country = 'USA'";
+//where employeeNumber = ?";
+
+$operations = array("customersInBoston"=>array(/*"inputFormat"=>$inputFormat,*/ "outputFormat"=>$outputFormat, "sql"=>$sql));
+
+$my_data_service = new DataService(array("config"=>$config,"operations"=>$operations));
+$my_data_service->reply();
+?>

Added: trunk/solutions/data-services/php/DSConstants.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/DSConstants.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,22 @@
+<?php
+/*
+ * Created on Feb 13, 2008
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - PHPeclipse - PHP - Code Templates
+ */
+ 
+ 	define("DS_INPUT_FORMAT","inputFormat");
+ 	define("DS_OUTPUT_FORMAT","outputFormat");
+ 	define("DS_SQL","sql");
+ 	define("DS_OPERATIONS","operations");
+ 	define("DS_CONFIG","config");
+ 	define("DS_USERNAME","username");
+ 	define("DS_PASSWORD","password");
+ 	define("DS_DBHOST","dbhost");
+ 	define("DS_DBNAME","dbname");
+ 	define("DS_SOCKET","socket");
+ 	define("DS_PORT","port");
+ 	define("DS_RESULT_ELEMENT","result_element");
+ 	define("DS_RESULT_ROW","result_row");
+?>

Added: trunk/solutions/data-services/php/DSProcessor.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/DSProcessor.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,407 @@
+<?php
+/*
+ * Created on Feb 13, 2008
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - PHPeclipse - PHP - Code Templates
+ */
+
+require_once('DSConstants.php');
+
+class DSProcessor
+{
+	private $operations;
+	private $ops_to_input_format;
+	private $ops_to_output_format;
+	private $ops_to_sql;
+
+	private $username;
+	private $password;
+	private $dbhost;
+	private $dbname;
+	private $socket;
+	private $port;
+	private $operation;
+	private $input_format;
+	private $output_format;
+	private $sql;
+
+	// key -> Element Name  value -> query param
+	private $query_params;
+	private $params_type;	
+	private $param_to_value;
+	private $is_prepared_stmt_query;
+
+
+	private $output_params;
+	// store result xmls root element name and corresponding rowName
+	private $result_element;
+	
+	private $type_map = array(
+		"CHAR" => "string",
+		"VARCHAR" => "string",
+		"STRING" =>"string",
+		"LONGVARCHAR" => "string",
+		"NEMERIC" => "string",
+		"DECIMAL" => "int",
+		"BIT" =>"boolean",
+		"SAMLLINT"=>"int",
+		"INTEGER"=>"int",
+		"BIGINT"=>"int",
+		"REAL"=>"double",
+		"FLOAT"=>"double",
+		"DOUBLE"=>"double");
+	
+	public function __construct($args)
+	{
+		$this->operations = $args[DS_OPERATIONS];
+		$this->ops_to_input_format = array();
+		$this->ops_to_output_format = array();
+		$this->ops_to_sql = array();
+		$this->process_operations($args[DS_OPERATIONS]);
+		$this->process_db_config($args[DS_CONFIG]);	
+	}
+
+	public function handle($message){
+		$xmlstr = "";
+		if(!is_null($message)){	
+			$xmlstr = $this->process_inmessage($message->str);
+		}
+		if(!is_null($xmlstr))
+			return new WSMessage($xmlstr);
+		else
+			return null;
+	}
+	
+	private function process_operations($operations){
+		foreach($operations as $key => $value){
+			if(is_array($value)){
+   			   if(!is_null($value[DS_INPUT_FORMAT])){
+					$this->ops_to_input_format[$key] = $value[DS_INPUT_FORMAT];
+				}else{
+					error_log("Input format missing for operation ->".$key."");	
+				}
+				if(!is_null($value[DS_OUTPUT_FORMAT])){
+					$this->ops_to_output_format[$key] = $value[DS_OUTPUT_FORMAT];
+				}else{
+					error_log("Output format missing for operation ->".$key."");	
+				}
+				if(!is_null($value[DS_SQL])){
+					$this->ops_to_sql[$key] = $value[DS_SQL];
+				}else{
+					error_log("SQL String missing for operation ->".$key."");	
+				}
+			} 
+		}
+	}		
+		
+	private function process_db_config($config){
+		if(is_array($config)){	
+			$this->username = $config[DS_USERNAME];
+			$this->dbname = $config[DS_DBNAME];
+			$this->dbhost = $config[DS_DBHOST];
+			$this->password = $config[DS_PASSWORD];
+			$this->socket = $config[DS_SOCKET];
+			$this->port = $config[DS_PORT];
+		}
+	}
+	
+	
+	private function process_inmessage($xmlstr){
+		$doc = new DOMDocument();
+		$doc->preserveWhiteSpace = false;
+		$status = $doc->loadXML($xmlstr);
+		if($status == false){
+			error_log("Dom Document creation failed, Invalid XML String",0);	
+		}
+		
+		$dom_node = $doc->firstChild;
+		if(!is_null($dom_node)){
+			$op_name = $dom_node->localName;
+			if($this->operations[$op_name]){
+				// Operation exists Get the input and output format
+				$this->operation = $op_name;
+				$this->input_format = $this->ops_to_input_format[$op_name];
+				$this->output_format = $this->ops_to_output_format[$op_name];
+				$this->sql = $this->ops_to_sql[$op_name];
+			}
+		}
+		$this->process_input_format();
+		$this->extract_parameter_values_from_inmessage($doc);	
+		$this->process_output_params();
+		return	$this->execute_query();
+	}
+	
+	private function validate_inmessage($domnode){
+		$input_format = $this->ops_to_input_format[$this->operation];	
+		$doc = new DOMDocument();
+		$doc->preserveWhiteSpace = false;
+		$status = $doc->loadXML($input_format);
+		if($status == false){
+			error_log("Invalid XML Input Format for operation->".$this->current_operation);	
+		}	
+		$inputnodes = $doc->firstChild;
+		
+	}
+	
+	private function execute_query(){
+		$xmlstr ='';
+		$mysqli = $this->db_connect();
+		if(!$mysqli)
+			return;
+		if($this->is_prepared_stmt_query){
+			$xmlstr = $this->handle_prepared_stmt_query($mysqli);		
+		}else{
+			$xmlstr = $this->handle_query($mysqli);			
+		}	
+		$this->db_close($mysqli);
+		return $xmlstr;
+	}
+	
+	private function extract_parameter_values_from_inmessage($doc){
+		if($doc){
+			$dom_node = $doc->firstChild;
+			if(!is_null($dom_node) && $dom_node->hasChildNodes()){
+				$query_params = array();
+				$params_type = array();
+				$child_list = $dom_node->childNodes;
+				$param_to_value = array();
+				foreach($child_list as $child){
+					if($child->nodeType == XML_ELEMENT_NODE){
+						$localname = $child->localName;
+						$nodevalue = $child->nodeValue;
+						if($this->query_params[$localname]){
+							$param_to_value[$this->query_params[$localname]]= $nodevalue;
+						}
+					}							
+				}
+				$this->param_to_value = $param_to_value;
+			}
+		}
+	}
+	
+	private function process_input_format(){
+		if($this->input_format){
+			$doc = new DOMDocument();
+			$doc->preserveWhiteSpace = false;
+			$status = $doc->loadXML($this->input_format);
+			if($status == false){
+				error_log("Dom Document creation failed, Invalid XML String",0);	
+			}
+			$dom_node = $doc->firstChild;
+			if(!is_null($dom_node) && $dom_node->localName == 'request'){
+				$query_params = array();
+				$params_type = array();
+				$child_list = $dom_node->childNodes;
+				foreach($child_list as $child){
+					if($child->localName == 'with-param' && $child->hasAttributes()){
+						$name = $child->attributes->getNamedItem('name')->value;
+						$query_param = $child->attributes->getNamedItem('query-param')->value;
+						$param_type = $child->attributes->getNamedItem('sqlType')->value;
+						$query_params[$name] = $query_param;
+						$params_type[$name]= $param_type;
+					}
+				}
+				$this->query_params = $query_params;
+				$this->params_type = $params_type;
+				$this->is_prepared_stmt_query = true;
+			}
+		}else{
+				$this->is_prepared_stmt_query = false;	
+		}
+	}
+	
+	private function db_connect(){
+		$mysqli = new mysqli($this->dbhost, $this->username, $this->password, $this->dbname, $this->socket, $this->port);
+		if(mysqli_connect_errno()){
+			error_log("MySql connection failed with error no".mysqli_connect_errno()."");
+		}
+		return $mysqli;
+	}
+	
+	private function db_close($mysqli){
+		if($mysqli)
+			$mysqli->close();
+	}
+	
+	private function handle_prepared_stmt_query($mysqli){
+		if(!$mysqli)
+			return;
+		$doc = new DOMDocument("");
+		$root = $doc->createElementNS("http://wso2.org/projects/wsf/php/ds","ds:".$this->result_element[DS_RESULT_ELEMENT]);
+		$doc->appendChild($root);
+		
+		if($stmt = $mysqli->prepare($this->sql))
+                {
+                    $is_fetch === FALSE;
+		    $types = '';
+		    $typed_value_list = array();
+		    $param_value_string = '';
+		    $i =0;
+		    foreach($this->params_type as $key => $value){
+                        
+			if($this->param_to_value[$key]){
+				$parameter_value = $this->convert_type($value , $this->param_to_value[$key]);
+				$typed_value_list[$i] = $parameter_value;
+				$param_value_string .= '$typed_value_list['.$i.'],';
+				$i++;
+				if($this->type_map[$value] =='string' ){
+					$types .= "s";
+				}else if($this->type_map[$value] == 'int' || $this->type_map[$value] == 'boolean'){
+					$types .= "i";
+				}else if($this->type_map[$value]== 'double'){
+					$types .= "d";
+				}else{
+					$types .="s";	
+				}
+			}			
+		    }
+
+		    $bindings = '$stmt->bind_param("'. $types.'",'.rtrim($param_value_string,",").');';
+		
+		    eval($bindings);
+		    $stmt->execute();
+		    $response = array();
+		    $results = $stmt->result_metadata();
+		    $bind_result = '$stmt->bind_result(';
+		    while ($field = $results->fetch_field())
+ 		    {
+        	       $bind_result .= '$response["' . $field->name . '"],';
+ 	 	    }							
+		    $bind_result = rtrim($bind_result, ' ,') . ');';
+		    eval($bind_result);
+		    while($stmt->fetch()){
+				$row_ele = $doc->createElement($this->result_element[DS_RESULT_ROW]);	
+				$root->appendChild($row_ele);
+				foreach($this->output_params  as $element_name => $column_name){
+					$column_ele = $doc->createElement($element_name);
+					$row_ele->appendChild($column_ele);
+					$text_node = $doc->createTextNode($response[$column_name]);
+					$column_ele->appendChild($text_node);
+				}
+                    $is_fetch=TRUE;
+		    }
+		    //$stmt->close();
+                    if ($is_fetch === FALSE)
+                            {
+                                 $error_ele = $doc->createElement("error");
+                                 $root->appendChild($error_ele);
+                                 $text_error = $doc->createTextNode("data not found");
+                                 $error_ele->appendChild($text_error);
+                            }
+		}
+                else
+                { 
+                    $error_ele = $doc->createElement("error");
+                    $root->appendChild($error_ele);
+                    $text_error = $doc->createTextNode("table not found");
+                    $error_ele->appendChild($text_error);
+                }
+		return $doc->saveXML();						
+	}
+	
+	private function handle_query($mysqli){
+		if(!$mysqli)
+			return;
+		$doc = new DOMDocument("");
+		$root = $doc->createElementNS("http://wso2.org/projects/wsf/php/ds","ds:".$this->result_element[DS_RESULT_ELEMENT]);
+		$doc->appendChild($root);
+	        				
+		if($result= $mysqli->query($this->sql)){
+			$fetched = FALSE;
+			while($row= $result->fetch_array(MYSQLI_BOTH)){
+				$row_ele = $doc->createElement($this->result_element[DS_RESULT_ROW]);	
+				$root->appendChild($row_ele);
+				foreach($this->output_params  as $element_name => $column_name){
+					$column_ele = $doc->createElement($element_name);
+					$row_ele->appendChild($column_ele);
+					$text_node = $doc->createTextNode($row[$column_name]);
+					$column_ele->appendChild($text_node);
+				}
+			$fetched = TRUE;
+			}
+			if ($fetched === FALSE)
+			{
+			     $error_ele = $doc->createElement("error");
+                             $root->appendChild($error_ele);
+                             $text_error = $doc->createTextNode("data not found");
+                             $error_ele->appendChild($text_error);                               
+ 			}
+		}
+                else
+                { 
+                    $error_ele = $doc->createElement("error");
+                    $root->appendChild($error_ele);
+                    $text_error = $doc->createTextNode("table not found");
+                    $error_ele->appendChild($text_error);
+                }
+
+		return $doc->saveXML();	
+	}
+	
+	private function process_output_params(){
+		if($this->output_format){
+			$doc = new DOMDocument();
+			$doc->preserveWhiteSpace = false;
+			$status = $doc->loadXML($this->output_format);
+			if($status == false){
+				error_log("Dom Document creation failed, Invalid XML String In output Format",0);	
+			}
+			$dom_node = $doc->firstChild;
+			if(!is_null($dom_node) && $dom_node->localName == 'result'){
+				$output_params = array();
+				$result_element = array();
+				
+				if($dom_node->hasAttributes())
+				{
+					$element_name ="";
+					$row_name     ="";	
+				
+					if($dom_node->attributes->getNamedItem('element'))
+					{
+						$element_name = $dom_node->attributes->getNamedItem('element')->value;
+					}
+					if($dom_node->attributes->getNamedItem('rowName')){
+						$row_name = $dom_node->attributes->getNamedItem('rowName')->value;
+					}
+					
+					$result_element[DS_RESULT_ELEMENT] = $element_name;
+					$result_element[DS_RESULT_ROW] = $row_name;
+					$this->result_element = $result_element;
+				}else{
+					error_log("Result element name and rowName not specified",0);
+					return;	
+				}
+				// Iterate over the child elements and extract parameter 
+				$child_list = $dom_node->childNodes;
+				foreach($child_list as $child){
+					if($child->localName == 'element' && $child->hasAttributes()){
+						$name = $child->attributes->getNamedItem('name')->value;
+						$column = $child->attributes->getNamedItem('column')->value;
+						$output_params[$name] = $column;
+					}
+				}
+				$this->output_params = $output_params;
+			}
+		}
+	}
+	
+	private function convert_type($type,$value){
+		if($value && $type){
+			
+			if($this->type_map[$type] =='string' ){
+				return $value;
+			}else if($this->type_map[$type] == 'int'){
+				return (int)$value;	
+			}else if($this->type_map[$type]== 'double'){
+				return (double)$value;
+			}else if($this->type_map[$type] == 'boolean'){
+				return (boolean)$value;
+			}else{
+			 	return $value;
+			 }
+		}
+	
+	}
+}
+?>

Added: trunk/solutions/data-services/php/DataService.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/DataService.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,44 @@
+<?php
+/*
+ * Copyright 2005,2006 WSO2, Inc. http://wso2.com
+ *
+ * Licensed 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("DSProcessor.php");
+
+class DataService extends WSService
+{
+
+	private $operations;
+	private $actions;
+	public function __construct($args)
+	{
+		$this->operations = array();
+		$ops = $args[DS_OPERATIONS];
+		foreach($ops as $key => $value){
+			$this->operations = array();
+			$this->operations[$key] = "handle";
+		}
+		$con_args = array("classes"=>array("DSProcessor" => 
+			array("operations"=>$this->operations, "args"=>array($args))));
+
+		foreach($args as $key1 => $value1){
+			if($key1 != "operations" && isset($value1)){
+				$con_args[$key1]=$value1;
+			}
+		}
+		parent::__construct($con_args);	
+	}
+}
+?>

Added: trunk/solutions/data-services/php/DataServiceClient.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/DataServiceClient.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,38 @@
+<?php
+/*
+ * Copyright 2005,2006 WSO2, Inc. http://wso2.com
+ *
+ * Licensed 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.
+ */
+
+$requestPayloadString = <<<XML
+<customerAddress>
+<firstName>Carine</firstName>
+<lastName>Schmitt</lastName>
+</customerAddress>
+XML;
+
+try {
+    $client = new WSClient(array( "to" => "http://localhost:8080/samples/DataService/MyService.php","useWSA"=>TRUE,"action"=>"urn:ds"));
+    $responseMessage = $client->request( $requestPayloadString );
+    printf("Response = %s <br>", htmlspecialchars($responseMessage->str));
+
+} catch (Exception $e) {
+
+    if ($e instanceof WSFault) {
+        printf("Soap Fault: %s\n", $e->Reason);
+    } else {
+        printf("Message = %s\n",$e->getMessage());
+    }
+}
+?>

Added: trunk/solutions/data-services/php/MyService.php
==============================================================================
--- (empty file)
+++ trunk/solutions/data-services/php/MyService.php	Wed Mar  5 02:39:12 2008
@@ -0,0 +1,48 @@
+<?php
+/*
+ * Copyright 2005,2006 WSO2, Inc. http://wso2.com
+ *
+ * Licensed 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("DataService.php");
+
+$config = array("username"=>"root",  "password"=>"","dbname"=>"ds","dbhost"=>"localhost");
+
+$inputFormat = <<<XML
+<request><with-param name="lastName" query-param="lastName" sqlType="STRING"/><with-param name="firstName" query-param="firstName" sqlType = "STRING"/>
+</request>
+XML;
+
+
+$outputFormat = <<<XML
+<result element="customer-addresses" rowName="customer-address">
+<element name="customernumber" column="CUSTOMERNUMBER" />
+<element name="contactlastname" column="CONTACTLASTNAME" />
+<element name="contactfirstname" column="CONTACTFIRSTNAME" />
+<element name="addressline1" column="ADDRESSLINE1" />
+<element name="addressline2" column="ADDRESSLINE2" />
+<element name="city" column="CITY" />
+<element name="state" column="STATE" />
+<element name="postalcode" column="POSTALCODE" />
+<element name="country" column="COUNTRY" />
+</result>
+XML;
+
+$sql = "select CUSTOMERNUMBER, CONTACTLASTNAME, CONTACTFIRSTNAME, ADDRESSLINE1, ADDRESSLINE2, CITY, STATE, POSTALCODE, COUNTRY from Customers where CONTACTLASTNAME = ? and CONTACTFIRSTNAME = ?";
+//$sql = "select CUSTOMERNUMBER, CONTACTLASTNAME, CONTACTFIRSTNAME, ADDRESSLINE1, ADDRESSLINE2, CITY, STATE, POSTALCODE, COUNTRY from Customers";
+
+$operations = array("customerAddress"=>array("inputFormat"=>$inputFormat, "outputFormat"=>$outputFormat, "sql"=>$sql));
+$my_data_service = new DataService(array("config"=>$config,"operations"=>$operations));
+$my_data_service->reply();
+?>



More information about the Ds-java-dev mailing list