docs: @Override
      public IfixResourceWritable parseFileToResource(File assetFile, File metadataFile, String contentUrl) throws RepositoryException {
  
          ArtifactMetadata artifactMetadata = explodeArtifact(assetFile, metadataFile);
  
          // Throw an exception if there is no metadata and properties, we get the name and readme from it
          if (artifactMetadata == null) {
              throw new RepositoryArchiveException("Unable to find sibling metadata zip for " + assetFile.getName()
                                                   + " so do not have the required information", assetFile);
          }
  
          extractFiles(artifactMetadata);
  
          _jarPayload = assetFile;
  
          // Extract iFix xml file from iFix jar file
          ParserBase.ExtractedFileInformation xmlFileInfo = extractFileFromArchive(_jarPayload.getAbsolutePath(), ".*lib\\/fixes.*\\.xml");
          IFixInfo ifixInfo;
          try {
              DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
              Document doc = docBuilder.parse(xmlFileInfo.getExtractedFile());
              ifixInfo = IFixInfo.fromDocument(doc);
          } catch (Exception e) {
              throw new RepositoryArchiveInvalidEntryException("Parse failure", xmlFileInfo.getSourceArchive(), xmlFileInfo.getSelectedPathFromArchive(), e);
          }
  
          // create asset and update with info from iFix jar file
          IfixResourceWritable resource = WritableResourceFactory.createIfix(null);
          resource.setName(getFixId(ifixInfo, xmlFileInfo));
          resource.setDisplayPolicy(DisplayPolicy.HIDDEN);
          resource.setWebDisplayPolicy(DisplayPolicy.HIDDEN);
  
          // create the provider info and store in local asset
          resource.setProviderName("IBM");
  
          // parse the jar manifest
          String appliesTo = parseManifestForAppliesTo(_jarPayload);
  
          // set the local extension information
          resource.setAppliesTo(appliesTo);
          resource.setProvideFix(getProvides(ifixInfo, xmlFileInfo)); // a list of fixed APARs
  
          // add the readme as an attachment
          resource.addAttachment(_readmePayload, AttachmentType.DOCUMENTATION);
  
          // Find the date with the most recent update date
          resource.setDate(getLatestDateOfAnyFile(ifixInfo, xmlFileInfo));
  
          // add content and upload
          addContent(resource, _jarPayload, _jarPayload.getName(), artifactMetadata, contentUrl);
  
          return resource;
      }