windowManager = windowManagerIterator.next();
log.info("Trobat un proveidor de servei de gestió d'UI: {}", splashScreenManager.getClass().getName());
}
else{
log.error("No s'ha trobat cap proveidor de servei de gestió d'UI");
throw new ApplicationException("No s'ha trobat cap proveidor de servei de gestió d'UI");
}
if(splashScreenManager!=null){
splashScreenManager.drawSplashScreenProgress(STARTUP_PROGRESS_INITIAL_VALUE, "Inicialitzant aplicació...");
}
// Es configura el gestor d'errors per defecte per tal de controlar els errors inesperats
DefaultExceptionHandler exceptionHandler = new DefaultExceptionHandler();
exceptionHandler.addErrorNotificationListener(new DefaultExceptionHandler.IErrorNotificationListener()
{
@Override
public void errorNotified(String message, Throwable error)
{
try{
windowManager.displayErrorMessage(message, error);
}
catch(Exception e){
log.warn("Error obtenint la referència del manager de la finestra principal: {}", e.getMessage(), e);
windowManager.displayStandaloneErrorMessage(message, error);
}
}
});
Thread.setDefaultUncaughtExceptionHandler(exceptionHandler);
if(splashScreenManager!=null){
splashScreenManager.drawSplashScreenProgress(STARTUP_PROGRESS_LOADING_CONTEXT, "Carregant contexte...");
}
ApplicationContext applicationContext = ApplicationContext.getInstance();
try{
// Es recuperen les definicions de l'aplicació / plugins
Enumeration<URL> applicationFiles = this.getClass().getClassLoader().getResources(APPLICATION_DEFINITION_FILE);
if(!applicationFiles.hasMoreElements()){
throw new ApplicationException("No s'ha trobat el fitxer de definició de l'aplicació");
}
URL applicationFileUrl = applicationFiles.nextElement();
if(applicationFiles.hasMoreElements()){
throw new ApplicationException("S'han trobat més d'un fitxer de definició per l'aplicació");
}
DefaultDefinitionBuilder builder = new DefaultDefinitionBuilder();
ApplicationDefinition applicationDefinition = builder.buildDefinition(applicationFileUrl);
applicationContext.addDefinition(applicationDefinition);
Enumeration<URL> pluginFiles = this.getClass().getClassLoader().getResources(PLUGIN_DEFINITION_FILE);
while(pluginFiles.hasMoreElements()){
URL pluginFileURL = pluginFiles.nextElement();
PluginDefinition pluginDefinition = builder.buildDefinition(pluginFileURL);
applicationContext.addDefinition(pluginDefinition);
}
}
catch(Exception e){
log.error("Error recuperant la definició de l'aplicació: {}", e.getMessage(), e);
throw new ApplicationException("Error recuperant la definició de l'aplicació: " + e.getMessage(), e);
}
// Inicialització dels serveis bàsics
ModuleDefinition moduleDefinition = new ModuleDefinition();
moduleDefinition.setId(CoreStartupModule.ID);
moduleDefinition.setClassName(CoreStartupModule.class.getName());