Reputation: 173
I am trying to make web services but there are two situations I am getting.
There are two types of xsd file 1st one is:
<xsd:element name="signupRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element
<xsd:element name="signupResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="signup" type="tns:Signup"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="Signup">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Success"/>
<xsd:enumeration value="DuplicateEmail"/>
</xsd:restriction>
</xsd:simpleType>
in that case jaxb generates signuprequest signupresponse and signup classes so i can easily make services for example in this case:
public Signup signupResponse(String name,String mobile);
but if I set signupresponse directly like this:
<xsd:element name="signupResponse">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Success"/>
<xsd:enumeration value="DuplicateMail"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
jaxb only generate sinuprequest class and do not generate signupresponse and signup classes instead it makes entry in ObjectFactory class like this
private final static QName _SignupResponse_QNAME = new QName("http://www.example.com", "signupResponse");
and method is:
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<String> createSignupResponse(String value) {
return new JAXBElement<String>(_SignupResponse_QNAME, String.class, null, value);
so please guide me how to make services for these types of xsd architecture.
Upvotes: 1
Views: 2076
Reputation: 8272
The element signupResponse
is considered as simple type of String.class
, for this reason you haven't a Class generates.
If you want generated the enumeration you should change the XSD
<xs:element name="signupResponse" type="signupResponse" />
<xs:simpleType name="signupResponse">
<xs:restriction base="xs:string">
<xs:enumeration value="Success" />
<xs:enumeration value="DuplicateMail" />
</xs:restriction>
</xs:simpleType>
in order to generate
@XmlType(name = "signupResponse")
@XmlEnum
public enum SignupResponse {
@XmlEnumValue("Success")
SUCCESS("Success"),
@XmlEnumValue("DuplicateMail")
DUPLICATE_MAIL("DuplicateMail");
private final String value;
SignupResponse(String v) {
value = v;
}
public String value() {
return value;
}
public static SignupResponse fromValue(String v) {
for (SignupResponse c: SignupResponse.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
and ObjectFactory
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<SignupResponse> createSignupResponse(SignupResponse value) {
return new JAXBElement<SignupResponse>(_SignupResponse_QNAME, SignupResponse.class, null, value);
}
Upvotes: 2