@Override public void add(DeploymentModuleIdentifier identifier, ModuleDeployment deployment) { final List<DeploymentRepositoryListener> listeners; final boolean suspended; synchronized (this) { final Map<DeploymentModuleIdentifier, DeploymentHolder> modules = new HashMap<DeploymentModuleIdentifier, DeploymentHolder>(this.modules); modules.put(identifier, new DeploymentHolder(deployment)); this.modules = Collections.unmodifiableMap(modules); listeners = new ArrayList<DeploymentRepositoryListener>(this.listeners); suspended = this.suspended; } for (final DeploymentRepositoryListener listener : listeners) { try { listener.deploymentAvailable(identifier, deployment); if (suspended) { listener.deploymentSuspended(identifier); } } catch (Throwable t) { EjbLogger.DEPLOYMENT_LOGGER.deploymentAddListenerException(t); } } }
@Override public void remove(DeploymentModuleIdentifier identifier) { final List<DeploymentRepositoryListener> listeners; synchronized (this) { final Map<DeploymentModuleIdentifier, DeploymentHolder> modules = new HashMap<DeploymentModuleIdentifier, DeploymentHolder>(this.modules); modules.remove(identifier); this.modules = Collections.unmodifiableMap(modules); listeners = new ArrayList<DeploymentRepositoryListener>(this.listeners); } for (final DeploymentRepositoryListener listener : listeners) { try { listener.deploymentRemoved(identifier); } catch (Throwable t) { EjbLogger.DEPLOYMENT_LOGGER.deploymentRemoveListenerException(t); } } }
@Override public void addListener(final DeploymentRepositoryListener listener) { synchronized (this) { listeners.add(listener); } listener.listenerAdded(this); }
public synchronized void add(DeploymentModuleIdentifier identifier, ModuleDeployment deployment) { final Map<DeploymentModuleIdentifier, ModuleDeployment> modules = new HashMap<DeploymentModuleIdentifier, ModuleDeployment>(this.modules); modules.put(identifier, deployment); this.modules = Collections.unmodifiableMap(modules); for(final DeploymentRepositoryListener listener : listeners) { try { listener.deploymentAvailable(identifier, deployment); } catch (Throwable t) { EjbLogger.ROOT_LOGGER.deploymentAddListenerException(t); } } }
@Override public void suspend() { final List<DeploymentRepositoryListener> listeners; final Set<DeploymentModuleIdentifier> moduleIdentifiers; synchronized (this) { moduleIdentifiers = new HashSet<>(this.modules.keySet()); listeners = new ArrayList<>(this.listeners); suspended = true; } for (final DeploymentRepositoryListener listener : listeners) { for (DeploymentModuleIdentifier moduleIdentifier : moduleIdentifiers) try { listener.deploymentSuspended(moduleIdentifier); } catch (Throwable t) { EjbLogger.DEPLOYMENT_LOGGER.deploymentAddListenerException(t); } } }
@Override public boolean startDeployment(DeploymentModuleIdentifier identifier) { DeploymentHolder deployment; final List<DeploymentRepositoryListener> listeners; synchronized (this) { deployment = modules.get(identifier); if (deployment == null) return false; deployment.started = true; listeners = new ArrayList<DeploymentRepositoryListener>(this.listeners); } for (final DeploymentRepositoryListener listener : listeners) { try { listener.deploymentStarted(identifier, deployment.deployment); } catch (Throwable t) { EjbLogger.DEPLOYMENT_LOGGER.deploymentAddListenerException(t); } } return true; }
@Override public void resume() { final List<DeploymentRepositoryListener> listeners; final Set<DeploymentModuleIdentifier> moduleIdentifiers; synchronized (this) { moduleIdentifiers = new HashSet<>(this.modules.keySet()); listeners = new ArrayList<>(this.listeners); suspended = false; } for (final DeploymentRepositoryListener listener : listeners) { for (DeploymentModuleIdentifier moduleIdentifier : moduleIdentifiers) try { listener.deploymentResumed(moduleIdentifier); } catch (Throwable t) { EjbLogger.DEPLOYMENT_LOGGER.deploymentAddListenerException(t); } } }
public synchronized void addListener(final DeploymentRepositoryListener listener) { listener.listenerAdded(this); listeners.add(listener); }
public synchronized void remove(DeploymentModuleIdentifier identifier) { final Map<DeploymentModuleIdentifier, ModuleDeployment> modules = new HashMap<DeploymentModuleIdentifier, ModuleDeployment>(this.modules); modules.remove(identifier); this.modules = Collections.unmodifiableMap(modules); for(final DeploymentRepositoryListener listener : listeners) { try { listener.deploymentRemoved(identifier); } catch (Throwable t) { EjbLogger.ROOT_LOGGER.deploymentRemoveListenerException(t); } } }