protected ModuleFacetBase setupFacet(ModuleFacetBase facet, Memento memento) { if (!facet.setModule(this)) { return null; } facet.load(memento != null ? memento : new MementoImpl()); facet.attach(); return facet; }
@Override public void dispose() { assertCanChange(); LOG.trace("Disposing the module " + this); myFileSystem.removeListener(this); for (ModuleFacetBase f : myFacets) { f.dispose(); } myFacets.clear(); for (ModelRoot m : mySModelRoots) { ((ModelRootBase) m).dispose(); } mySModelRoots.clear(); super.dispose(); }
protected void updateFacets() { assertCanChange(); ModuleDescriptor descriptor = getModuleDescriptor(); if (descriptor == null) { return; } for (ModuleFacetBase facet : myFacets) { facet.dispose(); } myFacets.clear(); Map<String, Memento> config = new HashMap<String, Memento>(); for (ModuleFacetDescriptor facetDescriptors : descriptor.getModuleFacetDescriptors()) { config.put(facetDescriptors.getType(), facetDescriptors.getMemento()); } Set<String> types = new HashSet<String>(); collectMandatoryFacetTypes(types); types.addAll(config.keySet()); for (String facetType : types) { FacetFactory factory = FacetsFacade.getInstance().getFacetFactory(facetType); if (factory == null) { LOG.error("no registered factory for a facet with type=`" + facetType + "'"); continue; } SModuleFacet newFacet = factory.create(); if (!(newFacet instanceof ModuleFacetBase)) { LOG.error("broken facet factory: " + factory.getClass().getName()); continue; } ModuleFacetBase facet = (ModuleFacetBase) newFacet; Memento m = config.get(facetType); facet = setupFacet(facet, m); if (facet != null) { myFacets.add(facet); } } }