/** * Remove an application * * @param application * @param user * @return * @throws ServiceException */ @Override @Transactional public Application remove(Application application, User user) throws ServiceException, CheckException { try { logger.info("Starting removing application " + application.getName()); // Delete all modules List<Module> listModules = application.getModules(); for (Module module : listModules) { try { moduleService.remove(application, user, module, false, application.getStatus()); } catch (ServiceException | CheckException e) { application.setStatus(Status.FAIL); logger.error( "ApplicationService Error : failed to remove module " + module.getName() + " for application " + application.getName() + " : " + e); e.printStackTrace(); } } // Delete all alias List<String> aliases = new ArrayList<>(); aliases.addAll(application.getAliases()); for (String alias : aliases) { removeAlias(application, alias); } // Delete all servers List<Server> listServers = application.getServers(); for (Server server : listServers) { serverService.remove(server.getName()); if (listServers.indexOf(server) == listServers.size() - 1) { hipacheRedisUtils.removeRedisAppKey(application); applicationDAO.delete(server.getApplication()); portUtils.releaseProxyPorts(application); } } logger.info("ApplicationService : Application successfully removed "); } catch (PersistenceException e) { setStatus(application, Status.FAIL); logger.error( "ApplicationService Error : failed to remove " + application.getName() + " : " + e); throw new ServiceException(e.getLocalizedMessage(), e); } catch (ServiceException e) { setStatus(application, Status.FAIL); logger.error( "ApplicationService Error : failed to remove application " + application.getName() + " : " + e); } return application; }