1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-12 18:55:38 +02:00

Bug 485107: ensure correct adapter factory is being used

Ensure that the correct adapter factory is being used for each
adapter type.

Change-Id: Ibd401bb16c6320a49285cae4618a80a1bc318da3
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
This commit is contained in:
Jonah Graham 2016-04-27 17:13:07 +01:00
parent 2469e0e117
commit b2300cbcfe
3 changed files with 17 additions and 0 deletions

View file

@ -152,6 +152,9 @@
</tab>
</extension>
<extension point="org.eclipse.core.runtime.adapters">
<!-- Extenders providing their own subclass of GdbAdapterFactory must also extend GdbLaunch
and declare that the extended versions adapt to all of these types. See class comment in
GdbAdapterFactory for more details. -->
<factory
class="org.eclipse.cdt.dsf.gdb.internal.ui.GdbAdapterFactory"
adaptableType="org.eclipse.cdt.dsf.gdb.launching.GdbLaunch">

View file

@ -40,6 +40,13 @@ import org.eclipse.debug.ui.contexts.ISuspendTrigger;
* for the launch object. But it also manages the creation and destruction
* of the session-based adapters which are returned by the
* IDMContext.getAdapter() methods.
*
* When extending the GdbAdapterFactory, it is important to register all the
* types declaratively (in the plugin.xml) that the factory can adapt the
* extended launch to.
*
* See the plugin.xml that references GdbAdapterFactory for the current list,
* and it should match {@link #getAdapterList()}.
*/
@ThreadSafe
public class GdbAdapterFactory implements IAdapterFactory, ILaunchesListener2 {
@ -126,6 +133,9 @@ public class GdbAdapterFactory implements IAdapterFactory, ILaunchesListener2 {
return adapterSet.getLaunchAdapter(adapterType);
}
/**
* This list must match the list in the plugin.xml. See class comment.
*/
@Override
public Class<?>[] getAdapterList() {
return new Class<?>[] {

View file

@ -81,6 +81,10 @@
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxyFactory"/>
<adapter type="org.eclipse.debug.ui.contexts.ISuspendTrigger"/>
<adapter type="org.eclipse.debug.internal.ui.viewers.model.provisional.IColumnPresentationFactory"/>
<adapter type="org.eclipse.debug.core.commands.ITerminateHandler"/>
<adapter type="org.eclipse.cdt.debug.core.model.IConnectHandler"/>
<adapter type="org.eclipse.debug.core.commands.IDisconnectHandler"/>
<adapter type="org.eclipse.cdt.debug.core.model.IDebugNewExecutableHandler"/>
</factory>
</extension>