package com.msgilligan.bitcoinj.daemon.config;
import com.googlecode.jsonrpc4j.spring.JsonServiceExporter;
import com.msgilligan.bitcoinj.rpcserver.BitcoinJsonRpc;
import com.msgilligan.bitcoinj.json.conversion.RpcServerModule;
import com.msgilligan.bitcoinj.spring.service.PeerGroupService;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.net.discovery.DnsDiscovery;
import org.bitcoinj.net.discovery.PeerDiscovery;
import org.bitcoinj.params.MainNetParams;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.databind.Module;
import java.io.FileNotFoundException;
/**
* Spring configuration for bitcoinj, Bitcoin services, and JSON-RPC server
*/
@Configuration
public class BitcoinConfig {
@Bean
public NetworkParameters networkParameters() {
return MainNetParams.get();
}
@Bean
public PeerDiscovery peerDiscovery(NetworkParameters params) throws FileNotFoundException {
PeerDiscovery pd;
pd = new DnsDiscovery(params);
// pd = new SeedPeers(params);
return pd;
}
@Bean
public Module bitcoinJMapper() {
return new RpcServerModule();
}
@Bean
public PeerGroupService peerGroupService(NetworkParameters params, PeerDiscovery peerDiscovery) {
return new PeerGroupService(params, peerDiscovery);
}
@Bean(name="/")
public JsonServiceExporter bitcoinServiceExporter(PeerGroupService peerGroupService) {
JsonServiceExporter exporter = new JsonServiceExporter();
exporter.setService(peerGroupService);
exporter.setServiceInterface(BitcoinJsonRpc.class);
exporter.setBackwardsComaptible(true);
return exporter;
}
}