mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-09 09:15:38 +02:00
NLS-style string resources.
This commit is contained in:
parent
f3b4634427
commit
bd51ec8825
11 changed files with 684 additions and 860 deletions
|
@ -34,15 +34,15 @@ public class CDirectorySourceContainerType extends AbstractSourceContainerTypeDe
|
||||||
if ("directory".equals(element.getNodeName())) { //$NON-NLS-1$
|
if ("directory".equals(element.getNodeName())) { //$NON-NLS-1$
|
||||||
String string = element.getAttribute("path"); //$NON-NLS-1$
|
String string = element.getAttribute("path"); //$NON-NLS-1$
|
||||||
if (string == null || string.length() == 0) {
|
if (string == null || string.length() == 0) {
|
||||||
abort( InternalSourceLookupMessages.getString( "CDirectorySourceContainerType.0" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.CDirectorySourceContainerType_0, null);
|
||||||
}
|
}
|
||||||
String nest = element.getAttribute("nest"); //$NON-NLS-1$
|
String nest = element.getAttribute("nest"); //$NON-NLS-1$
|
||||||
boolean nested = "true".equals(nest); //$NON-NLS-1$
|
boolean nested = "true".equals(nest); //$NON-NLS-1$
|
||||||
return new DirectorySourceContainer(new Path(string), nested);
|
return new DirectorySourceContainer(new Path(string), nested);
|
||||||
}
|
}
|
||||||
abort( InternalSourceLookupMessages.getString( "CDirectorySourceContainerType.1" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.CDirectorySourceContainerType_1, null);
|
||||||
}
|
}
|
||||||
abort( InternalSourceLookupMessages.getString( "CDirectorySourceContainerType.2" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.CDirectorySourceContainerType_2, null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import com.ibm.icu.text.MessageFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
@ -38,6 +37,7 @@ import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.IStatus;
|
import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
import org.eclipse.core.runtime.Status;
|
import org.eclipse.core.runtime.Status;
|
||||||
|
import org.eclipse.osgi.util.NLS;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
|
@ -50,8 +50,7 @@ import org.xml.sax.SAXException;
|
||||||
*
|
*
|
||||||
* @since Sep 23, 2002
|
* @since Sep 23, 2002
|
||||||
*/
|
*/
|
||||||
public class CDirectorySourceLocation implements IDirectorySourceLocation
|
public class CDirectorySourceLocation implements IDirectorySourceLocation {
|
||||||
{
|
|
||||||
private static final String ELEMENT_NAME = "cDirectorySourceLocation"; //$NON-NLS-1$
|
private static final String ELEMENT_NAME = "cDirectorySourceLocation"; //$NON-NLS-1$
|
||||||
private static final String ATTR_DIRECTORY = "directory"; //$NON-NLS-1$
|
private static final String ATTR_DIRECTORY = "directory"; //$NON-NLS-1$
|
||||||
private static final String ATTR_ASSOCIATION = "association"; //$NON-NLS-1$
|
private static final String ATTR_ASSOCIATION = "association"; //$NON-NLS-1$
|
||||||
|
@ -61,30 +60,24 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
* The root directory of this source location
|
* The root directory of this source location
|
||||||
*/
|
*/
|
||||||
private IPath fDirectory;
|
private IPath fDirectory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The associted path of this source location.
|
* The associated path of this source location.
|
||||||
*/
|
*/
|
||||||
private IPath fAssociation = null;
|
private IPath fAssociation;
|
||||||
|
private boolean fSearchForDuplicateFiles;
|
||||||
private boolean fSearchForDuplicateFiles = false;
|
private boolean fSearchSubfolders;
|
||||||
|
private File[] fFolders;
|
||||||
private boolean fSearchSubfolders = false;
|
|
||||||
|
|
||||||
private File[] fFolders = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for CDirectorySourceLocation.
|
* Constructor for CDirectorySourceLocation.
|
||||||
*/
|
*/
|
||||||
public CDirectorySourceLocation()
|
public CDirectorySourceLocation() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for CDirectorySourceLocation.
|
* Constructor for CDirectorySourceLocation.
|
||||||
*/
|
*/
|
||||||
public CDirectorySourceLocation( IPath directory, IPath association, boolean searchSubfolders )
|
public CDirectorySourceLocation(IPath directory, IPath association, boolean searchSubfolders) {
|
||||||
{
|
|
||||||
setDirectory(directory);
|
setDirectory(directory);
|
||||||
setAssociation(association);
|
setAssociation(association);
|
||||||
setSearchSubfolders(searchSubfolders);
|
setSearchSubfolders(searchSubfolders);
|
||||||
|
@ -93,21 +86,18 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#findSourceElement(String)
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#findSourceElement(String)
|
||||||
*/
|
*/
|
||||||
public Object findSourceElement( String name ) throws CoreException
|
public Object findSourceElement(String name) throws CoreException {
|
||||||
{
|
|
||||||
Object result = null;
|
Object result = null;
|
||||||
if ( !isEmpty( name ) && getDirectory() != null )
|
if (!isEmpty(name) && getDirectory() != null) {
|
||||||
{
|
|
||||||
File file = new File(name);
|
File file = new File(name);
|
||||||
if ( file.isAbsolute() )
|
if (file.isAbsolute()) {
|
||||||
result = findFileByAbsolutePath(name);
|
result = findFileByAbsolutePath(name);
|
||||||
else
|
} else {
|
||||||
result = findFileByRelativePath(name);
|
result = findFileByRelativePath(name);
|
||||||
if ( result == null && getAssociation() != null )
|
}
|
||||||
{
|
if (result == null && getAssociation() != null) {
|
||||||
IPath path = new Path(name);
|
IPath path = new Path(name);
|
||||||
if ( path.segmentCount() > 1 && getAssociation().isPrefixOf( path ) )
|
if (path.segmentCount() > 1 && getAssociation().isPrefixOf(path)) {
|
||||||
{
|
|
||||||
path = getDirectory().append(path.removeFirstSegments(getAssociation().segmentCount()));
|
path = getDirectory().append(path.removeFirstSegments(getAssociation().segmentCount()));
|
||||||
result = findFileByAbsolutePath(path.toOSString());
|
result = findFileByAbsolutePath(path.toOSString());
|
||||||
}
|
}
|
||||||
|
@ -119,8 +109,7 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
|
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
|
||||||
*/
|
*/
|
||||||
public Object getAdapter( Class adapter )
|
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
|
||||||
{
|
|
||||||
if (adapter.equals(ICSourceLocation.class))
|
if (adapter.equals(ICSourceLocation.class))
|
||||||
return this;
|
return this;
|
||||||
if (adapter.equals(CDirectorySourceLocation.class))
|
if (adapter.equals(CDirectorySourceLocation.class))
|
||||||
|
@ -135,8 +124,7 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
*
|
*
|
||||||
* @param directory a directory
|
* @param directory a directory
|
||||||
*/
|
*/
|
||||||
private void setDirectory( IPath directory )
|
private void setDirectory(IPath directory) {
|
||||||
{
|
|
||||||
fDirectory = directory;
|
fDirectory = directory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,81 +133,73 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
*
|
*
|
||||||
* @return directory
|
* @return directory
|
||||||
*/
|
*/
|
||||||
public IPath getDirectory()
|
public IPath getDirectory() {
|
||||||
{
|
|
||||||
return fDirectory;
|
return fDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getDirectory( IPath path )
|
public void getDirectory(IPath path) {
|
||||||
{
|
|
||||||
fDirectory = path;
|
fDirectory = path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAssociation( IPath association )
|
public void setAssociation(IPath association) {
|
||||||
{
|
|
||||||
fAssociation = association;
|
fAssociation = association;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IPath getAssociation()
|
public IPath getAssociation() {
|
||||||
{
|
|
||||||
return fAssociation;
|
return fAssociation;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByAbsolutePath( String name )
|
@SuppressWarnings("unchecked")
|
||||||
{
|
private Object findFileByAbsolutePath(String name) {
|
||||||
File file = new File(name);
|
File file = new File(name);
|
||||||
if (!file.isAbsolute())
|
if (!file.isAbsolute())
|
||||||
return null;
|
return null;
|
||||||
File[] folders = getFolders();
|
File[] folders = getFolders();
|
||||||
if ( folders != null )
|
if (folders != null) {
|
||||||
{
|
LinkedList<Object> list = new LinkedList<Object>();
|
||||||
LinkedList list = new LinkedList();
|
for (int i = 0; i < folders.length; ++i) {
|
||||||
for ( int i = 0; i < folders.length; ++i )
|
|
||||||
{
|
|
||||||
Object result = findFileByAbsolutePath(folders[i], name);
|
Object result = findFileByAbsolutePath(folders[i], name);
|
||||||
if ( result instanceof List )
|
if (result instanceof List) {
|
||||||
{
|
if (searchForDuplicateFiles()) {
|
||||||
if ( searchForDuplicateFiles() )
|
list.addAll((List<Object>) result);
|
||||||
list.addAll( (List)result );
|
} else {
|
||||||
else
|
|
||||||
return list.getFirst();
|
return list.getFirst();
|
||||||
}
|
}
|
||||||
else if ( result != null )
|
} else if (result != null) {
|
||||||
{
|
if (searchForDuplicateFiles()) {
|
||||||
if ( searchForDuplicateFiles() )
|
|
||||||
list.add(result);
|
list.add(result);
|
||||||
else
|
} else {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (list.size() > 0)
|
if (list.size() > 0)
|
||||||
return (list.size() == 1) ? list.getFirst() : list;
|
return (list.size() == 1) ? list.getFirst() : list;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByAbsolutePath( File folder, String name )
|
private Object findFileByAbsolutePath(File folder, String name) {
|
||||||
{
|
|
||||||
File file = new File(name);
|
File file = new File(name);
|
||||||
if (!file.isAbsolute())
|
if (!file.isAbsolute())
|
||||||
return null;
|
return null;
|
||||||
IPath filePath = new Path(name);
|
IPath filePath = new Path(name);
|
||||||
IPath path = new Path(folder.getAbsolutePath());
|
IPath path = new Path(folder.getAbsolutePath());
|
||||||
IPath association = getAssociation();
|
IPath association = getAssociation();
|
||||||
if ( !isPrefix( path, filePath ) || path.segmentCount() + 1 != filePath.segmentCount() )
|
if (!isPrefix(path, filePath) || path.segmentCount() + 1 != filePath.segmentCount()) {
|
||||||
{
|
if (association != null &&
|
||||||
if ( association != null && isPrefix( association, filePath ) && association.segmentCount() + 1 == filePath.segmentCount() )
|
isPrefix(association, filePath) && association.segmentCount() + 1 == filePath.segmentCount()) {
|
||||||
filePath = path.append(filePath.removeFirstSegments(association.segmentCount()));
|
filePath = path.append(filePath.removeFirstSegments(association.segmentCount()));
|
||||||
else
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Try for a file in another workspace project
|
// Try for a file in another workspace project
|
||||||
IFile[] wsFiles = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(filePath);
|
IFile[] wsFiles = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(filePath);
|
||||||
LinkedList list = new LinkedList();
|
LinkedList<IFile> list = new LinkedList<IFile>();
|
||||||
for (int j = 0; j < wsFiles.length; ++j)
|
for (int j = 0; j < wsFiles.length; ++j)
|
||||||
if ( wsFiles[j].exists() )
|
if (wsFiles[j].exists()) {
|
||||||
{
|
|
||||||
if (!searchForDuplicateFiles())
|
if (!searchForDuplicateFiles())
|
||||||
return wsFiles[j];
|
return wsFiles[j];
|
||||||
list.add(wsFiles[j]);
|
list.add(wsFiles[j]);
|
||||||
|
@ -228,56 +208,49 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
return (list.size() == 1) ? list.getFirst() : list;
|
return (list.size() == 1) ? list.getFirst() : list;
|
||||||
|
|
||||||
file = filePath.toFile();
|
file = filePath.toFile();
|
||||||
if ( file.exists() && file.isFile() )
|
if (file.exists() && file.isFile()) {
|
||||||
{
|
|
||||||
return createExternalFileStorage(filePath);
|
return createExternalFileStorage(filePath);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByRelativePath( String fileName )
|
@SuppressWarnings("unchecked")
|
||||||
{
|
private Object findFileByRelativePath(String fileName) {
|
||||||
File[] folders = getFolders();
|
File[] folders = getFolders();
|
||||||
if ( folders != null )
|
if (folders != null) {
|
||||||
{
|
LinkedList<Object> list = new LinkedList<Object>();
|
||||||
LinkedList list = new LinkedList();
|
for (int i = 0; i < folders.length; ++i) {
|
||||||
for ( int i = 0; i < folders.length; ++i )
|
|
||||||
{
|
|
||||||
Object result = findFileByRelativePath(folders[i], fileName);
|
Object result = findFileByRelativePath(folders[i], fileName);
|
||||||
if ( result instanceof List )
|
if (result instanceof List) {
|
||||||
{
|
if (searchForDuplicateFiles()) {
|
||||||
if ( searchForDuplicateFiles() )
|
list.addAll((List<Object>) result);
|
||||||
list.addAll( (List)result );
|
} else {
|
||||||
else
|
|
||||||
return list.getFirst();
|
return list.getFirst();
|
||||||
}
|
}
|
||||||
else if ( result != null )
|
} else if (result != null) {
|
||||||
{
|
if (searchForDuplicateFiles()) {
|
||||||
if ( searchForDuplicateFiles() )
|
|
||||||
list.add(result);
|
list.add(result);
|
||||||
else
|
} else {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (list.size() > 0)
|
if (list.size() > 0)
|
||||||
return (list.size() == 1) ? list.getFirst() : list;
|
return (list.size() == 1) ? list.getFirst() : list;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByRelativePath( File folder, String fileName )
|
private Object findFileByRelativePath(File folder, String fileName) {
|
||||||
{
|
|
||||||
IPath path = new Path(folder.getAbsolutePath());
|
IPath path = new Path(folder.getAbsolutePath());
|
||||||
path = path.append(fileName);
|
path = path.append(fileName);
|
||||||
File file = path.toFile();
|
File file = path.toFile();
|
||||||
if ( file.exists() && file.isFile() )
|
if (file.exists() && file.isFile()) {
|
||||||
{
|
|
||||||
path = new Path(file.getAbsolutePath());
|
path = new Path(file.getAbsolutePath());
|
||||||
IFile[] wsFiles = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(path);
|
IFile[] wsFiles = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(path);
|
||||||
LinkedList list = new LinkedList();
|
LinkedList<IFile> list = new LinkedList<IFile>();
|
||||||
for (int j = 0; j < wsFiles.length; ++j)
|
for (int j = 0; j < wsFiles.length; ++j)
|
||||||
if ( wsFiles[j].exists() )
|
if (wsFiles[j].exists()) {
|
||||||
{
|
|
||||||
if (!searchForDuplicateFiles())
|
if (!searchForDuplicateFiles())
|
||||||
return wsFiles[j];
|
return wsFiles[j];
|
||||||
list.add(wsFiles[j]);
|
list.add(wsFiles[j]);
|
||||||
|
@ -289,20 +262,17 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IStorage createExternalFileStorage( IPath path )
|
private IStorage createExternalFileStorage(IPath path) {
|
||||||
{
|
|
||||||
return new FileStorage(path);
|
return new FileStorage(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#getMemento()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#getMemento()
|
||||||
*/
|
*/
|
||||||
public String getMemento() throws CoreException
|
public String getMemento() throws CoreException {
|
||||||
{
|
|
||||||
Document document = null;
|
Document document = null;
|
||||||
Throwable ex = null;
|
Throwable ex = null;
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
|
document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
|
||||||
Element node = document.createElement(ELEMENT_NAME);
|
Element node = document.createElement(ELEMENT_NAME);
|
||||||
document.appendChild(node);
|
document.appendChild(node);
|
||||||
|
@ -311,20 +281,14 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
node.setAttribute(ATTR_ASSOCIATION, getAssociation().toOSString());
|
node.setAttribute(ATTR_ASSOCIATION, getAssociation().toOSString());
|
||||||
node.setAttribute(ATTR_SEARCH_SUBFOLDERS, Boolean.valueOf(searchSubfolders()).toString());
|
node.setAttribute(ATTR_SEARCH_SUBFOLDERS, Boolean.valueOf(searchSubfolders()).toString());
|
||||||
return CDebugUtils.serializeDocument(document);
|
return CDebugUtils.serializeDocument(document);
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e )
|
ex = e;
|
||||||
{
|
} catch (IOException e) {
|
||||||
|
ex = e;
|
||||||
|
} catch (TransformerException e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( IOException e )
|
abort(NLS.bind(InternalSourceLookupMessages.CDirectorySourceLocation_0, getDirectory().toOSString()), ex);
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
catch( TransformerException e )
|
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( MessageFormat.format( InternalSourceLookupMessages.getString( "CDirectorySourceLocation.0" ), new String[] { getDirectory().toOSString() } ), ex ); //$NON-NLS-1$
|
|
||||||
// execution will not reach here
|
// execution will not reach here
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -332,11 +296,9 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#initializeFrom(java.lang.String)
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#initializeFrom(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public void initializeFrom( String memento ) throws CoreException
|
public void initializeFrom(String memento) throws CoreException {
|
||||||
{
|
|
||||||
Exception ex = null;
|
Exception ex = null;
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
Element root = null;
|
Element root = null;
|
||||||
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||||
StringReader reader = new StringReader(memento);
|
StringReader reader = new StringReader(memento);
|
||||||
|
@ -344,62 +306,43 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
root = parser.parse(source).getDocumentElement();
|
root = parser.parse(source).getDocumentElement();
|
||||||
|
|
||||||
String dir = root.getAttribute(ATTR_DIRECTORY);
|
String dir = root.getAttribute(ATTR_DIRECTORY);
|
||||||
if ( isEmpty( dir ) )
|
if (isEmpty(dir)) {
|
||||||
{
|
abort(InternalSourceLookupMessages.CDirectorySourceLocation_1, null);
|
||||||
abort( InternalSourceLookupMessages.getString( "CDirectorySourceLocation.1" ), null ); //$NON-NLS-1$
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
IPath path = new Path(dir);
|
IPath path = new Path(dir);
|
||||||
if ( path.isValidPath( dir ) && path.toFile().isDirectory() && path.toFile().exists() )
|
if (path.isValidPath(dir) && path.toFile().isDirectory() && path.toFile().exists()) {
|
||||||
{
|
|
||||||
setDirectory(path);
|
setDirectory(path);
|
||||||
}
|
} else {
|
||||||
else
|
abort(NLS.bind(InternalSourceLookupMessages.CDirectorySourceLocation_2, dir), null);
|
||||||
{
|
|
||||||
abort( MessageFormat.format( InternalSourceLookupMessages.getString( "CDirectorySourceLocation.2" ), new String[] { dir } ), null ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dir = root.getAttribute(ATTR_ASSOCIATION);
|
dir = root.getAttribute(ATTR_ASSOCIATION);
|
||||||
if ( isEmpty( dir ) )
|
if (isEmpty(dir)) {
|
||||||
{
|
|
||||||
setAssociation(null);
|
setAssociation(null);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
IPath path = new Path(dir);
|
IPath path = new Path(dir);
|
||||||
if ( path.isValidPath( dir ) )
|
if (path.isValidPath(dir)) {
|
||||||
{
|
|
||||||
setAssociation(path);
|
setAssociation(path);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
setAssociation(null);
|
setAssociation(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setSearchSubfolders(Boolean.valueOf(root.getAttribute(ATTR_SEARCH_SUBFOLDERS)).booleanValue());
|
setSearchSubfolders(Boolean.valueOf(root.getAttribute(ATTR_SEARCH_SUBFOLDERS)).booleanValue());
|
||||||
return;
|
return;
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e )
|
ex = e;
|
||||||
{
|
} catch (SAXException e) {
|
||||||
|
ex = e;
|
||||||
|
} catch (IOException e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( SAXException e )
|
abort(InternalSourceLookupMessages.CDirectorySourceLocation_3, ex);
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
catch( IOException e )
|
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( InternalSourceLookupMessages.getString( "CDirectorySourceLocation.3" ), ex ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Throws an internal error exception
|
* Throws an internal error exception
|
||||||
*/
|
*/
|
||||||
private void abort( String message, Throwable e ) throws CoreException
|
private void abort(String message, Throwable e) throws CoreException {
|
||||||
{
|
|
||||||
IStatus s = new Status(IStatus.ERROR,
|
IStatus s = new Status(IStatus.ERROR,
|
||||||
CDebugCorePlugin.getUniqueIdentifier(),
|
CDebugCorePlugin.getUniqueIdentifier(),
|
||||||
CDebugCorePlugin.INTERNAL_ERROR,
|
CDebugCorePlugin.INTERNAL_ERROR,
|
||||||
|
@ -408,25 +351,21 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
throw new CoreException(s);
|
throw new CoreException(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isEmpty( String string )
|
private boolean isEmpty(String string) {
|
||||||
{
|
|
||||||
return string == null || string.length() == 0;
|
return string == null || string.length() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#equals(java.lang.Object)
|
* @see java.lang.Object#equals(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public boolean equals( Object obj )
|
public boolean equals(Object obj) {
|
||||||
{
|
if (obj instanceof IDirectorySourceLocation) {
|
||||||
if ( obj instanceof IDirectorySourceLocation )
|
|
||||||
{
|
|
||||||
IPath dir = ((IDirectorySourceLocation)obj).getDirectory();
|
IPath dir = ((IDirectorySourceLocation)obj).getDirectory();
|
||||||
IPath association = ((IDirectorySourceLocation)obj).getAssociation();
|
IPath association = ((IDirectorySourceLocation)obj).getAssociation();
|
||||||
if (dir == null)
|
if (dir == null)
|
||||||
return false;
|
return false;
|
||||||
boolean result = dir.equals(getDirectory());
|
boolean result = dir.equals(getDirectory());
|
||||||
if ( result )
|
if (result) {
|
||||||
{
|
|
||||||
if (association == null && getAssociation() == null)
|
if (association == null && getAssociation() == null)
|
||||||
return true;
|
return true;
|
||||||
if (association != null)
|
if (association != null)
|
||||||
|
@ -436,8 +375,7 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPrefix( IPath prefix, IPath path )
|
private boolean isPrefix(IPath prefix, IPath path) {
|
||||||
{
|
|
||||||
int segCount = prefix.segmentCount();
|
int segCount = prefix.segmentCount();
|
||||||
if (segCount >= path.segmentCount())
|
if (segCount >= path.segmentCount())
|
||||||
return false;
|
return false;
|
||||||
|
@ -449,66 +387,55 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#setSearchForDuplicateFiles(boolean)
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#setSearchForDuplicateFiles(boolean)
|
||||||
*/
|
*/
|
||||||
public void setSearchForDuplicateFiles( boolean search )
|
public void setSearchForDuplicateFiles(boolean search) {
|
||||||
{
|
|
||||||
fSearchForDuplicateFiles = search;
|
fSearchForDuplicateFiles = search;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#searchForDuplicateFiles()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#searchForDuplicateFiles()
|
||||||
*/
|
*/
|
||||||
public boolean searchForDuplicateFiles()
|
public boolean searchForDuplicateFiles() {
|
||||||
{
|
|
||||||
return fSearchForDuplicateFiles;
|
return fSearchForDuplicateFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.IDirectorySourceLocation#searchSubfolders()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.IDirectorySourceLocation#searchSubfolders()
|
||||||
*/
|
*/
|
||||||
public boolean searchSubfolders()
|
public boolean searchSubfolders() {
|
||||||
{
|
|
||||||
return fSearchSubfolders;
|
return fSearchSubfolders;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSearchSubfolders( boolean search )
|
public void setSearchSubfolders(boolean search) {
|
||||||
{
|
|
||||||
resetFolders();
|
resetFolders();
|
||||||
fSearchSubfolders = search;
|
fSearchSubfolders = search;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected File[] getFolders()
|
protected File[] getFolders() {
|
||||||
{
|
|
||||||
if (fFolders == null)
|
if (fFolders == null)
|
||||||
initializeFolders();
|
initializeFolders();
|
||||||
return fFolders;
|
return fFolders;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void resetFolders()
|
protected void resetFolders() {
|
||||||
{
|
|
||||||
fFolders = null;
|
fFolders = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeFolders()
|
private void initializeFolders() {
|
||||||
{
|
if (getDirectory() != null) {
|
||||||
if ( getDirectory() != null )
|
ArrayList<File> list = new ArrayList<File>();
|
||||||
{
|
|
||||||
ArrayList list = new ArrayList();
|
|
||||||
File root = getDirectory().toFile();
|
File root = getDirectory().toFile();
|
||||||
list.add(root);
|
list.add(root);
|
||||||
if (searchSubfolders())
|
if (searchSubfolders())
|
||||||
list.addAll(getFileFolders(root));
|
list.addAll(getFileFolders(root));
|
||||||
fFolders = (File[])list.toArray( new File[list.size()] );
|
fFolders = list.toArray(new File[list.size()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List getFileFolders( File file )
|
private List<File> getFileFolders(File file) {
|
||||||
{
|
ArrayList<File> list = new ArrayList<File>();
|
||||||
ArrayList list = new ArrayList();
|
|
||||||
File[] folders = file.listFiles(
|
File[] folders = file.listFiles(
|
||||||
new FileFilter()
|
new FileFilter() {
|
||||||
{
|
public boolean accept(File pathname) {
|
||||||
public boolean accept( File pathname )
|
|
||||||
{
|
|
||||||
return pathname.isDirectory();
|
return pathname.isDirectory();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -521,15 +448,13 @@ public class CDirectorySourceLocation implements IDirectorySourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#toString()
|
* @see java.lang.Object#toString()
|
||||||
*/
|
*/
|
||||||
public String toString()
|
public String toString() {
|
||||||
{
|
|
||||||
return (getDirectory() != null) ? getDirectory().toOSString() : ""; //$NON-NLS-1$
|
return (getDirectory() != null) ? getDirectory().toOSString() : ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#dispose()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#dispose()
|
||||||
*/
|
*/
|
||||||
public void dispose()
|
public void dispose() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,7 @@ import org.xml.sax.SAXException;
|
||||||
*
|
*
|
||||||
* @since Sep 23, 2002
|
* @since Sep 23, 2002
|
||||||
*/
|
*/
|
||||||
public class CProjectSourceLocation implements IProjectSourceLocation
|
public class CProjectSourceLocation implements IProjectSourceLocation {
|
||||||
{
|
|
||||||
private static final String ELEMENT_NAME = "cProjectSourceLocation"; //$NON-NLS-1$
|
private static final String ELEMENT_NAME = "cProjectSourceLocation"; //$NON-NLS-1$
|
||||||
private static final String ATTR_PROJECT = "project"; //$NON-NLS-1$
|
private static final String ATTR_PROJECT = "project"; //$NON-NLS-1$
|
||||||
private static final String ATTR_GENERIC = "generic"; //$NON-NLS-1$
|
private static final String ATTR_GENERIC = "generic"; //$NON-NLS-1$
|
||||||
|
@ -59,38 +58,21 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
* The project associated with this source location
|
* The project associated with this source location
|
||||||
*/
|
*/
|
||||||
private IProject fProject;
|
private IProject fProject;
|
||||||
|
|
||||||
private IResource[] fFolders;
|
private IResource[] fFolders;
|
||||||
|
|
||||||
private HashMap fCache = new HashMap( 20 );
|
private HashMap fCache = new HashMap( 20 );
|
||||||
|
|
||||||
private HashSet fNotFoundCache = new HashSet( 20 );
|
private HashSet fNotFoundCache = new HashSet( 20 );
|
||||||
|
|
||||||
private boolean fGenerated = true;
|
private boolean fGenerated = true;
|
||||||
|
|
||||||
private boolean fSearchForDuplicateFiles = false;
|
private boolean fSearchForDuplicateFiles = false;
|
||||||
|
|
||||||
/**
|
public CProjectSourceLocation() {
|
||||||
* Constructor for CProjectSourceLocation.
|
|
||||||
*/
|
|
||||||
public CProjectSourceLocation()
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public CProjectSourceLocation( IProject project ) {
|
||||||
* Constructor for CProjectSourceLocation.
|
|
||||||
*/
|
|
||||||
public CProjectSourceLocation( IProject project )
|
|
||||||
{
|
|
||||||
setProject( project );
|
setProject( project );
|
||||||
fGenerated = true;
|
fGenerated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public CProjectSourceLocation( IProject project, boolean generated ) {
|
||||||
* Constructor for CProjectSourceLocation.
|
|
||||||
*/
|
|
||||||
public CProjectSourceLocation( IProject project, boolean generated )
|
|
||||||
{
|
|
||||||
setProject( project );
|
setProject( project );
|
||||||
fGenerated = generated;
|
fGenerated = generated;
|
||||||
}
|
}
|
||||||
|
@ -101,19 +83,15 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
public Object findSourceElement( String name ) throws CoreException
|
public Object findSourceElement( String name ) throws CoreException
|
||||||
{
|
{
|
||||||
Object result = null;
|
Object result = null;
|
||||||
if ( !isEmpty( name ) && getProject() != null && !notFoundCacheLookup( name ) )
|
if ( !isEmpty( name ) && getProject() != null && !notFoundCacheLookup( name ) ) {
|
||||||
{
|
|
||||||
result = cacheLookup( name );
|
result = cacheLookup( name );
|
||||||
if ( result == null )
|
if ( result == null ) {
|
||||||
{
|
|
||||||
result = doFindSourceElement( name );
|
result = doFindSourceElement( name );
|
||||||
if ( result != null )
|
if ( result != null ) {
|
||||||
{
|
|
||||||
cacheSourceElement( name, result );
|
cacheSourceElement( name, result );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( result == null )
|
if ( result == null ) {
|
||||||
{
|
|
||||||
cacheNotFound( name );
|
cacheNotFound( name );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,8 +101,7 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
|
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
|
||||||
*/
|
*/
|
||||||
public Object getAdapter( Class adapter )
|
public Object getAdapter( Class adapter ) {
|
||||||
{
|
|
||||||
if ( adapter.equals( ICSourceLocation.class ) )
|
if ( adapter.equals( ICSourceLocation.class ) )
|
||||||
return this;
|
return this;
|
||||||
if ( adapter.equals( CProjectSourceLocation.class ) )
|
if ( adapter.equals( CProjectSourceLocation.class ) )
|
||||||
|
@ -139,8 +116,7 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
*
|
*
|
||||||
* @param project the project
|
* @param project the project
|
||||||
*/
|
*/
|
||||||
private void setProject( IProject project )
|
private void setProject( IProject project ) {
|
||||||
{
|
|
||||||
fProject = project;
|
fProject = project;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,27 +125,22 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
*
|
*
|
||||||
* @return project
|
* @return project
|
||||||
*/
|
*/
|
||||||
public IProject getProject()
|
public IProject getProject() {
|
||||||
{
|
|
||||||
return fProject;
|
return fProject;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object doFindSourceElement( String name )
|
private Object doFindSourceElement( String name ) {
|
||||||
{
|
|
||||||
File file = new File( name );
|
File file = new File( name );
|
||||||
return ( file.isAbsolute() ) ? findFileByAbsolutePath( file ) : findFileByRelativePath( name );
|
return ( file.isAbsolute() ) ? findFileByAbsolutePath( file ) : findFileByRelativePath( name );
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByAbsolutePath( File file )
|
private Object findFileByAbsolutePath( File file ) {
|
||||||
{
|
|
||||||
LinkedList list = new LinkedList();
|
LinkedList list = new LinkedList();
|
||||||
if ( file.exists() )
|
if ( file.exists() ) {
|
||||||
{
|
|
||||||
IPath path = new Path( file.getAbsolutePath() );
|
IPath path = new Path( file.getAbsolutePath() );
|
||||||
IFile[] wsFiles = CDebugCorePlugin.getWorkspace().getRoot().findFilesForLocation( path );
|
IFile[] wsFiles = CDebugCorePlugin.getWorkspace().getRoot().findFilesForLocation( path );
|
||||||
for ( int i = 0; i < wsFiles.length; ++i )
|
for ( int i = 0; i < wsFiles.length; ++i )
|
||||||
if ( wsFiles[i].getProject().equals( getProject() ) && wsFiles[i].exists() )
|
if ( wsFiles[i].getProject().equals( getProject() ) && wsFiles[i].exists() ) {
|
||||||
{
|
|
||||||
if ( !searchForDuplicateFiles() )
|
if ( !searchForDuplicateFiles() )
|
||||||
return wsFiles[i];
|
return wsFiles[i];
|
||||||
list.add( wsFiles[i] );
|
list.add( wsFiles[i] );
|
||||||
|
@ -178,24 +149,20 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
return ( list.size() > 0 ) ? ( ( list.size() == 1 ) ? list.getFirst() : list ) : null;
|
return ( list.size() > 0 ) ? ( ( list.size() == 1 ) ? list.getFirst() : list ) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object findFileByRelativePath( String fileName )
|
private Object findFileByRelativePath( String fileName ) {
|
||||||
{
|
|
||||||
IResource[] folders = getFolders();
|
IResource[] folders = getFolders();
|
||||||
LinkedList list = new LinkedList();
|
LinkedList list = new LinkedList();
|
||||||
for ( int i = 0; i < folders.length; ++i )
|
for ( int i = 0; i < folders.length; ++i ) {
|
||||||
{
|
|
||||||
if ( list.size() > 0 && !searchForDuplicateFiles() )
|
if ( list.size() > 0 && !searchForDuplicateFiles() )
|
||||||
break;
|
break;
|
||||||
IPath path = folders[i].getLocation();
|
IPath path = folders[i].getLocation();
|
||||||
if ( path != null ) {
|
if ( path != null ) {
|
||||||
path = path.append( fileName );
|
path = path.append( fileName );
|
||||||
File file = new File( path.toOSString() );
|
File file = new File( path.toOSString() );
|
||||||
if ( file.exists() )
|
if ( file.exists() ) {
|
||||||
{
|
|
||||||
IFile[] wsFiles = CDebugCorePlugin.getWorkspace().getRoot().findFilesForLocation( path );
|
IFile[] wsFiles = CDebugCorePlugin.getWorkspace().getRoot().findFilesForLocation( path );
|
||||||
for ( int j = 0; j < wsFiles.length; ++j )
|
for ( int j = 0; j < wsFiles.length; ++j )
|
||||||
if ( wsFiles[j].exists() )
|
if ( wsFiles[j].exists() ) {
|
||||||
{
|
|
||||||
if ( !searchForDuplicateFiles() )
|
if ( !searchForDuplicateFiles() )
|
||||||
return wsFiles[j];
|
return wsFiles[j];
|
||||||
list.add( wsFiles[j] );
|
list.add( wsFiles[j] );
|
||||||
|
@ -206,28 +173,23 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
return ( list.size() > 0 ) ? ( ( list.size() == 1 ) ? list.getFirst() : list ) : null;
|
return ( list.size() > 0 ) ? ( ( list.size() == 1 ) ? list.getFirst() : list ) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object cacheLookup( String name )
|
private Object cacheLookup( String name ) {
|
||||||
{
|
|
||||||
return fCache.get( name );
|
return fCache.get( name );
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean notFoundCacheLookup( String name )
|
private boolean notFoundCacheLookup( String name ) {
|
||||||
{
|
|
||||||
return fNotFoundCache.contains( name );
|
return fNotFoundCache.contains( name );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cacheSourceElement( String name, Object element )
|
private void cacheSourceElement( String name, Object element ) {
|
||||||
{
|
|
||||||
fCache.put( name, element );
|
fCache.put( name, element );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cacheNotFound( String name )
|
private void cacheNotFound( String name ) {
|
||||||
{
|
|
||||||
fNotFoundCache.add( name );
|
fNotFoundCache.add( name );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dispose()
|
public void dispose() {
|
||||||
{
|
|
||||||
fCache.clear();
|
fCache.clear();
|
||||||
fNotFoundCache.clear();
|
fNotFoundCache.clear();
|
||||||
}
|
}
|
||||||
|
@ -247,20 +209,15 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
node.setAttribute( ATTR_PROJECT, getProject().getName() );
|
node.setAttribute( ATTR_PROJECT, getProject().getName() );
|
||||||
node.setAttribute( ATTR_GENERIC, Boolean.valueOf( isGeneric() ).toString() );
|
node.setAttribute( ATTR_GENERIC, Boolean.valueOf( isGeneric() ).toString() );
|
||||||
return CDebugUtils.serializeDocument( document );
|
return CDebugUtils.serializeDocument( document );
|
||||||
}
|
} catch( ParserConfigurationException e )
|
||||||
catch( ParserConfigurationException e )
|
|
||||||
{
|
{
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
} catch( IOException e ) {
|
||||||
catch( IOException e )
|
ex = e;
|
||||||
{
|
} catch( TransformerException e ) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( TransformerException e )
|
abort( MessageFormat.format( InternalSourceLookupMessages.CProjectSourceLocation_0, new String[] { getProject().getName() } ), ex ); //$NON-NLS-1$
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( MessageFormat.format( InternalSourceLookupMessages.getString( "CProjectSourceLocation.0" ), new String[] { getProject().getName() } ), ex ); //$NON-NLS-1$
|
|
||||||
// execution will not reach here
|
// execution will not reach here
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -280,9 +237,8 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
root = parser.parse( source ).getDocumentElement();
|
root = parser.parse( source ).getDocumentElement();
|
||||||
|
|
||||||
String name = root.getAttribute( ATTR_PROJECT );
|
String name = root.getAttribute( ATTR_PROJECT );
|
||||||
if ( isEmpty( name ) )
|
if ( isEmpty( name ) ) {
|
||||||
{
|
abort( InternalSourceLookupMessages.CProjectSourceLocation_1, null ); //$NON-NLS-1$
|
||||||
abort( InternalSourceLookupMessages.getString( "CProjectSourceLocation.1" ), null ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -294,20 +250,14 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
isGeneric = Boolean.FALSE.toString();
|
isGeneric = Boolean.FALSE.toString();
|
||||||
setGenerated( isGeneric.equals( Boolean.TRUE.toString() ) );
|
setGenerated( isGeneric.equals( Boolean.TRUE.toString() ) );
|
||||||
return;
|
return;
|
||||||
}
|
} catch( ParserConfigurationException e ) {
|
||||||
catch( ParserConfigurationException e )
|
ex = e;
|
||||||
{
|
} catch( SAXException e ) {
|
||||||
|
ex = e;
|
||||||
|
} catch( IOException e ) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( SAXException e )
|
abort( InternalSourceLookupMessages.CProjectSourceLocation_2, ex ); //$NON-NLS-1$
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
catch( IOException e )
|
|
||||||
{
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( InternalSourceLookupMessages.getString( "CProjectSourceLocation.2" ), ex ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -323,49 +273,40 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
throw new CoreException( s );
|
throw new CoreException( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isEmpty( String string )
|
private boolean isEmpty( String string ) {
|
||||||
{
|
|
||||||
return string == null || string.length() == 0;
|
return string == null || string.length() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation#isGenerated()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.IProjectSourceLocation#isGenerated()
|
||||||
*/
|
*/
|
||||||
public boolean isGeneric()
|
public boolean isGeneric() {
|
||||||
{
|
|
||||||
return fGenerated;
|
return fGenerated;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGenerated( boolean b )
|
public void setGenerated( boolean b ) {
|
||||||
{
|
|
||||||
fGenerated = b;
|
fGenerated = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see java.lang.Object#equals(java.lang.Object)
|
* @see java.lang.Object#equals(java.lang.Object)
|
||||||
*/
|
*/
|
||||||
public boolean equals( Object obj )
|
public boolean equals( Object obj ) {
|
||||||
{
|
|
||||||
if ( obj instanceof IProjectSourceLocation && getProject() != null )
|
if ( obj instanceof IProjectSourceLocation && getProject() != null )
|
||||||
return getProject().equals( ((IProjectSourceLocation)obj).getProject() );
|
return getProject().equals( ((IProjectSourceLocation)obj).getProject() );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeFolders()
|
private void initializeFolders() {
|
||||||
{
|
|
||||||
final LinkedList list = new LinkedList();
|
final LinkedList list = new LinkedList();
|
||||||
if ( getProject() != null && getProject().exists() )
|
if ( getProject() != null && getProject().exists() ) {
|
||||||
{
|
|
||||||
list.add( getProject() );
|
list.add( getProject() );
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
getProject().accept(
|
getProject().accept(
|
||||||
new IResourceProxyVisitor()
|
new IResourceProxyVisitor() {
|
||||||
{
|
|
||||||
public boolean visit( IResourceProxy proxy ) throws CoreException
|
public boolean visit( IResourceProxy proxy ) throws CoreException
|
||||||
{
|
{
|
||||||
switch( proxy.getType() )
|
switch( proxy.getType() ) {
|
||||||
{
|
|
||||||
case IResource.FILE:
|
case IResource.FILE:
|
||||||
return false;
|
return false;
|
||||||
case IResource.FOLDER:
|
case IResource.FOLDER:
|
||||||
|
@ -377,13 +318,10 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
|
|
||||||
},
|
},
|
||||||
IResource.NONE );
|
IResource.NONE );
|
||||||
}
|
} catch( CoreException e ) {
|
||||||
catch( CoreException e )
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
synchronized( this )
|
synchronized( this ) {
|
||||||
{
|
|
||||||
if ( fFolders == null )
|
if ( fFolders == null )
|
||||||
{
|
{
|
||||||
fFolders = (IResource[])list.toArray( new IResource[list.size()] );
|
fFolders = (IResource[])list.toArray( new IResource[list.size()] );
|
||||||
|
@ -391,8 +329,7 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IResource[] getFolders()
|
protected IResource[] getFolders() {
|
||||||
{
|
|
||||||
if ( fFolders == null )
|
if ( fFolders == null )
|
||||||
initializeFolders();
|
initializeFolders();
|
||||||
return fFolders;
|
return fFolders;
|
||||||
|
@ -401,23 +338,20 @@ public class CProjectSourceLocation implements IProjectSourceLocation
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#searchForDuplicateFiles()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#searchForDuplicateFiles()
|
||||||
*/
|
*/
|
||||||
public boolean searchForDuplicateFiles()
|
public boolean searchForDuplicateFiles() {
|
||||||
{
|
|
||||||
return fSearchForDuplicateFiles;
|
return fSearchForDuplicateFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#setSearchForDuplicateFiles(boolean)
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocation#setSearchForDuplicateFiles(boolean)
|
||||||
*/
|
*/
|
||||||
public void setSearchForDuplicateFiles( boolean search )
|
public void setSearchForDuplicateFiles( boolean search ) {
|
||||||
{
|
|
||||||
fCache.clear();
|
fCache.clear();
|
||||||
fNotFoundCache.clear();
|
fNotFoundCache.clear();
|
||||||
fSearchForDuplicateFiles = search;
|
fSearchForDuplicateFiles = search;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString()
|
public String toString() {
|
||||||
{
|
|
||||||
return ( getProject() != null ) ? fProject.toString() : ""; //$NON-NLS-1$
|
return ( getProject() != null ) ? fProject.toString() : ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,27 +56,19 @@ import org.xml.sax.SAXException;
|
||||||
* Default source locator.
|
* Default source locator.
|
||||||
*/
|
*/
|
||||||
public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocator, IResourceChangeListener {
|
public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocator, IResourceChangeListener {
|
||||||
|
|
||||||
private static final String SOURCE_LOCATOR_NAME = "cSourceLocator"; //$NON-NLS-1$
|
private static final String SOURCE_LOCATOR_NAME = "cSourceLocator"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String DISABLED_GENERIC_PROJECT_NAME = "disabledGenericProject"; //$NON-NLS-1$
|
private static final String DISABLED_GENERIC_PROJECT_NAME = "disabledGenericProject"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ADDITIONAL_SOURCE_LOCATION_NAME = "additionalSourceLocation"; //$NON-NLS-1$
|
private static final String ADDITIONAL_SOURCE_LOCATION_NAME = "additionalSourceLocation"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String SOURCE_LOCATION_NAME = "cSourceLocation"; //$NON-NLS-1$
|
private static final String SOURCE_LOCATION_NAME = "cSourceLocation"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_MEMENTO = "memento"; //$NON-NLS-1$
|
private static final String ATTR_MEMENTO = "memento"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_PROJECT_NAME = "projectName"; //$NON-NLS-1$
|
private static final String ATTR_PROJECT_NAME = "projectName"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_DUPLICATE_FILES = "duplicateFiles"; //$NON-NLS-1$
|
private static final String ATTR_DUPLICATE_FILES = "duplicateFiles"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The project associated with this locator.
|
* The project associated with this locator.
|
||||||
*/
|
*/
|
||||||
private IProject fProject = null;
|
private IProject fProject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The array of source locations associated with this locator.
|
* The array of source locations associated with this locator.
|
||||||
|
@ -86,12 +78,12 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
/**
|
/**
|
||||||
* The array of projects referenced by main project.
|
* The array of projects referenced by main project.
|
||||||
*/
|
*/
|
||||||
private List fReferencedProjects = new ArrayList( 10 );
|
private List<IProject> fReferencedProjects = new ArrayList<IProject>(10);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The flag specifies whether to search for all source elements, or just the first match.
|
* The flag specifies whether to search for all source elements, or just the first match.
|
||||||
*/
|
*/
|
||||||
private boolean fDuplicateFiles = false;
|
private boolean fDuplicateFiles;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for CSourceLocator.
|
* Constructor for CSourceLocator.
|
||||||
|
@ -123,7 +115,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
protected Object getInput(IStackFrame f) {
|
protected Object getInput(IStackFrame f) {
|
||||||
if (f instanceof ICStackFrame) {
|
if (f instanceof ICStackFrame) {
|
||||||
ICStackFrame frame = (ICStackFrame)f;
|
ICStackFrame frame = (ICStackFrame)f;
|
||||||
LinkedList list = new LinkedList();
|
LinkedList<Object> list = new LinkedList<Object>();
|
||||||
Object result = null;
|
Object result = null;
|
||||||
String fileName = frame.getFile();
|
String fileName = frame.getFile();
|
||||||
if (fileName != null && fileName.length() > 0) {
|
if (fileName != null && fileName.length() > 0) {
|
||||||
|
@ -131,13 +123,12 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
for (int i = 0; i < locations.length; ++i) {
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
try {
|
try {
|
||||||
result = locations[i].findSourceElement(fileName);
|
result = locations[i].findSourceElement(fileName);
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
if (result instanceof List)
|
if (result instanceof List)
|
||||||
list.addAll( (List)result );
|
list.addAll((List<?>) result);
|
||||||
else
|
else
|
||||||
list.add(result);
|
list.add(result);
|
||||||
if (!searchForDuplicateFiles())
|
if (!searchForDuplicateFiles())
|
||||||
|
@ -168,10 +159,9 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
Object result = locations[i].findSourceElement(resource.getLocation().toOSString());
|
Object result = locations[i].findSourceElement(resource.getLocation().toOSString());
|
||||||
if (result instanceof IFile && ((IFile) result).equals(resource))
|
if (result instanceof IFile && ((IFile) result).equals(resource))
|
||||||
return true;
|
return true;
|
||||||
if ( result instanceof List && ((List)result).contains( resource ) )
|
if (result instanceof List && ((List<?>) result).contains(resource))
|
||||||
return true;
|
return true;
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,7 +179,6 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#setSourceLocations(ICSourceLocation[])
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#setSourceLocations(ICSourceLocation[])
|
||||||
*/
|
*/
|
||||||
public void setSourceLocations(ICSourceLocation[] locations) {
|
public void setSourceLocations(ICSourceLocation[] locations) {
|
||||||
|
@ -206,15 +195,15 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
* @exception CoreException
|
* @exception CoreException
|
||||||
*/
|
*/
|
||||||
public static ICSourceLocation[] getDefaultSourceLocations(IProject project) {
|
public static ICSourceLocation[] getDefaultSourceLocations(IProject project) {
|
||||||
ArrayList list = new ArrayList();
|
ArrayList<IProjectSourceLocation> list = new ArrayList<IProjectSourceLocation>();
|
||||||
if (project != null && project.exists()) {
|
if (project != null && project.exists()) {
|
||||||
list.add(SourceLookupFactory.createProjectSourceLocation(project));
|
list.add(SourceLookupFactory.createProjectSourceLocation(project));
|
||||||
addReferencedSourceLocations(list, project);
|
addReferencedSourceLocations(list, project);
|
||||||
}
|
}
|
||||||
return (ICSourceLocation[])list.toArray( new ICSourceLocation[list.size()] );
|
return list.toArray(new ICSourceLocation[list.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addReferencedSourceLocations( List list, IProject project ) {
|
private static void addReferencedSourceLocations(List<IProjectSourceLocation> list, IProject project) {
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
try {
|
try {
|
||||||
IProject[] projects = project.getReferencedProjects();
|
IProject[] projects = project.getReferencedProjects();
|
||||||
|
@ -224,15 +213,14 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
addReferencedSourceLocations(list, projects[i]);
|
addReferencedSourceLocations(list, projects[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean containsProject( List list, IProject project ) {
|
private static boolean containsProject(List<IProjectSourceLocation> list, IProject project) {
|
||||||
Iterator it = list.iterator();
|
Iterator<IProjectSourceLocation> it = list.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
CProjectSourceLocation location = (CProjectSourceLocation)it.next();
|
CProjectSourceLocation location = (CProjectSourceLocation)it.next();
|
||||||
if (project.equals(location.getProject()))
|
if (project.equals(location.getProject()))
|
||||||
|
@ -253,8 +241,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
for (int i = 0; i < locations.length; ++i) {
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
try {
|
try {
|
||||||
result = locations[i].findSourceElement(fileName);
|
result = locations[i].findSourceElement(fileName);
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
if (result != null)
|
if (result != null)
|
||||||
|
@ -281,17 +268,14 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
saveAdditionalSourceLocations(locations, document, node);
|
saveAdditionalSourceLocations(locations, document, node);
|
||||||
node.setAttribute(ATTR_DUPLICATE_FILES, Boolean.valueOf(searchForDuplicateFiles()).toString());
|
node.setAttribute(ATTR_DUPLICATE_FILES, Boolean.valueOf(searchForDuplicateFiles()).toString());
|
||||||
return CDebugUtils.serializeDocument(document);
|
return CDebugUtils.serializeDocument(document);
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e ) {
|
ex = e;
|
||||||
|
} catch (IOException e) {
|
||||||
|
ex = e;
|
||||||
|
} catch (TransformerException e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( IOException e ) {
|
abort(InternalSourceLookupMessages.CSourceLocator_0, ex);
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
catch( TransformerException e ) {
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( InternalSourceLookupMessages.getString( "CSourceLocator.0" ), ex ); //$NON-NLS-1$
|
|
||||||
// execution will not reach here
|
// execution will not reach here
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -319,9 +303,9 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
InputSource source = new InputSource(reader);
|
InputSource source = new InputSource(reader);
|
||||||
root = parser.parse(source).getDocumentElement();
|
root = parser.parse(source).getDocumentElement();
|
||||||
if (!root.getNodeName().equalsIgnoreCase(SOURCE_LOCATOR_NAME)) {
|
if (!root.getNodeName().equalsIgnoreCase(SOURCE_LOCATOR_NAME)) {
|
||||||
abort( InternalSourceLookupMessages.getString( "CSourceLocator.1" ) , null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.CSourceLocator_1 , null);
|
||||||
}
|
}
|
||||||
List sourceLocations = new ArrayList();
|
List<ICSourceLocation> sourceLocations = new ArrayList<ICSourceLocation>();
|
||||||
// Add locations based on referenced projects
|
// Add locations based on referenced projects
|
||||||
IProject project = getProject();
|
IProject project = getProject();
|
||||||
if (project != null && project.exists() && project.isOpen())
|
if (project != null && project.exists() && project.isOpen())
|
||||||
|
@ -330,26 +314,23 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
addAdditionalLocations(root, sourceLocations);
|
addAdditionalLocations(root, sourceLocations);
|
||||||
// To support old launch configuration
|
// To support old launch configuration
|
||||||
addOldLocations(root, sourceLocations);
|
addOldLocations(root, sourceLocations);
|
||||||
setSourceLocations( (ICSourceLocation[])sourceLocations.toArray( new ICSourceLocation[sourceLocations.size()] ) );
|
setSourceLocations(sourceLocations.toArray(new ICSourceLocation[sourceLocations.size()]));
|
||||||
setSearchForDuplicateFiles(Boolean.valueOf(root.getAttribute(ATTR_DUPLICATE_FILES)).booleanValue());
|
setSearchForDuplicateFiles(Boolean.valueOf(root.getAttribute(ATTR_DUPLICATE_FILES)).booleanValue());
|
||||||
return;
|
return;
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e ) {
|
ex = e;
|
||||||
|
} catch (SAXException e) {
|
||||||
|
ex = e;
|
||||||
|
} catch (IOException e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( SAXException e ) {
|
abort(InternalSourceLookupMessages.CSourceLocator_2, ex);
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
catch( IOException e ) {
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
abort( InternalSourceLookupMessages.getString( "CSourceLocator.2" ), ex ); //$NON-NLS-1$
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void removeDisabledLocations( Element root, List sourceLocations ) {
|
private void removeDisabledLocations(Element root, List<ICSourceLocation> sourceLocations) {
|
||||||
NodeList list = root.getChildNodes();
|
NodeList list = root.getChildNodes();
|
||||||
int length = list.getLength();
|
int length = list.getLength();
|
||||||
HashSet disabledProjects = new HashSet( length );
|
HashSet<String> disabledProjects = new HashSet<String>(length);
|
||||||
for (int i = 0; i < length; ++i) {
|
for (int i = 0; i < length; ++i) {
|
||||||
Node node = list.item(i);
|
Node node = list.item(i);
|
||||||
short type = node.getNodeType();
|
short type = node.getNodeType();
|
||||||
|
@ -364,17 +345,18 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Iterator it = sourceLocations.iterator();
|
Iterator<ICSourceLocation> it = sourceLocations.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
ICSourceLocation location = (ICSourceLocation)it.next();
|
ICSourceLocation location = it.next();
|
||||||
if (location instanceof IProjectSourceLocation && disabledProjects.contains(((IProjectSourceLocation)location).getProject().getName()))
|
if (location instanceof IProjectSourceLocation && disabledProjects.contains(((IProjectSourceLocation)location).getProject().getName()))
|
||||||
it.remove();
|
it.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAdditionalLocations( Element root, List sourceLocations ) throws CoreException {
|
private void addAdditionalLocations(Element root, List<ICSourceLocation> sourceLocations) throws CoreException {
|
||||||
Bundle bundle = CDebugCorePlugin.getDefault().getBundle();
|
Bundle bundle = CDebugCorePlugin.getDefault().getBundle();
|
||||||
MultiStatus status = new MultiStatus( CDebugCorePlugin.getUniqueIdentifier(), CDebugCorePlugin.INTERNAL_ERROR, InternalSourceLookupMessages.getString( "CSourceLocator.3" ), null ); //$NON-NLS-1$
|
MultiStatus status = new MultiStatus(CDebugCorePlugin.getUniqueIdentifier(),
|
||||||
|
CDebugCorePlugin.INTERNAL_ERROR, InternalSourceLookupMessages.CSourceLocator_3, null);
|
||||||
NodeList list = root.getChildNodes();
|
NodeList list = root.getChildNodes();
|
||||||
int length = list.getLength();
|
int length = list.getLength();
|
||||||
for (int i = 0; i < length; ++i) {
|
for (int i = 0; i < length; ++i) {
|
||||||
|
@ -389,31 +371,27 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
CDebugCorePlugin.log("Unable to restore C/C++ source locator - invalid format."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore C/C++ source locator - invalid format."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Class clazz = null;
|
Class<?> clazz = null;
|
||||||
try {
|
try {
|
||||||
clazz = bundle.loadClass(className);
|
clazz = bundle.loadClass(className);
|
||||||
}
|
} catch (ClassNotFoundException e) {
|
||||||
catch( ClassNotFoundException e ) {
|
|
||||||
CDebugCorePlugin.log(MessageFormat.format("Unable to restore source location - class not found {0}", new String[]{ className })); //$NON-NLS-1$
|
CDebugCorePlugin.log(MessageFormat.format("Unable to restore source location - class not found {0}", new String[]{ className })); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ICSourceLocation location = null;
|
ICSourceLocation location = null;
|
||||||
try {
|
try {
|
||||||
location = (ICSourceLocation)clazz.newInstance();
|
location = (ICSourceLocation)clazz.newInstance();
|
||||||
}
|
} catch (IllegalAccessException e) {
|
||||||
catch( IllegalAccessException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
} catch (InstantiationException e) {
|
||||||
catch( InstantiationException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
location.initializeFrom(data);
|
location.initializeFrom(data);
|
||||||
sourceLocations.add(location);
|
sourceLocations.add(location);
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
status.addAll(e.getStatus());
|
status.addAll(e.getStatus());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -423,7 +401,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
throw new CoreException(status);
|
throw new CoreException(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addOldLocations( Element root, List sourceLocations ) throws CoreException {
|
private void addOldLocations(Element root, List<ICSourceLocation> sourceLocations) throws CoreException {
|
||||||
Bundle bundle = CDebugCorePlugin.getDefault().getBundle();
|
Bundle bundle = CDebugCorePlugin.getDefault().getBundle();
|
||||||
NodeList list = root.getChildNodes();
|
NodeList list = root.getChildNodes();
|
||||||
int length = list.getLength();
|
int length = list.getLength();
|
||||||
|
@ -439,23 +417,20 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
CDebugCorePlugin.log("Unable to restore C/C++ source locator - invalid format."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore C/C++ source locator - invalid format."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Class clazz = null;
|
Class<?> clazz = null;
|
||||||
try {
|
try {
|
||||||
clazz = bundle.loadClass(className);
|
clazz = bundle.loadClass(className);
|
||||||
}
|
} catch (ClassNotFoundException e) {
|
||||||
catch( ClassNotFoundException e ) {
|
|
||||||
CDebugCorePlugin.log(MessageFormat.format("Unable to restore source location - class not found {0}", new String[]{ className })); //$NON-NLS-1$
|
CDebugCorePlugin.log(MessageFormat.format("Unable to restore source location - class not found {0}", new String[]{ className })); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ICSourceLocation location = null;
|
ICSourceLocation location = null;
|
||||||
try {
|
try {
|
||||||
location = (ICSourceLocation)clazz.newInstance();
|
location = (ICSourceLocation)clazz.newInstance();
|
||||||
}
|
} catch (IllegalAccessException e) {
|
||||||
catch( IllegalAccessException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
} catch (InstantiationException e) {
|
||||||
catch( InstantiationException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -486,7 +461,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
if (event.getSource() instanceof IWorkspace && event.getDelta() != null) {
|
if (event.getSource() instanceof IWorkspace && event.getDelta() != null) {
|
||||||
IResourceDelta[] deltas = event.getDelta().getAffectedChildren();
|
IResourceDelta[] deltas = event.getDelta().getAffectedChildren();
|
||||||
if (deltas != null) {
|
if (deltas != null) {
|
||||||
ArrayList list = new ArrayList( deltas.length );
|
ArrayList<IResource> list = new ArrayList<IResource>(deltas.length);
|
||||||
for (int i = 0; i < deltas.length; ++i)
|
for (int i = 0; i < deltas.length; ++i)
|
||||||
if (deltas[i].getResource() instanceof IProject)
|
if (deltas[i].getResource() instanceof IProject)
|
||||||
list.add(deltas[i].getResource());
|
list.add(deltas[i].getResource());
|
||||||
|
@ -498,20 +473,19 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
private void saveDisabledGenericSourceLocations(ICSourceLocation[] locations, Document doc, Element node) {
|
private void saveDisabledGenericSourceLocations(ICSourceLocation[] locations, Document doc, Element node) {
|
||||||
IProject project = getProject();
|
IProject project = getProject();
|
||||||
if (project != null && project.exists() && project.isOpen()) {
|
if (project != null && project.exists() && project.isOpen()) {
|
||||||
List list = CDebugUtils.getReferencedProjects( project );
|
List<IProject> list = CDebugUtils.getReferencedProjects(project);
|
||||||
HashSet names = new HashSet( list.size() + 1 );
|
HashSet<String> names = new HashSet<String>(list.size() + 1);
|
||||||
names.add(project.getName());
|
names.add(project.getName());
|
||||||
Iterator it = list.iterator();
|
for (IProject proj : list) {
|
||||||
while( it.hasNext() ) {
|
names.add(proj.getName());
|
||||||
names.add( ((IProject)it.next()).getName() );
|
|
||||||
}
|
}
|
||||||
for( int i = 0; i < locations.length; ++i )
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
if (locations[i] instanceof IProjectSourceLocation && ((IProjectSourceLocation) locations[i]).isGeneric())
|
if (locations[i] instanceof IProjectSourceLocation && ((IProjectSourceLocation) locations[i]).isGeneric())
|
||||||
names.remove(((IProjectSourceLocation) locations[i]).getProject().getName());
|
names.remove(((IProjectSourceLocation) locations[i]).getProject().getName());
|
||||||
it = names.iterator();
|
}
|
||||||
while( it.hasNext() ) {
|
for (String name : names) {
|
||||||
Element child = doc.createElement(DISABLED_GENERIC_PROJECT_NAME);
|
Element child = doc.createElement(DISABLED_GENERIC_PROJECT_NAME);
|
||||||
child.setAttribute( ATTR_PROJECT_NAME, (String)it.next() );
|
child.setAttribute(ATTR_PROJECT_NAME, name);
|
||||||
node.appendChild(child);
|
node.appendChild(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -525,8 +499,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
child.setAttribute(ATTR_CLASS, locations[i].getClass().getName());
|
child.setAttribute(ATTR_CLASS, locations[i].getClass().getName());
|
||||||
try {
|
try {
|
||||||
child.setAttribute(ATTR_MEMENTO, locations[i].getMemento());
|
child.setAttribute(ATTR_MEMENTO, locations[i].getMemento());
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
CDebugCorePlugin.log(e);
|
CDebugCorePlugin.log(e);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -536,7 +509,6 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
|
||||||
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#getProject()
|
* @see org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator#getProject()
|
||||||
*/
|
*/
|
||||||
public IProject getProject() {
|
public IProject getProject() {
|
||||||
|
@ -551,8 +523,7 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
if (getProject() != null) {
|
if (getProject() != null) {
|
||||||
try {
|
try {
|
||||||
return Arrays.asList(getProject().getReferencedProjects()).contains(ref);
|
return Arrays.asList(getProject().getReferencedProjects()).contains(ref);
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
CDebugCorePlugin.log(e);
|
CDebugCorePlugin.log(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -565,24 +536,21 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ICSourceLocation[] getDefaultSourceLocations() {
|
protected ICSourceLocation[] getDefaultSourceLocations() {
|
||||||
Iterator it = fReferencedProjects.iterator();
|
ArrayList<IProjectSourceLocation> list = new ArrayList<IProjectSourceLocation>(fReferencedProjects.size());
|
||||||
ArrayList list = new ArrayList( fReferencedProjects.size() );
|
|
||||||
if (getProject() != null && getProject().exists() && getProject().isOpen())
|
if (getProject() != null && getProject().exists() && getProject().isOpen())
|
||||||
list.add(SourceLookupFactory.createProjectSourceLocation(getProject()));
|
list.add(SourceLookupFactory.createProjectSourceLocation(getProject()));
|
||||||
while( it.hasNext() ) {
|
for (IProject project : fReferencedProjects) {
|
||||||
IProject project = (IProject)it.next();
|
|
||||||
if (project != null && project.exists() && project.isOpen())
|
if (project != null && project.exists() && project.isOpen())
|
||||||
list.add(SourceLookupFactory.createProjectSourceLocation(project));
|
list.add(SourceLookupFactory.createProjectSourceLocation(project));
|
||||||
}
|
}
|
||||||
return (ICSourceLocation[])list.toArray( new ICSourceLocation[list.size()] );
|
return list.toArray(new ICSourceLocation[list.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetSourceLocations( List affectedProjects ) {
|
private void resetSourceLocations(List<IResource> affectedProjects) {
|
||||||
if (affectedProjects.size() != 0 && getProject() != null) {
|
if (affectedProjects.size() != 0 && getProject() != null) {
|
||||||
if (!getProject().exists() || !getProject().isOpen()) {
|
if (!getProject().exists() || !getProject().isOpen()) {
|
||||||
removeGenericSourceLocations();
|
removeGenericSourceLocations();
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
updateGenericSourceLocations(affectedProjects);
|
updateGenericSourceLocations(affectedProjects);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -591,22 +559,22 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
private void removeGenericSourceLocations() {
|
private void removeGenericSourceLocations() {
|
||||||
fReferencedProjects.clear();
|
fReferencedProjects.clear();
|
||||||
ICSourceLocation[] locations = getSourceLocations();
|
ICSourceLocation[] locations = getSourceLocations();
|
||||||
ArrayList newLocations = new ArrayList( locations.length );
|
ArrayList<ICSourceLocation> newLocations = new ArrayList<ICSourceLocation>(locations.length);
|
||||||
for( int i = 0; i < locations.length; ++i )
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
if (!(locations[i] instanceof IProjectSourceLocation) || !((IProjectSourceLocation)locations[i]).isGeneric())
|
if (!(locations[i] instanceof IProjectSourceLocation) || !((IProjectSourceLocation)locations[i]).isGeneric())
|
||||||
newLocations.add(locations[i]);
|
newLocations.add(locations[i]);
|
||||||
setSourceLocations( (ICSourceLocation[])newLocations.toArray( new ICSourceLocation[newLocations.size()] ) );
|
}
|
||||||
|
setSourceLocations(newLocations.toArray(new ICSourceLocation[newLocations.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateGenericSourceLocations( List affectedProjects ) {
|
private void updateGenericSourceLocations(List<IResource> affectedProjects) {
|
||||||
List newRefs = CDebugUtils.getReferencedProjects( getProject() );
|
List<IProject> newRefs = CDebugUtils.getReferencedProjects(getProject());
|
||||||
ICSourceLocation[] locations = getSourceLocations();
|
ICSourceLocation[] locations = getSourceLocations();
|
||||||
ArrayList newLocations = new ArrayList( locations.length );
|
ArrayList<ICSourceLocation> newLocations = new ArrayList<ICSourceLocation>(locations.length);
|
||||||
for (int i = 0; i < locations.length; ++i) {
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
if (!(locations[i] instanceof IProjectSourceLocation) || !((IProjectSourceLocation)locations[i]).isGeneric()) {
|
if (!(locations[i] instanceof IProjectSourceLocation) || !((IProjectSourceLocation)locations[i]).isGeneric()) {
|
||||||
newLocations.add(locations[i]);
|
newLocations.add(locations[i]);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
IProject project = ((IProjectSourceLocation)locations[i]).getProject();
|
IProject project = ((IProjectSourceLocation)locations[i]).getProject();
|
||||||
if (project.exists() && project.isOpen()) {
|
if (project.exists() && project.isOpen()) {
|
||||||
if (newRefs.contains(project) || project.equals(getProject())) {
|
if (newRefs.contains(project) || project.equals(getProject())) {
|
||||||
|
@ -616,14 +584,12 @@ public class CSourceLocator implements ICSourceLocator, IPersistableSourceLocato
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Iterator it = newRefs.iterator();
|
for (IProject project : newRefs) {
|
||||||
while( it.hasNext() ) {
|
|
||||||
IProject project = (IProject)it.next();
|
|
||||||
if (!fReferencedProjects.contains(project))
|
if (!fReferencedProjects.contains(project))
|
||||||
newLocations.add(SourceLookupFactory.createProjectSourceLocation(project));
|
newLocations.add(SourceLookupFactory.createProjectSourceLocation(project));
|
||||||
}
|
}
|
||||||
fReferencedProjects = newRefs;
|
fReferencedProjects = newRefs;
|
||||||
setSourceLocations( (ICSourceLocation[])newLocations.toArray( new ICSourceLocation[newLocations.size()] ) );
|
setSourceLocations(newLocations.toArray(new ICSourceLocation[newLocations.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -19,6 +19,7 @@ import java.util.Set;
|
||||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||||
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
|
import org.eclipse.cdt.debug.core.model.ICBreakpoint;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.AbsolutePathSourceContainer;
|
||||||
|
import org.eclipse.cdt.debug.core.sourcelookup.IMappingSourceContainer;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.ProgramRelativePathSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.ProgramRelativePathSourceContainer;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
||||||
import org.eclipse.core.resources.IContainer;
|
import org.eclipse.core.resources.IContainer;
|
||||||
|
@ -182,22 +183,21 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
|
||||||
}
|
}
|
||||||
|
|
||||||
private IPath getCompilationPath(ISourceContainer container, String sourceName) {
|
private IPath getCompilationPath(ISourceContainer container, String sourceName) {
|
||||||
IPath path = null;
|
if (container instanceof IMappingSourceContainer) {
|
||||||
if (container instanceof MappingSourceContainer) {
|
return ((IMappingSourceContainer) container).getCompilationPath(sourceName);
|
||||||
path = ((MappingSourceContainer) container).getCompilationPath(sourceName);
|
}
|
||||||
} else {
|
|
||||||
try {
|
try {
|
||||||
ISourceContainer[] containers;
|
ISourceContainer[] containers;
|
||||||
containers = container.getSourceContainers();
|
containers = container.getSourceContainers();
|
||||||
for (int i = 0; i < containers.length; ++i) {
|
for (int i = 0; i < containers.length; ++i) {
|
||||||
path = getCompilationPath(containers[i], sourceName);
|
IPath path = getCompilationPath(containers[i], sourceName);
|
||||||
if (path != null)
|
if (path != null)
|
||||||
break;
|
return path;
|
||||||
}
|
}
|
||||||
} catch (CoreException e) {
|
} catch (CoreException e) {
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
return path;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// >> Bugzilla 279473
|
// >> Bugzilla 279473
|
||||||
|
|
|
@ -7,27 +7,42 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* QNX Software Systems - Initial API and implementation
|
* QNX Software Systems - Initial API and implementation
|
||||||
|
* Sergey Prigogin (Google)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
||||||
|
|
||||||
import java.util.MissingResourceException;
|
import org.eclipse.osgi.util.NLS;
|
||||||
import java.util.ResourceBundle;
|
|
||||||
|
|
||||||
public class InternalSourceLookupMessages {
|
public class InternalSourceLookupMessages extends NLS {
|
||||||
|
public static String CDirectorySourceLocation_0;
|
||||||
|
public static String CDirectorySourceLocation_1;
|
||||||
|
public static String CDirectorySourceLocation_2;
|
||||||
|
public static String CDirectorySourceLocation_3;
|
||||||
|
public static String CDirectorySourceContainerType_0;
|
||||||
|
public static String CDirectorySourceContainerType_1;
|
||||||
|
public static String CDirectorySourceContainerType_2;
|
||||||
|
public static String CProjectSourceLocation_0;
|
||||||
|
public static String CProjectSourceLocation_1;
|
||||||
|
public static String CProjectSourceLocation_2;
|
||||||
|
public static String CSourceLocator_0;
|
||||||
|
public static String CSourceLocator_1;
|
||||||
|
public static String CSourceLocator_2;
|
||||||
|
public static String CSourceLocator_3;
|
||||||
|
public static String MapEntrySourceContainerType_0;
|
||||||
|
public static String MapEntrySourceContainerType_1;
|
||||||
|
public static String MapEntrySourceContainerType_2;
|
||||||
|
public static String MapEntrySourceContainerType_3;
|
||||||
|
public static String MappingSourceContainerType_0;
|
||||||
|
public static String MappingSourceContainerType_1;
|
||||||
|
public static String MappingSourceContainerType_2;
|
||||||
|
public static String SourceUtils_0;
|
||||||
|
public static String ProgramRelativePathSourceContainerType_1;
|
||||||
|
|
||||||
private static final String BUNDLE_NAME = "org.eclipse.cdt.debug.internal.core.sourcelookup.InternalSourceLookupMessages";//$NON-NLS-1$
|
static {
|
||||||
|
NLS.initializeMessages(InternalSourceLookupMessages.class.getName(), InternalSourceLookupMessages.class);
|
||||||
private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle( BUNDLE_NAME );
|
}
|
||||||
|
|
||||||
private InternalSourceLookupMessages() {
|
private InternalSourceLookupMessages() {
|
||||||
}
|
// Do not instantiate
|
||||||
|
|
||||||
public static String getString( String key ) {
|
|
||||||
try {
|
|
||||||
return RESOURCE_BUNDLE.getString( key );
|
|
||||||
}
|
|
||||||
catch( MissingResourceException e ) {
|
|
||||||
return '!' + key + '!';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,28 +7,29 @@
|
||||||
#
|
#
|
||||||
# Contributors:
|
# Contributors:
|
||||||
# QNX Software Systems - initial API and implementation
|
# QNX Software Systems - initial API and implementation
|
||||||
|
# Sergey Prigogin (Google)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
CDirectorySourceLocation.0=Unable to create memento for C/C++ directory source location {0}.
|
CDirectorySourceLocation_0=Unable to create memento for C/C++ directory source location {0}.
|
||||||
CDirectorySourceLocation.1=Unable to initialize source location - missing directory path.
|
CDirectorySourceLocation_1=Unable to initialize source location - missing directory path.
|
||||||
CDirectorySourceLocation.2=Unable to initialize source location - invalid directory path {0}.
|
CDirectorySourceLocation_2=Unable to initialize source location - invalid directory path {0}.
|
||||||
CDirectorySourceLocation.3=Exception occurred initializing source location.
|
CDirectorySourceLocation_3=Exception occurred initializing source location.
|
||||||
CDirectorySourceContainerType.0=Unable to restore directory source lookup entry - missing path attribute.
|
CDirectorySourceContainerType_0=Unable to restore directory source lookup entry - missing path attribute.
|
||||||
CDirectorySourceContainerType.1=Unable to restore directory source lookup entry - expecting directory element.
|
CDirectorySourceContainerType_1=Unable to restore directory source lookup entry - expecting directory element.
|
||||||
CDirectorySourceContainerType.2=Unable to restore directory source lookup entry - invalid memento.
|
CDirectorySourceContainerType_2=Unable to restore directory source lookup entry - invalid memento.
|
||||||
CProjectSourceLocation.0=Unable to create memento for C/C++ project source location {0}.
|
CProjectSourceLocation_0=Unable to create memento for C/C++ project source location {0}.
|
||||||
CProjectSourceLocation.1=Unable to initialize source location - missing project name
|
CProjectSourceLocation_1=Unable to initialize source location - missing project name
|
||||||
CProjectSourceLocation.2=Exception occurred initializing source location.
|
CProjectSourceLocation_2=Exception occurred initializing source location.
|
||||||
CSourceLocator.0=Unable to create memento for C/C++ source locator.
|
CSourceLocator_0=Unable to create memento for C/C++ source locator.
|
||||||
CSourceLocator.1=Unable to restore C/C++ source locator - invalid format.
|
CSourceLocator_1=Unable to restore C/C++ source locator - invalid format.
|
||||||
CSourceLocator.2=Exception occurred initializing source locator.
|
CSourceLocator_2=Exception occurred initializing source locator.
|
||||||
CSourceLocator.3=Error initializing directory source location.
|
CSourceLocator_3=Error initializing directory source location.
|
||||||
MapEntrySourceContainerType.0=Source lookup: unable to restore map entry - missing backend path attribute.
|
MapEntrySourceContainerType_0=Source lookup: unable to restore map entry - missing backend path attribute.
|
||||||
MapEntrySourceContainerType.1=Source lookup: unable to restore map entry - missing local path attribute.
|
MapEntrySourceContainerType_1=Source lookup: unable to restore map entry - missing local path attribute.
|
||||||
MapEntrySourceContainerType.2=Source lookup: unable to restore map entry - expecting map entry element.
|
MapEntrySourceContainerType_2=Source lookup: unable to restore map entry - expecting map entry element.
|
||||||
MapEntrySourceContainerType.3=Source lookup: unable to restore map entry - invalid memento.
|
MapEntrySourceContainerType_3=Source lookup: unable to restore map entry - invalid memento.
|
||||||
MappingSourceContainerType.0=Source lookup: unable to restore map entry - expecting memento attribute.
|
MappingSourceContainerType_0=Source lookup: unable to restore map entry - expecting memento attribute.
|
||||||
MappingSourceContainerType.1=Source lookup: unable to restore mapping - expecting mapping element.
|
MappingSourceContainerType_1=Source lookup: unable to restore mapping - expecting mapping element.
|
||||||
MappingSourceContainerType.2=Source lookup: unable to restore mapping - invalid memento.
|
MappingSourceContainerType_2=Source lookup: unable to restore mapping - invalid memento.
|
||||||
SourceUtils.0=Mapping
|
SourceUtils_0=Mapping
|
||||||
ProgramRelativePathSourceContainerType.1=Source lookup: unable to restore program relative source container - invalid memento.
|
ProgramRelativePathSourceContainerType_1=Source lookup: unable to restore program relative source container - invalid memento.
|
||||||
|
|
|
@ -38,18 +38,18 @@ public class MapEntrySourceContainerType extends AbstractSourceContainerTypeDele
|
||||||
String path = element.getAttribute(BACKEND_PATH);
|
String path = element.getAttribute(BACKEND_PATH);
|
||||||
IPath backend = new Path(path);
|
IPath backend = new Path(path);
|
||||||
if (!backend.isValidPath(path)) {
|
if (!backend.isValidPath(path)) {
|
||||||
abort(InternalSourceLookupMessages.getString("MapEntrySourceContainerType.0"), null); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MapEntrySourceContainerType_0, null);
|
||||||
}
|
}
|
||||||
path = element.getAttribute(LOCAL_PATH);
|
path = element.getAttribute(LOCAL_PATH);
|
||||||
IPath local = new Path(path);
|
IPath local = new Path(path);
|
||||||
if (!local.isValidPath(path)) {
|
if (!local.isValidPath(path)) {
|
||||||
abort(InternalSourceLookupMessages.getString("MapEntrySourceContainerType.1"), null); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MapEntrySourceContainerType_1, null);
|
||||||
}
|
}
|
||||||
return new MapEntrySourceContainer(backend, local);
|
return new MapEntrySourceContainer(backend, local);
|
||||||
}
|
}
|
||||||
abort(InternalSourceLookupMessages.getString("MapEntrySourceContainerType.2"), null); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MapEntrySourceContainerType_2, null);
|
||||||
}
|
}
|
||||||
abort(InternalSourceLookupMessages.getString("MapEntrySourceContainerType.3"), null); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MapEntrySourceContainerType_3, null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.MappingSourceContainer;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
@ -27,7 +26,6 @@ import org.w3c.dom.Node;
|
||||||
* The mapping container type.
|
* The mapping container type.
|
||||||
*/
|
*/
|
||||||
public class MappingSourceContainerType extends AbstractSourceContainerTypeDelegate {
|
public class MappingSourceContainerType extends AbstractSourceContainerTypeDelegate {
|
||||||
|
|
||||||
private final static String ELEMENT_MAPPING = "mapping"; //$NON-NLS-1$
|
private final static String ELEMENT_MAPPING = "mapping"; //$NON-NLS-1$
|
||||||
private final static String ELEMENT_MAP_ENTRY = "mapEntry"; //$NON-NLS-1$
|
private final static String ELEMENT_MAP_ENTRY = "mapEntry"; //$NON-NLS-1$
|
||||||
private final static String ATTR_NAME = "name"; //$NON-NLS-1$
|
private final static String ATTR_NAME = "name"; //$NON-NLS-1$
|
||||||
|
@ -44,7 +42,7 @@ public class MappingSourceContainerType extends AbstractSourceContainerTypeDeleg
|
||||||
String name = element.getAttribute(ATTR_NAME);
|
String name = element.getAttribute(ATTR_NAME);
|
||||||
if (name == null)
|
if (name == null)
|
||||||
name = ""; //$NON-NLS-1$
|
name = ""; //$NON-NLS-1$
|
||||||
List entries = new ArrayList();
|
List<MapEntrySourceContainer> entries = new ArrayList<MapEntrySourceContainer>();
|
||||||
Node childNode = element.getFirstChild();
|
Node childNode = element.getFirstChild();
|
||||||
while (childNode != null) {
|
while (childNode != null) {
|
||||||
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
|
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
|
||||||
|
@ -52,7 +50,7 @@ public class MappingSourceContainerType extends AbstractSourceContainerTypeDeleg
|
||||||
if (ELEMENT_MAP_ENTRY.equals(child.getNodeName())) {
|
if (ELEMENT_MAP_ENTRY.equals(child.getNodeName())) {
|
||||||
String childMemento = child.getAttribute(ATTR_MEMENTO);
|
String childMemento = child.getAttribute(ATTR_MEMENTO);
|
||||||
if (childMemento == null || childMemento.length() == 0) {
|
if (childMemento == null || childMemento.length() == 0) {
|
||||||
abort( InternalSourceLookupMessages.getString( "MappingSourceContainerType.0" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MappingSourceContainerType_0, null);
|
||||||
}
|
}
|
||||||
ISourceContainerType type = DebugPlugin.getDefault().getLaunchManager().getSourceContainerType(MapEntrySourceContainer.TYPE_ID);
|
ISourceContainerType type = DebugPlugin.getDefault().getLaunchManager().getSourceContainerType(MapEntrySourceContainer.TYPE_ID);
|
||||||
MapEntrySourceContainer entry = (MapEntrySourceContainer) type.createSourceContainer(childMemento);
|
MapEntrySourceContainer entry = (MapEntrySourceContainer) type.createSourceContainer(childMemento);
|
||||||
|
@ -62,15 +60,14 @@ public class MappingSourceContainerType extends AbstractSourceContainerTypeDeleg
|
||||||
childNode = childNode.getNextSibling();
|
childNode = childNode.getNextSibling();
|
||||||
}
|
}
|
||||||
MappingSourceContainer container = new MappingSourceContainer(name);
|
MappingSourceContainer container = new MappingSourceContainer(name);
|
||||||
Iterator it = entries.iterator();
|
for (MapEntrySourceContainer entry : entries) {
|
||||||
while( it.hasNext() ) {
|
container.addMapEntry(entry);
|
||||||
container.addMapEntry( (MapEntrySourceContainer)it.next() );
|
|
||||||
}
|
}
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
abort( InternalSourceLookupMessages.getString( "MappingSourceContainerType.1" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MappingSourceContainerType_1, null);
|
||||||
}
|
}
|
||||||
abort( InternalSourceLookupMessages.getString( "MappingSourceContainerType.2" ), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.MappingSourceContainerType_2, null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Freescale - Initial implementation
|
* Freescale - Initial implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
package org.eclipse.cdt.debug.internal.core.sourcelookup;
|
||||||
|
|
||||||
import org.eclipse.cdt.debug.core.sourcelookup.ProgramRelativePathSourceContainer;
|
import org.eclipse.cdt.debug.core.sourcelookup.ProgramRelativePathSourceContainer;
|
||||||
|
@ -17,22 +16,20 @@ import org.eclipse.debug.core.sourcelookup.ISourceContainer;
|
||||||
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
|
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
|
||||||
|
|
||||||
public class ProgramRelativePathSourceContainerType extends AbstractSourceContainerTypeDelegate {
|
public class ProgramRelativePathSourceContainerType extends AbstractSourceContainerTypeDelegate {
|
||||||
|
|
||||||
private final static String ELEMENT_NAME = "programRelativePath"; //$NON-NLS-1$
|
private final static String ELEMENT_NAME = "programRelativePath"; //$NON-NLS-1$
|
||||||
|
|
||||||
public ISourceContainer createSourceContainer(String memento) throws CoreException {
|
public ISourceContainer createSourceContainer(String memento) throws CoreException {
|
||||||
if (ELEMENT_NAME.equals(memento)) {
|
if (ELEMENT_NAME.equals(memento)) {
|
||||||
return new ProgramRelativePathSourceContainer();
|
return new ProgramRelativePathSourceContainer();
|
||||||
}
|
}
|
||||||
abort( InternalSourceLookupMessages.getString("ProgramRelativePathSourceContainerType.1"), null ); //$NON-NLS-1$
|
abort(InternalSourceLookupMessages.ProgramRelativePathSourceContainerType_1, null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMemento(ISourceContainer container) throws CoreException {
|
public String getMemento(ISourceContainer container) throws CoreException {
|
||||||
if (container instanceof ProgramRelativePathSourceContainer) {
|
if (container instanceof ProgramRelativePathSourceContainer) {
|
||||||
return ELEMENT_NAME;
|
return ELEMENT_NAME;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
return ""; //$NON-NLS-1$
|
return ""; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,13 +41,9 @@ import org.xml.sax.InputSource;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
public class SourceUtils {
|
public class SourceUtils {
|
||||||
|
|
||||||
private static final String NAME_COMMON_SOURCE_LOCATIONS = "commonSourceLocations"; //$NON-NLS-1$
|
private static final String NAME_COMMON_SOURCE_LOCATIONS = "commonSourceLocations"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String NAME_SOURCE_LOCATION = "sourceLocation"; //$NON-NLS-1$
|
private static final String NAME_SOURCE_LOCATION = "sourceLocation"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
private static final String ATTR_CLASS = "class"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String ATTR_MEMENTO = "memento"; //$NON-NLS-1$
|
private static final String ATTR_MEMENTO = "memento"; //$NON-NLS-1$
|
||||||
|
|
||||||
public static String getCommonSourceLocationsMemento(ICSourceLocation[] locations) {
|
public static String getCommonSourceLocationsMemento(ICSourceLocation[] locations) {
|
||||||
|
@ -59,17 +55,15 @@ public class SourceUtils {
|
||||||
document.appendChild(element);
|
document.appendChild(element);
|
||||||
saveSourceLocations(document, element, locations);
|
saveSourceLocations(document, element, locations);
|
||||||
return CDebugUtils.serializeDocument(document);
|
return CDebugUtils.serializeDocument(document);
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e ) {
|
ex = e;
|
||||||
|
} catch (IOException e) {
|
||||||
|
ex = e;
|
||||||
|
} catch (TransformerException e) {
|
||||||
ex = e;
|
ex = e;
|
||||||
}
|
}
|
||||||
catch( IOException e ) {
|
CDebugCorePlugin.log(new Status(IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0,
|
||||||
ex = e;
|
"Error saving common source settings.", ex)); //$NON-NLS-1$
|
||||||
}
|
|
||||||
catch( TransformerException e ) {
|
|
||||||
ex = e;
|
|
||||||
}
|
|
||||||
CDebugCorePlugin.log( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0, "Error saving common source settings.", ex ) ); //$NON-NLS-1$
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,8 +73,7 @@ public class SourceUtils {
|
||||||
child.setAttribute(ATTR_CLASS, locations[i].getClass().getName());
|
child.setAttribute(ATTR_CLASS, locations[i].getClass().getName());
|
||||||
try {
|
try {
|
||||||
child.setAttribute(ATTR_MEMENTO, locations[i].getMemento());
|
child.setAttribute(ATTR_MEMENTO, locations[i].getMemento());
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
CDebugCorePlugin.log(e);
|
CDebugCorePlugin.log(e);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -98,22 +91,22 @@ public class SourceUtils {
|
||||||
Element root = parser.parse(source).getDocumentElement();
|
Element root = parser.parse(source).getDocumentElement();
|
||||||
if (root.getNodeName().equalsIgnoreCase(NAME_COMMON_SOURCE_LOCATIONS))
|
if (root.getNodeName().equalsIgnoreCase(NAME_COMMON_SOURCE_LOCATIONS))
|
||||||
result = initializeSourceLocations(root);
|
result = initializeSourceLocations(root);
|
||||||
}
|
} catch (ParserConfigurationException e) {
|
||||||
catch( ParserConfigurationException e ) {
|
CDebugCorePlugin.log(new Status(IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0,
|
||||||
CDebugCorePlugin.log( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0, "Error initializing common source settings.", e ) ); //$NON-NLS-1$
|
"Error initializing common source settings.", e)); //$NON-NLS-1$
|
||||||
}
|
} catch (SAXException e) {
|
||||||
catch( SAXException e ) {
|
CDebugCorePlugin.log(new Status(IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0,
|
||||||
CDebugCorePlugin.log( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0, "Error initializing common source settings.", e ) ); //$NON-NLS-1$
|
"Error initializing common source settings.", e)); //$NON-NLS-1$
|
||||||
}
|
} catch (IOException e) {
|
||||||
catch( IOException e ) {
|
CDebugCorePlugin.log(new Status(IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0,
|
||||||
CDebugCorePlugin.log( new Status( IStatus.ERROR, CDebugCorePlugin.getUniqueIdentifier(), 0, "Error initializing common source settings.", e ) ); //$NON-NLS-1$
|
"Error initializing common source settings.", e)); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ICSourceLocation[] initializeSourceLocations(Element root) {
|
public static ICSourceLocation[] initializeSourceLocations(Element root) {
|
||||||
List sourceLocations = new LinkedList();
|
List<ICSourceLocation> sourceLocations = new LinkedList<ICSourceLocation>();
|
||||||
NodeList list = root.getChildNodes();
|
NodeList list = root.getChildNodes();
|
||||||
int length = list.getLength();
|
int length = list.getLength();
|
||||||
for(int i = 0; i < length; ++i) {
|
for(int i = 0; i < length; ++i) {
|
||||||
|
@ -128,37 +121,34 @@ public class SourceUtils {
|
||||||
CDebugCorePlugin.log("Unable to restore common source locations - invalid format."); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore common source locations - invalid format."); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Class clazz = null;
|
Class<?> clazz = null;
|
||||||
try {
|
try {
|
||||||
clazz = CDebugCorePlugin.getDefault().getBundle().loadClass(className);
|
clazz = CDebugCorePlugin.getDefault().getBundle().loadClass(className);
|
||||||
}
|
} catch (ClassNotFoundException e) {
|
||||||
catch( ClassNotFoundException e ) {
|
CDebugCorePlugin.log(MessageFormat.format("Unable to restore source location - class not found {0}", //$NON-NLS-1$
|
||||||
CDebugCorePlugin.log( MessageFormat.format( "Unable to restore source location - class not found {0}", new String[]{ className } ) ); //$NON-NLS-1$
|
new String[] { className }));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ICSourceLocation location = null;
|
ICSourceLocation location = null;
|
||||||
try {
|
try {
|
||||||
location = (ICSourceLocation)clazz.newInstance();
|
location = (ICSourceLocation)clazz.newInstance();
|
||||||
}
|
} catch (IllegalAccessException e) {
|
||||||
catch( IllegalAccessException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
} catch (InstantiationException e) {
|
||||||
catch( InstantiationException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
location.initializeFrom(data);
|
location.initializeFrom(data);
|
||||||
sourceLocations.add(location);
|
sourceLocations.add(location);
|
||||||
}
|
} catch (CoreException e) {
|
||||||
catch( CoreException e ) {
|
|
||||||
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
CDebugCorePlugin.log("Unable to restore source location: " + e.getMessage()); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (ICSourceLocation[])sourceLocations.toArray( new ICSourceLocation[sourceLocations.size()] );
|
return sourceLocations.toArray(new ICSourceLocation[sourceLocations.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isEmpty(String string) {
|
private static boolean isEmpty(String string) {
|
||||||
|
@ -166,17 +156,16 @@ public class SourceUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
static public ISourceContainer[] convertSourceLocations(ICSourceLocation[] locations) {
|
static public ISourceContainer[] convertSourceLocations(ICSourceLocation[] locations) {
|
||||||
ArrayList containers = new ArrayList( locations.length );
|
ArrayList<ISourceContainer> containers = new ArrayList<ISourceContainer>(locations.length);
|
||||||
int mappingCount = 0;
|
int mappingCount = 0;
|
||||||
for (int i = 0; i < locations.length; ++i) {
|
for (int i = 0; i < locations.length; ++i) {
|
||||||
if (locations[i] instanceof IProjectSourceLocation) {
|
if (locations[i] instanceof IProjectSourceLocation) {
|
||||||
containers.add(new ProjectSourceContainer(((IProjectSourceLocation)locations[i]).getProject(), false));
|
containers.add(new ProjectSourceContainer(((IProjectSourceLocation)locations[i]).getProject(), false));
|
||||||
}
|
} else if (locations[i] instanceof IDirectorySourceLocation) {
|
||||||
else if ( locations[i] instanceof IDirectorySourceLocation ) {
|
|
||||||
IDirectorySourceLocation d = (IDirectorySourceLocation)locations[i];
|
IDirectorySourceLocation d = (IDirectorySourceLocation)locations[i];
|
||||||
IPath a = d.getAssociation();
|
IPath a = d.getAssociation();
|
||||||
if (a != null) {
|
if (a != null) {
|
||||||
MappingSourceContainer mapping = new MappingSourceContainer( InternalSourceLookupMessages.getString( "SourceUtils.0" ) + (++mappingCount) ); //$NON-NLS-1$
|
MappingSourceContainer mapping = new MappingSourceContainer(InternalSourceLookupMessages.SourceUtils_0 + (++mappingCount));
|
||||||
mapping.addMapEntries(new MapEntrySourceContainer[] { new MapEntrySourceContainer(a, d.getDirectory()) });
|
mapping.addMapEntries(new MapEntrySourceContainer[] { new MapEntrySourceContainer(a, d.getDirectory()) });
|
||||||
containers.add(mapping);
|
containers.add(mapping);
|
||||||
|
|
||||||
|
@ -184,6 +173,6 @@ public class SourceUtils {
|
||||||
containers.add(new DirectorySourceContainer(d.getDirectory(), d.searchSubfolders()));
|
containers.add(new DirectorySourceContainer(d.getDirectory(), d.searchSubfolders()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (ISourceContainer[])containers.toArray( new ISourceContainer[containers.size()] );
|
return containers.toArray(new ISourceContainer[containers.size()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue