package org.pieShare.pieShareAppFx;
import ch.qos.logback.classic.LoggerContext;
import javafx.application.Application;
import static javafx.application.Application.launch;
import static javafx.application.Application.launch;
import javafx.stage.Stage;
import org.pieShare.pieShareApp.service.PieShareService;
import org.pieShare.pieShareApp.springConfiguration.PiePlateConfiguration;
import org.pieShare.pieShareApp.springConfiguration.PieShareApp.PieShareAppModel;
import org.pieShare.pieShareApp.springConfiguration.PieShareApp.PieShareAppService;
import org.pieShare.pieShareApp.springConfiguration.PieShareApp.PieShareAppTasks;
import org.pieShare.pieShareApp.springConfiguration.PieUtilitiesConfiguration;
import org.pieShare.pieShareAppFx.springConfiguration.PieShareAppFx;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainApp extends Application {
AnnotationConfigApplicationContext context;
@Override
public void start(Stage stage) throws Exception {
//todo: we have to determine if setting IPv4 is really neccessary or not!!!
//todo: info: the travis ci buildserver runs with IPv6 there setting the IPv4 property causes problem!!!
//todo: info: see also http://docs.travis-ci.com/user/ci-environment/
//System.setProperty("java.net.preferIPv4Stack", "true");
System.setProperty("jgroups.logging.log_factory_class", "org.pieShare.pieTools.piePlate.service.cluster.jgroupsCluster.JGroupsLoggerFactory");
context = new AnnotationConfigApplicationContext();
context.register(PieUtilitiesConfiguration.class);
context.register(PiePlateConfiguration.class);
context.register(PieShareAppModel.class);
context.register(PieShareAppService.class);
context.register(PieShareAppTasks.class);
context.register(PieShareAppFx.class);
context.refresh();
context.registerShutdownHook();
FXMLController controller = context.getBean(FXMLController.class);
controller.setMainStage(stage);
}
@Override
public void stop() throws Exception {
PieShareService app = context.getBean(PieShareService.class);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.stop();
app.stop();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}