private Collection doReloadResources(Collection resources) { if (debug) { DebugTrace.print(this, "reloadResources"); // $NON-NLS-1$ } if (library == null) { return Collections.EMPTY_LIST; } // check if resources to reload contains any elements cached in // LibraryService // to update them // LibraryService libSvc = (LibraryService) LibraryService.getInstance(); Resource currentLibResource = null; ILibraryManager currentLibMgr = null; Resource currentConfigResource = null; MethodConfiguration currentConfig = null; List configResources = new ArrayList(); List configs = new ArrayList(); for (Iterator iter = resources.iterator(); iter.hasNext(); ) { Resource resource = (Resource) iter.next(); MethodElement e = PersistenceUtil.getMethodElement(resource); if (e == libSvc.getCurrentMethodLibrary()) { currentLibMgr = libSvc.getCurrentLibraryManager(); currentLibResource = resource; } else if (e == libSvc.getCurrentMethodConfiguration()) { currentConfigResource = resource; currentConfig = libSvc.getCurrentMethodConfiguration(); } else if (e instanceof MethodConfiguration) { configResources.add(resource); configs.add(e); } } ILibraryResourceSet resourceSet = (ILibraryResourceSet) library.eResource().getResourceSet(); Collection reloadedResources = resourceSet.reloadResources(resources); if (!reloadedResources.isEmpty()) { if (currentLibResource != null || currentConfigResource != null) { // update cached elements in LibraryService and this library // manager // for (Iterator iter = reloadedResources.iterator(); iter.hasNext(); ) { Resource resource = (Resource) iter.next(); if (resource == currentLibResource) { MethodElement e = PersistenceUtil.getMethodElement(resource); if (e instanceof MethodLibrary) { MethodLibrary newLib = (MethodLibrary) e; libSvc.setCurrentMethodLibrary(newLib); if (currentLibMgr instanceof AbstractLibraryManager) { libSvc.removeLibraryManager(currentLibMgr); ((AbstractLibraryManager) currentLibMgr).updateMethodLibrary(newLib); libSvc.setLibraryManager(currentLibMgr); } } } if (resource == currentConfigResource) { MethodElement e = PersistenceUtil.getMethodElement(resource); if (e instanceof MethodConfiguration) { // remove config manager of old current config // libSvc.removeConfigurationManager(currentConfig); MethodConfiguration config = (MethodConfiguration) e; libSvc.setCurrentMethodConfiguration(config); } } else if (!configResources.isEmpty()) { int id = configResources.indexOf(resource); if (id != -1) { // remove config manager of old config // libSvc.removeConfigurationManager((MethodConfiguration) configs.get(id)); } } } } // TODO: Review implementation. Suppression.cleanUp(); } return reloadedResources; }