cancel
Showing results for 
Search instead for 
Did you mean: 

Web service client stubs generation

Former Member
0 Kudos

Hi,

I try to generated model for WebDynpro application based on Web service (deprecated). WSDL file is valid. Stub classes generation is completed with compilation error. I found that the generator builds strange method for CMapLayerField complex type. There is setter with java.util.List param for MapLayer field but no one exists for Metafields field. Why for? Metafields field has the same cardinality as MapLayer one. Please, take me advance. I don't understand generation mechanism. I tried Axis2 and no problem was. How to fix this problem? How can I use Axis2 WSDL2Java generator instead of SAP Schema to Java generator?

The problem is below described in details. Compilation failed due to type cast error. The error message is:

The method setMapLayer(CMapLayer) in the type CMapLayerField is not applicable for the arguments (CMapLayer[])

Below I give some scrap from WSDL and generated Java class.

WSDL

==============

<s:complexType name="CMapLayerField">

<s:complexContent mixed="false">

<s:extension base="tns:CTable">

<s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="Metafields" type="tns:CMetafields" />

<s:element minOccurs="0" maxOccurs="1" name="MapLayer" type="tns:CMapLayer" />

<s:element minOccurs="1" maxOccurs="1" name="MapLayerFieldIsName" type="s:int" />

</s:sequence>

</s:extension>

</s:complexContent>

</s:complexType>

Generated API class for CMapLayerField type

==============================

package com.test.model;

public class ComplexType_CMapLayerField

{

private com.test.model.proxies.types.CMapLayerField originalBean;

//skipped

//...

private com.test.model.ComplexType_CMetafields metafields;

/** sets the JavaWrapper in the relationship**/

public void setMetafields(com.test.model.ComplexType_CMetafields arg)

{

this.metafields = arg;

}

/**

  • sets the original bean in the relationship

*/

public void setMetafields(com.test.model.proxies.types.CMetafields origBean)

{

if(this.metafields == null)

{

this.metafields = new com.test.model.ComplexType_CMetafields ();

}

this.metafields.setOriginalBean(origBean);

}

private java.util.List _mapLayer = null;

public void setMapLayer (java.util.List list)

{

com.test.model.proxies.types.CMapLayer[] array = new com.test.model.proxies.types.CMapLayer[list.size()];

for(int i=0;i<list.size();i++)

{

com.test.model.ComplexType_CMapLayer item = (com.test.model.ComplexType_CMapLayer)list.get(i);

array<i> = item.getOriginalBean();

}

getOriginalBean().setMapLayer(array);

this._mapLayer = list;

}

public void setMapLayer (com.test.model.proxies.types.CMapLayer[] args)

{

if(_mapLayer == null) _mapLayer = new java.util.ArrayList();

if (args == null ) return ;

for(int i=0;i<args.length;i++)

{

com.test.model.ComplexType_CMapLayer wrapper = new com.test.model.ComplexType_CMapLayer ();

wrapper.setOriginalBean(args<i>);

_mapLayer.add(wrapper);

}

}

//skipped

//...

}

Generated stub class for CMapLayerField type

===================================

package com.test.model.proxies.types;

public class CMapLayerField extends com.test.model.proxies.types.CTable {

//some line were skipped

private com.test.model.proxies.types.CMetafields fMetafields;

public void setMetafields(com.test.model.proxies.types.CMetafields _Metafields) {

this._f_Metafields = _Metafields;

this._f_hasMetafields = true;

}

private com.test.model.proxies.types.CMapLayer fMapLayer;

private boolean fhasMapLayer;

public void setMapLayer(com.test.model.proxies.types.CMapLayer _MapLayer) {

this._f_MapLayer = _MapLayer;

this._f_hasMapLayer = true;

}

}

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Obsolete