Corda внедрите обобщенный c запрос хранилища - PullRequest
0 голосов
/ 22 апреля 2020

Попытка создать этот обобщенный c метод запроса хранилища:

        <T extends ContractState> List<StateAndRef<T>> getStatesByLinearId(T stateType, Class<T> cl, String linearId) {
        List<UniqueIdentifier> linearIds = singletonList(UniqueIdentifier.Companion.fromString(linearId));
        QueryCriteria linearCriteriaAll = new QueryCriteria.LinearStateQueryCriteria(null, linearIds, Vault.StateStatus.UNCONSUMED, null);

        return getServiceHub().getVaultService().queryBy(cl, linearCriteriaAll).getStates();
    }

Я не уверен, как мне получить значение для класса. Например, я не уверен, как вызвать этот метод: getStatesByLinearId (IouState.class, ??, linearId)

1 Ответ

0 голосов
/ 22 апреля 2020

Помогает ли это?

IouState state; // Assuming IouState extends or implements ContractState

getStatesByLinearId(state, state.getClass(), linearId);
// or, if you know the class beforehand
getStatesByLinearId(state, IouState.class, linearId);
...