All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hyperledger.composer.bna.util.BnaGenerator Maven / Gradle / Ivy

The newest version!
/*
 * Copyright IBM Corp. 2017 All Rights Reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

package org.hyperledger.composer.bna.util;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.hyperledger.composer.ComposerException;
import org.hyperledger.composer.bna.part.AclPart;
import org.hyperledger.composer.bna.part.BnaPart;
import org.hyperledger.composer.bna.part.PackageJsonPart;
import org.hyperledger.composer.bna.part.QueryPart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class BnaGenerator {

  private static final Logger logger = LoggerFactory.getLogger(BnaGenerator.class);

  private JavaParser javaParser;
  private ZipHolder zipHolder;
  private String packageJsonName;
  private String packageJsonVersion;
  private String packageJsonDescription;

  /**
   * bna file generator.
   *
   * @param javaParser java parser
   * @param zipHolder zip holder
   * @param packageJsonName package json name
   * @param packageJsonVersion package json version
   * @param packageJsonDescription package json description
   */
  public BnaGenerator(JavaParser javaParser, ZipHolder zipHolder, String packageJsonName,
      String packageJsonVersion, String packageJsonDescription) {
    this.javaParser = javaParser;
    this.zipHolder = zipHolder;
    this.packageJsonName = packageJsonName;
    this.packageJsonVersion = packageJsonVersion;
    this.packageJsonDescription = packageJsonDescription;
  }

  /**
   * generate bna file.
   *
   * @throws ComposerException if error occurs
   */
  public void generate() throws ComposerException {
    try {
      List bnaParts = new LinkedList<>(javaParser.parseCtoModel());
      QueryPart queryPart = javaParser.parseQueryModel();
      if (queryPart != null) {
        bnaParts.add(queryPart);
      }
      bnaParts
          .add(new PackageJsonPart(packageJsonName, packageJsonVersion, packageJsonDescription));
      bnaParts.add(new AclPart());
      for (BnaPart part : bnaParts) {
        logger.info("add bna part {}: {}", part.entryName(), part.toString());
        zipHolder.addPart(part.entryName(), part.toString().getBytes());
      }
      zipHolder.end();
    } catch (IOException e) {
      throw new ComposerException(e.getMessage());
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy