@Override
  public ProductMessage onVersionMessage(List<Message> messages) throws ParseException {
    VersionMessage version = Messages.getVersionMessage(messages);
    if (!version.getLanguage().equals(JAVA)) {
      throw new IllegalArgumentException("wrong language in version message");
    }
    ProductMessage ast = Messages.getProductMessage(messages, AST, JAVA);
    if (!ast.getLanguage().equals(JAVA)) {
      throw new IllegalArgumentException("wrong language in ast product message");
    }
    NonTerminal root = (NonTerminal) ASTs.decode(ast);

    OutlineTrimmer trimmer = new OutlineTrimmer();
    root.accept(trimmer);

    return new ProductMessage(
        version.getVersionId(),
        new LongKey(1),
        version.getSource(),
        OUTLINE,
        JAVA,
        Outlines.encode(trimmer.getConverted()),
        new ProductDependency(ast));
  }
Example #2
0
 public static ProductMessage getProductMessage(
     List<Message> messages, Product product, Language language) {
   if (messages == null) throw new IllegalArgumentException("Message list was null");
   ProductMessage productMessage =
       messages
           .stream()
           .filter(
               msg -> {
                 if (msg instanceof ProductMessage) {
                   ProductMessage msg1 = (ProductMessage) msg;
                   return msg1.getProduct().equals(product) && msg1.getLanguage().equals(language);
                 } else {
                   return false;
                 }
               })
           .findAny()
           .map(msg -> (ProductMessage) msg)
           .get();
   if (productMessage == null) {
     throw new IllegalArgumentException(
         String.format("ProductMessage missing: %s, %s", product, language));
   }
   return productMessage;
 }