package bndtools.launch;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.sourcelookup.ISourceContainer;
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
public class BndDependencySourceContainerType extends AbstractSourceContainerTypeDelegate {
private static final String ELEMENT_NAME = "bnd";
/*
* (non-Javadoc)
* @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento
* (org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
*/
@Override
public String getMemento(ISourceContainer container) throws CoreException {
Document document = newDocument();
Element element = document.createElement(ELEMENT_NAME);
document.appendChild(element);
return serializeDocument(document);
}
/*
* (non-Javadoc)
* @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType# createSourceContainer(java.lang.String)
*/
@Override
public ISourceContainer createSourceContainer(String memento) throws CoreException {
Node node = parseDocument(memento);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
if (ELEMENT_NAME.equals(element.getNodeName())) {
return new BndDependencySourceContainer();
} else if ("default".equals(element.getNodeName())) { // try to gracefully handle old serialized element name
return new BndDependencySourceContainer();
}
abort("Unable to restore Bnd Dependencies source lookup path - expecting bnd element.", null);
}
abort("Unable to restore Bnd Dependencies source lookup path - invalid memento.", null);
return null;
}
}