@Override public void stop() { // remove all listeners from the event manager and from the plugin. for (FermatEventListener listener : listenersAdded) eventManager.removeListener(listener); listenersAdded.clear(); // close all connections. communicationNetworkServiceConnectionManager.closeAllConnection(); // interrupt the registration agent execution communicationRegistrationProcessNetworkServiceAgent.stop(); // interrupt the executor agent execution cryptoPaymentRequestExecutorAgent.stop(); // set to not registered. register = Boolean.FALSE; this.serviceStatus = ServiceStatus.STOPPED; }
/** Service Interface implementation */ @Override public void start() throws CantStartPluginException { System.out.println("********* Crypto Payment Request: Starting. "); try { loadKeyPair(pluginFileSystem); } catch (CantLoadKeyPairException e) { errorManager.reportUnexpectedPluginException( this.getPluginVersionReference(), UnexpectedPluginExceptionSeverity.DISABLES_THIS_PLUGIN, e); throw new CantStartPluginException( e, "", "Problem trying to load the key pair of the plugin."); } /* * Validate required resources */ validateInjectedResources(); // initialize crypto payment request dao try { cryptoPaymentRequestNetworkServiceDao = new CryptoPaymentRequestNetworkServiceDao(pluginDatabaseSystem, pluginId); cryptoPaymentRequestNetworkServiceDao.initialize(); } catch (CantInitializeCryptoPaymentRequestNetworkServiceDatabaseException e) { CantStartPluginException pluginStartException = new CantStartPluginException( e, "", "Problem initializing crypto payment request network service dao."); errorManager.reportUnexpectedPluginException( this.getPluginVersionReference(), UnexpectedPluginExceptionSeverity.DISABLES_THIS_PLUGIN, pluginStartException); throw pluginStartException; } try { /* * Initialize the data base */ initializeCommunicationDb(); /* * Initialize listeners */ initializeListener(); /* * Verify if the communication cloud client is active */ if (!wsCommunicationsCloudClientManager.isDisable()) { /* * Initialize the agent and start */ communicationRegistrationProcessNetworkServiceAgent = new CommunicationRegistrationProcessNetworkServiceAgent( this, wsCommunicationsCloudClientManager.getCommunicationsCloudClientConnection()); communicationRegistrationProcessNetworkServiceAgent.start(); } remoteNetworkServicesRegisteredList = new CopyOnWriteArrayList<>(); // change message state to process again first time reprocessMessage(); // declare a schedule to process waiting request message Timer timer = new Timer(); timer.schedule( new TimerTask() { @Override public void run() { // change message state to process retry later reprocessMessage(); } }, 2 * 3600 * 1000); /* * Its all ok, set the new status */ this.serviceStatus = ServiceStatus.STARTED; } catch (CantInitializeNetworkServiceDatabaseException exception) { StringBuffer contextBuffer = new StringBuffer(); contextBuffer.append("Plugin ID: " + pluginId); contextBuffer.append(CantStartPluginException.CONTEXT_CONTENT_SEPARATOR); contextBuffer.append( "Database Name: " + CommunicationNetworkServiceDatabaseConstants.DATA_BASE_NAME); String context = contextBuffer.toString(); String possibleCause = "The Template Database triggered an unexpected problem that wasn't able to solve by itself"; CantStartPluginException pluginStartException = new CantStartPluginException( CantStartPluginException.DEFAULT_MESSAGE, exception, context, possibleCause); errorManager.reportUnexpectedPluginException( this.getPluginVersionReference(), UnexpectedPluginExceptionSeverity.DISABLES_THIS_PLUGIN, pluginStartException); throw pluginStartException; } System.out.println("********* Crypto Payment Request: Successful start. "); }