I'm tinkering with web3j and most of the things that I want to do succeed, however, I seem to not be able to listen to events.
I've extended the ballot.sol contract you get with a remix by adding an event VoteEnded, which is fired when a call is made to winningProposal and that works in the Remix JavaScript VM.
event VoteEnded();
...
function winningProposal() constant returns (uint8 winningProposal) {
uint256 winningVoteCount = 0;
for (uint8 proposal = 0; proposal < proposals.length; proposal++)
if (proposals[proposal].voteCount > winningVoteCount) {
winningVoteCount = proposals[proposal].voteCount;
winningProposal = proposal;
}
VoteEnded();
}
I am able to deploy this contract and vote etc. in Web3j. Then I added a filter to listen to VoteEnded. I did it like:
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contract.getContractAddress());
web3.ethLogObservable(filter).subscribe(new Action1<Log>() {
@Override
public void call(Log log) {
System.out.println("log.toString(): " + log.toString());
}
});
However, this doesn't print anything at all. What am I doing wrong?