code: protected Manifest getSubsystemManifest(String assetId) throws IOException {
          ZipFile zip = null;
          try {
              zip = DirectoryUtils.createZipFile(new File(_root, assetId));
              Enumeration<? extends ZipEntry> zipEntries = zip.entries();
              ZipEntry subsystemEntry = null;
              while (zipEntries.hasMoreElements()) {
                  ZipEntry nextEntry = zipEntries.nextElement();
                  if ("OSGI-INF/SUBSYSTEM.MF".equalsIgnoreCase(nextEntry.getName())) {
                      subsystemEntry = nextEntry;
                      break;
                  }
              }
              if (subsystemEntry == null) {
                  return null;
              } else {
                  return ManifestProcessor.parseManifest(zip.getInputStream(subsystemEntry));
              }
          } finally {
              if (zip != null) {
                  zip.close();
              }
          }
      }
docs: Gets the manifest file from an ESA
  
  @param assetId
  @return
  @throws IOException