blob: cc972eb586ba20ca204a9520f9887170304ebf92 [file] [log] [blame]
// Copyright 2003-2004 The Apache Software Foundation.
// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
//
// 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.
/*
* NestedComplex
*
* Send a complex data type, ComplexType2, which has a data element of an
* array of a complex data type, ComplexType1. The ComplexType1 data type
* has a xsd:string element, a xsd:int element and a complex data type element
* SimpleArrays. The SimpleArrays complex data type has a xsd:string array and
* a xsd_int array.
*
* ComplexType2
* + ComplexType1[]
* + string
* + int
* + SimpleArrays
* + string[]
* + int[]
*
* This is an echo type service so the response should be the same as the request.
*
* Author: Andrew Perry
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include "CommonClientTestCode.h"
#include "NestedComplex.h"
#define ARRAYSIZE 2
#define NEWCOPY(ptr,str) {ptr=axiscAxisNew(XSDC_STRING, strlen(str)+1); strcpy(ptr,str);}
int main(int argc, char* argv[])
{
AXISCHANDLE ws;
ComplexType2 complexType2;
ComplexType2* response;
SimpleArrays *simpleArrays1 = Axis_Create_SimpleArrays(0);
SimpleArrays *simpleArrays2 = Axis_Create_SimpleArrays(0);
SimpleArrays *simpleArrays[2];
ComplexType1 complexType1_1;
ComplexType1 complexType1_2;
ComplexType1_Array cType1Array;
ComplexType1 * array[ARRAYSIZE];
xsdc__int intValues[2] = {6, 7};
xsdc__string strType[ARRAYSIZE] = { "Apache", "Axis C++" };
xsdc__int * intType[ARRAYSIZE];
char endpoint[256];
const char* url="http://localhost:80/axis/NestedComplex";
int i;
if(argc>1)
url = argv[1];
sprintf(endpoint, "%s", url);
ws = get_NestedComplex_stub(endpoint);
simpleArrays[0] = simpleArrays1;
simpleArrays[1] = simpleArrays2;
intType[0] = &intValues[0];
intType[1] = &intValues[1];
for (i=0; i<2; i++)
{
simpleArrays[i]->stringArray->m_Array=strType;
simpleArrays[i]->stringArray->m_Size=ARRAYSIZE;
simpleArrays[i]->intArray->m_Array=intType;
simpleArrays[i]->intArray->m_Size=ARRAYSIZE;
}
complexType1_1.simpleArrays = simpleArrays1;
complexType1_1.ct1_string = "Hello";
complexType1_1.ct1_int = 13;
complexType1_2.simpleArrays = simpleArrays2;
complexType1_2.ct1_string = "World";
complexType1_2.ct1_int = 27;
array[0] = &complexType1_1;
array[1] = &complexType1_2;
cType1Array.m_Array = array;
cType1Array.m_Size = ARRAYSIZE;
cType1Array.m_Type = C_USER_TYPE;
complexType2.complexType1Array = (&cType1Array);
response = echoNestedComplex(ws, &complexType2);
if (response)
{
if (response->complexType1Array && response->complexType1Array->m_Size > 1)
{
ComplexType1 ** output = response->complexType1Array->m_Array;
printf("%s\n", output[0]->ct1_string );
printf("%d\n", output[0]->ct1_int );
printf("%s %s\n", output[0]->simpleArrays->stringArray->m_Array[0],
output[0]->simpleArrays->stringArray->m_Array[1] );
printf("%d %d\n", *(output[0]->simpleArrays->intArray->m_Array[0]),
*(output[0]->simpleArrays->intArray->m_Array[1]) );
printf("%s\n", output[1]->ct1_string );
printf("%d\n", output[1]->ct1_int );
printf("%s %s\n", output[1]->simpleArrays->stringArray->m_Array[0],
output[1]->simpleArrays->stringArray->m_Array[1] );
printf("%d %d\n", *(output[1]->simpleArrays->intArray->m_Array[0]),
*(output[1]->simpleArrays->intArray->m_Array[1]) );
}
else
printf("Failed, response->complexType1Array is NULL or size is not greater than 1\n");
}
else
printf("Failed, response is NULL\n");
for (i=0; i<2; i++)
{
simpleArrays[i]->stringArray->m_Array=NULL;
simpleArrays[i]->intArray->m_Array=NULL;
Axis_Delete_SimpleArrays(simpleArrays[i], 0);
}
destroy_NestedComplex_stub(ws);
printf( "---------------------- TEST COMPLETE -----------------------------\n");
return 0;
}