Fix cast error on TypeStore (in POI)
git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1881686 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java b/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java
index 5d642e7..7097dd2 100644
--- a/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java
+++ b/src/main/java/org/apache/xmlbeans/impl/store/Xobj.java
@@ -1984,20 +1984,22 @@
return null;
}
+ @SuppressWarnings("unchecked")
@Override
- public void find_all_element_users(QName name, List<TypeStoreUser> fillMeUp) {
+ public <T extends XmlObject> void find_all_element_users(QName name, List<T> fillMeUp) {
for (Xobj x = _firstChild; x != null; x = x._nextSibling) {
if (x.isElem() && x._name.equals(name)) {
- fillMeUp.add(x.getUser());
+ fillMeUp.add((T)x.getUser());
}
}
}
+ @SuppressWarnings("unchecked")
@Override
- public void find_all_element_users(QNameSet names, List<TypeStoreUser> fillMeUp) {
+ public <T extends XmlObject> void find_all_element_users(QNameSet names, List<T> fillMeUp) {
for (Xobj x = _firstChild; x != null; x = x._nextSibling) {
if (x.isElem() && names.contains(x._name)) {
- fillMeUp.add(x.getUser());
+ fillMeUp.add((T)x.getUser());
}
}
}
@@ -2338,11 +2340,12 @@
assert m == n;
- List<TypeStoreUser> elementsUser = new ArrayList<>();
+ List<XmlObject> elementsUser = new ArrayList<>();
find_all_element_users(elementName, elementsUser);
List<Xobj> elements = elementsUser.stream()
+ .map(x -> (TypeStoreUser)x)
.map(TypeStoreUser::get_store)
.map(x -> (Xobj)x)
.collect(Collectors.toList());
diff --git a/src/main/java/org/apache/xmlbeans/impl/values/TypeStore.java b/src/main/java/org/apache/xmlbeans/impl/values/TypeStore.java
index df74428..ce67dbc 100644
--- a/src/main/java/org/apache/xmlbeans/impl/values/TypeStore.java
+++ b/src/main/java/org/apache/xmlbeans/impl/values/TypeStore.java
@@ -176,14 +176,14 @@
* given name owned by this typestore, or the empty array of
* TypeStoreUsers if none was found.
*/
- void find_all_element_users(QName name, List<TypeStoreUser> fillMeUp);
+ <T extends XmlObject> void find_all_element_users(QName name, List<T> fillMeUp);
/**
* Returns all TypeStoreUsers corresponding to elements with one
* of the names is the QNameSet.
*/
- void find_all_element_users(QNameSet name, List<TypeStoreUser> fillMeUp);
+ <T extends XmlObject> void find_all_element_users(QNameSet name, List<T> fillMeUp);
/**
* Inserts a new element at the position that will make it