for (int i = 0; i < props.length; i++)
{
SchemaPropertyImpl sImpl = (SchemaPropertyImpl)props[i];
SchemaProperty baseProp =
(sImpl.isAttribute() ?
baseType.getAttributeProperty(sImpl.getName()) :
baseType.getElementProperty(sImpl.getName()));
if ((baseProp != null) != doInherited)
continue;
QName propQName = sImpl.getName();
String theName;
if (baseProp == null)
theName = pickJavaPropertyName(usedNames, propQName.getLocalPart(),
state.getJavaname(propQName, sImpl.isAttribute() ? BindingConfig.QNAME_ACCESSOR_ATTRIBUTE :
BindingConfig.QNAME_ACCESSOR_ELEMENT));
else
theName = baseProp.getJavaPropertyName();
sImpl.setJavaPropertyName(theName);
boolean isArray = (sImpl.getMaxOccurs() == null ||
sImpl.getMaxOccurs().compareTo(BigInteger.ONE) > 0);
boolean isSingleton = !isArray && (sImpl.getMaxOccurs().signum() > 0);
boolean isOption = isSingleton && (sImpl.getMinOccurs().signum() == 0);
SchemaType javaBasedOnType = sImpl.getType();
if (baseProp != null)
{
if (baseProp.extendsJavaArray())
{
isSingleton = false;
isOption = false;
isArray = true;
}
if (baseProp.extendsJavaSingleton())
{
isSingleton = true;
}
if (baseProp.extendsJavaOption())
{
isOption = true;
}
javaBasedOnType = baseProp.javaBasedOnType();
}
sImpl.setExtendsJava(javaBasedOnType.getRef(), isSingleton, isOption, isArray);
}