### Question:
PleiadesProductReader extends AbstractProductReader { @Override public TreeNode<File> getProductComponents() { TreeNode<File> result = super.getProductComponents(); if (!this.productDirectory.isCompressed()) { try { File volumeMetadataPhysicalFile = this.productDirectory.getFile(Constants.ROOT_METADATA); if (this.metadata != null) { addProductComponentIfNotPresent(Constants.ROOT_METADATA, volumeMetadataPhysicalFile, result); for (VolumeMetadata component : this.metadata.getVolumeMetadataList()) { try { File fullPathComp = this.productDirectory.getFile(component.getPath().toString()); addProductComponentIfNotPresent(component.getFileName(), fullPathComp, result); for (VolumeComponent vComponent: component.getComponents()){ if (vComponent.getType().equals(Constants.METADATA_FORMAT)) { File fullPathVComp = this.productDirectory.getFile(fullPathComp.getParent() + File.separator + vComponent.getRelativePath()); addProductComponentIfNotPresent(vComponent.getRelativePath(), fullPathVComp, result); if(vComponent.getComponentMetadata() != null && vComponent.getComponentMetadata() instanceof ImageMetadata){ ImageMetadata image = (ImageMetadata)vComponent.getComponentMetadata(); for (String raster : image.getRasterFileNames()){ addProductComponentIfNotPresent(raster, this.productDirectory.getFile(fullPathVComp.getParent() + File.separator + raster), result); } for (ImageMetadata.MaskInfo mask : image.getMasks()){ addProductComponentIfNotPresent(mask.name, mask.path.toFile(), result); } } } } } catch (IOException ex) { logger.warning(ex.getMessage()); } } } } catch (IOException ex) { logger.warning(ex.getMessage()); } } return result; } protected  PleiadesProductReader(PleiadesProductReaderPlugin readerPlugIn); @Override TreeNode<File> getProductComponents(); @Override void close(); static GeoCoding buildGeoCoding(ImageMetadata maxResImageMetadata, int defaultProductWidth, int defaultProductHeight, VolumeMetadata metadata,
                                           Rectangle productSubsetRegion, ProductSubsetDef subsetDef);  }### Answer:
@Test public void testGetProductComponentsOnFileInput() throws IOException { assumeTrue(TestUtil.testdataAvailable()); File file = TestUtil.getTestFile(PRODUCTS_FOLDER + "PL1_OPER_HIR_PMS_3__20151115T113200_N39-883_W007-992_5011.SIP" + File.separator + "TPP1600462598" + File.separator + "VOL_PHR.XML"); assertNotNull(file); AbstractProductReader reader = buildProductReader(); Product finalProduct = reader.readProductNodes(file, null); assertNotNull(finalProduct); TreeNode<File> components = reader.getProductComponents(); assertEquals(1, components.getChildren().length); assertEquals("VOL_PHR.XML", components.getChildren()[0].getId()); }