package blockchain.query; import blockchain.client.ChannelClientWrapper; import blockchain.client.FabricClientWrapper; import blockchain.configuration.Config; import blockchain.user.UserContext; import blockchain.utility.Util; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.hyperledger.fabric.sdk.ChaincodeID; import org.hyperledger.fabric.sdk.ChaincodeResponse; import org.hyperledger.fabric.sdk.ProposalResponse; import org.hyperledger.fabric.sdk.QueryByChaincodeRequest; import java.util.Collection; public class QueryWrapper { private static Logger logger = Logger.getLogger(QueryWrapper.class); public String sendQuery(String functionName,String[] args) throws Exception { BasicConfigurator.configure(); UserContext user = Util.readUserContext(Config.ORG1, "admin"); String response = null; FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); ChannelClientWrapper channelClientWrapper = ChannelClientWrapper.setupChannel(fabricClientWrapper); ChaincodeID chaincodeID = ChaincodeID.newBuilder().setName(Config.CHAINCODE_NAME).build(); QueryByChaincodeRequest queryByChaincodeRequest = fabricClientWrapper.getClient().newQueryProposalRequest(); queryByChaincodeRequest.setArgs(args); queryByChaincodeRequest.setFcn(functionName); queryByChaincodeRequest.setChaincodeID(chaincodeID); Collection queryProposals; try { queryProposals = channelClientWrapper.queryByChainCode(queryByChaincodeRequest); } catch (Exception e) { throw new Exception(e); } for (ProposalResponse proposalResponse : queryProposals) { if (!proposalResponse.isVerified() || proposalResponse.getStatus() != ChaincodeResponse.Status.SUCCESS) { logger.error("Failed query proposal from peer " + proposalResponse.getPeer().getName() + " status : " + proposalResponse.getStatus() + ". Message : " + proposalResponse.getMessage() + ". Was verified : " + proposalResponse.isVerified()); } else { response = new String(proposalResponse.getChaincodeActionResponsePayload()); logger.info("Query payload : " + response + " from peer : " + proposalResponse.getPeer().getName()); } } return response; } }