Issue Details (XML | Word | Printable)

Key: AXISCPP-277
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Fred Preston
Reporter: Andrew Perry
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Axis-C++

Latest changes to WSDL2Ws have caused some clients to fail to compile.

Created: 19/Nov/04 02:11 PM   Updated: 01/Feb/05 10:49 PM
Return to search
Component/s: None
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

Environment: All

Resolution Date: 01/Dec/04 03:02 PM


 Description  « Hide
Latest changes to WSDL2Ws have caused some clients to fail to compile.

compileClient:
       [cc] 5 total files to be compiled.
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp: In
       [cc] function `int main(int, char**)':
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:62: cannot
       [cc] convert `BenchBasicDataType*' to `BenchBasicDataType**' in assignment
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:93: cannot
       [cc] convert `BenchBasicDataType' to `BenchBasicDataType*' in assignment
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:140: request
       [cc] for member `StringType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:141: request
       [cc] for member `IntType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:142: request
       [cc] for member `IntegerType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:143: request
       [cc] for member `DoubleType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:144: request
       [cc] for member `BooleanType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:145: request
       [cc] for member `DateTimeType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:147: request
       [cc] for member `DateType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:149: request
       [cc] for member `TimeType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:151: request
       [cc] for member `ByteType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:152: request
       [cc] for member `DecimalType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:153: request
       [cc] for member `FloatType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:154: request
       [cc] for member `LongType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:155: request
       [cc] for member `QNameType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:156: request
       [cc] for member `ShortType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:158: request
       [cc] for member `Base64BinaryType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:159: request
       [cc] for member `Base64BinaryType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:161: request
       [cc] for member `Base64BinaryType' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:164: request
       [cc] for member `HexBinary' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:165: request
       [cc] for member `HexBinary' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/AxisBenchClient.cpp:167: request
       [cc] for member `HexBinary' in `
       [cc] *(output->BenchDataType::infos.BenchBasicDataType_ArrayTag::m_Array + (+(i *
       [cc] 4)))', which is of non-aggregate type `BenchBasicDataType*'
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/BenchDataType.cpp: In
       [cc] function `int Axis_Serialize_BenchDataType(BenchDataType*,
       [cc] axiscpp::IWrapperSoapSerializer*, bool)':
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/BenchDataType.cpp:38: must
       [cc] #include <typeinfo> before using typeid
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/BenchDataType.cpp: In
       [cc] function `int Axis_DeSerialize_BenchDataType(BenchDataType*,
       [cc] axiscpp::IWrapperSoapDeSerializer*)':
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/BenchDataType.cpp:94: must
       [cc] #include <typeinfo> before using typeid
       [cc] /home/axistest/test_PA/obj/test/generated/cpp/AxisBench/BenchDataType.cpp:118: syntax
       [cc] error before `long'


       [cc] g++ failed with return code 1

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Fred Preston added a comment - 19/Nov/04 02:29 PM
This error has occured because of the code that has been added to deal with nillable services. If a service object is nillable (i.e. AxisBench and RecursiveType) then the object must be nillable. To enable this to happen, I've had to change the pointer to be pointer to pointer so that the client can nill the contents.

eg In AxisBench
      ---------
BenchBasicDataType_Array.hpp changes from:

typedef struct BenchBasicDataType_ArrayTag
{
BenchBasicDataType * m_Array;
int m_Size;
} BenchBasicDataType_Array;

To:
typedef struct BenchBasicDataType_ArrayTag
{
BenchBasicDataType ** m_Array;
int m_Size;
} BenchBasicDataType_Array;

This forces the client to change. The new implementation now expects an array of object pointers when this object is implemented. Thus, in
AxisBenchClient.cpp, the code changes from:-

(62)input->infos.m_Array = new BenchBasicDataType[input->count];

To:
BenchBasicDataType ** ppBBDT = (BenchBasicDataType **) new __int64[input->count];
input->infos.m_Array = ppBBDT;
:
BenchBasicDataType * type = new BenchBasicDataType();
:
input->infos.m_Array[i] = type;
:

NB: if using Linux/UNIX, change __int64 to long long.

Fred Preston added a comment - 01/Dec/04 03:02 PM
All of the clients now compile and work correctly. The clients must have been updated to accomodate the change required to array types to handle nillable objects.

John Hawkins added a comment - 01/Feb/05 10:49 PM
Test are all working so closing.