in src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java [1632:1851]
void printGetterImpls(SchemaProperty prop, Map<SchemaProperty, Identifier> propMap)
throws IOException {
final QName qName = prop.getName();
final String identifier = propMap.get(prop).getIdentifier();
final String setIdentifier = propMap.get(prop).getSetIdentifier();
final boolean several = prop.extendsJavaArray();
final boolean nillable = prop.hasNillable() != SchemaProperty.NEVER;
final String type = javaTypeForProperty(prop);
final String xtype = xmlTypeForProperty(prop);
final int javaType = prop.getJavaTypeCode();
final boolean isAttr = prop.isAttribute();
final String propertyName = prop.getJavaPropertyName();
String propertyDocumentation = prop.getDocumentation();
String propdesc = "\"" + qName.getLocalPart() + "\"" + (isAttr ? " attribute" : " element");
boolean xmltype = (javaType == SchemaProperty.XML_OBJECT);
String jtargetType = (xmlTypeForPropertyIsUnion(prop) || !xmltype) ? "org.apache.xmlbeans.SimpleValue" : xtype;
Set<BeanMethod> bmList = (opt == null) ? null : opt.getCompilePartialMethod();
if (prop.extendsJavaSingleton()) {
if (bmList == null || bmList.contains(BeanMethod.GET)) {
// Value getProp()
if(opt.isCompileAnnotationAsJavadoc() && propertyDocumentation != null && propertyDocumentation.length() > 0){
printJavaDocParagraph(propertyDocumentation);
} else {
printJavaDoc((several ? "Gets first " : "Gets the ") + propdesc);
}
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + type + " get" + propertyName + "() {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "0", NOTHING, jtargetType);
if (isAttr && (prop.hasDefault() == SchemaProperty.CONSISTENTLY ||
prop.hasFixed() == SchemaProperty.CONSISTENTLY)) {
emit("if (target == null) {");
startBlock();
makeAttributeDefaultValue(jtargetType, prop, identifier);
endBlock();
}
emit("return (target == null) ? " + makeMissingValue(javaType) +
" : " + printJGetValue(javaType, type, (SchemaTypeImpl) prop.getType()) + ";");
emitImplementationPostamble();
endBlock();
}
if (!xmltype && (bmList == null || bmList.contains(BeanMethod.XGET))) {
// Value xgetProp()
printJavaDoc((several ? "Gets (as xml) first " : "Gets (as xml) the ") + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + xtype + " xget" + propertyName + "() {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "0", NOTHING, xtype);
if (isAttr && (prop.hasDefault() == SchemaProperty.CONSISTENTLY ||
prop.hasFixed() == SchemaProperty.CONSISTENTLY)) {
emit("if (target == null) {");
startBlock();
makeAttributeDefaultValue(xtype, prop, identifier);
endBlock();
}
emit("return target;");
emitImplementationPostamble();
endBlock();
}
if (nillable && (bmList == null || bmList.contains(BeanMethod.IS_NIL))) {
// boolean isNilProp()
printJavaDoc((several ? "Tests for nil first " : "Tests for nil ") + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public boolean isNil" + propertyName + "() {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "0", NOTHING, xtype);
emit("return target != null && target.isNil();");
emitImplementationPostamble();
endBlock();
}
}
if (prop.extendsJavaOption() && (bmList == null || bmList.contains(BeanMethod.IS_SET))) {
// boolean isSetProp()
printJavaDoc((several ? "True if has at least one " : "True if has ") + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public boolean isSet" + propertyName + "() {");
startBlock();
emitImplementationPreamble();
if (isAttr) {
emit("return get_store().find_attribute_user(" + identifier + ") != null;");
} else {
emit("return get_store().count_elements(" + setIdentifier + ") != 0;");
}
emitImplementationPostamble();
endBlock();
}
if (several) {
String arrayName = propertyName + "Array";
// use boxed type if the java type is a primitive and jdk1.5
// jdk1.5 will box/unbox for us
String wrappedType = type;
if (isJavaPrimitive(javaType)) {
wrappedType = javaWrappedType(javaType);
}
printListGetterImpl(propdesc, propertyName, wrappedType, xmltype, false);
if (bmList == null || bmList.contains(BeanMethod.GET_ARRAY)) {
// Value[] getProp()
printJavaDoc("Gets array of all " + propdesc + "s");
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + type + "[] get" + arrayName + "() {");
startBlock();
printJGetArrayValue(javaType, type, (SchemaTypeImpl) prop.getType(), setIdentifier);
endBlock();
}
if (bmList == null || bmList.contains(BeanMethod.GET_IDX)) {
// Value getProp(int i)
printJavaDoc("Gets ith " + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + type + " get" + arrayName + "(int i) {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "i", THROW_EXCEPTION, jtargetType);
emit("return " + printJGetValue(javaType, type, (SchemaTypeImpl) prop.getType()) + ";");
emitImplementationPostamble();
endBlock();
}
if (!xmltype) {
printListGetterImpl(propdesc, propertyName, xtype, false, true);
}
if (!xmltype && (bmList == null || bmList.contains(BeanMethod.XGET_ARRAY))) {
// Value[] xgetProp()
printJavaDoc("Gets (as xml) array of all " + propdesc + "s");
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + xtype + "[] xget" + arrayName + "() {");
startBlock();
emit("return xgetArray(" + setIdentifier + ", " + xtype + "[]::new);");
endBlock();
}
if (!xmltype && (bmList == null || bmList.contains(BeanMethod.XGET_IDX))) {
// Value xgetProp(int i)
printJavaDoc("Gets (as xml) ith " + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public " + xtype + " xget" + arrayName + "(int i) {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "i", THROW_EXCEPTION, xtype);
emit("return target;");
emitImplementationPostamble();
endBlock();
}
if (nillable && (bmList == null || bmList.contains(BeanMethod.IS_NIL_IDX))) {
// boolean isNil(int i);
printJavaDoc("Tests for nil ith " + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public boolean isNil" + arrayName + "(int i) {");
startBlock();
emitImplementationPreamble();
emitGetTarget(setIdentifier, identifier, isAttr, "i", THROW_EXCEPTION, xtype);
emit("return target.isNil();");
emitImplementationPostamble();
endBlock();
}
// int countProp();
if (bmList == null || bmList.contains(BeanMethod.SIZE_OF_ARRAY)) {
printJavaDoc("Returns number of " + propdesc);
if (!opt.isCompileNoAnnotations()) {
emit("@Override");
}
emit("public int sizeOf" + arrayName + "() {");
startBlock();
emitImplementationPreamble();
emit("return get_store().count_elements(" + setIdentifier + ");");
emitImplementationPostamble();
endBlock();
}
}
}