code: @Override
      public String toCpe22Uri() throws CpeEncodingException {
          StringBuilder sb = new StringBuilder("cpe:/");
          sb.append(Convert.wellFormedToCpeUri(part)).append(":");
          sb.append(Convert.wellFormedToCpeUri(vendor)).append(":");
          sb.append(Convert.wellFormedToCpeUri(product)).append(":");
          sb.append(Convert.wellFormedToCpeUri(version)).append(":");
          sb.append(Convert.wellFormedToCpeUri(update)).append(":");
          //pack the extra fields from CPE 2.3 into the edition field if present
          //when outputing to 2.2 format
          if (!((swEdition.isEmpty() || "*".equals(swEdition))
                  && (targetSw.isEmpty() || "*".equals(targetSw))
                  && (targetHw.isEmpty() || "*".equals(targetHw))
                  && (other.isEmpty() || "*".equals(other)))) {
              sb.append("~")
                      .append(Convert.wellFormedToCpeUri(edition))
                      .append("~")
                      .append(Convert.wellFormedToCpeUri(swEdition))
                      .append("~")
                      .append(Convert.wellFormedToCpeUri(targetSw))
                      .append("~")
                      .append(Convert.wellFormedToCpeUri(targetHw))
                      .append("~")
                      .append(Convert.wellFormedToCpeUri(other))
                      .append(":");
          } else {
              sb.append(Convert.wellFormedToCpeUri(edition)).append(":");
          }
          sb.append(Convert.wellFormedToCpeUri(language));
          return sb.toString().replaceAll("[:]*$", "");
      }
docs: Converts the CPE into the CPE 2.2 URI format.
  
  @return the CPE 2.2 URI format of the CPE
  @throws CpeEncodingException thrown if the CPE is not well formed