Search in sources :

Example 11 with Tuple2

use of org.fisco.bcos.web3j.tuples.generated.Tuple2 in project web3sdk by FISCO-BCOS.

the class TransactionDecoder method decodeEventReturnObject.

public Tuple2<AbiDefinition, List<EventResultEntity>> decodeEventReturnObject(Log log) throws BaseException, IOException {
    Tuple2<AbiDefinition, List<EventResultEntity>> result = null;
    // decode log
    List<AbiDefinition> abiDefinitions = ContractAbiUtil.getEventAbiDefinitions(abi);
    for (AbiDefinition abiDefinition : abiDefinitions) {
        String eventSignature = EventEncoder.buildEventSignature(decodeMethodSign(abiDefinition));
        List<String> topics = log.getTopics();
        if ((null == topics) || topics.isEmpty() || !topics.get(0).equals(eventSignature)) {
            continue;
        }
        EventValues eventValued = ContractAbiUtil.decodeEvent(log, abiDefinition);
        if (null != eventValued) {
            List<EventResultEntity> resultEntityList = new ArrayList<EventResultEntity>();
            List<NamedType> inputs = abiDefinition.getInputs();
            List<NamedType> indexedInputs = inputs.stream().filter(NamedType::isIndexed).collect(Collectors.toList());
            List<NamedType> nonIndexedInputs = inputs.stream().filter(p -> !p.isIndexed()).collect(Collectors.toList());
            for (int i = 0; i < indexedInputs.size(); i++) {
                EventResultEntity eventEntity = new EventResultEntity(indexedInputs.get(i).getName(), indexedInputs.get(i).getType(), true, eventValued.getIndexedValues().get(i));
                resultEntityList.add(eventEntity);
            }
            for (int i = 0; i < nonIndexedInputs.size(); i++) {
                EventResultEntity eventEntity = new EventResultEntity(nonIndexedInputs.get(i).getName(), nonIndexedInputs.get(i).getType(), false, eventValued.getNonIndexedValues().get(i));
                resultEntityList.add(eventEntity);
            }
            result = new Tuple2<AbiDefinition, List<EventResultEntity>>(abiDefinition, resultEntityList);
            break;
        }
    }
    return result;
}
Also used : EventValues(org.fisco.bcos.web3j.abi.EventValues) AbiDefinition(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition) Logger(org.slf4j.Logger) FunctionEncoder(org.fisco.bcos.web3j.abi.FunctionEncoder) EventEncoder(org.fisco.bcos.web3j.abi.EventEncoder) ObjectMapperFactory(org.fisco.bcos.web3j.protocol.ObjectMapperFactory) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Log(org.fisco.bcos.web3j.protocol.core.methods.response.Log) Tuple2(org.fisco.bcos.web3j.tuples.generated.Tuple2) LoggerFactory(org.slf4j.LoggerFactory) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) CollectionType(com.fasterxml.jackson.databind.type.CollectionType) IOException(java.io.IOException) HashMap(java.util.HashMap) EventValues(org.fisco.bcos.web3j.abi.EventValues) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) TypeReference(org.fisco.bcos.web3j.abi.TypeReference) List(java.util.List) Type(org.fisco.bcos.web3j.abi.datatypes.Type) Map(java.util.Map) NamedType(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition.NamedType) FunctionReturnDecoder(org.fisco.bcos.web3j.abi.FunctionReturnDecoder) Function(org.fisco.bcos.web3j.abi.datatypes.Function) NamedType(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition.NamedType) ArrayList(java.util.ArrayList) AbiDefinition(org.fisco.bcos.web3j.protocol.core.methods.response.AbiDefinition) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

Tuple2 (org.fisco.bcos.web3j.tuples.generated.Tuple2)11 Type (org.fisco.bcos.web3j.abi.datatypes.Type)8 TypeReference (org.fisco.bcos.web3j.abi.TypeReference)7 Function (org.fisco.bcos.web3j.abi.datatypes.Function)7 Utf8String (org.fisco.bcos.web3j.abi.datatypes.Utf8String)7 EncryptType (org.fisco.bcos.web3j.crypto.EncryptType)4 ArrayList (java.util.ArrayList)3 RateLimiter (com.google.common.util.concurrent.RateLimiter)2 BigInteger (java.math.BigInteger)2 Map (java.util.Map)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 CollectionType (com.fasterxml.jackson.databind.type.CollectionType)1 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)1 BufferedReader (java.io.BufferedReader)1 BufferedWriter (java.io.BufferedWriter)1 File (java.io.File)1 FileReader (java.io.FileReader)1 FileWriter (java.io.FileWriter)1