54 lines
2.4 KiB
Java
54 lines
2.4 KiB
Java
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<ProposalResponse> 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;
|
|
}
|
|
}
|