private void loadInitializer(final Metadata metadata, final int index, final Command callback) { if (index < initializers.size()) { final SessionInitializer bean = initializers.get(index); bean.init(metadata, () -> { loadInitializer(metadata, index + 1, callback); }); } else { callback.execute(); } }
@Override public void destroy() { sessionLoader.destroy(); // Destroy listeners. removeListeners(); // Destroy controls. canvasControls.forEach(this::destroyCanvasControl); canvasControls.clear(); canvasControlTypes.clear(); canvasHandlerControls.forEach(this::destroyCanvasHandlerControl); canvasHandlerControls.clear(); canvasHandlerControlTypes.clear(); canvasControlInstances.destroyAll(); canvasHandlerControlInstances.destroyAll(); // Destroy canvas. canvasHandler.destroy(); canvasInstances.destroyAll(); canvasHandlerInstances.destroyAll(); canvas = null; canvasHandler = null; shapeListener = null; elementListener = null; canvasControlRegistered = null; canvasControlDestroyed = null; canvasHandlerControlRegistered = null; canvasHandlerControlDestroyed = null; }
public void load(final Metadata metadata, final ParameterizedCommand<StunnerPreferences> completeCallback, final ParameterizedCommand<Throwable> errorCallback) { final String definitionSetId = metadata.getDefinitionSetId(); final Annotation qualifier = definitionUtils.getQualifier(definitionSetId); preferencesRegistryLoader.load(metadata, prefs -> { loadInitializers(metadata, qualifier, () -> { completeCallback.execute(prefs); }); }, errorCallback); }
@Override public void init(final Metadata metadata, final Command callback) { if (null != canvas) { throw new IllegalStateException("Session is already loaded!"); } sessionLoader.load(metadata, prefs -> { // Obtain the right qualified types. final Annotation qualifier = definitionUtils.getQualifier(metadata.getDefinitionSetId()); canvas = lookup(canvasInstances, qualifier); canvasHandler = lookup(canvasHandlerInstances, qualifier); canvasControlRegistrationEntries .forEach(entry -> registerCanvasControlEntry(entry, qualifier)); canvasHandlerControlRegistrationEntries .forEach(entry -> registerCanvasHandlerControlEntry(entry, qualifier)); callback.execute(); }, throwable -> { if (LogConfiguration.loggingIsEnabled()) { LOGGER.log(Level.SEVERE, "An error was produced during StunnerPreferences initialization.", throwable); } throw new RuntimeException(throwable); }); }
private void loadInitializers(final Metadata metadata, final Annotation qualifier, final Command callback) { initializerInstances.select(DefinitionManager.DEFAULT_QUALIFIER).forEach(initializers::add); initializerInstances.select(qualifier).forEach(initializers::add); loadInitializer(metadata, 0, callback); }