JBoss 7.1.1 wsdl difference with JBoss 6.1 : missing name attribute on some xs:element
l.courtin May 30, 2012 7:06 AMHello,
I am testing JBoss 7.1.1 with a Web Service.
I was previously on JBoss 6.1.0.
I have seen that there is some difference on the generated wsdl file between version 7.1.1 and version 6.1.0.
Here is an extract of the generated wsdl file by JBoss 6.1.0:
<xs:complexType name="lastSolePtCoord"> <xs:sequence> <xs:element minOccurs="0" name="dmReferenceSize" type="tns:dmReferenceSize" /> <xs:element minOccurs="0" name="lastSolePt" type="tns:lastSolePt" /> <xs:element minOccurs="0" name="lastSolePtCoordPK" type="tns:lastSolePtCoordPK" /> <xs:element minOccurs="0" name="reference" type="tns:reference" /> <xs:element name="x" type="xs:double" /> <xs:element name="y" type="xs:double" /> <xs:element name="z" type="xs:double" /> </xs:sequence> </xs:complexType>
Here is an extract of the generated wsdl file by JBoss 7.1.1:
<xs:complexType name="lastSolePtCoord"> <xs:sequence> <xs:element minOccurs="0" ref="tns:dmReferenceSize"/> <xs:element minOccurs="0" ref="tns:lastSolePt"/> <xs:element minOccurs="0" name="lastSolePtCoordPK" type="tns:lastSolePtCoordPK"/> <xs:element minOccurs="0" ref="tns:reference"/> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> <xs:element name="z" type="xs:double"/> </xs:sequence> </xs:complexType>
You can see that some name attributes are missing the 7.1.1 version.
This prevent the client of the Web Service to retrieve the value of the specified field: ie. the reference field is null with the 7.1.1 version while the reference field is filled with the 6.1.0 version.
There is also a funny thing : when I run the client generated with a wsdl of JBoss 6.1.0 on a JBoss 7.1.1, it works perfectly (i.e. the reference field is filled).
Here the source of the LastSolePtCoord entity:
package com.cadwin.rcsdmwebservices.jpa;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author laurent
*/
@Entity
@Table(name = "LAST_SOLE_PT_COORD")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "LastSolePtCoord.findAll", query = "SELECT l FROM LastSolePtCoord l"),
@NamedQuery(name = "LastSolePtCoord.findByReferenceCode", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode"),
@NamedQuery(name = "LastSolePtCoord.findByReferenceRev", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceRev = :referenceRev"),
@NamedQuery(name = "LastSolePtCoord.findByReferenceCodeRev", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode AND l.lastSolePtCoordPK.referenceRev = :referenceRev"),
@NamedQuery(name = "LastSolePtCoord.findByReferenceCodeRevSizeId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode AND l.lastSolePtCoordPK.referenceRev = :referenceRev AND l.lastSolePtCoordPK.sizeId = :sizeId"),
@NamedQuery(name = "LastSolePtCoord.findBySizeId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.sizeId = :sizeId"),
@NamedQuery(name = "LastSolePtCoord.findByPointId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.pointId = :pointId"),
@NamedQuery(name = "LastSolePtCoord.findByX", query = "SELECT l FROM LastSolePtCoord l WHERE l.x = :x"),
@NamedQuery(name = "LastSolePtCoord.findByY", query = "SELECT l FROM LastSolePtCoord l WHERE l.y = :y"),
@NamedQuery(name = "LastSolePtCoord.findByZ", query = "SELECT l FROM LastSolePtCoord l WHERE l.z = :z")})
public class LastSolePtCoord implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected LastSolePtCoordPK lastSolePtCoordPK;
@Basic(optional = false)
@Column(name = "X")
private double x;
@Basic(optional = false)
@Column(name = "Y")
private double y;
@Basic(optional = false)
@Column(name = "Z")
private double z;
@JoinColumns({
@JoinColumn(name = "PRODUCT_CODE", referencedColumnName = "PRODUCT_CODE", insertable = false, updatable = false),
@JoinColumn(name = "PRODUCT_REV", referencedColumnName = "PRODUCT_REV", insertable = false, updatable = false)})
@ManyToOne(optional = false)
private Reference reference;
@JoinColumn(name = "POINT_ID", referencedColumnName = "ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private LastSolePt lastSolePt;
@JoinColumn(name = "SIZE_ID", referencedColumnName = "ID", insertable = false, updatable = false)
@ManyToOne(optional = false)
private DmReferenceSize dmReferenceSize;
public LastSolePtCoord() {
}
public LastSolePtCoord(LastSolePtCoordPK lastSolePtCoordPK) {
this.lastSolePtCoordPK = lastSolePtCoordPK;
}
public LastSolePtCoord(LastSolePtCoordPK lastSolePtCoordPK, double x, double y, double z) {
this.lastSolePtCoordPK = lastSolePtCoordPK;
this.x = x;
this.y = y;
this.z = z;
}
public LastSolePtCoord(String referenceCode, String referenceRev, BigInteger sizeId, BigInteger pointId) {
this.lastSolePtCoordPK = new LastSolePtCoordPK(referenceCode, referenceRev, sizeId, pointId);
}
public LastSolePtCoordPK getLastSolePtCoordPK() {
return lastSolePtCoordPK;
}
public void setLastSolePtCoordPK(LastSolePtCoordPK lastSolePtCoordPK) {
this.lastSolePtCoordPK = lastSolePtCoordPK;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double getZ() {
return z;
}
public void setZ(double z) {
this.z = z;
}
public Reference getReference() {
return reference;
}
public void setReference(Reference reference) {
this.reference = reference;
}
public LastSolePt getLastSolePt() {
return lastSolePt;
}
public void setLastSolePt(LastSolePt lastSolePt) {
this.lastSolePt = lastSolePt;
}
public DmReferenceSize getDmReferenceSize() {
return dmReferenceSize;
}
public void setDmReferenceSize(DmReferenceSize dmReferenceSize) {
this.dmReferenceSize = dmReferenceSize;
}
@Override
public int hashCode() {
int hash = 0;
hash += (lastSolePtCoordPK != null ? lastSolePtCoordPK.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof LastSolePtCoord)) {
return false;
}
LastSolePtCoord other = (LastSolePtCoord) object;
if ((this.lastSolePtCoordPK == null && other.lastSolePtCoordPK != null) || (this.lastSolePtCoordPK != null && !this.lastSolePtCoordPK.equals(other.lastSolePtCoordPK))) {
return false;
}
return true;
}
@Override
public String toString() {
return "LastSolePtCoord[ lastSolePtCoordPK=" + lastSolePtCoordPK + " ]";
}
}
Is there something I have missed ?
Is this a problem with JBoss 7.1.1 ?
Best regards,
Laurent