Hi,
I have SmartClientOperation based WSDL services exposing Person and Pet pojo classes.
In SmartGWT I created corresponding WS datasources:
Fetch operation on Pet datasource is working fine with the following server response:
However I am not able to get the same hierarchical Update request (required by server side) from SmartGWT.
Instead I got the following flat xml structure:
Am I missing somethig ?
Thanks,
MichalG
I have SmartClientOperation based WSDL services exposing Person and Pet pojo classes.
In SmartGWT I created corresponding WS datasources:
Code:
private static class PersonDS extends WSDataSource {
private static PersonDS instance;
public static PersonDS getInstance() {
if (instance == null)
instance = new PersonDS("Person");
return instance;
}
public PersonDS(String id) {
setID(id);
setServiceNamespace("urn:operations.smartclient.com");
setDataFormat(DSDataFormat.XML);
setDataURL("/axis2/services/SmartClientOperations");
OperationBinding fetchBinding = new OperationBinding();
fetchBinding.setOperationType(DSOperationType.FETCH);
fetchBinding.setWsOperation("fetch");
fetchBinding.setRecordXPath("//data/*");
fetchBinding.setRecordName("arg");
OperationBinding updateBinding = new OperationBinding();
updateBinding.setOperationType(DSOperationType.UPDATE);
updateBinding.setWsOperation("update");
updateBinding.setRecordXPath("//data/*");
updateBinding.setRecordName("arg");
setOperationBindings(fetchBinding,updateBinding);
DataSourceField idField = new DataSourceIntegerField("id", "ID", 5, false);
idField.setPrimaryKey(true);
DataSourceField nameField = new DataSourceTextField("name", "Name", 30, true);
DataSourceField ageField = new DataSourceField("age", FieldType.INTEGER, "Age", 3);
setFields(idField,nameField,ageField);
}
}
private static class PetDS extends WSDataSource {
private static PetDS instance;
public static PetDS getInstance() {
if (instance == null)
instance = new PetDS("Pet");
return instance;
}
public PetDS(String id) {
setID(id);
setServiceNamespace("urn:operations.smartclient.com");
setDataFormat(DSDataFormat.XML);
setDataURL("/axis2/services/SmartClientOperations");
OperationBinding fetchBinding = new OperationBinding();
fetchBinding.setOperationType(DSOperationType.FETCH);
fetchBinding.setWsOperation("fetch");
fetchBinding.setRecordXPath("//data/*");
fetchBinding.setRecordName("arg");
OperationBinding updateBinding = new OperationBinding();
updateBinding.setOperationType(DSOperationType.UPDATE);
updateBinding.setWsOperation("update");
updateBinding.setRecordXPath("//data/*");
updateBinding.setRecordName("arg");
setOperationBindings(fetchBinding,updateBinding);
DataSourceField idField = new DataSourceIntegerField("id", "ID", 5, false);
idField.setPrimaryKey(true);
DataSourceField animalField = new DataSourceTextField("animal", "Animal", 30, true);
DataSourceField colourField = new DataSourceTextField("colour", "Colour", 10, true);
DataSourceField sexField = new DataSourceField("sex", FieldType.BOOLEAN, "Sex", 5);
DataSourceField personField = new DataSourceIntegerField("person", "PresonID", 5, false);
personField.setForeignKey("Person.id");
personField.setValueXPath("person/id");
setFields(idField,animalField,colourField,sexField,personField);
}
}
Code:
<data>
<pet>
<id>458752</id>
<person>
<id>491520</id>
..
</person>
..
</pet>
Instead I got the following flat xml structure:
Code:
<data>
<pet>
<id>458752</id>
<person>491520</person>
..
</pet>
Thanks,
MichalG
Comment