diff options
Diffstat (limited to 'build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java')
-rw-r--r-- | build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java index d965bfacfcb..23d6a5c99c3 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/DiscoveredPathManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2007 QNX Software Systems and others. + * Copyright (c) 2004, 2009 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -7,6 +7,7 @@ * * Contributors: * QNX Software Systems - initial API and implementation + * IBM Corporation *******************************************************************************/ package org.eclipse.cdt.make.internal.core.scannerconfig; @@ -247,11 +248,7 @@ public class DiscoveredPathManager implements IDiscoveredPathManager, IResourceC fireUpdate(INFO_CHANGED, info); if(updateContainer){ -// ICProject cProject = CoreModel.getDefault().create(info.getProject()); -// if (cProject != null) { -// CoreModel.setPathEntryContainer(new ICProject[]{cProject}, -// new DiscoveredPathContainer(info.getProject()), null); -// } + IScannerConfigBuilderInfo2 buildInfo = ScannerConfigProfileManager.createScannerConfigBuildInfo2(project); String profileId = buildInfo.getSelectedProfileId(); ScannerConfigScope profileScope = ScannerConfigProfileManager.getInstance(). @@ -265,6 +262,44 @@ public class DiscoveredPathManager implements IDiscoveredPathManager, IResourceC } } } + + /** + * Allows one to update the discovered information for a particular scanner discovery profile ID. + * TODO: This should be made API in IDiscoveredPathManager, or in an interface derived there from. + * + * @param context + * @param info + * @param updateContainer + * @param changedResources + * @param profileId + * @throws CoreException + */ + public void updateDiscoveredInfo(InfoContext context, IDiscoveredPathInfo info, boolean updateContainer, List<IResource> changedResources, String profileId) throws CoreException { + DiscoveredInfoHolder holder = getHolder(info.getProject(), true); + IDiscoveredPathInfo oldInfo = holder.getInfo(context); + if (oldInfo != null) { + IDiscoveredScannerInfoSerializable serializable = info.getSerializable(); + if (serializable != null) { + holder.setInfo(context, info); + IProject project = info.getProject(); + DiscoveredScannerInfoStore.getInstance().saveDiscoveredScannerInfoToState(project, context, serializable); + fireUpdate(INFO_CHANGED, info); + + if(updateContainer){ + + IScannerConfigBuilderInfo2 buildInfo = ScannerConfigProfileManager.createScannerConfigBuildInfo2(project); + + ScannerConfigScope profileScope = ScannerConfigProfileManager.getInstance(). + getSCProfileConfiguration(profileId).getProfileScope(); + changeDiscoveredContainer(project, profileScope, changedResources); + } + } + else { + throw new CoreException(new Status(IStatus.ERROR, MakeCorePlugin.getUniqueIdentifier(), -1, + MakeMessages.getString("DiscoveredPathManager.Info_Not_Serializable"), null)); //$NON-NLS-1$ + } + } + } /* (non-Javadoc) * @see org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager#changeDiscoveredContainer(org.eclipse.core.resources.IProject, java.lang.String) |