HSSFWorkbook.getAllEmbeddedObjects wasn't getting all embedded objects #2

Closed
wants to merge 2 commits into
from
@@ -1722,11 +1722,24 @@ private void getAllEmbeddedObjects(HSSFSheet sheet, List<HSSFObjectData> objects
if (null == patriarch){
return;
}
- for (HSSFShape shape: patriarch.getChildren()){
- if (shape instanceof HSSFObjectData){
+ getAllEmbeddedObjects(patriarch, objects);
+ }
+
+ /**
+ * Recursively iterates a shape container to get all embedded objects.
+ *
+ * @param parent the parent.
+ * @param objects the list of embedded objects to populate.
+ */
+ private void getAllEmbeddedObjects(HSSFShapeContainer parent, List<HSSFObjectData> objects)
+ {
+ for (HSSFShape shape : parent.getChildren()) {
+ if (shape instanceof HSSFObjectData) {
objects.add((HSSFObjectData) shape);
+ } else if (shape instanceof HSSFShapeContainer) {
+ getAllEmbeddedObjects((HSSFShapeContainer) shape, objects);
}
- }
+ }
}
public HSSFCreationHelper getCreationHelper() {