Document Literal Wrapped webservice missing methods in wsdl
-----------------------------------------------------------
Key: BEEHIVE-600
URL: http://issues.apache.org/jira/browse/BEEHIVE-600
Project: Beehive
Type: Test
Components: Web Services (181)
Versions: V1Alpha
Environment: N/A
Reporter: Xibin Zeng
This bug might be related to Beehive-599.
A webservice deployed through Beehive generated a wsdl that is missing methods
for wrapped types.
For example, generated wsdl contains:
<complexType name="Employee">
<sequence>
<element name="value" nillable="true" type="impl:Employee"/>
</sequence>
</complexType>
What is expected by TCK:
<xs:complexType name="Employee">
<xs:sequence>
<xs:element name="Name"
type="java1:Name"/>
<xs:element name="Dept"
type="java1:Department"/>
<xs:element name="Salary"
type="java1:Salary"/>
<xs:element name="Address"
type="java1:Address"/>
<xs:element name="Title"
type="xs:string"/>
<xs:element name="Type" type="xs:int"/>
</xs:sequence>
The webservice in question is:
package com.bea.ts.tests.complex.doclit.wrap;
import com.bea.ts.tests.utils.*;
import com.bea.ts.tests.utils.holders.*;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class ComplexDocLitWrapWebService {
@WebMethod
public int changeName(@WebParam(name="changename", header=true,
mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws NameException {
Employee employee = employeeHolder.value;
Name oldName = employee.getName();
Name newName = new Name(oldName.getLastName(), oldName.getFirstName());
employee.setName(newName);
return 0;
}
@WebMethod
public boolean changeDepartment(@WebParam(name="changedepartment",
header=true, mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws
DepartmentException {
Employee employee = employeeHolder.value;
Department department = new Department("Docs", "NY");
employee.setDept(department);
return true;
}
@WebMethod
public double changeSalary(@WebParam(name="changesalary", header=true,
mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws SalaryException
{
Employee employee = employeeHolder.value;
Salary oldSalary = employee.getSalary();
Salary newSalary = new Salary(oldSalary.getSalary() + 5000,
oldSalary.getBonusPercentage() + 5);
employee.setSalary(newSalary);
return 0.0;
}
@WebMethod
public float changeAddress(@WebParam(name="changeaddress", header=true,
mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws
AddressException {
Employee employee = employeeHolder.value;
Address oldAddress = employee.getAddress();
Address newAddress = new Address(oldAddress.getEmail(),
oldAddress.getPhone(), oldAddress.getStreet(), oldAddress.getCity(),
oldAddress.getState(), "99999", oldAddress.getCountry());
employee.setAddress(newAddress);
return 0.0f;
}
/*
@WebMethod
public String[] changeTitle(@WebParam(name="changetitle", header=true,
mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws TitleException {
Employee employee = employeeHolder.value;
String oldTitle = employee.getTitle();
String newTitle = "Senior " + oldTitle;
employee.setTitle(newTitle);
String[] wrapresult = {"change", "successful"};
return wrapresult;
}
@WebMethod
public List changeType(@WebParam(name="changetype", header=true,
mode=WebParam.Mode.INOUT) EmployeeHolder employeeHolder) throws TypeException {
Employee employee = employeeHolder.value;
int oldType = employee.getType();
int newType = (oldType + 1) % 3;
employee.setType(newType);
return new ArrayList();
}*/
@WebMethod
public Employee returnEmployee(@WebParam(name="returnemployee",
mode=WebParam.Mode.IN) Employee employee) {
return employee;
}
@WebMethod
public Employee returnEmployeeHeader(@WebParam(name="returnemployeeheader",
header=true, mode=WebParam.Mode.IN) Employee employee) {
return employee;
}
@WebMethod
public int newEmployee(@WebParam(name="newemployee", header=true,
mode=WebParam.Mode.OUT) EmployeeHolder employeeHolder) {
Name name = new Name("J2EE", "User");
Department dept = new Department("Eng", "SF");
Salary salary = new Salary(100000, 15);
Address address = new Address("[EMAIL PROTECTED]", "415-123-4567",
"Montgomery Street", "SF", "CA", "94104", "U.S.");
String title = "Senior Software Engineer";
int type = EmployeeType.PERMANENT;
Employee employee = new Employee(name, dept, salary, address, title, type);
employeeHolder.value = employee;
return 0;
}
@WebMethod
public int throwNameException(int foo) throws NameException {
throw new NameException();
}
@WebMethod
public int throwDepartmentException(int foo) throws DepartmentException {
throw new DepartmentException();
}
@WebMethod
public int throwSalaryException(int foo) throws SalaryException {
throw new SalaryException();
}
@WebMethod
public int throwAddressException(int foo) throws AddressException {
throw new AddressException();
}
@WebMethod
public int throwTitleException(int foo) throws TitleException {
throw new TitleException();
}
@WebMethod
public int throwTypeException(int foo) throws TypeException {
throw new TypeException();
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira