Hi,
Been looking at the classes created by the SourceGenerator (javaclassmapping=type) and have the following question/query:
Here's a snippet of my xsd file:
<complexType name="G1_GEHR_DATE_TIME_RANGE">
<complexContent>
<restriction base="gom:G1_RANGE">
<sequence>
<element name="lower" type="gom:G1_GEHR_DATE_TIME" minOccurs="0"/>
<element name="upper" type="gom:G1_GEHR_DATE_TIME" minOccurs="0"/>
<element name="lower_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>
<element name="upper_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>
<element name="include_lower" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
<element name="include_upper" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
<element name="is_inside" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="G1_RANGE" abstract="true">
<complexContent>
<extension base="gom:G1_DATA_VALUE">
<sequence>
<element name="lower" minOccurs="0"/>
<element name="upper" minOccurs="0"/>
<element name="lower_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>
<element name="upper_is_infinite" type="gom:G1_BOOLEAN" default="false" minOccurs="0"/>
<element name="include_lower" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
<element name="include_upper" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
<element name="is_inside" type="gom:G1_BOOLEAN" default="true" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="G1_DATA_VALUE"/>
The classes produced for the above are:
public class G1_DATA_VALUE implements java.io.Serializable
As expected, no properties
public class G1_RANGE extends org.gehr.type.gom.G1_DATA_VALUE implements java.io.Serializable
No properties?
public class G1_GEHR_DATE_TIME_RANGE extends org.gehr.type.gom.G1_RANGE implements java.io.Serializable
private G1_GEHR_DATE_TIME _lower;
private G1_GEHR_DATE_TIME _upper;
private boolean _lower_is_infinite = false;
private boolean _upper_is_infinite = false;
private boolean _include_lower = true;
private boolean _include_upper = true;
private boolean _is_inside = true;
(other '_has...' properties removed)
Which presents a problem if you have multiple classes extending from G1_RANGE and need to reference them all as a GL_RANGE (as no methods).
Should the classes not be more like:
public class G1_RANGE extends org.gehr.type.gom.G1_DATA_VALUE implements java.io.Serializable
private Object _lower;
private Object _upper;
private boolean _lower_is_infinite = false;
private boolean _upper_is_infinite = false;
private boolean _include_lower = true;
private boolean _include_upper = true;
private boolean _is_inside = true;
public class G1_GEHR_DATE_TIME_RANGE extends org.gehr.type.gom.G1_RANGE implements java.io.Serializable
No properties, but type checking on relevant setter methods?
e.g.
public void setLower(Object lower) {
if (lower instanceof G1_GEHR_DATE_TIME) {
super.setLower(lower);
} else {
throw new IllegalArgumentException("Invalid type.");
}
}
(just a thought)
If it can already be done then that's great. If not and considered a good idea then I'm prepared to have a go myself, but I'd need some direction on where to start in the code)
Regards,
Sean
--------------------------------------------------
Dr Sean Radford, MBBS, MSc
Senior Consultant
Agora Professional Services Ltd
[EMAIL PROTECTED]
http://www.agora.co.uk
--------------------------------------------------
Agora Professional Services is an entrepreneurial consulting firm specialising in e-Business and innovative solutions since 1995.
