mirror of
https://github.com/Qortal/qortal.git
synced 2025-04-23 11:27:51 +00:00
Added more global parameters to /admin/unused API endpoint (formally /admin/dud) and also managed to remove /admin/unused from API documentation UI. Added results slicing to /assets/all Added /assets/orderbook API call that returns open asset orders Added /assets/trades that returns successful asset trades Added POST /assets/issue stub Unified HSQLDB connectionUrl to public variable inside Controller class. Can't deploy v1 ATs with isFinished=true flag as that prevents later transactions sending messages (during import of v1 chain). Some future hard-fork code will need to set all v1 ATs to "finished". Changed DB's "TransactionRecipients" to "TransactionParticipants" to properly support API call to find all transactions 'involving' a specific address. Support code needed in Block and Transaction with some transaction-specific overrides for Genesis and AT transactions. Removed old, deprecated calls from Transaction/TransactionRepository Moved HSQLDB database properties from connection URL to explicit SQL statements in HSQLDBDatabaseUpdates. They didn't work in connection URL during DB creation anyway. Retrofitted HSQLDB Accounts table with public_key column instead of rebuilding it later. Fixed incorrect comments in IssueAssetTransactionTransformer regarding v1 serialization for signing. Re-imported v1 chain to test latest changes.
72 lines
1.7 KiB
Java
72 lines
1.7 KiB
Java
package controller;
|
|
|
|
import api.ApiService;
|
|
import repository.DataException;
|
|
import repository.RepositoryFactory;
|
|
import repository.RepositoryManager;
|
|
import repository.hsqldb.HSQLDBRepositoryFactory;
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
public class Controller {
|
|
|
|
private static final Logger LOGGER = LogManager.getLogger(Controller.class);
|
|
|
|
public static final String connectionUrl = "jdbc:hsqldb:file:db/blockchain;create=true";
|
|
|
|
public static final long startTime = System.currentTimeMillis();
|
|
private static final Object shutdownLock = new Object();
|
|
private static boolean isStopping = false;
|
|
|
|
public static void main(String args[]) {
|
|
LOGGER.info("Starting up...");
|
|
|
|
LOGGER.info("Starting repository");
|
|
try {
|
|
RepositoryFactory repositoryFactory = new HSQLDBRepositoryFactory(connectionUrl);
|
|
RepositoryManager.setRepositoryFactory(repositoryFactory);
|
|
} catch (DataException e) {
|
|
LOGGER.error("Unable to start repository", e);
|
|
System.exit(1);
|
|
}
|
|
|
|
LOGGER.info("Starting API");
|
|
try {
|
|
ApiService apiService = ApiService.getInstance();
|
|
apiService.start();
|
|
} catch (Exception e) {
|
|
LOGGER.error("Unable to start API", e);
|
|
System.exit(1);
|
|
}
|
|
|
|
Runtime.getRuntime().addShutdownHook(new Thread() {
|
|
@Override
|
|
public void run() {
|
|
Controller.shutdown();
|
|
}
|
|
});
|
|
}
|
|
|
|
public static void shutdown() {
|
|
synchronized (shutdownLock) {
|
|
if (!isStopping) {
|
|
isStopping = true;
|
|
|
|
LOGGER.info("Shutting down API");
|
|
ApiService.getInstance().stop();
|
|
|
|
try {
|
|
LOGGER.info("Shutting down repository");
|
|
RepositoryManager.closeRepositoryFactory();
|
|
} catch (DataException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
LOGGER.info("Shutdown complete!");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|