move logic from generated classes to base class - xgetArray method
git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1881776 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java
index 6013da6..d2c658b 100644
--- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java
+++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeCodePrinter.java
@@ -2033,17 +2033,7 @@
printJavaDoc("Gets (as xml) array of all " + propdesc + "s");
emit("public " + xtype + "[] xget" + arrayName + "() {");
startBlock();
- emitImplementationPreamble();
- if (_useJava15) {
- emit("java.util.List<" + xtype + "> targetList = new java.util.ArrayList<" + xtype + ">();");
- } else {
- emit("java.util.List targetList = new java.util.ArrayList();");
- }
- emit("get_store().find_all_element_users(" + setIdentifier + ", targetList);");
- emit(xtype + "[] result = new " + xtype + "[targetList.size()];");
- emit("targetList.toArray(result);");
- emit("return result;");
- emitImplementationPostamble();
+ emit("return xgetArray(" + setIdentifier + ", " + xtype + "[]::new);");
endBlock();
// Value xgetProp(int i)
diff --git a/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java b/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java
index a8104e5..5b23ff9 100644
--- a/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java
+++ b/src/main/java/org/apache/xmlbeans/impl/values/XmlObjectBase.java
@@ -3643,4 +3643,21 @@
}
}
+ protected <T extends XmlObject> T[] xgetArray(QName elementName, IntFunction<T[]> arrayCon) {
+ synchronized (monitor()) {
+ check_orphaned();
+ java.util.List<T> targetList = new java.util.ArrayList<>();
+ get_store().find_all_element_users(elementName, targetList);
+ return targetList.stream().toArray(arrayCon);
+ }
+ }
+
+ protected <T extends XmlObject> T[] xgetArray(QNameSet elementSet, IntFunction<T[]> arrayCon) {
+ synchronized (monitor()) {
+ check_orphaned();
+ java.util.List<T> targetList = new java.util.ArrayList<>();
+ get_store().find_all_element_users(elementSet, targetList);
+ return targetList.stream().toArray(arrayCon);
+ }
+ }
}