Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'docs/org.eclipse.wst.command.env.doc.user/index/segments')
-rw-r--r--docs/org.eclipse.wst.command.env.doc.user/index/segmentsbin27 -> 0 bytes
1 files changed, 0 insertions, 0 deletions
diff --git a/docs/org.eclipse.wst.command.env.doc.user/index/segments b/docs/org.eclipse.wst.command.env.doc.user/index/segments
deleted file mode 100644
index 63e327d83..000000000
--- a/docs/org.eclipse.wst.command.env.doc.user/index/segments
+++ /dev/null
Binary files differ

Back to the top

org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManager.java org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManagerListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointsListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventFilter.java org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventSetListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionManager.java org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionsListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunch.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationMigrationDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationWorkingCopy.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchManager.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchMode.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener2.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureProvider.java org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureType.java org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockManager.java org.eclipse.debug.core/core/org/eclipse/debug/core/IProcessFactory.java org.eclipse.debug.core/core/org/eclipse/debug/core/IRequest.java org.eclipse.debug.core/core/org/eclipse/debug/core/IStatusHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/IStreamListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandRequest.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDisconnectHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDropToFrameHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IEnabledStateRequest.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IResumeHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepFiltersHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepIntoHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepOverHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepReturnHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ISuspendHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ITerminateHandler.java org.eclipse.debug.core/core/org/eclipse/debug/core/commands/package.html org.eclipse.debug.core/core/org/eclipse/debug/core/model/Breakpoint.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/DebugElement.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpoint.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpointImportParticipant.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugElement.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugModelProvider.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugTarget.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDisconnect.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDropToFrame.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IErrorReportingExpression.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IExpression.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFilteredStep.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFlushableStreamMonitor.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IIndexedValue.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILineBreakpoint.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate2.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlock.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockExtension.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrieval.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrievalExtension.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IPersistableSourceLocator.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IProcess.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegister.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegisterGroup.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISourceLocator.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStackFrame.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStep.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStepFilters.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamMonitor.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy2.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISuspendResume.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/ITerminate.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IThread.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValue.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValueModification.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IVariable.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpression.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionListener.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionResult.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchpoint.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/LaunchConfigurationDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/LineBreakpoint.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/MemoryByte.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java org.eclipse.debug.core/core/org/eclipse/debug/core/model/package.html org.eclipse.debug.core/core/org/eclipse/debug/core/package.html org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupParticipant.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/IPersistableSourceLocator2.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerTypeDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupParticipant.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputerDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ArchiveSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/CompositeSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DefaultSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DirectorySourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ExternalArchiveSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/FolderSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/LocalFileStorage.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ProjectSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/WorkspaceSourceContainer.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ZipEntryStorage.java org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/package.html org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/package.html org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointImportParticipantDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugOptions.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugPreferenceInitializer.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/EnvironmentVariableResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/ExpressionManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IConfigurationElementConstants.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IInternalDebugCoreConstants.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/InputStreamMonitor.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationComparator.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchDelegate.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchMode.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchablePropertyTester.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureProvider.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/MemoryBlockManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/NullStreamsProxy.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/OutputStreamMonitor.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StepFilterManager.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StreamsProxy.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemPropertyResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemVariableResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/WatchExpression.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/CommandAdapterFactory.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommandRequest.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DisconnectCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DropToFrameCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ForEachCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/Request.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ResumeCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepFiltersCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepIntoCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepOverCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepReturnCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/SuspendCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/TerminateCommand.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLocatorMementoComparator.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.properties org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupUtils.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourcePathComputer.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ArchiveSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DefaultSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DirectorySourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ExternalArchiveSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/FolderSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ProjectSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/WorkspaceSourceContainerType.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ContainerResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.properties org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ProjectResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ResourceResolver.java org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/WorkspaceResolver.java org.eclipse.debug.core/doc/.cvsignore org.eclipse.debug.core/doc/org_eclipse_debug_core_sourceContainerTypes.html org.eclipse.debug.core/doc/org_eclipse_debug_core_sourcePathComputers.html org.eclipse.debug.core/hglegal2003.htm org.eclipse.debug.core/ngibmcpy2003.gif org.eclipse.debug.core/plugin.properties org.eclipse.debug.core/plugin.xml org.eclipse.debug.core/r2_0_buildnotes_platform-debug.html org.eclipse.debug.core/r2_1_buildnotes_platform-debug.html org.eclipse.debug.core/r3_0_buildnotes_platform-debug.html org.eclipse.debug.core/r3_0_changes.html org.eclipse.debug.core/r3_1_buildnotes_platform-debug.html org.eclipse.debug.core/r3_1_changes.html org.eclipse.debug.core/r3_2_ buildnotes_platform-debug.html org.eclipse.debug.core/r3_3_buildnotes_platform-debug.html org.eclipse.debug.core/r3_4_buildnotes_platform-debug.html org.eclipse.debug.core/r3_5_buildnotes_platform-debug.html org.eclipse.debug.core/schema/breakpointImportParticipants.exsd org.eclipse.debug.core/schema/breakpoints.exsd org.eclipse.debug.core/schema/launchConfigurationComparators.exsd org.eclipse.debug.core/schema/launchConfigurationTypes.exsd org.eclipse.debug.core/schema/launchDelegates.exsd org.eclipse.debug.core/schema/launchModes.exsd org.eclipse.debug.core/schema/launchers.exsd org.eclipse.debug.core/schema/logicalStructureProviders.exsd org.eclipse.debug.core/schema/logicalStructureTypes.exsd org.eclipse.debug.core/schema/processFactories.exsd org.eclipse.debug.core/schema/sourceContainerTypes.exsd org.eclipse.debug.core/schema/sourceLocators.exsd org.eclipse.debug.core/schema/sourcePathComputers.exsd org.eclipse.debug.core/schema/statusHandlers.exsd org.eclipse.debug.core/schema/watchExpressionDelegates.exsd org.eclipse.debug.core/scripts/exportplugin.xml org.eclipse.debug.examples.core/.classpath org.eclipse.debug.examples.core/.cvsignore org.eclipse.debug.examples.core/.project org.eclipse.debug.examples.core/.settings/org.eclipse.jdt.core.prefs org.eclipse.debug.examples.core/META-INF/MANIFEST.MF org.eclipse.debug.examples.core/about.html org.eclipse.debug.examples.core/build.properties org.eclipse.debug.examples.core/pdavm/src/org/eclipse/debug/examples/pdavm/PDAVirtualMachine.java org.eclipse.debug.examples.core/pdavm/tests/vmtest10.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest2.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest3.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest6.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest8.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest9.pda org.eclipse.debug.examples.core/pdavm/tests/vmtest_children.pda org.eclipse.debug.examples.core/plugin.xml org.eclipse.debug.examples.core/readme.html org.eclipse.debug.examples.core/samples/counter.pda org.eclipse.debug.examples.core/samples/drop.pda org.eclipse.debug.examples.core/samples/example.pda org.eclipse.debug.examples.core/samples/fibonacci.pda org.eclipse.debug.examples.core/samples/registers.pda org.eclipse.debug.examples.core/samples/stack.pda org.eclipse.debug.examples.core/samples/structures.pda org.eclipse.debug.examples.core/scripts/build.xml org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/ClockControl.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/LengthControl.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/MidiLaunch.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/MidiLaunchDelegate.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/SequencerControl.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/TempoControl.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/TimeControl.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/DebugCorePlugin.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDARunToLineBreakpoint.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDAWatchpoint.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/launcher/PDALaunchDelegate.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/IPDAEventListener.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAArray.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAArrayEntry.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDADebugElement.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDADebugTarget.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAStackFrame.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAStackValue.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAThread.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAValue.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAVariable.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/WordStructureDelegate.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDABitFieldData.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAChildrenCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAClearBreakpointCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDACommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDACommandResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDADataCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDADropFrameCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvalCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvalResultEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEventStopCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAExitedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameCommandResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameData.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAGroupsCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAListResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDANoSuchLabelEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAPopDataCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAPushDataCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegisterData.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersCommandResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAResumeCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAResumedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARunControlEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetBreakpointCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetDataCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetVarCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackCommandResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackDepthCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackDepthCommandResult.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStartedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStepCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStepReturnCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASuspendCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASuspendedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDATerminateCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDATerminatedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAUnimplementedInstructionEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMResumeCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMResumedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMStartedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMSuspendCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMSuspendedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMTerminatedEvent.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVarCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAWatchCommand.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/package.html org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourceLookupDirector.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourceLookupParticipant.java org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourcePathComputerDelegate.java org.eclipse.debug.examples.core/src_ant/org/eclipse/debug/examples/ant/tasks/PreProcessor.java org.eclipse.debug.examples.ui/.classpath org.eclipse.debug.examples.ui/.cvsignore org.eclipse.debug.examples.ui/.project org.eclipse.debug.examples.ui/.settings/org.eclipse.jdt.core.prefs org.eclipse.debug.examples.ui/META-INF/MANIFEST.MF org.eclipse.debug.examples.ui/about.html org.eclipse.debug.examples.ui/build.properties org.eclipse.debug.examples.ui/icons/full/dlcl16/pop.gif org.eclipse.debug.examples.ui/icons/full/dlcl16/push.gif org.eclipse.debug.examples.ui/icons/full/elcl16/pop.gif org.eclipse.debug.examples.ui/icons/full/elcl16/push.gif org.eclipse.debug.examples.ui/icons/full/obj16/clef.png org.eclipse.debug.examples.ui/icons/full/obj16/note.gif org.eclipse.debug.examples.ui/icons/full/obj16/pda.gif org.eclipse.debug.examples.ui/plugin.xml org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlCellModifier.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEditor.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlLabelProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlsMementoProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiStepOverHandler.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnPresentation.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerContentProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerModelProxyFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnPresentation.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackLabelProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/ClockSliderDetailPane.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/ControlDetailPaneFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/TempoSliderDetailPane.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiLaunchShortcut.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiMainTab.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiTabGroup.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/DebugUIPlugin.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/AdapterFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/ModelProxyFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDADebugTargetContentProvider.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDADebugTargetProxy.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDAThreadEventHandler.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDABreakpointAdapter.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAEditorAdapterFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDARunToLineAdapter.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAToggleWatchpointsTarget.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAToggleWatchpointsTargetFactory.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/AnnotationHover.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAContentAssistProcessor.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAContentAssistant.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAEditor.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAEditorMessages.properties org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAScanner.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDASourceViewerConfiguration.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PopFrameActionDelegate.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/TextHover.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/WordFinder.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDALaunchShortcut.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDAMainTab.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDATabGroup.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/presentation/PDAModelPresentation.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/AbstractDataStackViewHandler.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/CanPushTester.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/DataStackView.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/PopHandler.java org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/PushHandler.java org.eclipse.ui.console/.classpath org.eclipse.ui.console/.cvsignore org.eclipse.ui.console/.project org.eclipse.ui.console/.settings/org.eclipse.jdt.core.prefs org.eclipse.ui.console/.settings/org.eclipse.pde.prefs org.eclipse.ui.console/META-INF/MANIFEST.MF org.eclipse.ui.console/about.html org.eclipse.ui.console/build.properties org.eclipse.ui.console/icons/full/clcl16/clear_co.gif org.eclipse.ui.console/icons/full/clcl16/lock_co.gif org.eclipse.ui.console/icons/full/clcl16/pin.gif org.eclipse.ui.console/icons/full/cview16/console_view.gif org.eclipse.ui.console/icons/full/dlcl16/clear_co.gif org.eclipse.ui.console/icons/full/dlcl16/lock_co.gif org.eclipse.ui.console/icons/full/dlcl16/pin.gif org.eclipse.ui.console/icons/full/dlcl16/rem_co.gif org.eclipse.ui.console/icons/full/elcl16/clear_co.gif org.eclipse.ui.console/icons/full/elcl16/lock_co.gif org.eclipse.ui.console/icons/full/elcl16/new_con.gif org.eclipse.ui.console/icons/full/elcl16/pin.gif org.eclipse.ui.console/icons/full/elcl16/rem_co.gif org.eclipse.ui.console/icons/full/eview16/console_view.gif org.eclipse.ui.console/plugin.properties org.eclipse.ui.console/plugin.xml org.eclipse.ui.console/schema/consoleFactories.exsd org.eclipse.ui.console/schema/consolePageParticipants.exsd org.eclipse.ui.console/schema/consolePatternMatchListeners.exsd org.eclipse.ui.console/scripts/exportplugin.xml org.eclipse.ui.console/src/org/eclipse/ui/console/AbstractConsole.java org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsole.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleDocumentPartitioner.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleFactory.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleListener.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsolePageParticipant.java org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleView.java org.eclipse.ui.console/src/org/eclipse/ui/console/IHyperlink.java org.eclipse.ui.console/src/org/eclipse/ui/console/IHyperlink2.java org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleInputStream.java org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java org.eclipse.ui.console/src/org/eclipse/ui/console/IPatternMatchListener.java org.eclipse.ui.console/src/org/eclipse/ui/console/IPatternMatchListenerDelegate.java org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java org.eclipse.ui.console/src/org/eclipse/ui/console/PatternMatchEvent.java org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsole.java org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsolePage.java org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java org.eclipse.ui.console/src/org/eclipse/ui/console/actions/ClearOutputAction.java org.eclipse.ui.console/src/org/eclipse/ui/console/actions/CloseConsoleAction.java org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerAction.java org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java org.eclipse.ui.console/src/org/eclipse/ui/console/actions/package.html org.eclipse.ui.console/src/org/eclipse/ui/console/package.html org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDocument.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDocumentAdapter.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleFactoryExtension.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleHyperlinkPosition.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePageParticipantExtension.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePatternMatcher.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleResourceBundleMessages.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleResourceBundleMessages.properties org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleTypePropertyTester.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleViewConsoleFactory.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/HyperlinkUpdater.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IConsoleHelpContextIds.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IInternalConsoleConstants.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePage.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartition.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartitioner.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/OpenConsoleAction.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PatternMatchListener.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PatternMatchListenerExtension.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ScrollLockAction.java org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ShowConsoleAction.java org.eclipse.ui.externaltools/.classpath org.eclipse.ui.externaltools/.cvsignore org.eclipse.ui.externaltools/.project org.eclipse.ui.externaltools/.settings/org.eclipse.jdt.core.prefs org.eclipse.ui.externaltools/.settings/org.eclipse.jdt.ui.prefs org.eclipse.ui.externaltools/.settings/org.eclipse.pde.prefs org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuildTab.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsLaunchConfigurationMessages.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsLaunchConfigurationMessages.properties org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/IgnoreWhiteSpaceComparator.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/WorkingSetComparator.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/menu/ExternalToolMenuDelegate.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/menu/OpenExternalToolsConfigurations.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/BuilderUtils.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPreferenceInitializer.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IExternalToolConstants.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IExternalToolsHelpContextIds.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IPreferenceConstants.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ImageDescriptorRegistry.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/BuilderLabelProvider.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/BuilderPropertyPage.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/EditCommandDialog.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsPreferencePage.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsUIMessages.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsUIMessages.properties org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/FileSelectionDialog.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/TreeAndListGroup.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildFilesResolver.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildProjectResolver.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeResolver.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/SystemPathResolver.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/VariableMessages.java org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/VariableMessages.properties org.eclipse.ui.externaltools/META-INF/MANIFEST.MF org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ExternalToolsProgramMessages.java org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ExternalToolsProgramMessages.properties org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java org.eclipse.ui.externaltools/about.html org.eclipse.ui.externaltools/build.properties org.eclipse.ui.externaltools/buildfiles/exportplugin.xml org.eclipse.ui.externaltools/icons/full/dtool16/external_tools.gif org.eclipse.ui.externaltools/icons/full/etool16/external_tools.gif org.eclipse.ui.externaltools/icons/full/obj16/build_tab.gif org.eclipse.ui.externaltools/icons/full/obj16/builder.gif org.eclipse.ui.externaltools/icons/full/obj16/classpath.gif org.eclipse.ui.externaltools/icons/full/obj16/external_tools.gif org.eclipse.ui.externaltools/icons/full/obj16/invalid_build_tool.gif org.eclipse.ui.externaltools/icons/full/obj16/main_tab.gif org.eclipse.ui.externaltools/icons/full/wizban/ext_tools_wiz.png org.eclipse.ui.externaltools/plugin.properties org.eclipse.ui.externaltools/plugin.xml org.eclipse.ui.externaltools/schema/configurationDuplicationMaps.exsd
Diffstat
-rw-r--r--org.eclipse.core.variables/.classpath7
-rw-r--r--org.eclipse.core.variables/.cvsignore2
-rw-r--r--org.eclipse.core.variables/.project34
-rw-r--r--org.eclipse.core.variables/.settings/org.eclipse.jdt.core.prefs96
-rw-r--r--org.eclipse.core.variables/.settings/org.eclipse.pde.prefs17
-rw-r--r--org.eclipse.core.variables/META-INF/MANIFEST.MF13
-rw-r--r--org.eclipse.core.variables/about.html28
-rw-r--r--org.eclipse.core.variables/build.properties18
-rw-r--r--org.eclipse.core.variables/plugin.properties16
-rw-r--r--org.eclipse.core.variables/plugin.xml26
-rw-r--r--org.eclipse.core.variables/schema/dynamicVariables.exsd130
-rw-r--r--org.eclipse.core.variables/schema/valueVariables.exsd156
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ContributedValueVariable.java142
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/DynamicVariable.java76
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/EclipseHomeVariableResolver.java43
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringSubstitutionEngine.java291
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariable.java81
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariableManager.java614
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ValueVariable.java76
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.java29
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.properties18
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariable.java60
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariableResolver.java36
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariable.java57
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariableManager.java191
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariable.java91
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableInitializer.java30
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableListener.java47
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/VariablesPlugin.java114
-rw-r--r--org.eclipse.core.variables/src/org/eclipse/core/variables/package.html45
-rw-r--r--org.eclipse.debug.core/.classpath7
-rw-r--r--org.eclipse.debug.core/.cvsignore1
-rw-r--r--org.eclipse.debug.core/.options3
-rw-r--r--org.eclipse.debug.core/.project34
-rw-r--r--org.eclipse.debug.core/.settings/org.eclipse.jdt.core.prefs101
-rw-r--r--org.eclipse.debug.core/.settings/org.eclipse.jdt.launching.prefs3
-rw-r--r--org.eclipse.debug.core/.settings/org.eclipse.pde.prefs17
-rw-r--r--org.eclipse.debug.core/META-INF/MANIFEST.MF27
-rw-r--r--org.eclipse.debug.core/about.html28
-rw-r--r--org.eclipse.debug.core/build.properties19
-rw-r--r--org.eclipse.debug.core/buildnotes_platform-debug.html16
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/DebugEvent.java457
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/DebugException.java88
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java1398
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointListener.java69
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManager.java266
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManagerListener.java33
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointsListener.java70
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventFilter.java38
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventSetListener.java39
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionListener.java53
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionManager.java169
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionsListener.java56
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunch.java178
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java599
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationListener.java53
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationMigrationDelegate.java52
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java311
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationWorkingCopy.java266
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchDelegate.java92
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchListener.java51
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchManager.java487
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchMode.java64
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener.java60
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener2.java30
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureProvider.java50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureType.java81
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockListener.java43
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockManager.java97
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IProcessFactory.java66
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IRequest.java84
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IStatusHandler.java78
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/IStreamListener.java33
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java594
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandHandler.java82
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandRequest.java31
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDisconnectHandler.java28
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDropToFrameHandler.java27
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IEnabledStateRequest.java32
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IResumeHandler.java26
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepFiltersHandler.java31
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepIntoHandler.java27
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepOverHandler.java27
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepReturnHandler.java27
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ISuspendHandler.java26
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ITerminateHandler.java26
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/commands/package.html29
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/Breakpoint.java341
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/DebugElement.java168
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpoint.java222
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpointImportParticipant.java70
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugElement.java63
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugModelProvider.java35
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugTarget.java96
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDisconnect.java50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDropToFrame.java43
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IErrorReportingExpression.java36
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IExpression.java67
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFilteredStep.java46
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFlushableStreamMonitor.java50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IIndexedValue.java71
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java54
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java106
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILineBreakpoint.java50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate.java48
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate2.java46
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlock.java84
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockExtension.java243
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrieval.java52
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrievalExtension.java36
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IPersistableSourceLocator.java83
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IProcess.java105
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegister.java39
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegisterGroup.java64
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISourceLocator.java67
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStackFrame.java182
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStep.java96
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStepFilters.java64
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamMonitor.java50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy.java57
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy2.java34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISuspendResume.java63
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/ITerminate.java46
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IThread.java111
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValue.java104
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValueModification.java85
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IVariable.java95
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpression.java93
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionDelegate.java51
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionListener.java31
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionResult.java76
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchpoint.java83
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/LaunchConfigurationDelegate.java432
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/LineBreakpoint.java62
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/MemoryByte.java283
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java447
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/model/package.html146
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/package.html115
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java775
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupParticipant.java165
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/IPersistableSourceLocator2.java48
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainer.java108
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerType.java75
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerTypeDelegate.java55
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java182
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupParticipant.java90
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputer.java65
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputerDelegate.java49
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainer.java139
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java73
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ArchiveSourceContainer.java151
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/CompositeSourceContainer.java149
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java209
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DefaultSourceContainer.java118
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DirectorySourceContainer.java179
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ExternalArchiveSourceContainer.java276
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/FolderSourceContainer.java51
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/LocalFileStorage.java123
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ProjectSourceContainer.java128
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/WorkspaceSourceContainer.java82
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ZipEntryStorage.java152
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/package.html20
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/package.html34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointImportParticipantDelegate.java76
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java1197
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java118
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties100
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugOptions.java34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugPreferenceInitializer.java34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/EnvironmentVariableResolver.java55
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/ExpressionManager.java676
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IConfigurationElementConstants.java344
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java45
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IInternalDebugCoreConstants.java25
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/InputStreamMonitor.java158
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java955
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationComparator.java69
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java794
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java491
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java730
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchDelegate.java250
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java2604
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchMode.java95
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchablePropertyTester.java34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureManager.java282
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureProvider.java75
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureType.java150
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/MemoryBlockManager.java305
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/NullStreamsProxy.java99
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/OutputStreamMonitor.java273
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StepFilterManager.java87
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StreamsProxy.java127
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemPropertyResolver.java36
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemVariableResolver.java77
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/WatchExpression.java295
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/CommandAdapterFactory.java122
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommand.java324
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommandRequest.java34
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DisconnectCommand.java48
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DropToFrameCommand.java48
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ForEachCommand.java52
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/Request.java58
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ResumeCommand.java39
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepCommand.java81
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepFiltersCommand.java98
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepIntoCommand.java39
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepOverCommand.java43
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepReturnCommand.java39
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/SuspendCommand.java42
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/TerminateCommand.java42
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceContainerType.java93
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLocatorMementoComparator.java53
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.java66
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.properties50
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupUtils.java148
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourcePathComputer.java75
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ArchiveSourceContainerType.java70
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DefaultSourceContainerType.java56
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DirectorySourceContainerType.java69
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ExternalArchiveSourceContainerType.java66
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/FolderSourceContainerType.java73
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ProjectSourceContainerType.java72
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/WorkspaceSourceContainerType.java53
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ContainerResolver.java32
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.java28
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.properties14
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ProjectResolver.java30
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ResourceResolver.java168
-rw-r--r--org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/WorkspaceResolver.java58
-rw-r--r--org.eclipse.debug.core/doc/.cvsignore15
-rw-r--r--org.eclipse.debug.core/doc/org_eclipse_debug_core_sourceContainerTypes.html53
-rw-r--r--org.eclipse.debug.core/doc/org_eclipse_debug_core_sourcePathComputers.html58
-rw-r--r--org.eclipse.debug.core/hglegal2003.htm14
-rw-r--r--org.eclipse.debug.core/ngibmcpy2003.gifbin1101 -> 0 bytes
-rw-r--r--org.eclipse.debug.core/plugin.properties68
-rw-r--r--org.eclipse.debug.core/plugin.xml245
-rw-r--r--org.eclipse.debug.core/r2_0_buildnotes_platform-debug.html1102
-rw-r--r--org.eclipse.debug.core/r2_1_buildnotes_platform-debug.html410
-rw-r--r--org.eclipse.debug.core/r3_0_buildnotes_platform-debug.html994
-rw-r--r--org.eclipse.debug.core/r3_0_changes.html260
-rw-r--r--org.eclipse.debug.core/r3_1_buildnotes_platform-debug.html975
-rw-r--r--org.eclipse.debug.core/r3_1_changes.html183
-rw-r--r--org.eclipse.debug.core/r3_2_ buildnotes_platform-debug.html601
-rw-r--r--org.eclipse.debug.core/r3_3_buildnotes_platform-debug.html747
-rw-r--r--org.eclipse.debug.core/r3_4_buildnotes_platform-debug.html395
-rwxr-xr-xorg.eclipse.debug.core/r3_5_buildnotes_platform-debug.html354
-rw-r--r--org.eclipse.debug.core/schema/breakpointImportParticipants.exsd142
-rw-r--r--org.eclipse.debug.core/schema/breakpoints.exsd133
-rw-r--r--org.eclipse.debug.core/schema/launchConfigurationComparators.exsd119
-rw-r--r--org.eclipse.debug.core/schema/launchConfigurationTypes.exsd252
-rw-r--r--org.eclipse.debug.core/schema/launchDelegates.exsd218
-rw-r--r--org.eclipse.debug.core/schema/launchModes.exsd118
-rw-r--r--org.eclipse.debug.core/schema/launchers.exsd230
-rw-r--r--org.eclipse.debug.core/schema/logicalStructureProviders.exsd121
-rw-r--r--org.eclipse.debug.core/schema/logicalStructureTypes.exsd136
-rw-r--r--org.eclipse.debug.core/schema/processFactories.exsd122
-rw-r--r--org.eclipse.debug.core/schema/sourceContainerTypes.exsd153
-rw-r--r--org.eclipse.debug.core/schema/sourceLocators.exsd122
-rw-r--r--org.eclipse.debug.core/schema/sourcePathComputers.exsd139
-rw-r--r--org.eclipse.debug.core/schema/statusHandlers.exsd127
-rw-r--r--org.eclipse.debug.core/schema/watchExpressionDelegates.exsd120
-rw-r--r--org.eclipse.debug.core/scripts/exportplugin.xml32
-rw-r--r--org.eclipse.debug.examples.core/.classpath9
-rw-r--r--org.eclipse.debug.examples.core/.cvsignore1
-rw-r--r--org.eclipse.debug.examples.core/.project34
-rw-r--r--org.eclipse.debug.examples.core/.settings/org.eclipse.jdt.core.prefs47
-rw-r--r--org.eclipse.debug.examples.core/META-INF/MANIFEST.MF21
-rw-r--r--org.eclipse.debug.examples.core/about.html28
-rw-r--r--org.eclipse.debug.examples.core/build.properties21
-rw-r--r--org.eclipse.debug.examples.core/pdavm/src/org/eclipse/debug/examples/pdavm/PDAVirtualMachine.java1408
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest10.pda38
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest2.pda48
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest3.pda13
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest6.pda31
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest8.pda14
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest9.pda23
-rw-r--r--org.eclipse.debug.examples.core/pdavm/tests/vmtest_children.pda8
-rw-r--r--org.eclipse.debug.examples.core/plugin.xml103
-rw-r--r--org.eclipse.debug.examples.core/readme.html11
-rw-r--r--org.eclipse.debug.examples.core/samples/counter.pda11
-rw-r--r--org.eclipse.debug.examples.core/samples/drop.pda12
-rw-r--r--org.eclipse.debug.examples.core/samples/example.pda35
-rw-r--r--org.eclipse.debug.examples.core/samples/fibonacci.pda32
-rw-r--r--org.eclipse.debug.examples.core/samples/registers.pda72
-rw-r--r--org.eclipse.debug.examples.core/samples/stack.pda21
-rw-r--r--org.eclipse.debug.examples.core/samples/structures.pda29
-rw-r--r--org.eclipse.debug.examples.core/scripts/build.xml66
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/ClockControl.java93
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/LengthControl.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/MidiLaunch.java165
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/MidiLaunchDelegate.java126
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/SequencerControl.java132
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/TempoControl.java89
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/midi/launcher/TimeControl.java88
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/DebugCorePlugin.java133
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDALineBreakpoint.java206
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDARunToLineBreakpoint.java70
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/breakpoints/PDAWatchpoint.java231
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/launcher/PDALaunchDelegate.java152
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/IPDAEventListener.java44
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAArray.java51
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAArrayEntry.java98
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDADebugElement.java109
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDADebugTarget.java571
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAStackFrame.java260
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAStackValue.java92
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAThread.java563
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAValue.java109
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/PDAVariable.java114
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/model/WordStructureDelegate.java53
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDABitFieldData.java41
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAChildrenCommand.java34
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAClearBreakpointCommand.java31
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDACommand.java40
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDACommandResult.java27
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDADataCommand.java35
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDADropFrameCommand.java44
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvalCommand.java43
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvalResultEvent.java32
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEvent.java75
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAEventStopCommand.java48
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAExitedEvent.java29
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameCommand.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameCommandResult.java30
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAFrameData.java46
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAGroupsCommand.java33
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAListResult.java43
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDANoSuchLabelEvent.java40
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAPopDataCommand.java34
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAPushDataCommand.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegisterData.java43
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersCommand.java33
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersCommandResult.java39
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARegistersEvent.java30
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAResumeCommand.java40
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAResumedEvent.java29
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDARunControlEvent.java69
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetBreakpointCommand.java46
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetDataCommand.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASetVarCommand.java38
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackCommand.java39
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackCommandResult.java40
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackDepthCommand.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStackDepthCommandResult.java31
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStartedEvent.java30
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStepCommand.java45
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAStepReturnCommand.java46
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASuspendCommand.java40
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDASuspendedEvent.java43
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDATerminateCommand.java34
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDATerminatedEvent.java29
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAUnimplementedInstructionEvent.java41
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMResumeCommand.java37
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMResumedEvent.java36
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMStartedEvent.java30
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMSuspendCommand.java37
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMSuspendedEvent.java44
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVMTerminatedEvent.java29
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAVarCommand.java39
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/PDAWatchCommand.java43
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/protocol/package.html99
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourceLookupDirector.java32
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourceLookupParticipant.java38
-rw-r--r--org.eclipse.debug.examples.core/src/org/eclipse/debug/examples/core/pda/sourcelookup/PDASourcePathComputerDelegate.java65
-rw-r--r--org.eclipse.debug.examples.core/src_ant/org/eclipse/debug/examples/ant/tasks/PreProcessor.java295
-rw-r--r--org.eclipse.debug.examples.ui/.classpath7
-rw-r--r--org.eclipse.debug.examples.ui/.cvsignore1
-rw-r--r--org.eclipse.debug.examples.ui/.project34
-rw-r--r--org.eclipse.debug.examples.ui/.settings/org.eclipse.jdt.core.prefs47
-rw-r--r--org.eclipse.debug.examples.ui/META-INF/MANIFEST.MF30
-rw-r--r--org.eclipse.debug.examples.ui/about.html28
-rw-r--r--org.eclipse.debug.examples.ui/build.properties22
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/dlcl16/pop.gifbin159 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/dlcl16/push.gifbin361 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/elcl16/pop.gifbin163 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/elcl16/push.gifbin590 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/obj16/clef.pngbin396 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/obj16/note.gifbin895 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/icons/full/obj16/pda.gifbin182 -> 0 bytes
-rw-r--r--org.eclipse.debug.examples.ui/plugin.xml431
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlCellModifier.java67
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEditor.java41
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlEventHandler.java116
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlLabelProvider.java40
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/ControlsMementoProvider.java41
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiAdapterFactory.java101
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiEventLabelProvider.java74
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/MidiStepOverHandler.java46
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnFactory.java45
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerColumnPresentation.java79
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerContentProvider.java97
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerControlsModelProxy.java96
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/SequencerModelProxyFactory.java46
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnFactory.java45
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackColumnPresentation.java92
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackContentProvider.java63
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/adapters/TrackLabelProvider.java50
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/ClockSliderDetailPane.java111
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/ControlDetailPaneFactory.java111
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/detailpanes/TempoSliderDetailPane.java108
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiLaunchShortcut.java163
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiMainTab.java177
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/midi/launcher/MidiTabGroup.java33
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/DebugUIPlugin.java212
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/AdapterFactory.java48
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/ModelProxyFactory.java32
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDADebugTargetContentProvider.java71
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDADebugTargetProxy.java38
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/adapters/PDAThreadEventHandler.java147
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDABreakpointAdapter.java227
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAEditorAdapterFactory.java57
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDARunToLineAdapter.java76
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAToggleWatchpointsTarget.java168
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/breakpoints/PDAToggleWatchpointsTargetFactory.java84
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/AnnotationHover.java45
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAContentAssistProcessor.java102
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAContentAssistant.java42
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAEditor.java48
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAEditorMessages.properties15
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDAScanner.java92
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PDASourceViewerConfiguration.java63
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/PopFrameActionDelegate.java96
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/TextHover.java91
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/editor/WordFinder.java79
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDALaunchShortcut.java77
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDAMainTab.java196
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/launcher/PDATabGroup.java39
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/presentation/PDAModelPresentation.java192
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/AbstractDataStackViewHandler.java66
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/CanPushTester.java46
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/DataStackView.java175
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/PopHandler.java60
-rw-r--r--org.eclipse.debug.examples.ui/src/org/eclipse/debug/examples/ui/pda/views/PushHandler.java37
-rw-r--r--org.eclipse.ui.console/.classpath7
-rw-r--r--org.eclipse.ui.console/.cvsignore1
-rw-r--r--org.eclipse.ui.console/.project34
-rw-r--r--org.eclipse.ui.console/.settings/org.eclipse.jdt.core.prefs99
-rw-r--r--org.eclipse.ui.console/.settings/org.eclipse.pde.prefs17
-rw-r--r--org.eclipse.ui.console/META-INF/MANIFEST.MF20
-rw-r--r--org.eclipse.ui.console/about.html28
-rw-r--r--org.eclipse.ui.console/build.properties20
-rw-r--r--org.eclipse.ui.console/icons/full/clcl16/clear_co.gifbin595 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/clcl16/lock_co.gifbin626 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/clcl16/pin.gifbin358 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/cview16/console_view.gifbin582 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/dlcl16/clear_co.gifbin364 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/dlcl16/lock_co.gifbin588 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/dlcl16/pin.gifbin223 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/dlcl16/rem_co.gifbin159 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/elcl16/clear_co.gifbin595 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/elcl16/lock_co.gifbin626 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/elcl16/new_con.gifbin612 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/elcl16/pin.gifbin358 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/elcl16/rem_co.gifbin163 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/icons/full/eview16/console_view.gifbin582 -> 0 bytes
-rw-r--r--org.eclipse.ui.console/plugin.properties24
-rw-r--r--org.eclipse.ui.console/plugin.xml89
-rw-r--r--org.eclipse.ui.console/schema/consoleFactories.exsd136
-rw-r--r--org.eclipse.ui.console/schema/consolePageParticipants.exsd122
-rw-r--r--org.eclipse.ui.console/schema/consolePatternMatchListeners.exsd153
-rw-r--r--org.eclipse.ui.console/scripts/exportplugin.xml35
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/AbstractConsole.java335
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/ConsolePlugin.java182
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsole.java97
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleConstants.java156
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleDocumentPartitioner.java51
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleFactory.java48
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleListener.java39
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleManager.java107
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsolePageParticipant.java71
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IConsoleView.java93
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IHyperlink.java37
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IHyperlink2.java33
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java293
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleInputStream.java285
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsoleOutputStream.java269
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IPatternMatchListener.java87
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/IPatternMatchListenerDelegate.java46
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsole.java137
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/MessageConsoleStream.java92
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/PatternMatchEvent.java73
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsole.java554
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsolePage.java413
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/TextConsoleViewer.java699
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/actions/ClearOutputAction.java95
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/actions/CloseConsoleAction.java41
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerAction.java84
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/actions/TextViewerGotoLineAction.java121
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/actions/package.html20
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/console/package.html36
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDocument.java115
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDocumentAdapter.java394
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleDropDownAction.java169
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleFactoryExtension.java121
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleHyperlinkPosition.java51
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleManager.java461
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.java68
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleMessages.properties53
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePageParticipantExtension.java73
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePatternMatcher.java310
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsolePluginImages.java158
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleResourceBundleMessages.java35
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleResourceBundleMessages.properties19
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleTypePropertyTester.java32
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleView.java807
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleViewConsoleFactory.java46
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleWorkbenchPart.java125
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/FollowHyperlinkAction.java55
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/HyperlinkUpdater.java56
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IConsoleHelpContextIds.java46
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IInternalConsoleConstants.java31
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePage.java141
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartition.java209
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartitioner.java699
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsoleViewer.java144
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/OpenConsoleAction.java153
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PatternMatchListener.java71
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PatternMatchListenerExtension.java153
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/PinConsoleAction.java54
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ScrollLockAction.java51
-rw-r--r--org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ShowConsoleAction.java64
-rw-r--r--org.eclipse.ui.externaltools/.classpath8
-rw-r--r--org.eclipse.ui.externaltools/.cvsignore4
-rw-r--r--org.eclipse.ui.externaltools/.project34
-rw-r--r--org.eclipse.ui.externaltools/.settings/org.eclipse.jdt.core.prefs97
-rw-r--r--org.eclipse.ui.externaltools/.settings/org.eclipse.jdt.ui.prefs3
-rw-r--r--org.eclipse.ui.externaltools/.settings/org.eclipse.pde.prefs14
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuildTab.java417
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java546
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsLaunchConfigurationMessages.java99
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsLaunchConfigurationMessages.properties77
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java645
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java203
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/IgnoreWhiteSpaceComparator.java47
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/WorkingSetComparator.java52
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/menu/ExternalToolMenuDelegate.java40
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/menu/OpenExternalToolsConfigurations.java24
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/BuilderUtils.java386
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolBuilder.java288
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsImages.java205
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.java28
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsModelMessages.properties17
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPlugin.java167
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ExternalToolsPreferenceInitializer.java32
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IExternalToolConstants.java231
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IExternalToolsHelpContextIds.java37
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/IPreferenceConstants.java33
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/model/ImageDescriptorRegistry.java91
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java411
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/BuilderLabelProvider.java132
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/BuilderPropertyPage.java1241
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/EditCommandDialog.java79
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsPreferencePage.java97
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsUIMessages.java71
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/ExternalToolsUIMessages.properties60
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/FileSelectionDialog.java245
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/ui/TreeAndListGroup.java315
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildFilesResolver.java136
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildProjectResolver.java73
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeResolver.java26
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/SystemPathResolver.java66
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/VariableMessages.java24
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/VariableMessages.properties13
-rw-r--r--org.eclipse.ui.externaltools/META-INF/MANIFEST.MF24
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java87
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ExternalToolsProgramMessages.java30
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ExternalToolsProgramMessages.properties19
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java35
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java246
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java56
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java37
-rw-r--r--org.eclipse.ui.externaltools/about.html28
-rw-r--r--org.eclipse.ui.externaltools/build.properties21
-rw-r--r--org.eclipse.ui.externaltools/buildfiles/exportplugin.xml38
-rw-r--r--org.eclipse.ui.externaltools/icons/full/dtool16/external_tools.gifbin570 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/etool16/external_tools.gifbin587 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/build_tab.gifbin577 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/builder.gifbin574 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/classpath.gifbin338 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/external_tools.gifbin587 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/invalid_build_tool.gifbin339 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/obj16/main_tab.gifbin360 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/icons/full/wizban/ext_tools_wiz.pngbin4855 -> 0 bytes
-rw-r--r--org.eclipse.ui.externaltools/plugin.properties40
-rw-r--r--org.eclipse.ui.externaltools/plugin.xml230
-rw-r--r--org.eclipse.ui.externaltools/schema/configurationDuplicationMaps.exsd117
586 files changed, 0 insertions, 71439 deletions
diff --git a/org.eclipse.core.variables/.classpath b/org.eclipse.core.variables/.classpath
deleted file mode 100644
index ce7393340..000000000
--- a/org.eclipse.core.variables/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.core.variables/.cvsignore b/org.eclipse.core.variables/.cvsignore
deleted file mode 100644
index 693869726..000000000
--- a/org.eclipse.core.variables/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-doc
diff --git a/org.eclipse.core.variables/.project b/org.eclipse.core.variables/.project
deleted file mode 100644
index 03df26fb2..000000000
--- a/org.eclipse.core.variables/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.core.variables</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.core.variables/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.core.variables/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 05664ee2f..000000000
--- a/org.eclipse.core.variables/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,96 +0,0 @@
-#Thu Feb 26 08:16:51 CST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=disabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.core.variables/.settings/org.eclipse.pde.prefs b/org.eclipse.core.variables/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index 7eebeb8c9..000000000
--- a/org.eclipse.core.variables/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,17 +0,0 @@
-#Tue Jan 30 11:38:48 CST 2007
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=1
-compilers.p.illegal-att-value=0
-compilers.p.missing-packages=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=1
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=1
-compilers.p.unknown-element=0
-compilers.p.unknown-resource=1
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/org.eclipse.core.variables/META-INF/MANIFEST.MF b/org.eclipse.core.variables/META-INF/MANIFEST.MF
deleted file mode 100644
index eb43f8008..000000000
--- a/org.eclipse.core.variables/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.core.variables; singleton:=true
-Bundle-Version: 3.2.200.qualifier
-Bundle-Activator: org.eclipse.core.variables.VariablesPlugin
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.core.internal.variables;x-internal:=true,
- org.eclipse.core.variables
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)"
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/org.eclipse.core.variables/about.html b/org.eclipse.core.variables/about.html
deleted file mode 100644
index 460233046..000000000
--- a/org.eclipse.core.variables/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 2, 2006</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content. Check the Redistributor's license that was
-provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/org.eclipse.core.variables/build.properties b/org.eclipse.core.variables/build.properties
deleted file mode 100644
index bcf8553e1..000000000
--- a/org.eclipse.core.variables/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.xml,\
- plugin.properties,\
- .,\
- about.html,\
- META-INF/
-source.. = src/
-src.includes = about.html,\
- schema/
diff --git a/org.eclipse.core.variables/plugin.properties b/org.eclipse.core.variables/plugin.properties
deleted file mode 100644
index 88108aaa6..000000000
--- a/org.eclipse.core.variables/plugin.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=Core Variables
-providerName=Eclipse.org
-valueVariablesExtensionPointName=Value Variables
-dynamicVariablesExtensionPointName=Dynamic Variables
-eclipse_home.description=The location of the base installation for the running platform
diff --git a/org.eclipse.core.variables/plugin.xml b/org.eclipse.core.variables/plugin.xml
deleted file mode 100644
index 38ae46646..000000000
--- a/org.eclipse.core.variables/plugin.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?> <!--
- Copyright (c) 2005, 2006 IBM Corporation and others.
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v1.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html
-
- Contributors:
- IBM Corporation - initial API and implementation
- -->
-
-<plugin>
-
- <extension-point id="valueVariables" name="%valueVariablesExtensionPointName" schema="schema/valueVariables.exsd"/>
- <extension-point id="dynamicVariables" name="%dynamicVariablesExtensionPointName" schema="schema/dynamicVariables.exsd"/>
- <extension
- point="org.eclipse.core.variables.dynamicVariables">
- <variable
- description="%eclipse_home.description"
- name="eclipse_home"
- resolver="org.eclipse.core.internal.variables.EclipseHomeVariableResolver"
- supportsArgument="false"/>
- </extension>
-
-</plugin>
diff --git a/org.eclipse.core.variables/schema/dynamicVariables.exsd b/org.eclipse.core.variables/schema/dynamicVariables.exsd
deleted file mode 100644
index 5168a891f..000000000
--- a/org.eclipse.core.variables/schema/dynamicVariables.exsd
+++ /dev/null
@@ -1,130 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.variables">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.core.variables" id="dynamicVariables" name="Dynamic String Substitution Variables"/>
- </appInfo>
- <documentation>
- This extension point provides a mechanism for defining dynamic variables used in string substitution. The value of a dynamic variable is resolved at the time a string substitution is performed, with an optional argument.
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
- a fully qualified identifier of the target extension point
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
- an optional identifier of the extension instance
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
- an optional name of the extension instance
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="variable">
- <complexType>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
- specifies a unique name for this variable.
- </documentation>
- </annotation>
- </attribute>
- <attribute name="resolver" type="string" use="required">
- <annotation>
- <documentation>
- specifies a Java class which implements &lt;code&gt;org.eclipse.core.variables.IDynamicVariableResolver&lt;/code&gt;, which is used to determine the value of the variable
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.core.variables.IDynamicVariableResolver"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="description" type="string" use="required">
- <annotation>
- <documentation>
- specifies a human-readable description of this variable
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="supportsArgument" type="boolean">
- <annotation>
- <documentation>
- Whether this variable supports an argument. When unspecified, the implied value is &lt;code&gt;true&lt;/code&gt;.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- 3.0
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- The following is a definition of a dynamic variable that resolves to the name of the selected resource:
-&lt;pre&gt;
- &lt;extension point=&quot;org.eclipse.core.variables.dynamicVariables&quot;&gt;
- &lt;variable
- name=&quot;resource_name&quot;
- expanderClass=&quot;com.example.ResourceNameExpander&quot;
- description=&quot;The name of the selected resource&quot;&gt;
- &lt;/variable&gt;
- &lt;/extension&gt;
-&lt;/pre&gt;
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- Value of the attribute &lt;b&gt;resolver&lt;/b&gt; must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.core.variables.IDynamicVariableResolver&lt;/b&gt;.
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
- Copyright (c) 2003, 2005 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which
-accompanies this distribution, and is available at
-&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.core.variables/schema/valueVariables.exsd b/org.eclipse.core.variables/schema/valueVariables.exsd
deleted file mode 100644
index 7dd314c57..000000000
--- a/org.eclipse.core.variables/schema/valueVariables.exsd
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.core.variables">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.core.variables" id="valueVariables" name="Value Variables"/>
- </appInfo>
- <documentation>
- This extension point provides a mechanism for defining variables used for string substitution. A value variable has a static value.
- </documentation>
- </annotation>
-
- <element name="extension">
- <complexType>
- <sequence>
- <element ref="variable" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
- a fully qualified identifier of the target extension point
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
- an optional identifier of the extension instance
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
- an optional name of the extension instance
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="variable">
- <complexType>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
- specifies a unique name for this variable.
- </documentation>
- </annotation>
- </attribute>
- <attribute name="readOnly" type="boolean">
- <annotation>
- <documentation>
- Specifies whether this variable is read only. When true, this variable&apos;s value will always be derived from the extension and cannot be edited by the user. When false, this variable&apos;s value will be initialized from any &lt;code&gt;initialValue&lt;/code&gt; attribtue or initializer class, and can be modified by the user. Once a read-write variable is modified, it&apos;s value is persisted and overrides any value specified by an extension&apos;s &lt;code&gt;initialValue&lt;/code&gt; or initializer class. When unspecified, the value of this attribute is &lt;code&gt;false&lt;/code&gt;. This attribute was added in the 3.3 release.
- </documentation>
- </annotation>
- </attribute>
- <attribute name="initialValue" type="string">
- <annotation>
- <documentation>
- specifies the initial value for this variable. When specified, an &lt;code&gt;initializerClass&lt;/code&gt; attribute must not be specified.
- </documentation>
- </annotation>
- </attribute>
- <attribute name="initializerClass" type="string">
- <annotation>
- <documentation>
- specifies the fully qualified name of the Java class that implements &lt;code&gt;org.eclipse.core.variables.IValueVariableInitializer&lt;/code&gt;. When specified, an &lt;code&gt;initialValue&lt;/code&gt; attribute must not be specified.
- </documentation>
- <appInfo>
- <meta.attribute kind="java" basedOn="org.eclipse.core.variables.IValueVariableInitializer"/>
- </appInfo>
- </annotation>
- </attribute>
- <attribute name="description" type="string">
- <annotation>
- <documentation>
- specifies a human-readable description of this variable.
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- 3.0
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
- The following is an example of a value variable contribution with an initial value:
-
-&lt;p&gt;
-&lt;pre&gt;
- &lt;extension point=&quot;org.eclipse.core.variables.valueVariables&quot;&gt;
- &lt;variable
- name=&quot;FOO_HOME&quot;
- initialValue=&quot;/usr/local/foo&quot;&gt;
- &lt;/variable&gt;
- &lt;/extension&gt;
-&lt;/pre&gt;
-&lt;/p&gt;
-
-In the example above, the specified variable is created with the initial value &quot;/usr/local/foo&quot;.
-
- The following is an example of a value variable contribution with an initializer class:
-&lt;p&gt;
-&lt;pre&gt;
- &lt;extension point=&quot;org.eclipse.core.variables.valueVariables&quot;&gt;
- &lt;variable
- name=&quot;FOO_HOME&quot;
- initializerClass=&quot;com.example.FooLocator&quot;&gt;
- &lt;/variable&gt;
- &lt;/extension&gt;
-&lt;/pre&gt;
-&lt;/p&gt;
-
-In the example above, the variable FOO_HOME is created and the class &quot;com.example.FooLocator&quot; will be
-used to initialize the value the first time it&apos;s requested.
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="apiInfo"/>
- </appInfo>
- <documentation>
- Value of the attribute &lt;b&gt;initializerClass&lt;/b&gt; must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.core.variables.IValueVariableInitializer&lt;/b&gt;.
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
- Copyright (c) 2003, 2006 IBM Corporation and others.&lt;br&gt;
-All rights reserved. This program and the accompanying materials are made
-available under the terms of the Eclipse Public License v1.0 which
-accompanies this distribution, and is available at
-&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
- </documentation>
- </annotation>
-
-</schema>
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ContributedValueVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ContributedValueVariable.java
deleted file mode 100644
index f53bf67e1..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ContributedValueVariable.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.variables.IValueVariable;
-import org.eclipse.core.variables.IValueVariableInitializer;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Implementation of a value variable.
- */
-public class ContributedValueVariable extends StringVariable implements IValueVariable {
-
- /**
- * Variable value or <code>null</code> if none
- */
- private String fValue;
-
- /**
- * Whether this variable's value has been initialized
- */
- private boolean fInitialized = false;
-
- /**
- * Whether this variable is read only. If true, users cannot change the value.
- */
- private boolean fReadOnly;
-
- /**
- * Constructs a new value variable with the given name, description, read only
- * property and associated configuration element. The value will be initialized
- * from the configuration element the first time getValue() is called.
- *
- * @param name variable name
- * @param description variable description or <code>null</code>
- * @param readOnly whether the variable should be a read only variable
- * @param configurationElement configuration element
- */
- public ContributedValueVariable(String name, String description, boolean readOnly, IConfigurationElement configurationElement) {
- super(name, description, configurationElement);
- fReadOnly = readOnly;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#setValue(java.lang.String)
- */
- public void setValue(String value) {
- if (!isReadOnly() || !isInitialized()){
- fValue = value;
- setInitialized(true);
- StringVariableManager.getDefault().notifyChanged(this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#getValue()
- */
- public String getValue() {
- if (!isInitialized()) {
- initialize();
- }
- return fValue;
- }
-
- /**
- * Initialize this variable's value from the configuration element.
- */
- private void initialize() {
- if (getConfigurationElement() != null) {
- // check for a explicit value specified in plug-in XML
- String value = getConfigurationElement().getAttribute("initialValue"); //$NON-NLS-1$
- if (value == null) {
- // check for initializer
- String className = getConfigurationElement().getAttribute("initializerClass"); //$NON-NLS-1$
- if (className != null) {
- try {
- Object object = getConfigurationElement().createExecutableExtension("initializerClass"); //$NON-NLS-1$
- if (object instanceof IValueVariableInitializer) {
- IValueVariableInitializer initializer = (IValueVariableInitializer)object;
- initializer.initialize(this);
- } else {
- VariablesPlugin.logMessage(NLS.bind("Unable to initialize variable {0} - initializer must be an instance of IValueVariableInitializer.", new String[]{getName()}), null); //$NON-NLS-1$
- }
- } catch (CoreException e) {
- VariablesPlugin.logMessage(NLS.bind("Unable to initialize variable {0}",new String[]{getName()}), e); //$NON-NLS-1$
- }
- }
- } else {
- setValue(value);
- }
- }
- setInitialized(true);
- }
-
- /**
- * Returns whether this variable has been initialized with a value by one of:
- * <ul>
- * <li><code>setValue(String)</code></li>
- * <li>its configuration element's <code>initialValue</code> attribute</li>
- * <li>its configuration element's initializer</li>
- * </ul>
- * @return whether this variable has been initialized with a value
- */
- protected boolean isInitialized() {
- return fInitialized;
- }
-
- /**
- * Sets whether this variable has been initialized with a value.
- *
- * @param initialized whether this variable has been initialized
- */
- protected void setInitialized(boolean initialized) {
- fInitialized = initialized;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#isReadOnly()
- */
- public boolean isReadOnly() {
- return fReadOnly;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#isContributed()
- */
- public boolean isContributed() {
- return getConfigurationElement() != null;
- }
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/DynamicVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/DynamicVariable.java
deleted file mode 100644
index f2d48d810..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/DynamicVariable.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Dynamic variable
- */
-public class DynamicVariable extends StringVariable implements IDynamicVariable {
-
- /**
- * Resolver, or <code>null</code> until needed
- */
- private IDynamicVariableResolver fResolver;
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IContextVariable#getValue(java.lang.String)
- */
- public String getValue(String argument) throws CoreException {
- if (!supportsArgument()) {
- // check for an argument - not supported
- if (argument != null && argument.length() > 0) {
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind(VariablesMessages.DynamicVariable_0, new String[]{argument, getName()}), null));
- }
- }
- if (fResolver == null) {
- String name = getConfigurationElement().getAttribute("resolver"); //$NON-NLS-1$
- if (name == null) {
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind("Contributed context variable {0} must specify a resolver.",new String[]{getName()}), null)); //$NON-NLS-1$
- }
- Object object = getConfigurationElement().createExecutableExtension("resolver"); //$NON-NLS-1$
- if (object instanceof IDynamicVariableResolver) {
- fResolver = (IDynamicVariableResolver)object;
- } else {
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind("Contributed context variable resolver for {0} must be an instance of IContextVariableResolver.",new String[]{getName()}), null)); //$NON-NLS-1$
- }
- }
- return fResolver.resolveValue(this, argument);
- }
-
- /**
- * Constructs a new context variable.
- *
- * @param name variable name
- * @param description variable description or <code>null</code>
- * @param configurationElement configuration element
- */
- public DynamicVariable(String name, String description, IConfigurationElement configurationElement) {
- super(name, description, configurationElement);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariable#supportsArgument()
- */
- public boolean supportsArgument() {
- String arg = getConfigurationElement().getAttribute("supportsArgument"); //$NON-NLS-1$
- return arg == null || Boolean.valueOf(arg).booleanValue();
- }
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/EclipseHomeVariableResolver.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/EclipseHomeVariableResolver.java
deleted file mode 100644
index 17ca4a1a7..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/EclipseHomeVariableResolver.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Bjorn Freeman-Benson - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.osgi.service.datalocation.Location;
-
-/**
- * Resolver for ${eclipse_home}
- *
- * @since 3.2
- */
-public class EclipseHomeVariableResolver implements IDynamicVariableResolver {
-
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- Location installLocation = Platform.getInstallLocation();
- if (installLocation != null) {
- URL url = installLocation.getURL();
- if (url != null) {
- String file = url.getFile();
- if (file.length() != 0) {
- return file;
- }
- }
- }
- return null;
- }
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringSubstitutionEngine.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringSubstitutionEngine.java
deleted file mode 100644
index 94bd5d7ea..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringSubstitutionEngine.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Stack;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.IValueVariable;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Performs string substitution for context and value variables.
- */
-public class StringSubstitutionEngine {
-
- // delimiters
- private static final String VARIABLE_START = "${"; //$NON-NLS-1$
- private static final char VARIABLE_END = '}';
- private static final char VARIABLE_ARG = ':';
- // parsing states
- private static final int SCAN_FOR_START = 0;
- private static final int SCAN_FOR_END = 1;
-
- /**
- * Resulting string
- */
- private StringBuffer fResult;
-
- /**
- * Whether substitutions were performed
- */
- private boolean fSubs;
-
- /**
- * Stack of variables to resolve
- */
- private Stack fStack;
-
- class VariableReference {
-
- // the text inside the variable reference
- private StringBuffer fText;
-
- public VariableReference() {
- fText = new StringBuffer();
- }
-
- public void append(String text) {
- fText.append(text);
- }
-
- public String getText() {
- return fText.toString();
- }
-
- }
-
- /**
- * Performs recursive string substitution and returns the resulting string.
- *
- * @param expression expression to resolve
- * @param reportUndefinedVariables whether to report undefined variables as an error
- * @param manager registry of variables
- * @return the resulting string with all variables recursively
- * substituted
- * @exception CoreException if unable to resolve a referenced variable or if a cycle exists
- * in referenced variables
- */
- public String performStringSubstitution(String expression, boolean reportUndefinedVariables, boolean resolveVariables, IStringVariableManager manager) throws CoreException {
- substitute(expression, reportUndefinedVariables, resolveVariables, manager);
- List resolvedVariableSets = new ArrayList();
- while (fSubs) {
- HashSet resolved = substitute(fResult.toString(), reportUndefinedVariables, true, manager);
-
- for(int i=resolvedVariableSets.size()-1; i>=0; i--) {
-
- HashSet prevSet = (HashSet)resolvedVariableSets.get(i);
-
- if (prevSet.equals(resolved)) {
- HashSet conflictingSet = new HashSet();
- for (; i<resolvedVariableSets.size(); i++)
- conflictingSet.addAll((HashSet)resolvedVariableSets.get(i));
-
- StringBuffer problemVariableList = new StringBuffer();
- for (Iterator it=conflictingSet.iterator(); it.hasNext(); ) {
- problemVariableList.append(it.next().toString());
- problemVariableList.append(", "); //$NON-NLS-1$
- }
- problemVariableList.setLength(problemVariableList.length()-2); //truncate the last ", "
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.REFERENCE_CYCLE_ERROR, NLS.bind(VariablesMessages.StringSubstitutionEngine_4, new String[]{problemVariableList.toString()}), null));
- }
- }
-
- resolvedVariableSets.add(resolved);
- }
- return fResult.toString();
- }
-
- /**
- * Performs recursive string validation to ensure that all of the variables
- * contained in the expression exist
- * @param expression expression to validate
- * @param manager registry of variables
- * @exception CoreException if a referenced variable does not exist or if a cycle exists
- * in referenced variables
- */
- public void validateStringVariables(String expression, IStringVariableManager manager) throws CoreException {
- performStringSubstitution(expression, true, false, manager);
- }
-
- /**
- * Makes a substitution pass of the given expression returns a Set of the variables that were resolved in this
- * pass
- *
- * @param expression source expression
- * @param reportUndefinedVariables whether to report undefined variables as an error
- * @param resolveVariables whether to resolve the value of any variables
- * @exception CoreException if unable to resolve a variable
- */
- private HashSet substitute(String expression, boolean reportUndefinedVariables, boolean resolveVariables, IStringVariableManager manager) throws CoreException {
- fResult = new StringBuffer(expression.length());
- fStack = new Stack();
- fSubs = false;
-
- HashSet resolvedVariables = new HashSet();
-
- int pos = 0;
- int state = SCAN_FOR_START;
- while (pos < expression.length()) {
- switch (state) {
- case SCAN_FOR_START:
- int start = expression.indexOf(VARIABLE_START, pos);
- if (start >= 0) {
- int length = start - pos;
- // copy non-variable text to the result
- if (length > 0) {
- fResult.append(expression.substring(pos, start));
- }
- pos = start + 2;
- state = SCAN_FOR_END;
-
- fStack.push(new VariableReference());
- } else {
- // done - no more variables
- fResult.append(expression.substring(pos));
- pos = expression.length();
- }
- break;
- case SCAN_FOR_END:
- // be careful of nested variables
- start = expression.indexOf(VARIABLE_START, pos);
- int end = expression.indexOf(VARIABLE_END, pos);
- if (end < 0) {
- // variables are not completed
- VariableReference tos = (VariableReference)fStack.peek();
- tos.append(expression.substring(pos));
- pos = expression.length();
- } else {
- if (start >= 0 && start < end) {
- // start of a nested variable
- int length = start - pos;
- if (length > 0) {
- VariableReference tos = (VariableReference)fStack.peek();
- tos.append(expression.substring(pos, start));
- }
- pos = start + 2;
- fStack.push(new VariableReference());
- } else {
- // end of variable reference
- VariableReference tos = (VariableReference)fStack.pop();
- String substring = expression.substring(pos, end);
- tos.append(substring);
- resolvedVariables.add(substring);
-
- pos = end + 1;
- String value= resolve(tos, reportUndefinedVariables, resolveVariables, manager);
- if (value == null) {
- value = ""; //$NON-NLS-1$
- }
- if (fStack.isEmpty()) {
- // append to result
- fResult.append(value);
- state = SCAN_FOR_START;
- } else {
- // append to previous variable
- tos = (VariableReference)fStack.peek();
- tos.append(value);
- }
- }
- }
- break;
- }
- }
- // process incomplete variable references
- while (!fStack.isEmpty()) {
- VariableReference tos = (VariableReference)fStack.pop();
- if (fStack.isEmpty()) {
- fResult.append(VARIABLE_START);
- fResult.append(tos.getText());
- } else {
- VariableReference var = (VariableReference)fStack.peek();
- var.append(VARIABLE_START);
- var.append(tos.getText());
- }
- }
-
-
- return resolvedVariables;
- }
-
- /**
- * Resolve and return the value of the given variable reference,
- * possibly <code>null</code>.
- *
- * @param var
- * @param reportUndefinedVariables whether to report undefined variables as
- * an error
- * @param resolveVariables whether to resolve the variables value or just to validate that this variable is valid
- * @param manager variable registry
- * @return variable value, possibly <code>null</code>
- * @exception CoreException if unable to resolve a value
- */
- private String resolve(VariableReference var, boolean reportUndefinedVariables, boolean resolveVariables, IStringVariableManager manager) throws CoreException {
- String text = var.getText();
- int pos = text.indexOf(VARIABLE_ARG);
- String name = null;
- String arg = null;
- if (pos > 0) {
- name = text.substring(0, pos);
- pos++;
- if (pos < text.length()) {
- arg = text.substring(pos);
- }
- } else {
- name = text;
- }
- IValueVariable valueVariable = manager.getValueVariable(name);
- if (valueVariable == null) {
- IDynamicVariable dynamicVariable = manager.getDynamicVariable(name);
- if (dynamicVariable == null) {
- // no variables with the given name
- if (reportUndefinedVariables) {
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind(VariablesMessages.StringSubstitutionEngine_3, new String[]{name}), null));
- }
- // leave as is
- return getOriginalVarText(var);
- }
-
- if (resolveVariables) {
- fSubs = true;
- return dynamicVariable.getValue(arg);
- }
- //leave as is
- return getOriginalVarText(var);
- }
-
- if (arg == null) {
- if (resolveVariables) {
- fSubs = true;
- return valueVariable.getValue();
- }
- //leave as is
- return getOriginalVarText(var);
- }
- // error - an argument specified for a value variable
- throw new CoreException(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind(VariablesMessages.StringSubstitutionEngine_4, new String[]{valueVariable.getName()}), null));
- }
-
- private String getOriginalVarText(VariableReference var) {
- StringBuffer res = new StringBuffer(var.getText());
- res.insert(0, VARIABLE_START);
- res.append(VARIABLE_END);
- return res.toString();
- }
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariable.java
deleted file mode 100644
index 498b411b5..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariable.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.variables.IStringVariable;
-
-/**
- * Common implementation of context and value variables
- */
-public abstract class StringVariable implements IStringVariable {
-
- /**
- * Variable name
- */
- private String fName;
-
- /**
- * Variable description, or <code>null</code>
- */
- private String fDescription;
-
- /**
- * Configuration element associated with this variable, or <code>null</code>
- */
- private IConfigurationElement fConfigurationElement;
-
- /**
- * Constructs a new variable with the given name, description and configuration element.
- *
- * @param name variable name
- * @param description variable description, or <code>null</code>
- * @param configurationElement configuration element or <code>null</code>
- */
- public StringVariable(String name, String description, IConfigurationElement configurationElement) {
- fName = name;
- fDescription = description;
- fConfigurationElement = configurationElement;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariable#getName()
- */
- public String getName() {
- return fName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariable#getDescription()
- */
- public String getDescription() {
- return fDescription;
- }
-
- /**
- * Returns the configuration element associated with this variable, or <code>null</code>
- * if none.
- *
- * @return configuration element or <code>null</code>
- */
- protected IConfigurationElement getConfigurationElement() {
- return fConfigurationElement;
- }
-
- /**
- * @see IValueVariable#setDescription(String)
- * @param description
- */
- public void setDescription(String description) {
- fDescription = description;
- }
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariableManager.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariableManager.java
deleted file mode 100644
index fe3e8d69a..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/StringVariableManager.java
+++ /dev/null
@@ -1,614 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Stefan Liebig - Bug 242685 StringVariableManager - Variable contributions may silently override existing variables
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
-import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IStringVariable;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.IValueVariable;
-import org.eclipse.core.variables.IValueVariableListener;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.osgi.util.NLS;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Singleton string variable manager.
- */
-public class StringVariableManager implements IStringVariableManager, IPropertyChangeListener {
-
- /**
- * Dynamic variables - maps variable names to variables.
- */
- private Map fDynamicVariables;
-
- /**
- * Value variables - maps variable names to variables.
- */
- private Map fValueVariables;
-
- /**
- * Variable listeners
- */
- private ListenerList fListeners;
-
- // notifications
- private static final int ADDED = 0;
- private static final int CHANGED = 1;
- private static final int REMOVED = 2;
-
- /**
- * Singleton variable manager.
- */
- private static StringVariableManager fgManager;
-
- // true during internal updates indicates that change notification
- // should be suppressed/ignored.
- private boolean fInternalChange = false;
-
- // Variable extension point constants
- private static final String ATTR_NAME= "name"; //$NON-NLS-1$
- private static final String ATTR_DESCRIPTION="description"; //$NON-NLS-1$
- private static final String ATTR_READ_ONLY="readOnly"; //$NON-NLS-1$
- // Persisted variable XML constants
- private static final String VALUE_VARIABLES_TAG= "valueVariables"; //$NON-NLS-1$
- private static final String VALUE_VARIABLE_TAG= "valueVariable"; //$NON-NLS-1$
- private static final String NAME_TAG= "name"; //$NON-NLS-1$
- private static final String VALUE_TAG= "value"; //$NON-NLS-1$
- private static final String DESCRIPTION_TAG="description"; //$NON-NLS-1$
- private static final String READ_ONLY_TAG="readOnly"; //$NON-NLS-1$
- // XML values
- private static final String TRUE_VALUE= "true"; //$NON-NLS-1$
- private static final String FALSE_VALUE= "false"; //$NON-NLS-1$
- // preference store key for value variables
- private static final String PREF_VALUE_VARIABLES= VariablesPlugin.getUniqueIdentifier() + ".valueVariables"; //$NON-NLS-1$
-
- /**
- * Notifies a string variable listener in a safe runnable to handle
- * exceptions.
- */
- class StringVariableNotifier implements ISafeRunnable {
-
- private IValueVariableListener fListener;
- private int fType;
- private IValueVariable[] fVariables;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, "An exception occurred during string variable change notification", exception); //$NON-NLS-1$
- VariablesPlugin.log(status);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.variablesAdded(fVariables);
- break;
- case REMOVED:
- fListener.variablesRemoved(fVariables);
- break;
- case CHANGED:
- fListener.variablesChanged(fVariables);
- break;
- }
- }
-
- /**
- * Notifies the given listener of the add/change/remove
- *
- * @param listener the listener to notify
- * @param launch the launch that has changed
- * @param update the type of change
- */
- public void notify(IValueVariable[] variables, int update) {
- fVariables = variables;
- fType = update;
- Object[] copiedListeners= fListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IValueVariableListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- fVariables = null;
- fListener = null;
- // persist variables whenever there is an add/change/remove
- storeValueVariables();
- }
- }
-
- /**
- * Returns a new notifier.
- *
- * @return a new notifier
- */
- private StringVariableNotifier getNotifier() {
- return new StringVariableNotifier();
- }
-
- /**
- * Returns the default string variable manager
- *
- * @return string variable manager
- */
- public static StringVariableManager getDefault() {
- if (fgManager == null) {
- fgManager = new StringVariableManager();
- }
- return fgManager;
- }
-
- /**
- * Constructs a new string variable manager.
- */
- private StringVariableManager() {
- fListeners = new ListenerList();
- }
-
- /**
- * Load contributed variables and persisted variables
- */
- private synchronized void initialize() {
- if (fDynamicVariables == null) {
- fInternalChange = true;
- fDynamicVariables = new HashMap(5);
- fValueVariables = new HashMap(5);
- loadContributedValueVariables();
- loadPersistedValueVariables();
- loadDynamicVariables();
- VariablesPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(this);
- fInternalChange = false;
- }
- }
-
- /**
- * Loads contributed dynamic variables
- */
- private void loadDynamicVariables() {
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(VariablesPlugin.PI_CORE_VARIABLES, EXTENSION_POINT_DYNAMIC_VARIABLES);
- IConfigurationElement elements[]= point.getConfigurationElements();
- for (int i = 0; i < elements.length; i++) {
- IConfigurationElement element = elements[i];
- String name= element.getAttribute(ATTR_NAME);
- if (name == null) {
- VariablesPlugin.logMessage(NLS.bind("Variable extension missing required 'name' attribute: {0}", new String[] {element.getDeclaringExtension().getLabel()}), null); //$NON-NLS-1$
- continue;
- }
- String description= element.getAttribute(ATTR_DESCRIPTION);
- DynamicVariable variable= new DynamicVariable(name, description, element);
- Object old = fDynamicVariables.put(variable.getName(), variable);
- if (old != null) {
- DynamicVariable oldVariable = (DynamicVariable)old;
- VariablesPlugin.logMessage(NLS.bind("Dynamic variable extension from bundle ''{0}'' overrides existing extension variable ''{1}'' from bundle ''{2}''", //$NON-NLS-1$
- new String[] {element.getDeclaringExtension().getContributor().getName(),oldVariable.getName(),
- oldVariable.getConfigurationElement().getDeclaringExtension().getContributor().getName()}), null);
- }
- }
- }
-
- /**
- * Loads contributed value variables. This is done before loading persisted values.
- */
- private void loadContributedValueVariables() {
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(VariablesPlugin.PI_CORE_VARIABLES, EXTENSION_POINT_VALUE_VARIABLES);
- IConfigurationElement elements[]= point.getConfigurationElements();
- for (int i = 0; i < elements.length; i++) {
- IConfigurationElement element = elements[i];
- String name= element.getAttribute(ATTR_NAME);
- if (name == null) {
- VariablesPlugin.logMessage(NLS.bind("Variable extension missing required 'name' attribute: {0}", new String[] {element.getDeclaringExtension().getLabel()}), null); //$NON-NLS-1$
- continue;
- }
- String description= element.getAttribute(ATTR_DESCRIPTION);
- boolean isReadOnly = TRUE_VALUE.equals(element.getAttribute(ATTR_READ_ONLY));
-
- IValueVariable variable = new ContributedValueVariable(name, description, isReadOnly, element);
- Object old = fValueVariables.put(name, variable);
- if (old != null) {
- StringVariable oldVariable = (StringVariable)old;
- VariablesPlugin.logMessage(NLS.bind("Contributed variable extension from bundle ''{0}'' overrides existing extension variable ''{1}'' from bundle ''{2}''", //$NON-NLS-1$
- new String[] {element.getDeclaringExtension().getContributor().getName(),oldVariable.getName(),
- oldVariable.getConfigurationElement().getDeclaringExtension().getContributor().getName()}), null);
- }
- }
- }
-
- /**
- * Loads persisted value variables from the preference store. This is done after
- * loading value variables from the extension point. If a persisted variable has the
- * same name as a extension contributed variable the variable's value will be set to
- * the persisted value unless either a) The persisted value is <code>null</code>, or
- * b) the variable is read-only.
- */
- private void loadPersistedValueVariables() {
- String variablesString= VariablesPlugin.getDefault().getPluginPreferences().getString(PREF_VALUE_VARIABLES);
- if (variablesString.length() == 0) {
- return;
- }
- Element root= null;
- Throwable ex = null;
- try {
- ByteArrayInputStream stream = new ByteArrayInputStream(variablesString.getBytes("UTF-8")); //$NON-NLS-1$
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
- root = parser.parse(stream).getDocumentElement();
- } catch (UnsupportedEncodingException e) {
- ex = e;
- } catch (ParserConfigurationException e) {
- ex = e;
- } catch (FactoryConfigurationError e) {
- ex = e;
- } catch (SAXException e) {
- ex = e;
- } catch (IOException e) {
- ex = e;
- }
- if (ex != null) {
- VariablesPlugin.logMessage("An exception occurred while loading persisted value variables.", ex); //$NON-NLS-1$
- return;
- }
- if (!root.getNodeName().equals(VALUE_VARIABLES_TAG)) {
- VariablesPlugin.logMessage("Invalid format encountered while loading persisted value variables.", null); //$NON-NLS-1$
- return;
- }
- NodeList list= root.getChildNodes();
- for (int i= 0, numItems= list.getLength(); i < numItems; i++) {
- Node node= list.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element= (Element) node;
- if (!element.getNodeName().equals(VALUE_VARIABLE_TAG)) {
- VariablesPlugin.logMessage(NLS.bind("Invalid XML element encountered while loading value variables: {0}", new String[] {node.getNodeName()}), null); //$NON-NLS-1$
- continue;
- }
- String name= element.getAttribute(NAME_TAG);
- if (name.length() > 0) {
- String value= element.getAttribute(VALUE_TAG);
- String description= element.getAttribute(DESCRIPTION_TAG);
- boolean readOnly= TRUE_VALUE.equals(element.getAttribute(READ_ONLY_TAG));
-
- IValueVariable existing = getValueVariable(name);
- if (existing == null){
- ValueVariable variable = new ValueVariable(name, description, readOnly, value);
- fValueVariables.put(name, variable);
- } else if (!existing.isReadOnly() && value != null){
- existing.setValue(value);
- }
- } else {
- VariablesPlugin.logMessage("Invalid variable entry encountered while loading value variables. Variable name is null.", null); //$NON-NLS-1$
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#getVariables()
- */
- public synchronized IStringVariable[] getVariables() {
- initialize();
- List list = new ArrayList(fDynamicVariables.size() + fValueVariables.size());
- list.addAll(fDynamicVariables.values());
- list.addAll(fValueVariables.values());
- return (IStringVariable[]) list.toArray(new IStringVariable[list.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#getValueVariables()
- */
- public synchronized IValueVariable[] getValueVariables() {
- initialize();
- return (IValueVariable[]) fValueVariables.values().toArray(new IValueVariable[fValueVariables.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#getDynamicVariables()
- */
- public synchronized IDynamicVariable[] getDynamicVariables() {
- initialize();
- return (IDynamicVariable[]) fDynamicVariables.values().toArray(new IDynamicVariable[fDynamicVariables.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#performStringSubstitution(java.lang.String)
- */
- public String performStringSubstitution(String expression) throws CoreException {
- return performStringSubstitution(expression, true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#newValueVariable(java.lang.String, java.lang.String)
- */
- public IValueVariable newValueVariable(String name, String description) {
- return newValueVariable(name, description, false, null);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IStringVariableManager#newValueVariable(java.lang.String, java.lang.String, boolean, java.lang.String)
- */
- public IValueVariable newValueVariable(String name, String description, boolean readOnly, String value) {
- return new ValueVariable(name, description, readOnly, value);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#addVariables(org.eclipse.debug.internal.core.stringsubstitution.IValueVariable[])
- */
- public synchronized void addVariables(IValueVariable[] variables) throws CoreException {
- initialize();
- MultiStatus status = new MultiStatus(VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, VariablesMessages.StringVariableManager_26, null);
- for (int i = 0; i < variables.length; i++) {
- IValueVariable variable = variables[i];
- if (getValueVariable(variable.getName()) != null) {
- status.add(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), VariablesPlugin.INTERNAL_ERROR, NLS.bind(VariablesMessages.StringVariableManager_27, new String[]{variable.getName()}), null));
- }
- }
- if (status.isOK()) {
- for (int i = 0; i < variables.length; i++) {
- IValueVariable variable = variables[i];
- fValueVariables.put(variable.getName(), variable);
- }
- IValueVariable[] copy = new IValueVariable[variables.length];
- System.arraycopy(variables, 0, copy, 0, variables.length);
- getNotifier().notify(copy, ADDED);
- return;
- }
- throw new CoreException(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#removeVariables(org.eclipse.debug.internal.core.stringsubstitution.IValueVariable[])
- */
- public synchronized void removeVariables(IValueVariable[] variables) {
- initialize();
- List removed = new ArrayList(variables.length);
- for (int i = 0; i < variables.length; i++) {
- IValueVariable variable = variables[i];
- if (fValueVariables.remove(variable.getName()) != null) {
- removed.add(variable);
- }
- }
- if (removed.size() > 0) {
- getNotifier().notify((IValueVariable[])removed.toArray(new IValueVariable[removed.size()]), REMOVED);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#getDynamicVariable(java.lang.String)
- */
- public synchronized IDynamicVariable getDynamicVariable(String name) {
- initialize();
- return (IDynamicVariable) fDynamicVariables.get(name);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#getValueVariable(java.lang.String)
- */
- public synchronized IValueVariable getValueVariable(String name) {
- initialize();
- return (IValueVariable) fValueVariables.get(name);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#addValueVariableListener(org.eclipse.debug.internal.core.stringsubstitution.IValueVariableListener)
- */
- public void addValueVariableListener(IValueVariableListener listener) {
- fListeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#removeValueVariableListener(org.eclipse.debug.internal.core.stringsubstitution.IValueVariableListener)
- */
- public void removeValueVariableListener(IValueVariableListener listener) {
- fListeners.remove(listener);
- }
-
- /**
- * Returns a memento representing the value variables currently registered.
- *
- * @return memento representing the value variables currently registered
- * @throws IOException if an I/O exception occurs while creating the XML.
- */
- private String getValueVariablesAsXML() throws IOException, ParserConfigurationException, TransformerException {
- IValueVariable[] variables = getValueVariables();
-
- Document document= getDocument();
- Element rootElement= document.createElement(VALUE_VARIABLES_TAG);
- document.appendChild(rootElement);
- for (int i = 0; i < variables.length; i++) {
- IValueVariable variable = variables[i];
- if (!variable.isReadOnly()){
- // don't persist read-only variables or un-initialized contributed variables
- if (!variable.isContributed() || ((ContributedValueVariable)variable).isInitialized()) {
- Element element= document.createElement(VALUE_VARIABLE_TAG);
- element.setAttribute(NAME_TAG, variable.getName());
- String value= variable.getValue();
- if (value != null) {
- element.setAttribute(VALUE_TAG, value);
- }
- element.setAttribute(READ_ONLY_TAG, variable.isReadOnly() ? TRUE_VALUE : FALSE_VALUE);
- String description= variable.getDescription();
- if (description != null) {
- element.setAttribute(DESCRIPTION_TAG, description);
- }
- rootElement.appendChild(element);
- }
- }
- }
- return serializeDocument(document);
- }
-
- private Document getDocument() throws ParserConfigurationException {
- DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
- Document doc =docBuilder.newDocument();
- return doc;
- }
-
- /**
- * Serializes a XML document into a string - encoded in UTF8 format,
- * with platform line separators.
- *
- * @param doc document to serialize
- * @return the document as a string
- * @throws TransformerException if an unrecoverable error occurs during the serialization
- * @throws IOException if the encoding attempted to be used is not supported
- */
- private String serializeDocument(Document doc) throws TransformerException, UnsupportedEncodingException {
- ByteArrayOutputStream s= new ByteArrayOutputStream();
-
- TransformerFactory factory= TransformerFactory.newInstance();
- Transformer transformer= factory.newTransformer();
- transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
-
- DOMSource source= new DOMSource(doc);
- StreamResult outputTarget= new StreamResult(s);
- transformer.transform(source, outputTarget);
-
- return s.toString("UTF8"); //$NON-NLS-1$
- }
-
- /**
- * Saves the value variables currently registered in the
- * preference store.
- */
- private synchronized void storeValueVariables() {
- Preferences prefs= VariablesPlugin.getDefault().getPluginPreferences();
- String variableString= ""; //$NON-NLS-1$
- if (!fValueVariables.isEmpty()) {
- try {
- variableString= getValueVariablesAsXML();
- } catch (IOException e) {
- VariablesPlugin.log(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), IStatus.ERROR, "An exception occurred while storing launch configuration variables.", e)); //$NON-NLS-1$
- return;
- } catch (ParserConfigurationException e) {
- VariablesPlugin.log(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), IStatus.ERROR, "An exception occurred while storing launch configuration variables.", e)); //$NON-NLS-1$
- return;
- } catch (TransformerException e) {
- VariablesPlugin.log(new Status(IStatus.ERROR, VariablesPlugin.getUniqueIdentifier(), IStatus.ERROR, "An exception occurred while storing launch configuration variables.", e)); //$NON-NLS-1$
- return;
- }
- }
- fInternalChange = true;
- prefs.setValue(PREF_VALUE_VARIABLES, variableString);
- VariablesPlugin.getDefault().savePluginPreferences();
- fInternalChange = false;
- }
-
- /**
- * Fire a change notification for the given variable.
- *
- * @param variable the variable that has changed
- */
- protected void notifyChanged(IValueVariable variable) {
- if (!fInternalChange) {
- IValueVariable existing = getValueVariable(variable.getName());
- if (variable.equals(existing)) {
- // do not do change notification for unregistered variables
- getNotifier().notify(new IValueVariable[]{variable}, CHANGED);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#generateVariableExpression(java.lang.String, java.lang.String)
- */
- public String generateVariableExpression(String varName, String arg) {
- StringBuffer buffer = new StringBuffer();
- buffer.append("${"); //$NON-NLS-1$
- buffer.append(varName);
- if (arg != null) {
- buffer.append(":"); //$NON-NLS-1$
- buffer.append(arg);
- }
- buffer.append("}"); //$NON-NLS-1$
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager#performStringSubstitution(java.lang.String, boolean)
- */
- public String performStringSubstitution(String expression, boolean reportUndefinedVariables) throws CoreException {
- return new StringSubstitutionEngine().performStringSubstitution(expression, reportUndefinedVariables, true, this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IStringVariableManager#validateStringVariables(java.lang.String)
- */
- public void validateStringVariables(String expression) throws CoreException {
- new StringSubstitutionEngine().validateStringVariables(expression, this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IStringVariableManager#getContributingPluginId(org.eclipse.core.variables.IStringVariable)
- */
- public String getContributingPluginId(IStringVariable variable) {
- if (variable instanceof StringVariable) {
- return ((StringVariable) variable).getConfigurationElement().getContributor().getName();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.Preferences.IPropertyChangeListener#propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent)
- */
- public void propertyChange(PropertyChangeEvent event) {
- if (PREF_VALUE_VARIABLES.equals(event.getProperty())) {
- synchronized (this) {
- if (!fInternalChange) {
- fValueVariables.clear();
- loadPersistedValueVariables();
- loadContributedValueVariables();
- }
- }
- }
- }
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ValueVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ValueVariable.java
deleted file mode 100644
index 3bac3d076..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/ValueVariable.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.internal.variables;
-
-import org.eclipse.core.variables.IValueVariable;
-
-/**
- * Implementation of a value variable.
- */
-public class ValueVariable extends StringVariable implements IValueVariable {
-
- /**
- * Variable value or <code>null</code> if none
- */
- private String fValue;
-
- /**
- * Whether this variable is read only. If true, users cannot change the value.
- */
- private boolean fReadOnly;
-
- /**
- * Constructs a new value variable with the given name, description, read only
- * property and string value. Value can be null.
- *
- * @param name variable name
- * @param description variable description or <code>null</code>
- * @param readOnly whether the variable should be a read only variable
- * @param value the initial value of the variable or <code>null</code>
- */
- public ValueVariable(String name, String description, boolean readOnly, String value) {
- super(name, description, null);
- fReadOnly = readOnly;
- fValue = value;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#setValue(java.lang.String)
- */
- public void setValue(String value) {
- if (!isReadOnly()){
- fValue = value;
- StringVariableManager.getDefault().notifyChanged(this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#getValue()
- */
- public String getValue() {
- return fValue;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#isReadOnly()
- */
- public boolean isReadOnly() {
- return fReadOnly;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IValueVariable#isContributed()
- */
- public boolean isContributed() {
- return false;
- }
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.java b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.java
deleted file mode 100644
index d6afcfda2..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.core.internal.variables;
-
-import org.eclipse.osgi.util.NLS;
-
-public class VariablesMessages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.core.internal.variables.VariablesMessages";//$NON-NLS-1$
-
- public static String StringSubstitutionEngine_3;
- public static String StringSubstitutionEngine_4;
-
- public static String StringVariableManager_26;
- public static String StringVariableManager_27;
-
- public static String DynamicVariable_0;
-
- static {
- // load message values from bundle file
- NLS.initializeMessages(BUNDLE_NAME, VariablesMessages.class);
- }
-} \ No newline at end of file
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.properties b/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.properties
deleted file mode 100644
index 945dbd36a..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/internal/variables/VariablesMessages.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-StringSubstitutionEngine_3=Reference to undefined variable {0}
-StringSubstitutionEngine_4=Variable {0} does not accept arguments
-
-StringVariableManager_26=Variables with the specified names are already registered.
-StringVariableManager_27=Variable named {0} already registered
-
-DynamicVariable_0=Unsupported argument {0} specified for variable {1}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariable.java
deleted file mode 100644
index b81fff749..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariable.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A dynamic variable is a variable whose value is computed dynamically
- * by a resolver at the time a string substitution is performed. A dynamic
- * variable is contributed by an extension.
- * <p>
- * The following is a definition of a dynamic variable that resolves to the name of the selected resource:
- * <pre>
- * &lt;extension point="org.eclipse.core.variables.dynamicVariables"&gt;
- * &lt;variable
- * name="resource_name"
- * resolver="com.example.ResourceNameResolver"
- * description="The name of the selected resource"
- * supportsArgument="false"&gt;
- * &lt;/variable&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * <p>
- * Clients contributing a dynamic variable provide an implementation of
- * {@link org.eclipse.core.variables.IDynamicVariableResolver}.
- * </p>
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IDynamicVariable extends IStringVariable {
-
- /**
- * Returns the value of this variable when referenced with the given
- * argument, possibly <code>null</code>.
- *
- * @param argument argument present in variable expression or <code>null</code>
- * if none
- * @return value of this variable when referenced with the given argument, possibly
- * <code>null</code>
- * @throws CoreException if unable to resolve a value for this variable
- */
- public String getValue(String argument) throws CoreException;
-
- /**
- * Returns whether this variable supports an argument, as specified
- * by this variable's extension definition in plug-in XML.
- *
- * @return whether this variable supports an argument
- */
- public boolean supportsArgument();
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariableResolver.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariableResolver.java
deleted file mode 100644
index b5cefaafb..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IDynamicVariableResolver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Resolves the value for a dynamic variable. A dynamic variable extension
- * contributes a resolver which must implement this interface.
- * <p>
- * Clients contributing a dynamic variable are intended to provide an implementation
- * of this interface.
- * </p>
- * @since 3.0
- */
-public interface IDynamicVariableResolver {
-
- /**
- * Resolves and returns a value for the specified variable when referenced
- * with the given argument, possibly <code>null</code>
- *
- * @param variable variable to resolve a value for
- * @param argument argument present in expression or <code>null</code> if none
- * @return variable value, possibly <code>null</code>
- * @throws CoreException if unable to resolve a value for the given variable
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException;
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariable.java
deleted file mode 100644
index 70c3e25f0..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariable.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-
-/**
- * A variable that can be referenced in an expression, which resolves to a string
- * value. Variables are referenced in expressions via their name, in the following
- * format.
- * <pre>
- * ${varname} or ${varname:argument}
- * </pre>
- * <p>
- * A variable is identified by its name, and optionally accepts an argument. When an
- * argument is present, a colon separates the variable name from its argument.
- * </p>
- * <p>
- * Variables can be contributed by extensions or programmatically. There are two
- * kinds of variables.
- * <ul>
- * <li><code>IValueVariable</code> - variables that have a value (with getter and setter), and
- * accept no arguments. The value of this type of variable is resolved at the time
- * its value is set via its setter API.</li>
- * <li><code>IDynamicVariable</code> - variables whose value is resolved at the time
- * a string substitution is performed by a contributed resolver. Dynamic variables
- * may accept an argument.</li>
- * </ul>
- * </p>
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IStringVariable {
-
- /**
- * Returns the name of this variable. A variable is uniquely identified by
- * its name.
- *
- * @return variable name
- */
- public String getName();
-
- /**
- * Returns a human readable description of this variable, possibly <code>null</code>
- *
- * @return a description of this variable, or <code>null</code> if none
- */
- public String getDescription();
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariableManager.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariableManager.java
deleted file mode 100644
index e3502e99b..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IStringVariableManager.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Registry for string variables.
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IStringVariableManager {
-
- /**
- * Simple identifier constant (value <code>"dynamicVariables"</code>) for the
- * dynamic variables extension point.
- */
- public static final String EXTENSION_POINT_DYNAMIC_VARIABLES = "dynamicVariables"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"valueVariables"</code>) for the
- * value variables extension point.
- */
- public static final String EXTENSION_POINT_VALUE_VARIABLES = "valueVariables"; //$NON-NLS-1$
-
- /**
- * Returns all registered variables.
- *
- * @return a collection of all registered variables
- */
- public IStringVariable[] getVariables();
-
- /**
- * Returns all registered value variables.
- *
- * @return a collection of all registered value variables
- */
- public IValueVariable[] getValueVariables();
-
- /**
- * Returns the value variable with the given name, or <code>null</code>
- * if none.
- *
- * @param name variable name
- * @return the value variable with the given name, or <code>null</code>
- * if none
- */
- public IValueVariable getValueVariable(String name);
-
- /**
- * Returns all registered dynamic variables.
- *
- * @return a collection of all registered dynamic variables
- */
- public IDynamicVariable[] getDynamicVariables();
-
- /**
- * Returns the dynamic variable with the given name or <code>null</code>
- * if none.
- *
- * @param name variable name
- * @return the dynamic variable with the given name or <code>null</code>
- * if none
- */
- public IDynamicVariable getDynamicVariable(String name);
-
- /**
- * Returns the plug-in identifier of the plug-in that contributed the
- * given variable via extension or <code>null</code> if the given
- * variable wasn't contributed via extension.
- *
- * @param variable the variable
- * @return the plug-in identifier of the plug-in that contributed the
- * given variable or <code>null</code>
- * @since 3.1
- */
- public String getContributingPluginId(IStringVariable variable);
-
- /**
- * Recursively resolves and replaces all variable references in the given
- * expression with their corresponding values. Reports errors for references
- * to undefined variables (equivalent to calling
- * <code>performStringSubstitution(expression, true)</code>).
- *
- * @param expression expression referencing variables
- * @return expression with variable references replaced with variable values
- * @throws CoreException if unable to resolve the value of one or more variables
- */
- public String performStringSubstitution(String expression) throws CoreException;
-
- /**
- * Recursively resolves and replaces all variable references in the given
- * expression with their corresponding values. Allows the client to control
- * whether references to undefined variables are reported as an error (i.e.
- * an exception is thrown).
- *
- * @param expression expression referencing variables
- * @param reportUndefinedVariables whether a reference to an undefined variable
- * is to be considered an error (i.e. throw an exception)
- * @return expression with variable references replaced with variable values
- * @throws CoreException if unable to resolve the value of one or more variables
- */
- public String performStringSubstitution(String expression, boolean reportUndefinedVariables) throws CoreException;
-
- /**
- * Validates variables references in the given expression and reports errors
- * for references to undefined variables.
- *
- * @param expression expression referencing variables
- * @throws CoreException if one or more referenced variables do not exist
- */
- public void validateStringVariables(String expression) throws CoreException;
-
- /**
- * Returns a new read-write value variable with the given name and description
- * with a <code>null</code> value.
- *
- * @param name variable name, cannot be <code>null</code>
- * @param description variable description, possibly <code>null</code>
- * @return a new value variable
- */
- public IValueVariable newValueVariable(String name, String description);
-
- /**
- * Returns a new value variable with the given properties.
- *
- * @param name variable name, cannot be <code>null</code>
- * @param description variable description, possibly <code>null</code>
- * @param readOnly whether this variable is to be a read only variable
- * @param value the string value to initialize this variable to - should
- * not be <code>null</code> for read-only variables
- * @return a new value variable
- * @since 3.3
- */
- public IValueVariable newValueVariable(String name, String description, boolean readOnly, String value);
-
- /**
- * Adds the given variables to the variable registry.
- *
- * @param variables the variables to add
- * @throws CoreException if one or more variables to add has a name collision with
- * an existing variable
- */
- public void addVariables(IValueVariable[] variables) throws CoreException;
-
- /**
- * Removes the given variables from the registry. Has no effect for unregistered
- * variables.
- *
- * @param variables variables to remove
- */
- public void removeVariables(IValueVariable[] variables);
-
- /**
- * Registers the given listener for value variable notifications. Has no effect
- * if an identical listener is already registered.
- *
- * @param listener value variable listener to add
- */
- public void addValueVariableListener(IValueVariableListener listener);
-
- /**
- * Removes the given listener from the list of registered value variable
- * listeners. Has no effect if an identical listener is not already registered.
- *
- * @param listener value variable listener to remove
- */
- public void removeValueVariableListener(IValueVariableListener listener);
-
- /**
- * Convenience method that returns an expression referencing the given
- * variable and optional argument. For example, calling the method with
- * a <code>varName</code> of <code>my_var</code> and an <code>argument</code>
- * of <code>my_arg</code> results in the string <code>$(my_var:my_arg}</code>.
- *
- * @param varName variable name
- * @param arg argument text or <code>null</code>
- * @return an expression referencing the given variable and
- * optional argument
- */
- public String generateVariableExpression(String varName, String arg);
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariable.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariable.java
deleted file mode 100644
index 4b25138d0..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariable.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-/**
- * A variable with a value that can be set and retrieved. The context in which
- * a value variable is referenced does not effect the value of the variable.
- * A value variable can be contributed by an extension or created programmatically.
- * A contributor may optionally specify an initial value for a variable, or
- * provide a delegate that will initialize the variable with a value.
- * <p>
- * Since 3.3, a variable can be specified as a "read only" preventing users from changing
- * the value after it has been initialized. Furthermore, a read only variable that is
- * contributed by an extension will always load the value from the extension.
- * </p>
- * <p>
- * Example of a value variable contribution with an initial value, the specified
- * variable is created with the initial value "/usr/local/foo".
- * <pre>
- * &lt;extension point="org.eclipse.core.variables.valueVariables"&gt;
- * &lt;variable
- * name="FOO_HOME"
- * initialValue="/usr/local/foo"&gt;
- * &lt;/variable&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * <p>
- * Example of a value variable contribution with an initializer class, the class
- * "com.example.FooLocator" will be used to initialize the value the first time
- * it's requested.
- * <pre>
- * &lt;extension point="org.eclipse.core.variables.valueVariables"&gt;
- * &lt;variable
- * name="FOO_HOME"
- * initializerClass="com.example.FooLocator"&gt;
- * &lt;/variable&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface IValueVariable extends IStringVariable {
-
- /**
- * Sets the value of this variable to the given value.
- * Since 3.3, this has no effect if this variable is read only.
- *
- * @param value variable value
- */
- public void setValue(String value);
-
- /**
- * Returns the value of this variable, or <code>null</code> if none.
- *
- * @return the value of this variable, or <code>null</code> if none
- */
- public String getValue();
-
- /**
- * Returns whether this variable was contributed by an extension.
- *
- * @return whether this variable was contributed by an extension
- */
- public boolean isContributed();
-
- /**
- * Returns whether this variable is read only.
- *
- * @return whether this variable is read only
- * @since 3.3
- */
- public boolean isReadOnly();
-
- /**
- * Sets the description of this variable to the given value.
- *
- * @param description variable description, possibly <code>null</code>
- */
- public void setDescription(String description);
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableInitializer.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableInitializer.java
deleted file mode 100644
index 035a907db..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableInitializer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-/**
- * Value variable initializers compute an initial value for a value
- * variable contributed by an extension, which is not defined with an initial
- * value. This provides a mechanism for programmatically computing the initial
- * value of a value variable.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.0
- */
-public interface IValueVariableInitializer {
- /**
- * Initializes the specified variable.
- *
- * @param variable variable to initialize
- */
- public void initialize(IValueVariable variable);
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableListener.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableListener.java
deleted file mode 100644
index 37dac25df..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/IValueVariableListener.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.variables;
-
-/**
- * A string variable listener is notified of variables as they are added
- * and removed from the string variable manager. As well, listeners are
- * notified when a value variable changes value.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.0
- */
-public interface IValueVariableListener {
-
- /**
- * Notification the given variables have been added to the variable
- * manager.
- *
- * @param variables added variables
- */
- public void variablesAdded(IValueVariable[] variables);
-
- /**
- * Notification the given variables have been removed from the variable
- * manager.
- *
- * @param variables removed variables
- */
- public void variablesRemoved(IValueVariable[] variables);
-
- /**
- * Notification the given variables have been changed value.
- *
- * @param variables changed variables
- */
- public void variablesChanged(IValueVariable[] variables);
-
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/VariablesPlugin.java b/org.eclipse.core.variables/src/org/eclipse/core/variables/VariablesPlugin.java
deleted file mode 100644
index 4fa1b74a5..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/VariablesPlugin.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.variables;
-
-import org.eclipse.core.internal.variables.StringVariableManager;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.Status;
-
-/**
- * The plug-in runtime class for the Core Variables plug-in.
- * @since 3.0
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class VariablesPlugin extends Plugin {
-
- /**
- * Status code indicating an unexpected internal error.
- */
- public static final int INTERNAL_ERROR = 120;
-
- /**
- * Status code indicating a variable reference cycle error.
- */
- public static final int REFERENCE_CYCLE_ERROR = 130;
-
- /**
- * The single instance of this plug-in runtime class.
- */
- private static VariablesPlugin plugin;
-
- /**
- * Unique identifier constant (value <code>"org.eclipse.core.variables"</code>)
- * for the Core Variables plug-in.
- */
- public static final String PI_CORE_VARIABLES = "org.eclipse.core.variables"; //$NON-NLS-1$
-
-
- /**
- * Constructs an instance of this plug-in runtime class.
- * <p>
- * An instance of this plug-in runtime class is automatically created
- * when the facilities provided by the Variables plug-in are required.
- * <b>Clients must never explicitly instantiate a plug-in runtime class.</b>
- * </p>
- */
- public VariablesPlugin() {
- super();
- plugin = this;
- }
-
- /**
- * Returns this plug-in instance.
- *
- * @return the single instance of this plug-in runtime class
- */
- public static VariablesPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Logs the specified throwable with this plug-in's log.
- *
- * @param t throwable to log
- */
- public static void log(Throwable t) {
- log(new Status(IStatus.ERROR, PI_CORE_VARIABLES, INTERNAL_ERROR, "Error logged from Core Variables: ", t)); //$NON-NLS-1$
- }
-
- /**
- * Logs the given message with this plug-in's log and the given
- * throwable or <code>null</code> if none.
- * @param message the message to log
- * @param throwable the exception that occurred or <code>null</code> if none
- */
- public static void logMessage(String message, Throwable throwable) {
- log(new Status(IStatus.ERROR, getUniqueIdentifier(), INTERNAL_ERROR, message, throwable));
- }
-
- /**
- * Logs the specified status with this plug-in's log.
- *
- * @param status status to log
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- /**
- * Convenience method which returns the unique identifier of this plug-in.
- */
- public static String getUniqueIdentifier() {
- return PI_CORE_VARIABLES;
- }
-
- /**
- * Returns the string variable manager.
- *
- * @return the string variable manager
- */
- public IStringVariableManager getStringVariableManager() {
- return StringVariableManager.getDefault();
- }
-}
diff --git a/org.eclipse.core.variables/src/org/eclipse/core/variables/package.html b/org.eclipse.core.variables/src/org/eclipse/core/variables/package.html
deleted file mode 100644
index 0d27de0b3..000000000
--- a/org.eclipse.core.variables/src/org/eclipse/core/variables/package.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse Debug Platform</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<p>Provides support for defining and contributing variables for the purpose of
- string substitution.</p>
-
-<h2>Package Specification</h2>
-
-<p>This package provides classes and interfaces to support the definition and
- contribution of variables for the purpose of string substitution. The plug-in
- supports the recursive replacement of variables referenced by name in arbitrary
- strings with the value of the variable. Two types of variables are provided
- - value variables (<code>IValueVariable</code>) and dynamic variables (<code>IDynamicVariable</code>).
- A value variable has a simple setter and getter for its current value. A dynamic
- variable has an associated resolver that provides a variable's value each time
- it is referenced (replaced) in a string substitution. A dynamic variable may
- also provide an argument in its reference that can be used by its resolver to
- determine its substitution value.</p>
-<p>A variable manager (<code>IStringVariableManager</code>) is provided to manage
- the set of defined variables. Value variables may be created via API on the
- variable manager, or contributed via the <code>valueVariables</code> extension
- point. Dynamic variables must be contributed via the <code>dynamicVariables</code>
- extension point. The variable manager also provides change notification for
- value variables. The variable manager also provides an API for performing string
- substitution, which accepts a string, and returns a string with all variable
- references replaced by associated variable values.</p>
-<p>Variables are referenced in strings by enclosing them in braces, preceded with
- a dollar sign. For example, consider a variable defined with the name <code>foo</code>,
- and referenced in the following string: <code>&quot;abc${foo}ghi&quot;</code>.
- If the value of <code>foo</code> is <code>&quot;def&quot;</code>, the result
- of a string substitution would be <code>&quot;abcdefghi&quot;</code>. In the
- case of a dynamic variable, an (optional) argument is supplied by appending
- a colon and argument value after the variable name. For example <code>&quot;${foo:bar}&quot;</code>.
- In this case, the resolver associated with <code>foo</code> would be provided
- with the referenced argument (<code>bar</code>) when asked to resolve a value
- for the variable <code>foo</code>. </p>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/.classpath b/org.eclipse.debug.core/.classpath
deleted file mode 100644
index 3138d4b81..000000000
--- a/org.eclipse.debug.core/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="core"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.debug.core/.cvsignore b/org.eclipse.debug.core/.cvsignore
deleted file mode 100644
index c5e82d745..000000000
--- a/org.eclipse.debug.core/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin \ No newline at end of file
diff --git a/org.eclipse.debug.core/.options b/org.eclipse.debug.core/.options
deleted file mode 100644
index 47e155156..000000000
--- a/org.eclipse.debug.core/.options
+++ /dev/null
@@ -1,3 +0,0 @@
-org.eclipse.debug.core/debug=false
-org.eclipse.debug.core/debug/commands=false
-org.eclipse.debug.core/debug/events=false \ No newline at end of file
diff --git a/org.eclipse.debug.core/.project b/org.eclipse.debug.core/.project
deleted file mode 100644
index c3e32f2fd..000000000
--- a/org.eclipse.debug.core/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.debug.core</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.debug.core/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.debug.core/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 0cf89c08a..000000000
--- a/org.eclipse.debug.core/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,101 +0,0 @@
-#Thu Feb 26 08:13:04 CST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=100
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=ignore
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.nullReference=error
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled
-org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,NORMAL,HIGH,HIGH
-org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,EXPERIMENTAL,CONTEXTLAUNCHING
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/org.eclipse.debug.core/.settings/org.eclipse.jdt.launching.prefs b/org.eclipse.debug.core/.settings/org.eclipse.jdt.launching.prefs
deleted file mode 100644
index f2a3bc396..000000000
--- a/org.eclipse.debug.core/.settings/org.eclipse.jdt.launching.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Thu Feb 26 08:13:04 CST 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/org.eclipse.debug.core/.settings/org.eclipse.pde.prefs b/org.eclipse.debug.core/.settings/org.eclipse.pde.prefs
deleted file mode 100644
index e3108cba6..000000000
--- a/org.eclipse.debug.core/.settings/org.eclipse.pde.prefs
+++ /dev/null
@@ -1,17 +0,0 @@
-#Tue Jan 30 11:38:38 CST 2007
-compilers.incompatible-environment=1
-compilers.p.build=1
-compilers.p.deprecated=1
-compilers.p.illegal-att-value=0
-compilers.p.missing-packages=0
-compilers.p.no-required-att=0
-compilers.p.not-externalized-att=1
-compilers.p.unknown-attribute=0
-compilers.p.unknown-class=0
-compilers.p.unknown-element=0
-compilers.p.unknown-resource=0
-compilers.p.unresolved-ex-points=0
-compilers.p.unresolved-import=0
-compilers.p.unused-element-or-attribute=1
-compilers.use-project=true
-eclipse.preferences.version=1
diff --git a/org.eclipse.debug.core/META-INF/MANIFEST.MF b/org.eclipse.debug.core/META-INF/MANIFEST.MF
deleted file mode 100644
index af96937e5..000000000
--- a/org.eclipse.debug.core/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,27 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.debug.core; singleton:=true
-Bundle-Version: 3.5.100.qualifier
-Bundle-ClassPath: .
-Bundle-Activator: org.eclipse.debug.core.DebugPlugin
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.debug.core,
- org.eclipse.debug.core.commands,
- org.eclipse.debug.core.model,
- org.eclipse.debug.core.sourcelookup,
- org.eclipse.debug.core.sourcelookup.containers,
- org.eclipse.debug.internal.core;x-friends:="org.eclipse.debug.ui",
- org.eclipse.debug.internal.core.commands;x-friends:="org.eclipse.debug.ui",
- org.eclipse.debug.internal.core.sourcelookup;x-friends:="org.eclipse.debug.ui",
- org.eclipse.debug.internal.core.sourcelookup.containers;x-friends:="org.eclipse.debug.ui",
- org.eclipse.debug.internal.core.variables;x-friends:="org.eclipse.debug.ui"
-Require-Bundle: org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
- org.eclipse.core.variables;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.core.filesystem;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
-Bundle-ActivationPolicy: lazy
-Import-Package: com.ibm.icu.text
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/org.eclipse.debug.core/about.html b/org.eclipse.debug.core/about.html
deleted file mode 100644
index 460233046..000000000
--- a/org.eclipse.debug.core/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 2, 2006</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content. Check the Redistributor's license that was
-provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/org.eclipse.debug.core/build.properties b/org.eclipse.debug.core/build.properties
deleted file mode 100644
index 826d036e5..000000000
--- a/org.eclipse.debug.core/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = .options,\
- plugin.xml,\
- plugin.properties,\
- .,\
- about.html,\
- META-INF/
-source.. = core/
-src.includes = about.html,\
- schema/
diff --git a/org.eclipse.debug.core/buildnotes_platform-debug.html b/org.eclipse.debug.core/buildnotes_platform-debug.html
deleted file mode 100644
index c5008375c..000000000
--- a/org.eclipse.debug.core/buildnotes_platform-debug.html
+++ /dev/null
@@ -1,16 +0,0 @@
- <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="IBM">
- <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
- <title>Platform Debug Release Notes</title>
-</head>
-<body>
-<h1>Eclipse 3.6 Debug Platform Build Notes</h1>
-
-<h2>Summary of API changes in 3.6</h2>
-
-<p>&nbsp;</p>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugEvent.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugEvent.java
deleted file mode 100644
index 1c867f7c8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugEvent.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.EventObject;
-
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-
-/**
- * A debug event describes an event in a program being debugged or
- * in a running process. Debug models and process implementations
- * are required to generate debug events as specified by this class.
- * <p>
- * The following list defines the events generated for each debug
- * model element.
- * The <code>getSource()</code> method of a debug event
- * returns the element associated with the event.
- * Creation events are guaranteed to occur in a top
- * down order - that is, parents are created before children.
- * Termination events are guaranteed to occur in a bottom up order -
- * that is, children before parents. However, termination events are not guaranteed
- * for all elements that are created. That is, terminate events can be coalesced - a
- * terminate event for a parent signals that all children have been terminated.
- * </p>
- * <p>
- * A debug model may define model specific events by specifying a debug event
- * kind of <code>MODEL_SPECIFIC</code>. A model specific event is identified by the
- * event source (i.e. by the debug model that generated the event). The detail of
- * a model specific event is client defined. Note that model specific events are
- * not understood by the debug platform, and are thus ignored.
- * </p>
- * <p>
- * The generic <code>CHANGE</code> event can be fired at any time by any element.
- * Generally, a client of a debug model, such as as a UI, can get sufficient
- * information to update by listening/responding to the other event kinds. However,
- * if a debug model needs to inform clients of a change that is not specified
- * by create/terminate/suspend/resume, the <code>CHANGE</code> event may be used.
- * For example, generally, the only way a thread or any of its children can change
- * state between a suspend and resume operation, is if the thread or owning debug
- * target is terminated. However, if a debug model supports some other operation
- * that would allow a debug element to change state while suspended, the debug model
- * would fire a change event for that element. The valid detail codes for a
- * change event are:<ul>
- * <li><code>STATE</code> - indicates the state of an element has changed, but its
- * children are not affected. A client would use a state change event to update
- * a label of the affected element, but would not update any children.</li>
- * <li><code>CONTENT</code> - indicates that a debug element's value or contents have
- * changed in some way. For example, when the value of a variable is changed
- * explicitly, the variable should fire a content change event.</li>
- * </ul>
- * </p>
- * <ul>
- * <li><code>IProcess</code>
- * <ul>
- * <li><code>CREATE</code> - a process has been created and is executing.</li>
- * <li><code>TERMINATE</code> - a process has terminated.</li>
- * </ul>
- * <li><code>IDebugTarget</code>
- * <ul>
- * <li><code>CREATE</code> - a debug target has been created and is ready
- * to begin a debug session.</li>
- * <li><code>TERMINATE</code> - a debug target has terminated and the debug
- * session has ended.</li>
- * <li><code>SUSPEND</code> - a debug target has suspended. Event detail provides
- * the reason for the suspension:<ul>
- * <li><code>STEP_END</code> - a request to step has completed</li>
- * <li><code>BREAKPOINT</code> - a breakpoint has been hit</li>
- * <li><code>CLIENT_REQUEST</code> - a client request has caused the target to suspend
- * (i.e. an explicit call to <code>suspend()</code>)</li>
- * <li><code>UNSPECIFIED</code> - the reason for the suspend is not specified</li>
- * </ul>
- * </li>
- * <li><code>RESUME</code> - a debug target has resumed. Event detail provides
- * the reason for the resume:<ul>
- * <li><code>STEP_INTO</code> - a target is being resumed because of a request to step into</li>
- * <li><code>STEP_OVER</code> - a target is being resumed because of a request to step over</li>
- * <li><code>STEP_RETURN</code> - a target is being resumed because of a request to step return</li>
- * <li><code>CLIENT_REQUEST</code> - a client request has caused the target to be resumed
- * (i.e. an explicit call to <code>resume()</code>)</li>
- * <li><code>UNSPECIFIED</code> - The reason for the resume is not specified</li>
- * </ul>
- * </li>
- * </ul>
- * </li>
- * <li><code>IThread</code>
- * <ul>
- * <li><code>CREATE</code> - a thread has been created in a debug target.</li>
- * <li><code>TERMINATE</code> - a thread has terminated.</li>
- * <li><code>SUSPEND</code> - a thread has suspended execution. Event detail provides
- * the reason for the suspension:<ul>
- * <li><code>STEP_END</code> - a request to step has completed</li>
- * <li><code>BREAKPOINT</code> - a breakpoint has been hit</li>
- * <li><code>CLIENT_REQUEST</code> - a client request has caused the thread to suspend
- * (i.e. an explicit call to <code>suspend()</code>)</li>
- * <li><code>EVALUATION</code> - an expression evaluation has ended that may
- * have had side effects in the debug target.</li>
- * <li><code>EVALUATION_IMPLICIT</code> - an expression evaluation has ended that
- * had no side effects in the debug target.</li>
- * <li><code>UNSPECIFIED</code> - the reason for the suspend is not specified</li>
- * </ul>
- * </li>
- * <li><code>RESUME</code> - a thread has resumed execution. Event detail provides
- * the reason for the resume:<ul>
- * <li><code>STEP_INTO</code> - a thread is being resumed because of a request to step into</li>
- * <li><code>STEP_OVER</code> - a thread is being resumed because of a request to step over</li>
- * <li><code>STEP_RETURN</code> - a thread is being resumed because of a request to step return</li>
- * <li><code>CLIENT_REQUEST</code> - a client request has caused the thread to be resumed
- * (i.e. an explicit call to <code>resume()</code>)</li>
- * <li><code>EVALUATION</code> - an expression evaluation has started that may
- * have side effects in the debug target.</li>
- * <li><code>EVALUATION_IMPLICIT</code> - an expression evaluation has started that
- * will have no side effects in the debug target.</li>
- * <li><code>UNSPECIFIED</code> - The reason for the resume is not specified</li>
- * </ul>
- * </li>
- * </ul>
- * </li>
- * <li><code>IStackFrame</code> - no events are specified for stack frames.
- * When a thread is suspended, it has stack frames. When a thread resumes,
- * stack frames are unavailable.
- * </li>
- * <li><code>IVariable</code> - no events are specified for variables.
- * When a thread is suspended, stack frames have variables. When a thread resumes,
- * variables are unavailable.
- * </li>
- * <li><code>IValue</code> - no events are specified for values.
- * </li>
- * </ul>
- *
- */
-public final class DebugEvent extends EventObject {
-
- /**
- * All objects that can be serialized should have a stable serialVersionUID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Resume event kind.
- */
- public static final int RESUME= 0x0001;
-
- /**
- * Suspend event kind.
- */
- public static final int SUSPEND= 0x0002;
-
- /**
- * Create event kind.
- */
- public static final int CREATE= 0x0004;
-
- /**
- * Terminate event kind.
- */
- public static final int TERMINATE= 0x0008;
-
- /**
- * Change event kind.
- */
- public static final int CHANGE= 0x0010;
-
- /**
- * Model specific event kind. The detail codes
- * for a model specific event are client defined.
- *
- * @since 2.1.2
- */
- public static final int MODEL_SPECIFIC= 0x0020;
-
- /**
- * Step start detail. Indicates a thread was resumed by a step
- * into action.
- * @since 2.0
- */
- public static final int STEP_INTO= 0x0001;
-
- /**
- * Step start detail. Indicates a thread was resumed by a step
- * over action.
- * @since 2.0
- */
- public static final int STEP_OVER= 0x0002;
-
- /**
- * Step start detail. Indicates a thread was resumed by a step
- * return action.
- * @since 2.0
- */
- public static final int STEP_RETURN= 0x0004;
-
- /**
- * Step end detail. Indicates a thread was suspended due
- * to the completion of a step action.
- */
- public static final int STEP_END= 0x0008;
-
- /**
- * Breakpoint detail. Indicates a thread was suspended by
- * a breakpoint.
- */
- public static final int BREAKPOINT= 0x0010;
-
- /**
- * Client request detail. Indicates a thread was suspended due
- * to a client request.
- */
- public static final int CLIENT_REQUEST= 0x0020;
-
- /**
- * Evaluation detail. Indicates that a thread was resumed or
- * suspended to perform an expression evaluation.
- *
- * @since 2.0
- */
- public static final int EVALUATION = 0x0040;
-
- /**
- * Evaluation detail. Indicates that a thread was resumed or
- * suspended to perform an implicit expression evaluation.
- * An implicit evaluation is an evaluation that is performed
- * as an indirect result of a user action.
- * Clients may use this detail event to decide whether or not
- * to alert the user that an evaluation is taking place..
- *
- * @since 2.0
- */
- public static final int EVALUATION_IMPLICIT = 0x0080;
-
- /**
- * State change detail. Indicates the state of a single
- * debug element has changed. Only valid for <code>CHANGE</code>
- * events.
- *
- * @since 2.0
- */
- public static final int STATE = 0x0100;
-
- /**
- * Content change detail. Indicates the content of a debug element
- * (and potentially its children) has changed. Only valid for
- * <code>CHANGE</code> events.
- *
- * @since 2.0
- */
- public static final int CONTENT = 0x0200;
-
- /**
- * Constant indicating that the kind or detail of a debug
- * event is unspecified.
- */
- public static final int UNSPECIFIED = 0;
-
- /**
- * The kind of event - one of the kind constants defined by
- * this class.
- */
- private int fKind= UNSPECIFIED;
-
- /**
- * The detail of the event - one of the detail constants defined by
- * this class.
- */
- private int fDetail= UNSPECIFIED;
-
- /**
- * Client defined data field.
- *
- * @since 2.1.2
- */
- private Object fData = null;
-
- /**
- * Constructs a new debug event of the given kind with a detail code of
- * <code>UNSPECIFIED</code>.
- *
- * @param eventSource the object associated with the event
- * @param kind the kind of debug event (one of the
- * kind constants defined by this class)
- */
- public DebugEvent(Object eventSource, int kind) {
- this(eventSource, kind, UNSPECIFIED);
- }
-
- /**
- * Constructs a new debug event of the given kind with the given detail.
- *
- * @param eventSource the object associated with the event
- * @param kind the kind of debug event (one of the
- * kind constants defined by this class)
- * @param detail extra information about the event (one of the
- * detail constants defined by this class or a client defined detail if this is a model specific event)
- */
- public DebugEvent(Object eventSource, int kind, int detail) {
- super(eventSource);
- if ((kind & (RESUME | SUSPEND | CREATE | TERMINATE | CHANGE | MODEL_SPECIFIC)) == 0)
- throw new IllegalArgumentException(DebugCoreMessages.DebugEvent_illegal_kind);
- if (kind != MODEL_SPECIFIC && detail != UNSPECIFIED && (detail & (STEP_END | STEP_INTO | STEP_OVER | STEP_RETURN | BREAKPOINT | CLIENT_REQUEST |EVALUATION | EVALUATION_IMPLICIT | STATE | CONTENT)) == 0)
- throw new IllegalArgumentException(DebugCoreMessages.DebugEvent_illegal_detail);
- fKind= kind;
- fDetail= detail;
- }
-
- /**
- * Returns a constant describing extra detail about the event - either one
- * of the detail constants defined by this class, possibly
- * <code>UNSPECIFIED</code>, or a client defined detail if this is a model specific event.
- *
- * @return the detail code
- */
- public int getDetail() {
- return fDetail;
- }
-
- /**
- * Returns this event's kind - one of the kind constants defined by this class.
- *
- * @return the kind code
- */
- public int getKind() {
- return fKind;
- }
-
- /**
- * Returns whether this event's detail indicates the
- * beginning of a step event. This event's detail is one
- * of <code>STEP_INTO</code>, <code>STEP_OVER</code>, or
- * <code>STEP_RETURN</code>.
- *
- * @return whether this event's detail indicates the beginning
- * of a step event.
- * @since 2.0
- */
- public boolean isStepStart() {
- return (getDetail() & (STEP_INTO | STEP_OVER | STEP_RETURN)) > 0;
- }
-
- /**
- * Returns whether this event's detail indicates an
- * evaluation. This event's detail is one
- * of <code>EVALUATION</code>, or <code>EVALUATION_IMPLICIT</code>.
- *
- * @return whether this event's detail indicates an evaluation.
- * @since 2.0
- */
- public boolean isEvaluation() {
- return (getDetail() & (EVALUATION | EVALUATION_IMPLICIT)) > 0;
- }
-
- /**
- * Sets this event's application defined data.
- *
- * @param data application defined data
- * @since 2.1.2
- */
- public void setData(Object data) {
- fData = data;
- }
-
- /**
- * Returns this event's application defined data, or <code>null</code> if none
- *
- * @return application defined data, or <code>null</code> if none
- * @since 2.1.2
- */
- public Object getData() {
- return fData;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString() {
- StringBuffer buf = new StringBuffer("DebugEvent["); //$NON-NLS-1$
- if (getSource() != null) {
- buf.append(getSource().toString());
- } else {
- buf.append("null"); //$NON-NLS-1$
- }
- buf.append(", "); //$NON-NLS-1$
- switch (getKind()) {
- case CREATE:
- buf.append("CREATE"); //$NON-NLS-1$
- break;
- case TERMINATE:
- buf.append("TERMINATE"); //$NON-NLS-1$
- break;
- case RESUME:
- buf.append("RESUME"); //$NON-NLS-1$
- break;
- case SUSPEND:
- buf.append("SUSPEND"); //$NON-NLS-1$
- break;
- case CHANGE:
- buf.append("CHANGE"); //$NON-NLS-1$
- break;
- case UNSPECIFIED:
- buf.append("UNSPECIFIED"); //$NON-NLS-1$
- break;
- case MODEL_SPECIFIC:
- buf.append("MODEL_SPECIFIC"); //$NON-NLS-1$
- break;
- }
- buf.append(", "); //$NON-NLS-1$
- switch (getDetail()) {
- case BREAKPOINT:
- buf.append("BREAKPOINT"); //$NON-NLS-1$
- break;
- case CLIENT_REQUEST:
- buf.append("CLIENT_REQUEST"); //$NON-NLS-1$
- break;
- case STEP_END:
- buf.append("STEP_END"); //$NON-NLS-1$
- break;
- case STEP_INTO:
- buf.append("STEP_INTO"); //$NON-NLS-1$
- break;
- case STEP_OVER:
- buf.append("STEP_OVER"); //$NON-NLS-1$
- break;
- case STEP_RETURN:
- buf.append("STEP_RETURN"); //$NON-NLS-1$
- break;
- case EVALUATION:
- buf.append("EVALUATION"); //$NON-NLS-1$
- break;
- case EVALUATION_IMPLICIT:
- buf.append("EVALUATION_IMPLICIT"); //$NON-NLS-1$
- break;
- case STATE:
- buf.append("STATE"); //$NON-NLS-1$
- break;
- case CONTENT:
- buf.append("CONTENT"); //$NON-NLS-1$
- break;
- case UNSPECIFIED:
- buf.append("UNSPECIFIED"); //$NON-NLS-1$
- break;
- default:
- // model specific
- buf.append(getDetail());
- break;
- }
- buf.append("]"); //$NON-NLS-1$
- return buf.toString();
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugException.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugException.java
deleted file mode 100644
index b1a7c3dec..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugException.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-
-
-/**
- * A checked exception representing a failure.
- * <p>
- * Defines status codes relevant to the debug plug-in. When a
- * debug exception is thrown, it contains a status object describing
- * the cause of the exception. The status objects originating from the
- * debug plug-in use the codes defined in this class.
- * </p>
- * @see IStatus
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class DebugException extends CoreException {
-
- /**
- * All objects that can be serialized should have a stable serialVersionUID
- */
- private static final long serialVersionUID = 1L;
-
- /**
- * Indicates a request made of a debug element has failed
- * on the target side.
- */
- public static final int TARGET_REQUEST_FAILED = 5010;
-
- /**
- * Indicates a request is not supported by the capabilities of a debug element.
- * For example, a request was made to terminate an element that does not
- * support termination.
- */
- public static final int NOT_SUPPORTED = 5011;
-
- /**
- * Indicates that a request made of manager has failed, or a request made of a
- * debug element has failed on the client side (that is, before the request was
- * sent to the debug target).
- */
- public static final int REQUEST_FAILED = 5012;
-
- /**
- * Indicates an internal error. This is an unexpected state.
- */
- public static final int INTERNAL_ERROR = 5013;
-
- /**
- * Indicates an improperly configured breakpoint. Breakpoints have a minimal
- * set of required attributes as defined by the breakpoint manager.
- *
- * @see IBreakpointManager
- */
- public static final int CONFIGURATION_INVALID = 5014;
-
- /**
- * Indicates a launch configuration could not be restored because its
- * launch configuration type definition is missing.
- *
- * @since 3.0
- */
- public static final int MISSING_LAUNCH_CONFIGURATION_TYPE = 5020;
-
- /**
- * Constructs a new debug exception with the given status object.
- *
- * @param status the status object describing this exception
- * @see IStatus
- */
- public DebugException(IStatus status) {
- super(status);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java
deleted file mode 100644
index 9e37f3c88..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/DebugPlugin.java
+++ /dev/null
@@ -1,1398 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.eclipse.core.resources.ISaveContext;
-import org.eclipse.core.resources.ISaveParticipant;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IAdapterManager;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IDisconnect;
-import org.eclipse.debug.core.model.IDropToFrame;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStep;
-import org.eclipse.debug.core.model.IStepFilters;
-import org.eclipse.debug.core.model.ISuspendResume;
-import org.eclipse.debug.core.model.ITerminate;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.RuntimeProcess;
-import org.eclipse.debug.internal.core.BreakpointManager;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-import org.eclipse.debug.internal.core.DebugOptions;
-import org.eclipse.debug.internal.core.ExpressionManager;
-import org.eclipse.debug.internal.core.IConfigurationElementConstants;
-import org.eclipse.debug.internal.core.LaunchManager;
-import org.eclipse.debug.internal.core.LogicalStructureManager;
-import org.eclipse.debug.internal.core.MemoryBlockManager;
-import org.eclipse.debug.internal.core.StepFilterManager;
-import org.eclipse.debug.internal.core.commands.CommandAdapterFactory;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupUtils;
-import org.eclipse.osgi.service.environment.Constants;
-import org.osgi.framework.BundleContext;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * There is one instance of the debug plug-in available from
- * <code>DebugPlugin.getDefault()</code>. The debug plug-in provides:
- * <ul>
- * <li>access to the breakpoint manager</li>
- * <li>access to the launch manager</li>
- * <li>access to the expression manager</li>
- * <li>access to the registered launcher extensions</li>
- * <li>access to the memory block manager</li>
- * <li>debug event notification</li>
- * <li>status handlers</li>
- * </ul>
- * @noinstantiate This class is not intended to be instantiated by clients.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class DebugPlugin extends Plugin {
-
- /**
- * Unique identifier constant (value <code>"org.eclipse.debug.core"</code>)
- * for the Debug Core plug-in.
- */
- private static final String PI_DEBUG_CORE = "org.eclipse.debug.core"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"launchConfigurationTypes"</code>)
- * for the launch configuration types extension point.
- *
- * @since 2.0
- */
- public static final String EXTENSION_POINT_LAUNCH_CONFIGURATION_TYPES= "launchConfigurationTypes"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"launchConfigurationComparators"</code>)
- * for the launch configuration comparators extension point.
- *
- * @since 2.0
- */
- public static final String EXTENSION_POINT_LAUNCH_CONFIGURATION_COMPARATORS= "launchConfigurationComparators"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"breakpoints"</code>) for the
- * breakpoints extension point.
- *
- * @since 2.0
- */
- public static final String EXTENSION_POINT_BREAKPOINTS= "breakpoints"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"statusHandlers"</code>) for the
- * status handlers extension point.
- *
- * @since 2.0
- */
- public static final String EXTENSION_POINT_STATUS_HANDLERS= "statusHandlers"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"sourceLocators"</code>) for the
- * source locators extension point.
- *
- * @since 2.0
- */
- public static final String EXTENSION_POINT_SOURCE_LOCATORS= "sourceLocators"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"launchModes"</code>) for the
- * source modes extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_LAUNCH_MODES= "launchModes"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"launchDelegates"</code>) for the
- * launch delegates extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_LAUNCH_DELEGATES= "launchDelegates"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"processFactories"</code>) for the
- * process factories extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_PROCESS_FACTORIES = "processFactories"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"logicalStructureTypes"</code>) for the
- * logical structure types extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_LOGICAL_STRUCTURE_TYPES = "logicalStructureTypes"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"logicalStructureProviders"</code>) for the
- * logical structure types extension point.
- *
- * @since 3.1
- */
- public static final String EXTENSION_POINT_LOGICAL_STRUCTURE_PROVIDERS = "logicalStructureProviders"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"sourceContainerTypes"</code>) for the
- * source container types extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_SOURCE_CONTAINER_TYPES = "sourceContainerTypes"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant (value <code>"sourcePathComputers"</code>) for the
- * source path computers extension point.
- *
- * @since 3.0
- */
- public static final String EXTENSION_POINT_SOURCE_PATH_COMPUTERS = "sourcePathComputers"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant for the launch options extension point
- *
- * @since 3.3
- */
- public static final String EXTENSION_POINT_LAUNCH_OPTIONS = "launchOptions"; //$NON-NLS-1$
-
- /**
- * Simple identifier constant for the breakpoint import participant extension point
- *
- * @since 3.5
- */
- public static final String EXTENSION_POINT_BREAKPOINT_IMPORT_PARTICIPANTS = "breakpointImportParticipants"; //$NON-NLS-1$
-
- /**
- * Status code indicating an unexpected error.
- *
- * @since 3.4
- */
- public static final int ERROR = 125;
-
- /**
- * Status code indicating an unexpected internal error. Internal errors
- * should never be displayed to the user in dialogs or status text.
- * Internal error messages are not translated.
- */
- public static final int INTERNAL_ERROR = 120;
-
- /**
- * Status code indicating that the Eclipse runtime does not support
- * launching a program with a working directory. This feature is only
- * available if Eclipse is run on a 1.3 runtime or higher.
- * <p>
- * A status handler may be registered for this error condition,
- * and should return a <code>Boolean</code> indicating whether the program
- * should be re-launched with the default working directory.
- * </p>
- */
- public static final int ERR_WORKING_DIRECTORY_NOT_SUPPORTED = 115;
-
- /**
- * The launch configuration attribute that designates the process factory ID
- * for the process factory to be used when creating a new process as a result of launching
- * the launch configuration.
- * @since 3.0
- */
- public static final String ATTR_PROCESS_FACTORY_ID = "process_factory_id"; //$NON-NLS-1$
-
- /**
- * The launch attribute that designates whether or not it's associated
- * launch should capture output. Value is a string representing a boolean -
- * <code>true</code> or <code>false</code>. When unspecified, the default
- * value is considered <code>true</code>.
- *
- * @since 3.1
- */
- public static final String ATTR_CAPTURE_OUTPUT = PI_DEBUG_CORE + ".capture_output"; //$NON-NLS-1$
-
-
- /**
- * This launch attribute designates the encoding to be used by the console
- * associated with the launch.
- * <p>
- * For release 3.3, the system encoding is used when unspecified. Since 3.4,
- * the inherited encoding is used when unspecified. See {@link ILaunchManager} for a
- * description in <code>getEncoding(ILaunchConfiguration)</code>.
- * </p>
- * <p>
- * Value of this constant is the same as the value of the old
- * <code>IDebugUIConstants.ATTR_CONSOLE_ENCODING</code> constant for backward
- * compatibility.
- * </p>
- * @since 3.3
- */
- public static final String ATTR_CONSOLE_ENCODING = "org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING"; //$NON-NLS-1$
-
- /**
- * The singleton debug plug-in instance.
- */
- private static DebugPlugin fgDebugPlugin= null;
-
- /**
- * The singleton breakpoint manager.
- */
- private BreakpointManager fBreakpointManager;
-
- /**
- * The singleton expression manager.
- */
- private ExpressionManager fExpressionManager;
-
- /**
- * The singleton launch manager.
- */
- private LaunchManager fLaunchManager;
-
- /**
- * The singleton memory block manager.
- * @since 3.1
- */
- private MemoryBlockManager fMemoryBlockManager;
-
- /**
- * The collection of debug event listeners.
- */
- private ListenerList fEventListeners = new ListenerList();
-
- /**
- * Event filters, or <code>null</code> if none.
- */
- private ListenerList fEventFilters = new ListenerList();
-
- /**
- * Whether this plug-in is in the process of shutting
- * down.
- */
- private boolean fShuttingDown= false;
-
- /**
- * Table of status handlers. Keys are {plug-in identifier, status code}
- * pairs, and values are associated <code>IConfigurationElement</code>s.
- */
- private HashMap fStatusHandlers = null;
-
- /**
- * Map of process factories. Keys are process factory IDs
- * and values are associated <code>IConfigurationElement</code>s.
- * @since 3.0
- */
- private HashMap fProcessFactories = null;
-
- /**
- * Mode constants for the event notifier
- */
- private static final int NOTIFY_FILTERS = 0;
- private static final int NOTIFY_EVENTS = 1;
-
-
- /**
- * Queue of debug events to fire to listeners and asynchronous runnables to execute
- * in the order received.
- *
- * @since 3.1
- */
- private List fEventQueue = new ArrayList();
-
- /**
- * Job to fire events to listeners.
- * @since 3.1
- */
- private EventDispatchJob fEventDispatchJob = new EventDispatchJob();
-
- /**
- * Event dispatch job. Processes event queue of debug events and runnables.
- *
- * @since 3.1
- */
- class EventDispatchJob extends Job {
-
- EventNotifier fNotifier = new EventNotifier();
- AsynchRunner fRunner = new AsynchRunner();
-
- /**
- * Creates a new event dispatch job.
- */
- public EventDispatchJob() {
- super(DebugCoreMessages.DebugPlugin_1);
- setPriority(Job.INTERACTIVE);
- setSystem(true);
- }
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected IStatus run(IProgressMonitor monitor) {
-
- while (!fEventQueue.isEmpty()) {
- Object next = null;
- synchronized (fEventQueue) {
- if (!fEventQueue.isEmpty()) {
- next = fEventQueue.remove(0);
- }
- }
- if (next instanceof Runnable) {
- fRunner.async((Runnable) next);
- } else if (next != null) {
- fNotifier.dispatch((DebugEvent[]) next);
- }
- }
- return Status.OK_STATUS;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
- */
- public boolean shouldRun() {
- return shouldSchedule();
- }
- /* (non-Javadoc)
- * @see org.eclipse.core.internal.jobs.InternalJob#shouldSchedule()
- */
- public boolean shouldSchedule() {
- return !(isShuttingDown() || fEventListeners.isEmpty());
- }
-
- }
-
- /**
- * Returns the singleton instance of the debug plug-in.
- *
- * @return the debug plug-in
- */
- public static DebugPlugin getDefault() {
- return fgDebugPlugin;
- }
-
- /**
- * Sets the singleton instance of the debug plug-in.
- *
- * @param plugin the debug plug-in, or <code>null</code>
- * when shutting down
- */
- private static void setDefault(DebugPlugin plugin) {
- fgDebugPlugin = plugin;
- }
-
- /**
- * Convenience method which returns the unique identifier of this plug-in.
- *
- * @return debug plug-in identifier
- */
- public static String getUniqueIdentifier() {
- return PI_DEBUG_CORE;
- }
-
- /**
- * Constructs the debug plug-in.
- * <p>
- * An instance of this plug-in runtime class is automatically created
- * when the facilities provided by this plug-in are required.
- * <b>Clients must never explicitly instantiate a plug-in runtime class.</b>
- * </p>
- */
- public DebugPlugin() {
- super();
- setDefault(this);
- }
-
- /**
- * Adds the given listener to the collection of registered debug
- * event listeners. Has no effect if an identical listener is already
- * registered.
- *
- * @param listener the listener to add
- * @since 2.0
- */
- public void addDebugEventListener(IDebugEventSetListener listener) {
- fEventListeners.add(listener);
- }
-
- /**
- * Notifies all registered debug event set listeners of the given
- * debug events. Events which are filtered by a registered debug event
- * filter are not fired.
- *
- * @param events array of debug events to fire
- * @see IDebugEventFilter
- * @see IDebugEventSetListener
- * @since 2.0
- */
- public void fireDebugEventSet(DebugEvent[] events) {
- if (isShuttingDown() || events == null || fEventListeners.isEmpty())
- return;
- synchronized (fEventQueue) {
- fEventQueue.add(events);
- }
- fEventDispatchJob.schedule();
- }
-
- /**
- * Asynchronously executes the given runnable in a separate
- * thread, after debug event dispatch has completed. If debug
- * events are not currently being dispatched, the runnable is
- * scheduled to run in a separate thread immediately.
- *
- * @param r runnable to execute asynchronously
- * @since 2.1
- */
- public void asyncExec(Runnable r) {
- synchronized (fEventQueue) {
- fEventQueue.add(r);
- }
- fEventDispatchJob.schedule();
- }
-
- /**
- * Returns the breakpoint manager.
- *
- * @return the breakpoint manager
- * @see IBreakpointManager
- */
- public synchronized IBreakpointManager getBreakpointManager() {
- if (fBreakpointManager == null) {
- fBreakpointManager = new BreakpointManager();
- }
- return fBreakpointManager;
- }
-
- /**
- * Returns the launch manager.
- *
- * @return the launch manager
- * @see ILaunchManager
- */
- public synchronized ILaunchManager getLaunchManager() {
- if (fLaunchManager == null) {
- fLaunchManager = new LaunchManager();
- }
- return fLaunchManager;
- }
-
- /**
- * Returns the memory block manager.
- * @return the memory block manager.
- * @see IMemoryBlockManager
- * @since 3.1
- */
- public synchronized IMemoryBlockManager getMemoryBlockManager(){
- if (fMemoryBlockManager == null) {
- fMemoryBlockManager = new MemoryBlockManager();
- }
- return fMemoryBlockManager;
- }
-
- /**
- * Returns the status handler registered for the given
- * status, or <code>null</code> if none.
- *
- * @param status status for which a status handler has been requested
- * @return the status handler registered for the given
- * status, or <code>null</code> if none
- * @since 2.0
- */
- public IStatusHandler getStatusHandler(IStatus status) {
- StatusHandlerKey key = new StatusHandlerKey(status.getPlugin(), status.getCode());
- if (fStatusHandlers == null) {
- initializeStatusHandlers();
- }
- IConfigurationElement config = (IConfigurationElement)fStatusHandlers.get(key);
- if (config != null) {
- try {
- Object handler = config.createExecutableExtension(IConfigurationElementConstants.CLASS);
- if (handler instanceof IStatusHandler) {
- return (IStatusHandler)handler;
- }
- invalidStatusHandler(null, MessageFormat.format("Registered status handler {0} does not implement required interface IStatusHandler.", new String[] {config.getDeclaringExtension().getUniqueIdentifier()})); //$NON-NLS-1$
- } catch (CoreException e) {
- log(e);
- }
- }
- return null;
- }
-
- /**
- * Returns the expression manager.
- *
- * @return the expression manager
- * @see IExpressionManager
- * @since 2.0
- */
- public synchronized IExpressionManager getExpressionManager() {
- if (fExpressionManager == null) {
- fExpressionManager = new ExpressionManager();
- }
- return fExpressionManager;
- }
-
- /**
- * Removes the given listener from the collection of registered debug
- * event listeners. Has no effect if an identical listener is not already
- * registered.
- *
- * @param listener the listener to remove
- * @since 2.0
- */
- public void removeDebugEventListener(IDebugEventSetListener listener) {
- fEventListeners.remove(listener);
- }
-
- /* (non-Javadoc)
- * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- try {
- setShuttingDown(true);
-
- if (fLaunchManager != null) {
- fLaunchManager.shutdown();
- }
- if (fBreakpointManager != null) {
- fBreakpointManager.shutdown();
- }
- if (fMemoryBlockManager != null) {
- fMemoryBlockManager.shutdown();
- }
-
- fEventListeners.clear();
- fEventFilters.clear();
-
- SourceLookupUtils.shutdown();
- setDefault(null);
- ResourcesPlugin.getWorkspace().removeSaveParticipant(this);
- savePluginPreferences();
- } finally {
- super.stop(context);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- DebugOptions.initDebugOptions();
- ResourcesPlugin.getWorkspace().addSaveParticipant(this,
- new ISaveParticipant() {
- public void saving(ISaveContext saveContext) throws CoreException {
- savePluginPreferences();
- }
- public void rollback(ISaveContext saveContext) {}
- public void prepareToSave(ISaveContext saveContext) throws CoreException {}
- public void doneSaving(ISaveContext saveContext) {}
- });
- //command adapters
- IAdapterManager manager= Platform.getAdapterManager();
- CommandAdapterFactory actionFactory = new CommandAdapterFactory();
- manager.registerAdapters(actionFactory, IDisconnect.class);
- manager.registerAdapters(actionFactory, IDropToFrame.class);
- manager.registerAdapters(actionFactory, IStep.class);
- manager.registerAdapters(actionFactory, IStepFilters.class);
- manager.registerAdapters(actionFactory, ISuspendResume.class);
- manager.registerAdapters(actionFactory, ITerminate.class);
- manager.registerAdapters(actionFactory, ILaunch.class);
- manager.registerAdapters(actionFactory, IProcess.class);
- manager.registerAdapters(actionFactory, IDebugElement.class);
- }
-
- /**
- * Creates and returns a new process representing the given
- * <code>java.lang.Process</code>. A streams proxy is created
- * for the I/O streams in the system process. The process
- * is added to the given launch.
- * <p>
- * If the launch configuration associated with the given launch
- * specifies a process factory, it will be used to instantiate
- * the new process.
- * </p>
- * @param launch the launch the process is contained in
- * @param process the system process to wrap
- * @param label the label assigned to the process
- * @return the process
- * @see IProcess
- * @see IProcessFactory
- */
- public static IProcess newProcess(ILaunch launch, Process process, String label) {
- return newProcess(launch, process, label, null);
- }
-
- /**
- * Creates and returns a new process representing the given
- * <code>java.lang.Process</code>. A streams proxy is created
- * for the I/O streams in the system process. The process
- * is added to the given launch, and the process is initialized
- * with the given attribute map.
- * <p>
- * If the launch configuration associated with the given launch
- * specifies a process factory, it will be used to instantiate
- * the new process.
- * </p>
- * @param launch the launch the process is contained in
- * @param process the system process to wrap
- * @param label the label assigned to the process
- * @param attributes initial values for the attribute map
- * @return the process <code>null</code> can be returned if errors occur dealing with the process factory
- * designated to create the process.
- * @see IProcess
- * @see IProcessFactory
- * @since 2.1
- */
- public static IProcess newProcess(ILaunch launch, Process process, String label, Map attributes) {
- ILaunchConfiguration config= launch.getLaunchConfiguration();
- String processFactoryID= null;
- if (config != null) {
- try {
- processFactoryID= config.getAttribute(ATTR_PROCESS_FACTORY_ID, (String)null);
- } catch (CoreException e) {
- }
- }
- if (processFactoryID != null) {
- DebugPlugin plugin= DebugPlugin.getDefault();
- if (plugin.fProcessFactories == null) {
- plugin.initializeProcessFactories();
- }
- IConfigurationElement element= (IConfigurationElement) plugin.fProcessFactories.get(processFactoryID);
- if (element == null) {
- return null;
- }
- IProcessFactory processFactory= null;
- try {
- processFactory = (IProcessFactory)element.createExecutableExtension(IConfigurationElementConstants.CLASS);
- } catch (CoreException exception) {
- log(exception);
- return null;
- }
- return processFactory.newProcess(launch, process, label, attributes);
- }
- return new RuntimeProcess(launch, process, label, attributes);
- }
-
- /**
- * Returns any logical structure types that have been contributed for the given
- * value.
- *
- * @param value the value for which logical structure types have been requested
- * @return logical structure types that have been contributed for the given
- * value, possibly an empty collection
- *
- * @since 3.0
- */
- public static ILogicalStructureType[] getLogicalStructureTypes(IValue value) {
- return LogicalStructureManager.getDefault().getLogicalStructureTypes(value);
- }
-
- /**
- * Returns the default logical structure type among the given combination of
- * logical structure types, or <code>null</code> if none. When the given combination
- * of logical structure type is applicable for a value, the default logical structure
- * type is used to display a value.
- *
- * @param types a combination of structures applicable to a value
- * @return the default structure that should be used to display the value
- * or <code>null</code> if none
- *
- * @since 3.1
- */
- public static ILogicalStructureType getDefaultStructureType(ILogicalStructureType[] types) {
- return LogicalStructureManager.getDefault().getSelectedStructureType(types);
- }
-
- /**
- * Sets the default logical structure type among the given combination of logical structure
- * types. The logical structure types provided should all be applicable to a single
- * value. Specifying <code>null</code> indicates there is no default logical structure
- * for the given combination of types.
- *
- * @param types a combination of logical structure types applicable to a value
- * @param def the default logical structure among the given combination of types
- * or <code>null</code> if none
- *
- * @since 3.1
- */
- public static void setDefaultStructureType(ILogicalStructureType[] types, ILogicalStructureType def) {
- LogicalStructureManager.getDefault().setEnabledType(types, def);
- }
-
- /**
- * Convenience method that performs a runtime exec on the given command line
- * in the context of the specified working directory, and returns the
- * resulting process. If the current runtime does not support the
- * specification of a working directory, the status handler for error code
- * <code>ERR_WORKING_DIRECTORY_NOT_SUPPORTED</code> is queried to see if the
- * exec should be re-executed without specifying a working directory.
- *
- * @param cmdLine the command line
- * @param workingDirectory the working directory, or <code>null</code>
- * @return the resulting process or <code>null</code> if the exec is
- * canceled
- * @exception CoreException if the exec fails
- * @see Runtime
- *
- * @since 2.1
- */
- public static Process exec(String[] cmdLine, File workingDirectory) throws CoreException {
- return exec(cmdLine, workingDirectory, null);
- }
-
- /**
- * Convenience method that performs a runtime exec on the given command line
- * in the context of the specified working directory, and returns the
- * resulting process. If the current runtime does not support the
- * specification of a working directory, the status handler for error code
- * <code>ERR_WORKING_DIRECTORY_NOT_SUPPORTED</code> is queried to see if the
- * exec should be re-executed without specifying a working directory.
- *
- * @param cmdLine the command line
- * @param workingDirectory the working directory, or <code>null</code>
- * @param envp the environment variables set in the process, or <code>null</code>
- * @return the resulting process or <code>null</code> if the exec is
- * canceled
- * @exception CoreException if the exec fails
- * @see Runtime
- *
- * @since 3.0
- */
- public static Process exec(String[] cmdLine, File workingDirectory, String[] envp) throws CoreException {
- Process p= null;
- try {
- if (workingDirectory == null) {
- p= Runtime.getRuntime().exec(cmdLine, envp);
- } else {
- p= Runtime.getRuntime().exec(cmdLine, envp, workingDirectory);
- }
- } catch (IOException e) {
- Status status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_0, e);
- throw new CoreException(status);
- } catch (NoSuchMethodError e) {
- //attempting launches on 1.2.* - no ability to set working directory
- IStatus status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERR_WORKING_DIRECTORY_NOT_SUPPORTED, DebugCoreMessages.DebugPlugin_Eclipse_runtime_does_not_support_working_directory_2, e);
- IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(status);
-
- if (handler != null) {
- Object result = handler.handleStatus(status, null);
- if (result instanceof Boolean && ((Boolean)result).booleanValue()) {
- p= exec(cmdLine, null);
- }
- }
- }
- return p;
- }
-
- /**
- * Returns whether this plug-in is in the process of
- * being shutdown.
- *
- * @return whether this plug-in is in the process of
- * being shutdown
- */
- private boolean isShuttingDown() {
- return fShuttingDown;
- }
-
- /**
- * Sets whether this plug-in is in the process of
- * being shutdown.
- *
- * @param value whether this plug-in is in the process of
- * being shutdown
- */
- private void setShuttingDown(boolean value) {
- fShuttingDown = value;
- }
-
- /**
- * Returns the collection of debug event listeners registered
- * with this plug-in.
- *
- * @return list of registered debug event listeners, instances
- * of <code>IDebugEventSetListeners</code>
- */
- private Object[] getEventListeners() {
- return fEventListeners.getListeners();
- }
-
- /**
- * Adds the given debug event filter to the registered
- * event filters. Has no effect if an identical filter
- * is already registered.
- *
- * @param filter debug event filter
- * @since 2.0
- */
- public void addDebugEventFilter(IDebugEventFilter filter) {
- fEventFilters.add(filter);
- }
-
- /**
- * Removes the given debug event filter from the registered
- * event filters. Has no effect if an identical filter
- * is not already registered.
- *
- * @param filter debug event filter
- * @since 2.0
- */
- public void removeDebugEventFilter(IDebugEventFilter filter) {
- fEventFilters.remove(filter);
- }
-
- /**
- * Logs the given message if in debug mode.
- *
- * @param message the message to log
- * @since 2.0
- */
- public static void logDebugMessage(String message) {
- if (getDefault().isDebugging()) {
- // this message is intentionally not externalized, as an exception may
- // be due to the resource bundle itself
- log(new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, MessageFormat.format(DebugCoreMessages.DebugPlugin_2, new String[] {message}), null));
- }
- }
-
- /**
- * Logs the given message with this plug-in's log and the given
- * throwable or <code>null</code> if none.
- * @param message the message to log
- * @param throwable the exception that occurred or <code>null</code> if none
- */
- public static void logMessage(String message, Throwable throwable) {
- log(new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, message, throwable));
- }
-
- /**
- * Logs the specified status with this plug-in's log.
- *
- * @param status status to log
- * @since 2.0
- */
- public static void log(IStatus status) {
- getDefault().getLog().log(status);
- }
-
- /**
- * Logs the specified throwable with this plug-in's log.
- *
- * @param t throwable to log
- * @since 2.0
- */
- public static void log(Throwable t) {
- IStatus status= new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_3, t);
- log(status);
- }
-
- /**
- * Register status handlers.
- *
- */
- private void initializeStatusHandlers() {
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.PI_DEBUG_CORE, EXTENSION_POINT_STATUS_HANDLERS);
- IConfigurationElement[] infos= extensionPoint.getConfigurationElements();
- fStatusHandlers = new HashMap(infos.length);
- for (int i= 0; i < infos.length; i++) {
- IConfigurationElement configurationElement = infos[i];
- String id = configurationElement.getAttribute("plugin"); //$NON-NLS-1$
- String code = configurationElement.getAttribute("code"); //$NON-NLS-1$
-
- if (id != null && code != null) {
- try {
- StatusHandlerKey key = new StatusHandlerKey(id, Integer.parseInt(code));
- fStatusHandlers.put(key, configurationElement);
- } catch (NumberFormatException e) {
- // invalid status handler
- invalidStatusHandler(e, configurationElement.getAttribute("id")); //$NON-NLS-1$
- }
- } else {
- // invalid status handler
- invalidStatusHandler(null, configurationElement.getAttribute("id")); //$NON-NLS-1$
- }
- }
- }
-
- /**
- * Register process factories.
- *
- */
- private void initializeProcessFactories() {
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.PI_DEBUG_CORE, EXTENSION_POINT_PROCESS_FACTORIES);
- IConfigurationElement[] infos= extensionPoint.getConfigurationElements();
- fProcessFactories = new HashMap(infos.length);
- for (int i= 0; i < infos.length; i++) {
- IConfigurationElement configurationElement = infos[i];
- String id = configurationElement.getAttribute("id"); //$NON-NLS-1$
- String clss = configurationElement.getAttribute("class"); //$NON-NLS-1$
- if (id != null && clss != null) {
- fProcessFactories.put(id, configurationElement);
- } else {
- // invalid process factory
- String badDefiner= infos[i].getContributor().getName();
- log(new Status(IStatus.ERROR, DebugPlugin.PI_DEBUG_CORE, ERROR, MessageFormat.format(DebugCoreMessages.DebugPlugin_4, new String[] {badDefiner, id}), null));
- }
- }
- }
-
- private void invalidStatusHandler(Exception e, String id) {
- log(new Status(IStatus.ERROR, DebugPlugin.PI_DEBUG_CORE, ERROR, MessageFormat.format(DebugCoreMessages.DebugPlugin_5, new String[] {id}), e));
- }
-
- /**
- * Key for status handler extensions - a plug-in identifier/code pair
- */
- class StatusHandlerKey {
-
- String fPluginId;
- int fCode;
-
- StatusHandlerKey(String pluginId, int code) {
- fPluginId = pluginId;
- fCode = code;
- }
-
- public int hashCode() {
- return fPluginId.hashCode() + fCode;
- }
-
- public boolean equals(Object obj) {
- if (obj instanceof StatusHandlerKey) {
- StatusHandlerKey s = (StatusHandlerKey)obj;
- return fCode == s.fCode && fPluginId.equals(s.fPluginId);
- }
- return false;
- }
- }
-
- /**
- * Executes runnables after event dispatch is complete.
- *
- * @since 3.0
- */
- class AsynchRunner implements ISafeRunnable {
-
- private Runnable fRunnable = null;
-
- void async(Runnable runnable) {
- fRunnable = runnable;
- SafeRunner.run(this);
- fRunnable = null;
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_6, exception);
- log(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- fRunnable.run();
- }
-
- }
-
- /**
- * Filters and dispatches events in a safe runnable to handle any
- * exceptions.
- */
- class EventNotifier implements ISafeRunnable {
-
- private DebugEvent[] fEvents;
- private IDebugEventSetListener fListener;
- private IDebugEventFilter fFilter;
- private int fMode;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- switch (fMode) {
- case NOTIFY_FILTERS:
- IStatus status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_7, exception);
- log(status);
- break;
- case NOTIFY_EVENTS:
- status = new Status(IStatus.ERROR, getUniqueIdentifier(), ERROR, DebugCoreMessages.DebugPlugin_8, exception);
- log(status);
- break;
- }
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fMode) {
- case NOTIFY_FILTERS:
- fEvents = fFilter.filterDebugEvents(fEvents);
- break;
- case NOTIFY_EVENTS:
- fListener.handleDebugEvents(fEvents);
- break;
- }
- }
-
- /**
- * Filter and dispatch the given events. If an exception occurs in one
- * listener, events are still fired to subsequent listeners.
- *
- * @param events debug events
- */
- void dispatch(DebugEvent[] events) {
- fEvents = events;
- Object[] filters = fEventFilters.getListeners();
- if (filters.length > 0) {
- fMode = NOTIFY_FILTERS;
- for (int i = 0; i < filters.length; i++) {
- fFilter = (IDebugEventFilter)filters[i];
- SafeRunner.run(this);
- if (fEvents == null || fEvents.length == 0) {
- return;
- }
- }
- }
-
- fMode = NOTIFY_EVENTS;
- Object[] listeners= getEventListeners();
- if (DebugOptions.DEBUG_EVENTS) {
- for (int i = 0; i < fEvents.length; i++) {
- System.out.println(fEvents[i]);
- }
- }
- for (int i= 0; i < listeners.length; i++) {
- fListener = (IDebugEventSetListener)listeners[i];
- SafeRunner.run(this);
- }
- fEvents = null;
- fFilter = null;
- fListener = null;
- }
-
- }
-
- /**
- * Creates and returns a new XML document.
- *
- * @return a new XML document
- * @throws CoreException if unable to create a new document
- * @since 3.0
- */
- public static Document newDocument()throws CoreException {
- try {
- return LaunchManager.getDocument();
- } catch (ParserConfigurationException e) {
- abort("Unable to create new XML document.", e); //$NON-NLS-1$
- }
- return null;
- }
-
- /**
- * Serializes the given XML document into a string.
- *
- * @param document XML document to serialize
- * @return a string representing the given document
- * @throws CoreException if unable to serialize the document
- * @since 3.0
- */
- public static String serializeDocument(Document document) throws CoreException {
- try {
- return LaunchManager.serializeDocument(document);
- } catch (TransformerException e) {
- abort("Unable to serialize XML document.", e); //$NON-NLS-1$
- } catch (IOException e) {
- abort("Unable to serialize XML document.",e); //$NON-NLS-1$
- }
- return null;
- }
-
- /**
- * Parses the given string representing an XML document, returning its
- * root element.
- *
- * @param document XML document as a string
- * @return the document's root element
- * @throws CoreException if unable to parse the document
- * @since 3.0
- */
- public static Element parseDocument(String document) throws CoreException {
- Element root = null;
- InputStream stream = null;
- try{
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
- stream = new ByteArrayInputStream(document.getBytes("UTF8")); //$NON-NLS-1$
- root = parser.parse(stream).getDocumentElement();
- } catch (ParserConfigurationException e) {
- abort("Unable to parse XML document.", e); //$NON-NLS-1$
- } catch (FactoryConfigurationError e) {
- abort("Unable to parse XML document.", e); //$NON-NLS-1$
- } catch (SAXException e) {
- abort("Unable to parse XML document.", e); //$NON-NLS-1$
- } catch (IOException e) {
- abort("Unable to parse XML document.", e); //$NON-NLS-1$
- } finally {
- try{
- if (stream != null) {
- stream.close();
- }
- } catch(IOException e) {
- abort("Unable to parse XML document.", e); //$NON-NLS-1$
- }
- }
- return root;
- }
-
- /**
- * Throws an exception with the given message and underlying exception.
- *
- * @param message error message
- * @param exception underlying exception, or <code>null</code>
- * @throws CoreException
- */
- private static void abort(String message, Throwable exception) throws CoreException {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, message, exception);
- throw new CoreException(status);
- }
-
- /**
- * Utility class to parse command line arguments.
- *
- * @since 3.1
- */
- private static class ArgumentParser {
- private String fArgs;
- private int fIndex= 0;
- private int ch= -1;
-
- public ArgumentParser(String args) {
- fArgs= args;
- }
-
- public String[] parseArguments() {
- List v= new ArrayList();
-
- ch= getNext();
- while (ch > 0) {
- if (Character.isWhitespace((char)ch)) {
- ch= getNext();
- } else {
- if (ch == '"') {
- StringBuffer buf = new StringBuffer();
- buf.append(parseString());
- if (buf.length() == 0 && Platform.getOS().equals(Constants.OS_WIN32)) {
- // empty string on windows platform
- buf.append("\"\""); //$NON-NLS-1$
- }
- v.add(buf.toString());
- } else {
- v.add(parseToken());
- }
- }
- }
-
- String[] result= new String[v.size()];
- v.toArray(result);
- return result;
- }
-
- private int getNext() {
- if (fIndex < fArgs.length())
- return fArgs.charAt(fIndex++);
- return -1;
- }
-
- private String parseString() {
- ch= getNext();
- if (ch == '"') {
- ch= getNext();
- return ""; //$NON-NLS-1$
- }
- StringBuffer buf= new StringBuffer();
- while (ch > 0 && ch != '"') {
- if (ch == '\\') {
- ch= getNext();
- if (ch != '"') { // Only escape double quotes
- buf.append('\\');
- } else {
- if (Platform.getOS().equals(Constants.OS_WIN32)) {
- // @see Bug 26870. Windows requires an extra escape for embedded strings
- buf.append('\\');
- }
- }
- }
- if (ch > 0) {
- buf.append((char)ch);
- ch= getNext();
- }
- }
- ch= getNext();
- return buf.toString();
- }
-
- private String parseToken() {
- StringBuffer buf= new StringBuffer();
-
- while (ch > 0 && !Character.isWhitespace((char)ch)) {
- if (ch == '\\') {
- ch= getNext();
- if (Character.isWhitespace((char)ch)) {
- // end of token, don't lose trailing backslash
- buf.append('\\');
- return buf.toString();
- }
- if (ch > 0) {
- if (ch != '"') { // Only escape double quotes
- buf.append('\\');
- } else {
- if (Platform.getOS().equals(Constants.OS_WIN32)) {
- // @see Bug 26870. Windows requires an extra escape for embedded strings
- buf.append('\\');
- }
- }
- buf.append((char)ch);
- ch= getNext();
- } else if (ch == -1) { // Don't lose a trailing backslash
- buf.append('\\');
- }
- } else if (ch == '"') {
- buf.append(parseString());
- } else {
- buf.append((char)ch);
- ch= getNext();
- }
- }
- return buf.toString();
- }
- }
-
- /**
- * Parses the given command line into separate arguments that can be passed to
- * <code>DebugPlugin.exec(String[], File)</code>. Embedded quotes and slashes
- * are escaped.
- *
- * @param args command line arguments as a single string
- * @return individual arguments
- * @since 3.1
- */
- public static String[] parseArguments(String args) {
- if (args == null)
- return new String[0];
- ArgumentParser parser= new ArgumentParser(args);
- String[] res= parser.parseArguments();
-
- return res;
- }
-
- /**
- * Sets whether step filters should be applied to step commands. This
- * setting is a global option applied to all registered debug targets.
- *
- * @param useStepFilters whether step filters should be applied to step
- * commands
- * @since 3.3
- * @see org.eclipse.debug.core.model.IStepFilters
- */
- public static void setUseStepFilters(boolean useStepFilters) {
- getStepFilterManager().setUseStepFilters(useStepFilters);
- }
-
- /**
- * Returns whether step filters are applied to step commands.
- *
- * @return whether step filters are applied to step commands
- * @since 3.3
- * @see org.eclipse.debug.core.model.IStepFilters
- * @see org.eclipse.debug.core.commands.IStepFiltersHandler
- */
- public static boolean isUseStepFilters() {
- return getStepFilterManager().isUseStepFilters();
- }
-
- /**
- * Returns the step filter manager.
- *
- * @return step filter manager
- */
- private static StepFilterManager getStepFilterManager() {
- return ((LaunchManager)getDefault().getLaunchManager()).getStepFilterManager();
- }
-
- /**
- * Returns an adapter of the specified type for the given object or <code>null</code>
- * if none. The object itself is returned if it is an instance of the specified type.
- * If the object is adaptable and does not subclass <code>PlatformObject</code>, and
- * does not provide the specified adapter directly, the platform's adapter manager
- * is consulted for an adapter.
- *
- * @param element element to retrieve adapter for
- * @param type adapter type
- * @return adapter or <code>null</code>
- * @since 3.4
- */
- public static Object getAdapter(Object element, Class type) {
- Object adapter = null;
- if (element != null) {
- if (type.isInstance(element)) {
- return element;
- } else {
- if (element instanceof IAdaptable) {
- adapter = ((IAdaptable)element).getAdapter(type);
- }
- // for objects that don't subclass PlatformObject, check the platform's adapter manager
- if (adapter == null && !(element instanceof PlatformObject)) {
- adapter = Platform.getAdapterManager().getAdapter(element, type);
- }
- }
- }
- return adapter;
- }
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointListener.java
deleted file mode 100644
index 49e4bef97..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointListener.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.debug.core.model.IBreakpoint;
-
-/**
- * A breakpoint listener is notified of breakpoint additions,
- * removals, and changes. Listeners register and unregister with the
- * breakpoint manager.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IBreakpointManager
- */
-
-public interface IBreakpointListener {
-
- /**
- * Notifies this listener that the given breakpoint has been added
- * to the breakpoint manager.
- *
- * @param breakpoint the added breakpoint
- * @since 2.0
- */
- public void breakpointAdded(IBreakpoint breakpoint);
- /**
- * Notifies this listener that the given breakpoint has been removed
- * from the breakpoint manager.
- * If the given breakpoint has been removed because it has been deleted,
- * the associated marker delta is also provided.
- *
- * @param breakpoint the removed breakpoint
- * @param delta the associated marker delta, or <code>null</code> when
- * the breakpoint is removed from the breakpoint manager without
- * being deleted
- *
- * @see org.eclipse.core.resources.IMarkerDelta
- * @since 2.0
- */
- public void breakpointRemoved(IBreakpoint breakpoint, IMarkerDelta delta);
-
- /**
- * Notifies this listener that an attribute of the given breakpoint has
- * changed, as described by the delta.
- *
- * @param breakpoint the changed breakpoint
- * @param delta the marker delta that describes the changes
- * with the marker associated with the given breakpoint, or
- * <code>null</code> when the breakpoint change does not generate
- * a marker delta
- *
- * @see org.eclipse.core.resources.IMarkerDelta
- * @since 2.0
- */
- public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManager.java
deleted file mode 100644
index d79e3545c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManager.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.IBreakpointImportParticipant;
-
-/**
- * The breakpoint manager manages the collection of breakpoints
- * in the workspace. A breakpoint suspends the execution of a
- * program being debugged. The kinds of breakpoints supported by each
- * debug architecture and the information required to create those
- * breakpoints is defined by each debug architecture.
- * Breakpoint creation is a client responsibility.
- * <p>
- * Clients interested in breakpoint change notification may
- * register with the breakpoint manager - see
- * <code>IBreakpointListener</code> and <code>IBreakpointsListener</code>
- * </p>
- * @see org.eclipse.debug.core.IBreakpointListener
- * @see org.eclipse.debug.core.IBreakpointsListener
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface IBreakpointManager {
- /**
- * Adds the given breakpoint to the collection of registered breakpoints
- * in the workspace and notifies all registered listeners. This has no effect
- * if the given breakpoint is already registered.
- *
- * @param breakpoint the breakpoint to add
- *
- * @exception CoreException if adding fails. Reasons include:<ul>
- * <li>CONFIGURATION_INVALID - the required <code>MODEL_IDENTIFIER</code> attribute
- * is not set on the breakpoint marker.</li>
- * <li>A <code>CoreException</code> occurred while verifying the <code>MODEL_IDENTIFIER</code>
- * attribute.</li>
- * </ul>
- * @since 2.0
- */
- public void addBreakpoint(IBreakpoint breakpoint) throws CoreException;
-
- /**
- * Adds the given breakpoints to the collection of registered breakpoints
- * in the workspace and notifies all registered listeners. Has no effect
- * on breakpoints that are already registered.
- *
- * @param breakpoints the breakpoints to add
- *
- * @exception CoreException if adding fails. Reasons include:<ul>
- * <li>CONFIGURATION_INVALID - the required <code>MODEL_IDENTIFIER</code> attribute
- * is not set on a breakpoint marker.</li>
- * <li>A <code>CoreException</code> occurred while verifying a <code>MODEL_IDENTIFIER</code>
- * attribute.</li>
- * </ul>
- * @since 2.1
- */
- public void addBreakpoints(IBreakpoint[] breakpoints) throws CoreException;
-
- /**
- * Returns the breakpoint associated with the given marker or
- * <code>null</code> if no such breakpoint exists
- *
- * @param marker the marker
- * @return the breakpoint associated with the marker
- * or <code>null</code> if none exists
- * @since 2.0
- */
- public IBreakpoint getBreakpoint(IMarker marker);
-
- /**
- * Returns a collection of all registered breakpoints.
- * Returns an empty array if no breakpoints are registered.
- *
- * @return an array of breakpoints
- * @since 2.0
- */
- public IBreakpoint[] getBreakpoints();
-
- /**
- * Returns whether there are any registered breakpoints.
- *
- * @return whether there are any registered breakpoints
- * @since 2.0
- */
- public boolean hasBreakpoints();
-
- /**
- * Returns a collection of all breakpoints registered for the
- * given debug model. Answers an empty array if no breakpoints are registered
- * for the given debug model.
- *
- * @param modelIdentifier identifier of a debug model plug-in
- * @return an array of breakpoints
- * @since 2.0
- */
- public IBreakpoint[] getBreakpoints(String modelIdentifier);
-
- /**
- * Returns whether the given breakpoint is currently
- * registered with this breakpoint manager.
- *
- * @param breakpoint a breakpoint
- * @return whether the breakpoint is registered
- * @since 2.0
- */
- public boolean isRegistered(IBreakpoint breakpoint);
-
- /**
- * Notifies all registered listeners that the given
- * breakpoint has changed. Has no effect if the given
- * breakpoint is not currently registered.
- *
- * This method is intended to be used when a breakpoint
- * attribute is changed that does not alter the breakpoint's
- * underlying marker, that is, when notification will not occur
- * via the marker delta mechanism.
- *
- * @param breakpoint the breakpoint that has changed.
- * @since 2.0
- */
- public void fireBreakpointChanged(IBreakpoint breakpoint);
-
- /**
- * Removes the given breakpoint from the breakpoint manager, deletes
- * the marker associated with the breakpoint if the <code>delete</code> flag
- * is <code>true</code>, and notifies all registered
- * listeners. Has no effect if the given breakpoint is not currently
- * registered.
- *
- * @param breakpoint the breakpoint to remove
- * @param delete whether to delete the marker associated with the
- * breakpoint
- * @exception CoreException if an exception occurs while deleting the
- * underlying marker.
- * @since 2.0
- */
- public void removeBreakpoint(IBreakpoint breakpoint, boolean delete) throws CoreException;
-
- /**
- * Removes the given breakpoints from the breakpoint manager, deletes
- * the markers associated with the breakpoints if the <code>delete</code> flag
- * is <code>true</code>, and notifies all registered
- * listeners. Has no effect on breakpoints not currently
- * registered.
- *
- * @param breakpoints the breakpoints to remove
- * @param delete whether to delete the markers associated with the
- * breakpoints
- * @exception CoreException if an exception occurs while deleting an
- * underlying marker.
- * @since 2.1
- */
- public void removeBreakpoints(IBreakpoint[] breakpoints, boolean delete) throws CoreException;
-
- /**
- * Adds the given listener to the collection of registered breakpoint listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- */
- public void addBreakpointListener(IBreakpointListener listener);
-
- /**
- * Removes the given listener from the collection of registered breakpoint listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to remove
- */
- public void removeBreakpointListener(IBreakpointListener listener);
-
- /**
- * Adds the given listener to the collection of registered breakpoint listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- * @since 2.1
- */
- public void addBreakpointListener(IBreakpointsListener listener);
-
- /**
- * Removes the given listener from the collection of registered breakpoint listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to remove
- * @since 2.1
- */
- public void removeBreakpointListener(IBreakpointsListener listener);
-
- /**
- * Adds the given listener to the collection of registered breakpoint manager
- * listeners. Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- * @since 3.0
- */
- public void addBreakpointManagerListener(IBreakpointManagerListener listener);
-
- /**
- * Removes the given listener from the collection of registered breakpoint manager
- * listeners. Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to remove
- * @since 3.0
- */
- public void removeBreakpointManagerListener(IBreakpointManagerListener listener);
-
- /**
- * Returns whether or not this breakpoint manager is enabled.
- * When a breakpoint manager is enabled, all breakpoints
- * should be honored. When it is disabled, breakpoints should
- * not be honored, regardless of each breakpoint's enabled state.
- *
- * @return whether or not this breakpoint manager is enabled
- * @since 3.0
- */
- public boolean isEnabled();
-
- /**
- * Sets the enabled state of this breakpoint manager. When
- * enabled, breakpoints should be honoured. When disabled, all
- * breakpoints should be ignored.
- *
- * @param enabled whether this breakpoint manager should be
- * enabled
- * @since 3.0
- */
- public void setEnabled(boolean enabled);
-
- /**
- * Returns the name (user readable String) of the given
- * breakpoint's type or <code>null</code> if none has been
- * specified.
- *
- * @param breakpoint the breakpoint
- * @return the name of the given breakpoint's type or <code>null</code>
- * @since 3.1
- */
- public String getTypeName(IBreakpoint breakpoint);
-
- /**
- * Returns an array of {@link IBreakpointImportParticipant}s for the given
- * breakpoint marker id, never <code>null</code>.
- *
- * @param markertype
- * @return an array of {@link IBreakpointImportParticipant}s for the given marker type,
- * never <code>null</code>
- * @throws CoreException if an exception occurs
- * @since 3.5
- */
- public IBreakpointImportParticipant[] getImportParticipants(String markertype) throws CoreException;
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManagerListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManagerListener.java
deleted file mode 100644
index e8839bce2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointManagerListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-/**
- * A breakpoint manager listener is notified when the breakpoint manager's
- * enablement changes. When the breakpoint manager is disabled, no breakpoints
- * should be honored. When the breakpoint manager is enabled, breakpoints should
- * be honored as usual.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IBreakpointManager
- * @since 3.0
- */
-public interface IBreakpointManagerListener {
-
- /**
- * Notifies the listener that the breakpoint manager's enablement
- * has changed.
- *
- * @param enabled whether or not the breakpoint manager is enabled
- */
- public void breakpointManagerEnablementChanged(boolean enabled);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointsListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointsListener.java
deleted file mode 100644
index 6e0aa6ef5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IBreakpointsListener.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.debug.core.model.IBreakpoint;
-
-/**
- * A breakpoints listener is notified of breakpoint additions,
- * removals, and changes. Listeners register and unregister with the
- * breakpoint manager.
- * <p>
- * This interface is analogous to <code>IBreakpointListener</code> except
- * notifications are batched for more than one breakpoint when possible.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IBreakpointManager
- * @since 2.1
- */
-
-public interface IBreakpointsListener {
-
- /**
- * Notifies this listener that the given breakpoints have been added
- * to the breakpoint manager.
- *
- * @param breakpoints the added breakpoints
- */
- public void breakpointsAdded(IBreakpoint[] breakpoints);
- /**
- * Notifies this listener that the given breakpoints have been removed
- * from the breakpoint manager.
- * If a breakpoint has been removed because it has been deleted,
- * the associated marker delta is also provided.
- *
- * @param breakpoints the removed breakpoints
- * @param deltas the associated marker deltas. Entries may be
- * <code>null</code> when a breakpoint is removed from the breakpoint
- * manager without being deleted
- *
- * @see org.eclipse.core.resources.IMarkerDelta
- */
- public void breakpointsRemoved(IBreakpoint[] breakpoints, IMarkerDelta[] deltas);
-
- /**
- * Notifies this listener that the given breakpoints have
- * changed, as described by the corresponding deltas.
- *
- * @param breakpoints the changed breakpoints
- * @param deltas the marker deltas that describe the changes
- * with the markers associated with the given breakpoints. Entries
- * may be <code>null</code> when a breakpoint change does not generate
- * a marker delta
- *
- * @see org.eclipse.core.resources.IMarkerDelta
- */
- public void breakpointsChanged(IBreakpoint[] breakpoints, IMarkerDelta[] deltas);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventFilter.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventFilter.java
deleted file mode 100644
index ece27fe66..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventFilter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-/**
- * An event filter allows clients to intercept debug events.
- * Event filters are registered with the debug plug-in.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see DebugPlugin
- * @since 2.0
- */
-public interface IDebugEventFilter {
-
- /**
- * Filters the given set of debug events, and returns the set of debug
- * events that should be fired to registered listeners - <code>null</code>
- * or an empty collection if no debug events should be fired.
- * <p>
- * When multiple event filters are registered, events are passed through
- * all filters. That is, the events returned from the first filter are
- * passed through the second filter, and so on.
- * </p>
- * @param events set of debug events to filter
- * @return the set of debug events to fire
- */
- public DebugEvent[] filterDebugEvents(DebugEvent[] events);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventSetListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventSetListener.java
deleted file mode 100644
index 683270baa..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IDebugEventSetListener.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-/**
- * A debug event set listener registers with the debug plug-in
- * to receive event notification from programs being run or debugged.
- * <p>
- * When more than one event is reported, each event has occurred at the
- * same location in a target program. For example, a breakpoint may
- * reside at the same location at which a step request completes. In
- * this case the breakpoint event and step end event are reported together
- * in the same event set.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see DebugEvent
- * @since 2.0
- */
-public interface IDebugEventSetListener {
- /**
- * Notifies this listener of the given debug events.
- * All of the events in the given event collection occurred
- * at the same location the program be run or debugged.
- *
- * @param events the debug events
- */
- public void handleDebugEvents(DebugEvent[] events);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionListener.java
deleted file mode 100644
index d82e6bfba..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-
-import org.eclipse.debug.core.model.IExpression;
-
-/**
- * An expression listener is notified of expression additions,
- * removals, and changes. Listeners register and unregister with the
- * expression manager.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IExpressionManager
- * @since 2.0
- */
-
-public interface IExpressionListener {
-
- /**
- * Notifies this listener that the given expression has been added
- * to the expression manager.
- *
- * @param expression the added expression
- */
- public void expressionAdded(IExpression expression);
- /**
- * Notifies this listener that the given expression has been removed
- * from the expression manager.
- *
- * @param expression the removed expression
- */
- public void expressionRemoved(IExpression expression);
-
- /**
- * Notifies this listener that the given expression has
- * changed.
- *
- * @param expression the changed expression
- */
- public void expressionChanged(IExpression expression);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionManager.java
deleted file mode 100644
index fc42306fa..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionManager.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.debug.core.model.IExpression;
-import org.eclipse.debug.core.model.IWatchExpression;
-import org.eclipse.debug.core.model.IWatchExpressionDelegate;
-
-/**
- * The expression manager manages the collection of registered
- * expressions in the workspace. An expression is a snippet of code
- * that can be evaluated to produce a value. Expression creation
- * and evaluation are client responsibilities.
- * <p>
- * Clients interested in expression change notification may
- * register with the expression manager - see
- * <code>IExpressionListener</code> and <code>IExpressionsListener</code>.
- * </p>
- * @see org.eclipse.debug.core.model.IExpression
- * @see org.eclipse.debug.core.IExpressionListener
- * @see org.eclipse.debug.core.IExpressionsListener
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface IExpressionManager {
- /**
- * Adds the given expression to the collection of registered expressions
- * in the workspace and notifies all registered listeners. This has no effect
- * if the given expression is already registered.
- *
- * @param expression the expression to add
- */
- public void addExpression(IExpression expression);
-
- /**
- * Adds the given expressions to the collection of registered expressions
- * in the workspace and notifies all registered listeners. Has no effect
- * on expressions already registered.
- *
- * @param expressions the expressions to add
- * @since 2.1
- */
- public void addExpressions(IExpression[] expressions);
-
- /**
- * Creates and returns a new watch expression with the
- * given text. The returned expression is <b>not</b> added to
- * this manager.
- *
- * @return new watch expression
- * @param expressionText the text for the new expression
- * @since 3.0
- */
- public IWatchExpression newWatchExpression(String expressionText);
-
- /**
- * Returns a collection of all registered expressions,
- * possibly empty.
- *
- * @return an array of expressions
- */
- public IExpression[] getExpressions();
-
- /**
- * Returns whether there are any registered expressions
- *
- * @return whether there are any registered expressions
- */
- public boolean hasExpressions();
-
- /**
- * Returns a collection of all expressions registered for the
- * given debug model,possibly empty.
- *
- * @param modelIdentifier identifier of a debug model plug-in
- * @return an array of expressions
- */
- public IExpression[] getExpressions(String modelIdentifier);
-
- /**
- * Removes the given expression from the expression manager,
- * and notifies all registered listeners. Has no effect if the
- * given expression is not currently registered.
- *
- * @param expression the expression to remove
- */
- public void removeExpression(IExpression expression);
-
- /**
- * Removes the given expressions from the collection of registered expressions
- * in the workspace and notifies all registered listeners. Has no effect
- * on expressions not already registered.
- *
- * @param expressions the expressions to remove
- * @since 2.1
- */
- public void removeExpressions(IExpression[] expressions);
-
- /**
- * Adds the given listener to the collection of registered expression listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- */
- public void addExpressionListener(IExpressionListener listener);
-
- /**
- * Removes the given listener from the collection of registered expression listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to remove
- */
- public void removeExpressionListener(IExpressionListener listener);
-
- /**
- * Adds the given listener to the collection of registered expression listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- * @since 2.1
- */
- public void addExpressionListener(IExpressionsListener listener);
-
- /**
- * Removes the given listener from the collection of registered expression listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to remove
- * @since 2.1
- */
- public void removeExpressionListener(IExpressionsListener listener);
-
- /**
- * Returns a new watch expression delegate for the given debug
- * model or <code>null</code> if no delegate is available.
- *
- * @param id the unique identifier of a debug model for which a
- * watch expression delegate has been contributed
- * @return a watch expression delegate associated with the given model
- * or <code>null</code> if none
- * @since 3.0
- * @see IWatchExpressionDelegate
- */
- public IWatchExpressionDelegate newWatchExpressionDelegate(String id);
-
- /**
- * Returns whether a watch expression delegate has been contributed for
- * the given debug model.
- *
- * @param id the unique identifier of a debug model
- * @return whether a watch expression delegate has been contributed for
- * the given debug model
- * @since 3.1
- * @see IWatchExpressionDelegate
- */
- public boolean hasWatchExpressionDelegate(String id);
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionsListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionsListener.java
deleted file mode 100644
index a73a72eb2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IExpressionsListener.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.debug.core.model.IExpression;
-
-/**
- * An expression listener is notified of expression additions,
- * removals, and changes. Listeners register and unregister with the
- * expression manager.
- * <p>
- * This interface is analogous to <code>IExpressionListener</code>, except
- * notifications are batched for more than when expression when possible.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IExpressionManager
- * @since 2.1
- */
-
-public interface IExpressionsListener {
-
- /**
- * Notifies this listener that the given expressions have been added
- * to the expression manager.
- *
- * @param expressions the added expressions
- */
- public void expressionsAdded(IExpression[] expressions);
- /**
- * Notifies this listener that the given expressions has been removed
- * from the expression manager.
- *
- * @param expressions the removed expressions
- */
- public void expressionsRemoved(IExpression[] expressions);
-
- /**
- * Notifies this listener that the given expressions have
- * changed.
- *
- * @param expressions the changed expressions
- */
- public void expressionsChanged(IExpression[] expressions);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunch.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunch.java
deleted file mode 100644
index 96b595e30..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunch.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.ISourceLocator;
-import org.eclipse.debug.core.model.ITerminate;
-
-/**
- * A launch is the result of launching a debug session
- * and/or one or more system processes.
- * <p>
- * Clients are not required to implement this interface - they should use the implementation
- * provided by the class <code>Launch</code>. However, clients may implement this interface
- * as required.
- * </p>
- * @see Launch
- * @see org.eclipse.debug.core.IProcessFactory
- */
-public interface ILaunch extends ITerminate, IAdaptable {
- /**
- * Returns the children of this launch - a collection
- * of one or more debug targets and processes, possibly empty.
- *
- * @return an array (element type:<code>IDebugTarget</code> or <code>IProcess</code>),
- * or an empty array
- */
- public Object[] getChildren();
- /**
- * Returns the primary (first) debug target associated with this launch, or <code>null</code>
- * if no debug target is associated with this launch. All debug targets
- * associated with this launch may be retrieved by
- * <code>getDebugTargets()</code>.
- *
- * @return the primary debug target associated with this launch, or <code>null</code>
- */
- public IDebugTarget getDebugTarget();
-
- /**
- * Returns the processes that were launched,
- * or an empty collection if no processes were launched.
- *
- * @return array of processes
- */
- public IProcess[] getProcesses();
-
- /**
- * Returns all the debug targets associated with this launch,
- * or an empty collection if no debug targets are associated
- * with this launch. The primary debug target is the first
- * in the collection (if any).
- *
- * @return array of debug targets
- * @since 2.0
- */
- public IDebugTarget[] getDebugTargets();
-
- /**
- * Adds the given debug target to this launch. Has no effect
- * if the given debug target is already associated with this
- * launch. Registered listeners are notified that this launch
- * has changed.
- *
- * @param target debug target to add to this launch
- * @since 2.0
- */
- public void addDebugTarget(IDebugTarget target);
-
- /**
- * Removes the given debug target from this launch. Has no effect
- * if the given debug target is not already associated with this
- * launch. Registered listeners are notified that this launch
- * has changed.
- *
- * @param target debug target to remove from this launch
- * @since 2.0
- */
- public void removeDebugTarget(IDebugTarget target);
-
- /**
- * Adds the given process to this launch. Has no effect
- * if the given process is already associated with this
- * launch. Registered listeners are notified that this launch
- * has changed.
- *
- * @param process the process to add to this launch
- * @since 2.0
- */
- public void addProcess(IProcess process);
-
- /**
- * Removes the given process from this launch. Has no effect
- * if the given process is not already associated with this
- * launch. Registered listeners are notified that this launch
- * has changed.
- *
- * @param process the process to remove from this launch
- * @since 2.0
- */
- public void removeProcess(IProcess process);
-
- /**
- * Returns the source locator to use for locating source elements for
- * the debug target associated with this launch, or <code>null</code>
- * if source lookup is not supported.
- *
- * @return the source locator
- */
- public ISourceLocator getSourceLocator();
-
- /**
- * Sets the source locator to use for locating source elements for
- * the debug target associated with this launch, or <code>null</code>
- * if source lookup is not supported.
- *
- * @param sourceLocator source locator or <code>null</code>
- * @since 2.0
- */
- public void setSourceLocator(ISourceLocator sourceLocator);
-
- /**
- * Returns the mode of this launch - one of the mode constants defined by
- * the launch manager.
- *
- * @return the launch mode
- * @see ILaunchManager
- */
- public String getLaunchMode();
-
- /**
- * Returns the configuration that was launched, or <code>null</code>
- * if no configuration was launched.
- *
- * @return the launched configuration or <code>null</code>
- * @since 2.0
- */
- public ILaunchConfiguration getLaunchConfiguration();
-
- /**
- * Sets the value of a client defined attribute.
- *
- * @param key the attribute key
- * @param value the attribute value
- * @since 2.0
- */
- public void setAttribute(String key, String value);
-
- /**
- * Returns the value of a client defined attribute.
- *
- * @param key the attribute key
- * @return value the attribute value, or <code>null</code> if undefined
- * @since 2.0
- */
- public String getAttribute(String key);
-
- /**
- * Returns whether this launch contains at least one process
- * or debug target.
- *
- * @return whether this launch contains at least one process
- * or debug target
- * @since 2.0
- */
- public boolean hasChildren();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java
deleted file mode 100644
index 5dbbf4e0d..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfiguration.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-
-/**
- * A launch configuration describes how to launch an application.
- * Each launch configuration is an instance of a type of launch
- * configuration as described by a launch configuration type
- * extension. Each launch configuration has a launch configuration
- * delegate which performs the actual launching of a
- * configuration.
- * <p>
- * A launch configuration may be shared in a repository via
- * standard VCM mechanisms, or may be stored locally, essentially
- * making the launch configuration private for a single user.
- * Thus, a launch configuration may stored as a file in the
- * workspace (shared), or as a file in the debug plug-in's state
- * location.
- * </p>
- * A launch configuration is a handle to its underlying storage.
- * Methods annotated as "handle-only" do not require a configuration
- * to exist. Methods that require an underlying configuration to exist
- * throw a <code>CoreException</code> when an underlying configuration
- * is missing.
- * </p>
- * <p>
- * A launch configuration is modified by obtaining a working copy
- * of a launch configuration, modifying the working copy, and then
- * saving the working copy.
- * </p>
- * <p>
- * Clients that define a launch configuration delegate extension implement the
- * <code>ILaunchConfigurationDelegate</code> interface.
- * </p>
- * @see ILaunchConfigurationType
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate
- * @see ILaunchConfigurationWorkingCopy
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchConfiguration extends IAdaptable {
-
- /**
- * The file extension for launch configuration files
- * (value <code>"launch"</code>).
- */
- public static final String LAUNCH_CONFIGURATION_FILE_EXTENSION = "launch"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute storing an identifier of
- * a persistable source locator extension. When this attribute is
- * specified, a new source locator will be created automatically and
- * associated with the launch for this configuration.
- *
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator
- */
- public static final String ATTR_SOURCE_LOCATOR_ID = DebugPlugin.getUniqueIdentifier() + ".source_locator_id"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute storing a memento of a
- * source locator. When this attribute is specified in
- * conjunction with a source locator id, the source locator
- * created for a launch will be initialized with this memento.
- * When not specified, but a source locator id is specified,
- * the source locator will be initialized to default values.
- *
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator
- */
- public static final String ATTR_SOURCE_LOCATOR_MEMENTO = DebugPlugin.getUniqueIdentifier() + ".source_locator_memento"; //$NON-NLS-1$
-
- /**
- * Returns whether the contents of this launch configuration are
- * equal to the contents of the given launch configuration.
- *
- * @param configuration launch configuration
- * @return whether the contents of this launch configuration are equal to the contents
- * of the specified launch configuration.
- */
- public boolean contentsEqual(ILaunchConfiguration configuration);
-
- /**
- * Returns a copy of this launch configuration, as a
- * working copy, with the specified name. The new
- * working copy does not refer back to this configuration
- * as its original launch configuration (the working copy
- * will return <code>null</code> for <code>getOriginal()</code>).
- * When the working copy is saved it will not effect this
- * launch configuration.
- *
- * @param name the name of the copy
- * @return a copy of this launch configuration
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while initializing the contents of the
- * working copy from this configuration's underlying storage.</li>
- * </ul>
- * @see ILaunchConfigurationWorkingCopy#getOriginal()
- */
- public ILaunchConfigurationWorkingCopy copy(String name) throws CoreException;
-
- /**
- * Deletes this launch configuration. This configuration's underlying
- * storage is deleted. Has no effect if this configuration
- * does not exist.
- *
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while deleting this configuration's
- * underlying storage.</li>
- * </ul>
- */
- public void delete() throws CoreException;
-
- /**
- * Returns whether this launch configuration's underlying
- * storage exists. This is a handle-only method.
- *
- * @return whether this launch configuration's underlying
- * storage exists
- */
- public boolean exists();
-
- /**
- * Returns the boolean-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have a boolean value</li>
- * </ul>
- */
- public boolean getAttribute(String attributeName, boolean defaultValue) throws CoreException;
-
- /**
- * Returns the integer-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have an integer value</li>
- * </ul>
- */
- public int getAttribute(String attributeName, int defaultValue) throws CoreException;
-
- /**
- * Returns the <code>java.util.List</code>-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have a List value</li>
- * </ul>
- */
- public List getAttribute(String attributeName, List defaultValue) throws CoreException;
-
- /**
- * Returns the <code>java.util.Set</code>-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have a List value</li>
- * </ul>
- *
- * @since 3.3
- */
- public Set getAttribute(String attributeName, Set defaultValue) throws CoreException;
-
- /**
- * Returns the <code>java.util.Map</code>-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have a Map value</li>
- * </ul>
- */
- public Map getAttribute(String attributeName, Map defaultValue) throws CoreException;
-
- /**
- * Returns the string-valued attribute with the given name.
- * Returns the given default value if the attribute is undefined.
- *
- * @param attributeName the name of the attribute
- * @param defaultValue the value to use if no value is found
- * @return the value or the default value if no value was found.
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while retrieving the attribute from
- * underlying storage.</li>
- * <li>An attribute with the given name exists, but does not
- * have a String value</li>
- * </ul>
- */
- public String getAttribute(String attributeName, String defaultValue) throws CoreException;
-
- /**
- * Returns a map containing the attributes in this launch configuration.
- * Returns an empty map if this configuration has no attributes.
- * <p>
- * Modifying the map does not affect this launch configuration's attributes.
- * A launch configuration is modified by obtaining a working copy of that
- * launch configuration, modifying the working copy, and then saving the working
- * copy.
- * </p>
- * @return a map of attribute keys and values
- * @exception CoreException unable to generate/retrieve an attribute map
- * @since 2.1
- */
- public Map getAttributes() throws CoreException;
-
- /**
- * Returns this launch configuration's type's category, or <code>null</code>
- * if unspecified. This is a handle-only method.
- *
- * @return this launch configuration's type's category, or <code>null</code>
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
- * </ul>
- * @since 2.1
- */
- public String getCategory() throws CoreException;
-
- /**
- * Returns the file this launch configuration is stored
- * in, or <code>null</code> if this configuration is stored
- * locally with the workspace. This is a handle-only method.
- *
- * @return the file this launch configuration is stored
- * in, or <code>null</code> if this configuration is stored
- * locally with the workspace
- */
- public IFile getFile();
-
- /**
- * Returns the location of this launch configuration as a
- * path in the local file system or <code>null</code> if it cannot
- * be mapped to a location in the local file system. This is a handle-only method.
- * <p>
- * Since 3.5, this method can return <code>null</code>. For example, when a
- * launch configuration is stored in the workspace as an {@link IFile} in
- * an external file system ({@link EFS}).
- * </p>
- *
- * @return the location of this launch configuration as a
- * path file system or <code>null</code> if it cannot be mapped
- * to a location in the local file system. Since 3.5, this method
- * can return <code>null</code>.
- * @deprecated Since a launch configuration does not need to be stored in the local
- * file system, this attribute should no longer be used to identify a launch configuration.
- */
- public IPath getLocation();
-
- /**
- * Returns the resources this launch configuration is associated with or <code>null</code>
- * if none. Clients contributing launch configuration types are responsible for maintaining
- * resource mappings as appropriate.
- *
- * @return the resources this launch configuration is associated with or <code>null</code>
- * @throws CoreException unable to get the mapped resource
- * @since 3.2
- */
- public IResource[] getMappedResources() throws CoreException;
-
- /**
- * Returns a memento for this launch configuration, or <code>null</code>
- * if unable to generate a memento for this configuration. A memento
- * can be used to re-create a launch configuration, via the
- * launch manager.
- *
- * @return a memento for this configuration
- * @see ILaunchManager#getLaunchConfiguration(String)
- * @exception CoreException if an exception occurs generating this
- * launch configuration's memento
- */
- public String getMemento() throws CoreException;
-
- /**
- * Returns the name of this launch configuration. This is
- * a handle-only method.
- *
- * @return the name of this launch configuration
- */
- public String getName();
-
- /**
- * Returns the launch modes that have been set on this configuration.
- * An empty set is returned if no specific launch modes have been set
- * on a launch configuration.
- * <p>
- * Setting launch modes on a configuration allows a launch to be
- * performed in mixed mode - for example, debug and profile at the
- * same time.
- * </p>
- * @return this configuration's launch modes, possibly an empty set
- * @exception CoreException if an exception occurs retrieving modes
- * @since 3.3
- */
- public Set getModes() throws CoreException;
-
- /**
- * Returns the preferred launch delegate that has been set on this
- * configuration or <code>null</code> if one is not specified.
- *
- * @param modes mode set for which a preferred delegate has been requested
- * @return this configuration's preferred launch delegate for the specified mode set, or
- * <code>null</code> if one is not specified
- * @exception CoreException if an exception occurs retrieving preferred delegate
- * @since 3.3
- */
- public ILaunchDelegate getPreferredDelegate(Set modes) throws CoreException;
-
- /**
- * Returns the type of this launch configuration. This is a
- * handle-only method.
- *
- * @return the type of this launch configuration
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>Unable to retrieve or instantiate this launch configuration's type.</li>
- * </ul>
- * @see ILaunchConfigurationType
- */
- public ILaunchConfigurationType getType() throws CoreException;
-
- /**
- * Returns a working copy of this launch configuration.
- * Since 3.3, if this method is called on a working copy, a nested working
- * copy is created (a working copy of a working copy).
- * Changes to the working copy will be applied to this
- * launch configuration when saved, or to the parent working copy.
- * The working copy will refer to this launch configuration as its original
- * launch configuration, or the working copy it was created from.
- * <p>
- * When a working copy (B) is created from a working copy (A), the newly
- * created working copy (B) is initialized with the attributes from
- * the first working copy (A). Whenever a working copy is saved, it is written
- * back to the working copy from which it was created: in this example working
- * copy B will write back to working copy A, and A will write back to the
- * original launch configuration.
- * </p>
- * @return a working copy of this launch configuration, or a nested working copy if called
- * on an instance of <code>ILaunchConfigurationWorkingCopy</code>
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>An exception occurs while initializing the contents of the
- * working copy from this configuration's underlying storage.</li>
- * </ul>
- * @see ILaunchConfigurationWorkingCopy#getOriginal()
- */
- public ILaunchConfigurationWorkingCopy getWorkingCopy() throws CoreException;
-
- /**
- * Returns whether this configuration contains an attribute with the given name.
- *
- * @param attributeName the name of the attribute
- * @return true if this configuration has the specified attribute false otherwise
- * @throws CoreException if unable to retrieve attributes
- *
- * @since 3.4
- */
- public boolean hasAttribute(String attributeName) throws CoreException;
-
- /**
- * Returns whether this launch configuration is stored
- * locally within the workspace. This is a handle-only method.
- *
- * @return whether this launch configuration is stored
- * locally with the workspace
- */
- public boolean isLocal();
-
- /**
- * Returns whether this launch configuration is a candidate for migration.
- *
- * @return whether this launch configuration is a candidate for migration
- * @throws CoreException
- * @see ILaunchConfigurationMigrationDelegate
- * @since 3.2
- */
- public boolean isMigrationCandidate() throws CoreException ;
-
- /**
- * Returns whether this launch configuration is a working
- * copy. Launch configurations which return <code>true</code>
- * to this method can be safely cast to
- * <code>org.eclipse.debug.core.ILaunchConfigurationWorkingCopy</code>.
- * This is a handle-only method.
- *
- * @return whether this launch configuration is a working
- * copy
- */
- public boolean isWorkingCopy();
-
- /**
- * Launches this configuration in the specified mode by delegating to
- * this configuration's launch configuration delegate, and returns the
- * resulting launch.
- * <p>
- * Equivalent to calling <code>launch(String, IProgressMontitor, boolean)</code>
- * with a <code>build</code> flag of <code>false</code>.
- * </p>
- * @param mode the mode in which to launch, one of the mode constants
- * defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @return the resulting launch
- * @exception CoreException if this method fails. Reasons include:<ul>
- * <li>unable to instantiate the underlying launch configuration delegate</li>
- * <li>the launch fails (in the delegate)</code>
- * </ul>
- */
- public ILaunch launch(String mode, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Launches this configuration in the specified mode by delegating to
- * this configuration's launch configuration delegate, and returns the
- * resulting launch.
- * <p>
- * If this configuration's launch delegate implements
- * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
- * be consulted to provide a launch object for the launch,
- * perform pre-launch checks, and build before the launch.
- * If <code>build</code> is <code>true</code> and the associated launch
- * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
- * an incremental workspace build will be performed before the launch
- * by the debug platform.
- * </p>
- * <p>
- * The resulting launch object is registered with the launch manager
- * before passing it to this configuration's delegate launch method, for
- * contributions (debug targets and processes).
- * </p>
- * <p>
- * If the delegate contributes a source locator to the launch, that
- * source locator is used. Otherwise an appropriate source locator is
- * contributed to the launch based on the values of
- * <code>ATTR_SOURCE_LOCATOR_ID</code> and
- * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
- * the given progress monitor), the launch is removed from the launch
- * manager. The launch is returned whether canceled or not. Invoking this
- * method causes the underlying launch configuration delegate to be
- * instantiated (if not already).
- * </p>
- * @param mode the mode in which to launch, one of the mode constants
- * defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @param build whether the workspace should be built before the launch
- * @return resulting launch
- * @throws CoreException if an exception occurs during the launch sequence
- * @since 3.0
- */
- public ILaunch launch(String mode, IProgressMonitor monitor, boolean build) throws CoreException;
-
- /**
- * Launches this configuration in the specified mode by delegating to
- * this configuration's launch configuration delegate, and returns the
- * resulting launch.
- * <p>
- * If this configuration's launch delegate implements
- * <code>ILaunchConfigurationDelegate2</code>, the launch delegate will
- * be consulted to provide a launch object for the launch,
- * perform pre-launch checks, and build before the launch.
- * If <code>build</code> is <code>true</code> and the associated launch
- * delegate does not implement <code>ILaunchConfigurationDelegate2</code>
- * an incremental workspace build will be performed before the launch
- * by the debug platform.
- * </p>
- * <p>
- * When <code>register</code> is <code>true</code>, the resulting launch object
- * is registered with the launch manager before passing it to this configuration's delegate
- * launch method, for contributions (debug targets and processes). When
- * <code>register</code> is <code>false</code>, the launch is not registered with
- * the launch manager. Clients that launch configurations without registering
- * a launch should register appropriate debug event filters to intercept events
- * from unregistered launches.
- * </p>
- * <p>
- * If the delegate contributes a source locator to the launch, that
- * source locator is used. Otherwise an appropriate source locator is
- * contributed to the launch based on the values of
- * <code>ATTR_SOURCE_LOCATOR_ID</code> and
- * <code>ATTR_SOURCE_LOCATOR_MEMENTO</code>. If the launch is canceled (via
- * the given progress monitor), the launch is removed from the launch
- * manager. The launch is returned whether canceled or not. Invoking this
- * method causes the underlying launch configuration delegate to be
- * instantiated (if not already).
- * </p>
- * @param mode the mode in which to launch, one of the mode constants
- * defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @param build whether the workspace should be built before the launch
- * @param register whether to register the resulting launch with the launch manager
- * @return resulting launch
- * @throws CoreException if an exception occurs during the launch sequence
- * @since 3.1
- */
- public ILaunch launch(String mode, IProgressMonitor monitor, boolean build, boolean register) throws CoreException;
-
- /**
- * Migrates this launch configuration to be compatible with current tooling.
- * Has no effect if this configuration is not a candidate for migration.
- * Migration is performed by a launch configuration migration delegate.
- * @throws CoreException if migration fails
- * @since 3.2
- * @see ILaunchConfigurationMigrationDelegate
- */
- public void migrate() throws CoreException;
-
- /**
- * Returns whether this launch configuration supports the
- * specified mode. This is a handle-only method.
- *
- * @param mode a mode in which a configuration can be launched, one of
- * the mode constants defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or
- * <code>DEBUG_MODE</code>.
- * @return whether this launch configuration supports the
- * specified mode
- * @exception CoreException if this method fails. Reasons include:
- * <ul>
- * <li>Unable to retrieve this launch configuration's type.</li>
- * </ul>
- */
- public boolean supportsMode(String mode) throws CoreException;
-
- /**
- * Returns whether this launch configuration is read-only.
- * A read-only configuration cannot be modified.
- *
- * @return whether this configuration is read-only
- *
- * @since 3.3
- */
- public boolean isReadOnly();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationListener.java
deleted file mode 100644
index dc7b84fa4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-/**
- * Notified when a launch configuration is created,
- * deleted, or changed.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 2.0
- */
-public interface ILaunchConfigurationListener {
-
- /**
- * The given launch configuration has been created.
- *
- * @param configuration the newly created launch configuration
- */
- public void launchConfigurationAdded(ILaunchConfiguration configuration);
-
- /**
- * The given launch configuration has changed in some way.
- * The configuration may be a working copy.
- *
- * @param configuration the launch configuration that has
- * changed
- */
- public void launchConfigurationChanged(ILaunchConfiguration configuration);
-
- /**
- * The given launch configuration has been deleted.
- * <p>
- * The launch configuration no longer exists. Data stored
- * in the configuration can no longer be accessed, however
- * handle-only attributes of the launch configuration
- * can be retrieved.
- * </p>
- *
- * @param configuration the deleted launch configuration
- */
- public void launchConfigurationRemoved(ILaunchConfiguration configuration);
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationMigrationDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationMigrationDelegate.java
deleted file mode 100644
index ce4e3d014..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationMigrationDelegate.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.core;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * Responsible for migrating launch configurations between different versions of Eclipse.
- * A migration delegate is contributed as an optional attribute of a
- * <code>launchConfigurationType</code> extension and is responsible for identifying
- * migration candidates and migrating launch configurations of that type.
- * <p>
- * For example, since 3.2 launch configurations may have resources mapped to them. A migration
- * delegate could assign appropriate resources to a launch configuration create in an earlier
- * version.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.2
- */
-public interface ILaunchConfigurationMigrationDelegate {
-
- /**
- * Returns whether the given launch configuration requires migration.
- *
- * @param candidate potential migration candidate
- * @return whether the given launch configuration requires migration
- * @throws CoreException if an exception occurs determining the status of the
- * given configuration
- */
- public boolean isCandidate(ILaunchConfiguration candidate) throws CoreException;
-
- /**
- * Migrates the given launch configuration to be compatible with the current tooling.
- *
- * @param candidate the candidate to be migrated, which can be a launch configuration
- * or working copy
- * @throws CoreException if an exception occurs during migration
- */
- public void migrate(ILaunchConfiguration candidate) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java
deleted file mode 100644
index ded6948a1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationType.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.Set;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-
-/**
- * Describes and creates instances of a specific type of
- * launch configuration. Launch configuration types are
- * defined by extensions.
- * <p>
- * A launch configuration type extension is defined in <code>plugin.xml</code>.
- * Following is an example definition of a launch configuration
- * type extension.
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.launchConfigurationTypes"&gt;
- * &lt;launchConfigurationType
- * id="com.example.ExampleIdentifier"
- * delegate="com.example.ExampleLaunchConfigurationDelegate"
- * modes="run, debug"
- * name="Example Application"&gt;
- * sourceLocatorId="com.example.SourceLocator"&gt;
- * sourcePathComputerId="com.example.SourcePathComputer"&gt;
- * &lt;/launchConfigurationType&gt;
- * &lt;/extension&gt;
- * </pre>
- * The attributes are specified as follows:
- * <ul>
- * <li><code>id</code> specifies a unique identifier for this launch configuration
- * type.</li>
- * <li><code>delegate</code> specifies the fully qualified name of the java class
- * that implements <code>ILaunchConfigurationDelegate</code>. Launch configuration
- * instances of this type will delegate to instances of this class
- * to perform launching.</li>
- * <li><code>modes</code> specifies a comma separated list of the modes this
- * type of launch configuration supports - <code>"run"</code> and/or <code>"debug"</code>.</li>
- * <li><code>name</code> specifies a human readable name for this type
- * of launch configuration.</li>
- * <li><code>category</code> is an optional attribute that specifies a category
- * for this launch configuration type. Categories are client defined. This
- * attribute was added in the 2.1 release.</li>
- * <li><code>sourceLocatorId</code> an optional unique identifier of a sourceLocator extension that
- * is used to create the source locator for sessions launched using launch configurations
- * of this type. This attribute was added in the 3.0 release.</li>
- * <li><code>sourcePathComputerId</code> an optional unique identifier of a sourcePathComputer extension
- * that is used to compute a default source lookup path for launch configurations of this type.
- * This attribute was added in the 3.0 release.</li>
- * </ul>
- * </p>
- * <p>
- * The <code>category</code> attribute has been added in release 2.1, such that other
- * tools may re-use the launch configuration framework for purposes other than
- * the standard running and debugging of programs under development. Such that
- * clients may access arbitrary attributes specified in launch configuration type
- * extension definitions, the method <code>getAttribute</code> has also been
- * added. Launch configurations that are to be recognized as standard run/debug
- * launch configurations should not specify the <code>category</code> attribute.
- * </p>
- * <p>
- * Clients that define a launch configuration delegate extension implement the
- * <code>ILaunchConfigurationDelegate</code> interface.
- * </p>
- * @see ILaunchConfiguration
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchConfigurationType extends IAdaptable {
-
- /**
- * Returns the attribute with the given name, as specified by this launch
- * configuration type's extension definition, or <code>null</code> if
- * unspecified.
- *
- * @param attributeName attribute name
- * @return the specified extension attribute, or <code>null</code>
- * @since 2.1
- */
- public String getAttribute(String attributeName);
-
- /**
- * Returns this launch configuration type's category, or <code>null</code>
- * if unspecified. This corresponds to the category attribute specified in
- * the extension definition.
- *
- * @return this launch configuration type's category, or <code>null</code>
- * @since 2.1
- */
- public String getCategory();
-
- /**
- * Returns the launch configuration delegate for launch
- * configurations of this type, for <code>run</code> mode.
- * The first time this method is called, the delegate is instantiated.
- *
- * @return launch configuration delegate
- * @exception CoreException if unable to instantiate the
- * delegate
- * @deprecated use <code>getDelegate(String)</code> to specify mode
- */
- public ILaunchConfigurationDelegate getDelegate() throws CoreException;
-
- /**
- * Returns the launch configuration delegate for launch
- * configurations of this type, for the specified mode. The first time
- * this method is called for a mode, the delegate is instantiated.
- * Launch delegates may be contributed to a launch configuration type
- * via the extension point <code>org.eclipse.debug.core.launchDelegates</code>
- *
- * @param mode launch mode
- * @return launch configuration delegate
- * @exception CoreException if unable to instantiate the
- * delegate
- * @since 3.0
- * @deprecated since 3.3, the method <code>getDelegates(Set)</code> should be used
- * instead, as there can be more than one capable delegate per mode or combination
- * of modes
- */
- public ILaunchConfigurationDelegate getDelegate(String mode) throws CoreException;
-
- /**
- * Returns the delegates capable of launching in the specified modes, possibly
- * an empty set.
- *
- * @param modes set of launch modes
- * @return the <code>ILaunchDelegate</code>s capable of launching
- * in the specified modes or an empty collection if none
- * @throws CoreException
- * @since 3.3
- */
- public ILaunchDelegate[] getDelegates(Set modes) throws CoreException;
-
- /**
- * Returns the preferred launch delegate for this type in the specified mode combination
- * or <code>null</code> if there is no preferred delegate.
- *
- * @param modes the set of modes to support
- * @return the preferred delegate or <code>null</code> if none
- * @throws CoreException
- *
- * @since 3.3
- */
- public ILaunchDelegate getPreferredDelegate(Set modes) throws CoreException;
-
- /**
- * Sets the preferred launch delegate for this type in the specified mode combination.
- * Specify <code>null</code> as a preferred delegate to remove any preferred delegate
- * setting for this launch configuration type.
- *
- * @param modes launch mode combination
- * @param delegate preferred launch delegate or <code>null</code>
- * @throws CoreException
- *
- * @since 3.3
- */
- public void setPreferredDelegate(Set modes, ILaunchDelegate delegate) throws CoreException;
-
- /**
- * Returns whether this launch configuration supports the specified launch
- * mode combination.
- *
- * @param modes launch mode combination
- * @return whether the launch mode combination is supported
- * @since 3.3
- */
- public boolean supportsModeCombination(Set modes);
-
- /**
- * Returns the unique identifier for this type of launch configuration
- *
- * @return the unique identifier for this type of launch configuration
- */
- public String getIdentifier();
-
- /**
- * Returns the name of this type of launch configuration.
- *
- * @return the name of this type of launch configuration
- */
- public String getName();
-
- /**
- * Returns the identifier of the plug-in that contributes this launch configuration type.
- *
- * @return the identifier of the plug-in that contributes this launch configuration type
- * @since 3.0
- */
- public String getPluginIdentifier();
-
- /**
- * Returns the identifier of the persistable source locator registered with
- * this launch configurations type, or <code>null</code> if unspecified.
- * A source locator can be specified by a launch configuration type or
- * launch delegate extension's <code>sourceLocatorId</code> attribute.
- * <p>
- * Only one source locator should be provided per launch configuration type
- * and its launch delegates.
- * </p>
- * @return the identifier of the persistable source locator registered with
- * this launch configurations type, or <code>null</code> if unspecified
- * @since 3.0
- */
- public String getSourceLocatorId();
-
- /**
- * Returns the source path computer registered with this launch configuration
- * type or <code>null</code> if unspecified. A source path computer can be
- * specified by a launch configuration type or launch delegate extension's
- * <code>sourcePathComputerId</code> attribute.
- * <p>
- * Only one source path computer should be provided per launch configuration type
- * and its launch delegates.
- * </p>
- * @return the source path computer registered with this launch configuration
- * type or <code>null</code> if unspecified
- * @since 3.0
- */
- public ISourcePathComputer getSourcePathComputer();
-
- /**
- * Returns all of the registered supported modes for this launch configuration type.
- * This method does not return null.
- *
- * <p>
- * The returned set does not convey any mode combination capability nor does it describe how or what the type can launch, all this method does is return
- * a set of strings of all the modes in some way associated with this type
- * </p>
- *
- * @return the set of all supported modes
- * @since 3.2
- *
- * @deprecated Since 3.3 all modes are provided as sets and not individual strings. The method <code>getSupportedModeCombinations</code>
- * should be used instead to retrieve the complete listing of supported modes and their allowable combinations.
- */
- public Set getSupportedModes();
-
- /**
- * Returns a <code>java.util.Set</code> of <code>java.util.Set</code>s containing all of the
- * supported launch mode combinations for this type.
- *
- * @return a set of sets of all the supported mode combinations supported by this type
- *
- * @since 3.3
- */
- public Set getSupportedModeCombinations();
-
- /**
- * Returns whether this launch configuration type is public. Public configuration
- * types are available for use by the user, for example, the user can create new
- * configurations based on public types through the UI. Private types are not
- * accessible in this way, but are still available through the methods on
- * <code>ILaunchManager</code>.
- *
- * @return whether this launch configuration type is public.
- */
- public boolean isPublic();
-
- /**
- * Returns a new launch configuration working copy of this type,
- * that resides in the specified container, with the given name.
- * When <code>container</code> is </code>null</code>, the configuration
- * will reside locally in the metadata area.
- * Note: a launch configuration is not actually created until the working copy is saved.
- *
- * @param container the container in which the new configuration will
- * reside, or <code>null</code> if the configuration should reside
- * locally with the metadata.
- * @param name name for the launch configuration
- * @return a new launch configuration working copy instance of this type
- * @exception CoreException if an instance of this type
- * of launch configuration could not be created for any
- * reason
- */
- public ILaunchConfigurationWorkingCopy newInstance(IContainer container, String name) throws CoreException;
-
- /**
- * Returns whether this type of launch configuration supports
- * the specified mode.
- *
- * @param mode a mode in which a configuration can be launched, one of
- * the mode constants defined by <code>ILaunchManager</code> - <code>RUN_MODE</code> or
- * <code>DEBUG_MODE</code>.
- * @return whether this kind of launch configuration supports the
- * specified mode
- */
- public boolean supportsMode(String mode);
-
- /**
- * Returns the name of the plug-in that contributed this launch configuration type.
- *
- * @return name of contributing plug-in
- * @since 3.3
- */
- public String getContributorName();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationWorkingCopy.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationWorkingCopy.java
deleted file mode 100644
index 2a8ac2a89..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchConfigurationWorkingCopy.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * An editable copy of a launch configuration. Attributes of a
- * launch configuration are modified by modifying the attributes
- * of a working copy, and then saving the working copy.
- * <p>
- * Since 3.3, working copies can be nested. For example a working copy B can
- * be created from the original launch configuration A. Then a nested working
- * copy C can be created from working copy B. When the <code>doSave()</code> method
- * is called on C, changes are written back to its parent working copy B without
- * effecting the original launch configuration A. When <code>doSave()</code> is called
- * on B, the changes are persisted back to the original A.
- * </p>
- * <p>
- * Clients that define a launch configuration delegate extension implement the
- * <code>ILaunchConfigurationDelegate</code> interface.
- * </p>
- * @see ILaunchConfiguration
- * @see ILaunchConfigurationType
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate
- * @since 2.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchConfigurationWorkingCopy extends ILaunchConfiguration, IAdaptable {
-
- /**
- * Returns whether this configuration has been modified
- * since it was last saved or created.
- *
- * @return whether this configuration has been modified
- * since it was last saved or created
- */
- public boolean isDirty();
-
- /**
- * Saves this working copy to its underlying file and returns
- * a handle to the resulting launch configuration.
- * Has no effect if this configuration does not need saving.
- * Creates the underlying file if not yet created.
- * <p>
- * Since 3.3, if this is a nested working copy, the contents of this working copy are
- * saved to the parent working copy and the parent working copy is returned without
- * effecting the original launch configuration.
- * </p>
- * @return handle to saved launch configuration
- * @exception CoreException if an exception occurs while
- * writing this configuration to its underlying file.
- */
- public ILaunchConfiguration doSave() throws CoreException;
-
- /**
- * Sets the integer-valued attribute with the given name.
- *
- * @param attributeName the name of the attribute, cannot be <code>null</code>
- * @param value the value
- */
- public void setAttribute(String attributeName, int value);
-
- /**
- * Sets the String-valued attribute with the given name.
- * If the value is <code>null</code>, the attribute is removed from
- * this launch configuration.
- *
- * @param attributeName the name of the attribute, cannot be <code>null</code>
- * @param value the value, or <code>null</code> if the attribute is to be undefined
- */
- public void setAttribute(String attributeName, String value);
-
- /**
- * Sets the <code>java.util.List</code>-valued attribute with the given name.
- * The specified List <em>must</em> contain only String-valued entries.
- * If the value is <code>null</code>, the attribute is removed from
- * this launch configuration.
- *
- * @param attributeName the name of the attribute, cannot be <code>null</code>
- * @param value the value, or <code>null</code> if the attribute is to be undefined
- */
- public void setAttribute(String attributeName, List value);
-
- /**
- * Sets the <code>java.util.Map</code>-valued attribute with the given name.
- * The specified Map <em>must</em> contain only String keys and String values.
- * If the value is <code>null</code>, the attribute is removed from
- * this launch configuration.
- *
- * @param attributeName the name of the attribute, cannot be <code>null</code>
- * @param value the value, or <code>null</code> if the attribute is to be undefined
- */
- public void setAttribute(String attributeName, Map value);
-
- /**
- * Sets the boolean-valued attribute with the given name.
- *
- * @param attributeName the name of the attribute, cannot be <code>null</code>
- * @param value the value
- */
- public void setAttribute(String attributeName, boolean value);
-
- /**
- * Returns the original launch configuration this working copy
- * was created from or <code>null</code> if this is a new
- * working copy created from a launch configuration type.
- *
- * @return the original launch configuration, or <code>null</code>
- */
- public ILaunchConfiguration getOriginal();
-
- /**
- * Renames this launch configuration to the specified name.
- * The new name cannot be <code>null</code>. Has no effect if the name
- * is the same as the current name. If this working copy is based
- * on an existing launch configuration, this will cause
- * the underlying launch configuration file to be renamed when
- * this working copy is saved.
- *
- * @param name the new name for this configuration
- */
- public void rename(String name);
-
- /**
- * Sets the container this launch configuration will be stored
- * in when saved. When set to <code>null</code>, this configuration
- * will be stored locally with the workspace. The specified
- * container must exist, if specified.
- * <p>
- * If this configuration is changed from local to non-local,
- * a file will be created in the specified container when
- * saved. The local file associated with this configuration
- * will be deleted.
- * </p>
- * <p>
- * If this configuration is changed from non-local to local,
- * a file will be created locally when saved.
- * The original file associated with this configuration in
- * the workspace will be deleted.
- * </p>
- *
- * @param container the container in which to store this
- * launch configuration, or <code>null</code> if this
- * configuration is to be stored locally
- */
- public void setContainer(IContainer container);
-
- /**
- * Sets the attributes of this launch configuration to be the ones contained
- * in the given map. The values must be an instance of one of the following
- * classes: <code>String</code>, <code>Integer</code>, or
- * <code>Boolean</code>, <code>List</code>, <code>Map</code>. Attributes
- * previously set on this launch configuration but not included in the given
- * map are considered to be removals. Setting the given map to be
- * <code>null</code> is equivalent to removing all attributes.
- *
- * @param attributes a map of attribute names to attribute values.
- * Attribute names are not allowed to be <code>null</code>
- * @since 2.1
- */
- public void setAttributes(Map attributes);
-
- /**
- * Sets the resources associated with this launch configuration, possibly <code>null</code>.
- * Clients contributing launch configuration types are responsible for maintaining
- * resource mappings.
- *
- * @param resources the resource to map to this launch configuration or <code>null</code>
- * @since 3.2
- */
- public void setMappedResources(IResource[] resources);
-
- /**
- * Set the launch modes for this configuration.
- * Over-writes existing launch modes.
- * <p>
- * Setting launch modes on a configuration allows the configuration to
- * be launched in a mixed mode - for example, debug and profile.
- * </p>
- * @param modes launch mode identifiers to set on this configuration
- * or <code>null</code> to clear mode settings
- *
- * @since 3.3
- */
- public void setModes(Set modes);
-
- /**
- * Set the preferred launch delegates' id for the given mode set. Passing in <code>null</code> as a delegate
- * id will cause the mapping for the specified mode set (if any) to be removed.
- *
- * @param modes the set of modes to set this delegate id for
- * @param delegateId the id of the delegate to associate as preferred for the specified mode set
- * or <code>null</code> to clear the setting
- *
- * @since 3.3
- */
- public void setPreferredLaunchDelegate(Set modes, String delegateId);
-
- /**
- * Adds the specified launch modes to this configuration's settings.
- * <p>
- * Setting launch modes on a configuration allows the configuration to
- * be launched in a mixed mode - for example, debug and profile.
- * </p>
- * @param modes launch mode identifiers to append to the current set of
- * launch modes set on this configuration
- *
- * @since 3.3
- */
- public void addModes(Set modes);
-
- /**
- * Removes the specified launch modes from this configuration's settings.
- * <p>
- * Setting launch modes on a configuration allows the configuration to
- * be launched in a mixed mode - for example, debug and profile.
- * </p>
- * @param modes launch mode identifiers to remove from the current set of
- * launch modes set on this configuration
- *
- * @since 3.3
- */
- public void removeModes(Set modes);
-
- /**
- * Removes the specified attribute from the this configuration and returns
- * the previous value associated with the specified attribute name, or <tt>null</tt>
- * if there was no mapping for the attribute. Note that for int's and booleans,
- * corresponding Integer and Boolean objects are returned.
- * <p>
- * This method allows non-object attributes to be removed.
- * </p>
- * @param attributeName the name of the attribute to remove
- * @return previous value of the attribute or <code>null</code>
- *
- * @since 3.4
- */
- public Object removeAttribute(String attributeName);
-
- /**
- * Returns the parent of this working copy or <code>null</code> if this working
- * copy is not a nested copy of another working copy.
- *
- * @return parent or <code>null</code>
- * @since 3.3
- */
- public ILaunchConfigurationWorkingCopy getParent();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchDelegate.java
deleted file mode 100644
index b9af5cd34..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchDelegate.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-
-/**
- * A proxy to an {@link ILaunchConfigurationDelegate}. Represents a
- * launch delegate contributed to the <code>org.eclipse.debug.core.launchDelegates</code>
- * extension point.
- * @since 3.3
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchDelegate {
-
- /**
- * Returns this delegate's unique identifier.
- *
- * @return launch delegate identifier
- */
- public String getId();
-
- /**
- * Returns a human readable name for this launch delegate
- * or <code>null</code> if none.
- *
- * @return name or <code>null</code>
- */
- public String getName();
-
- /**
- * Returns a description of this launch delegate, or
- * <code>null</code> if none.
- *
- * @return description or <code>null</code>
- */
- public String getDescription();
-
- /**
- * Returns the name of the plug-in that contributed this delegate.
- *
- * @return contributor name
- */
- public String getContributorName();
-
- /**
- * Returns the underlying launch configuration.
- * Causes the delegate to be instantiated.
- *
- * @return launch configuration delegate
- * @exception CoreException if unable to instantiate the delegate
- */
- public ILaunchConfigurationDelegate getDelegate() throws CoreException;
-
- /**
- * Returns the complete set of launch modes supported by this delegate as a list of sets.
- * Each set contains one of more launch mode identifiers. When a set contains more than
- * one launch mode, it indicates that a mixed launch mode is supported.
- * If no modes are available an empty list is returned.
- *
- * @return the complete set of launch modes this delegate supports
- */
- public List getModes();
-
- /**
- * Returns the id of the plug-in that contributed this launch delegate.
- *
- * @return the id of the plug-in that contributed this launch delegate
- */
- public String getPluginIdentifier();
-
- /**
- * Returns the specified perspective id for the given mode set, or null if one is not provided
- * @param modes the set of modes to get the perspective id
- * @return the perspective id associated with the given mode set, or <code>null</code> if none provided
- */
- public String getPerspectiveId(Set modes);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchListener.java
deleted file mode 100644
index 427b6f4f9..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchListener.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-/**
- * A launch listener is notified of launches as they
- * are added and removed from the launch manager. Also,
- * when a process or debug target is added to a launch,
- * listeners are notified of a change.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.ILaunch
- * @see org.eclipse.debug.core.ILaunchesListener
- */
-public interface ILaunchListener {
- /**
- * Notifies this listener that the specified
- * launch has been removed.
- *
- * @param launch the removed launch
- * @since 2.0
- */
- public void launchRemoved(ILaunch launch);
- /**
- * Notifies this listener that the specified launch
- * has been added.
- *
- * @param launch the newly added launch
- * @since 2.0
- */
- public void launchAdded(ILaunch launch);
- /**
- * Notifies this listener that the specified launch
- * has changed. For example, a process or debug target
- * has been added to the launch.
- *
- * @param launch the changed launch
- * @since 2.0
- */
- public void launchChanged(ILaunch launch);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchManager.java
deleted file mode 100644
index 39e01cea3..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchManager.java
+++ /dev/null
@@ -1,487 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IPersistableSourceLocator;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-
-/**
- * The launch manager manages the set of registered launches, maintaining
- * a collection of active processes and debug targets. Clients interested
- * in launch notification may register with the launch manager.
- * @see ILaunch
- * @see ILaunchListener
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchManager {
- /**
- * A launch in a normal, non-debug mode(value <code>"run"</code>).
- */
- public static final String RUN_MODE= "run"; //$NON-NLS-1$
- /**
- * A launch in a special debug mode (value <code>"debug"</code>).
- */
- public static final String DEBUG_MODE= "debug"; //$NON-NLS-1$
- /**
- * A launch in a special profile mode (value <code>"profile"</code>).
- * @since 3.0
- */
- public static final String PROFILE_MODE= "profile"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute name. The value is a map of environment
- * variables passed into Runtime.exec(...) when a launch configuration is launched.
- * Default value is <code>null</code> which indicates the default environment
- * should be used.
- *
- * @since 3.0
- */
- public static final String ATTR_ENVIRONMENT_VARIABLES = DebugPlugin.getUniqueIdentifier() + ".environmentVariables"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute name. The value is a boolean value specifying
- * whether the environment variables in a launch configuration
- * should be appended to the native environment (i.e. when <code>true</code>),
- * or if they should replace the environment (i.e. <code>false</code>). The
- * default value is <code>true</code>.
- *
- * @since 3.0
- */
- public static final String ATTR_APPEND_ENVIRONMENT_VARIABLES = DebugPlugin.getUniqueIdentifier() + ".appendEnvironmentVariables"; //$NON-NLS-1$
-
- /**
- * Adds the specified launch and notifies listeners. Has no
- * effect if an identical launch is already registered.
- *
- * @param launch the launch to add
- * @since 2.0
- */
- public void addLaunch(ILaunch launch);
- /**
- * Adds the given launch configuration listener to the list
- * of listeners notified when a launch configuration is
- * added, removed, or changed. Has no effect if the given listener
- * is already registered.
- *
- * @param listener launch configuration listener
- * @since 2.0
- */
- public void addLaunchConfigurationListener(ILaunchConfigurationListener listener);
- /**
- * Adds the specified launch objects and notifies listeners. Has no
- * effect on identical launch objects already registered.
- *
- * @param launches the launch objects to add
- * @since 2.1
- */
- public void addLaunches(ILaunch[] launches);
- /**
- * Adds the given listener to the collection of registered launch listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to register
- * @since 2.1
- */
- public void addLaunchListener(ILaunchesListener listener);
- /**
- * Adds the given listener to the collection of registered launch listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to register
- */
- public void addLaunchListener(ILaunchListener listener);
- /**
- * Return a String that can be used as the name of a launch configuration. The name
- * is guaranteed to be unique (no existing launch configurations will have this name).
- * The name that is returned uses the <code>namePrefix</code> as a starting point. If
- * there is no existing launch configuration with this name, then <code>namePrefix</code>
- * is returned. Otherwise, the value returned consists of the specified prefix plus
- * some suffix that guarantees uniqueness.
- *
- * @param namePrefix the String that the returned name must begin with
- * @return launch configuration name
- * @since 2.0
- */
- public String generateUniqueLaunchConfigurationNameFrom(String namePrefix);
- /**
- * Returns the collection of debug targets currently registered with this
- * launch manager.
- *
- * @return an array of debug targets
- */
- public IDebugTarget[] getDebugTargets();
- /**
- * Returns an array of environment variables to be used when
- * launching the given configuration or <code>null</code> if unspecified.
- * Each entry is of the form "<code>var_name=value</code>".
- *
- * @return an array of environment variables to use when launching the given
- * configuration or <code>null</code> if unspecified
- * @param configuration launch configuration
- * @throws CoreException if unable to access associated attribute or if
- * unable to resolve a variable in an environment variable's value
- * @since 3.0
- */
- public String[] getEnvironment(ILaunchConfiguration configuration) throws CoreException;
- /**
- * This method returns the character encoding to use when launching the specified <code>ILaunchConfiguration</code>.
- * The returned encoding can be derived from one of three places in the following order:
- * <ol>
- * <li>An attribute saved on the configuration itself (where no attribute means use the default encoding).</li>
- * <li>The mapped resources for the configuration, in the event one of them has a specific encoding that
- * is not the workspace default. If there are more than one mapped resource we optimistically ask only the first resource
- * for its encoding.</li>
- * <li>We ask the <code>ResourcesPlugin</code> for the workspace preference (which resolves back to the system
- * property <code>file.encoding</code> if the user has made no changes to the workspace encoding preference).</li>
- * </ol>
- * @param configuration the <code>ILaunchConfiguration</code> to get the encoding for
- * @return the encoding to use when launching the specified <code>ILaunchConfiguration</code>
- * @throws CoreException
- *
- * @since 3.4
- */
- public String getEncoding(ILaunchConfiguration configuration) throws CoreException;
- /**
- * Returns a handle to the launch configuration contained
- * in the specified file. This method does not check if the specified <code>IFile</code> is
- * a launch configuration file or that it exists in the local or
- * remote file system.
- *
- * @param file launch configuration file
- * @return a handle to the launch configuration contained
- * in the specified file
- * @since 2.0
- */
- public ILaunchConfiguration getLaunchConfiguration(IFile file);
- /**
- * Returns a handle to the launch configuration specified by
- * the given memento. The configuration may not exist.
- *
- * @param memento launch configuration memento
- * @return a handle to the launch configuration specified by
- * the given memento
- * @exception CoreException if the given memento is invalid or
- * an exception occurs parsing the memento
- * @see ILaunchConfiguration#getMemento()
- * @since 2.0
- */
- public ILaunchConfiguration getLaunchConfiguration(String memento) throws CoreException;
- /**
- * Returns all launch configurations defined in the workspace.
- *
- * @return all launch configurations defined in the workspace
- * @exception CoreException if an exception occurs retrieving configurations
- * @since 2.0
- */
- public ILaunchConfiguration[] getLaunchConfigurations() throws CoreException;
- /**
- * Returns all launch configurations of the specified type defined in the workspace
- *
- * @param type a launch configuration type
- * @return all launch configurations of the specified type defined in the workspace
- * @exception CoreException if an error occurs while retrieving
- * a launch configuration
- * @since 2.0
- */
- public ILaunchConfiguration[] getLaunchConfigurations(ILaunchConfigurationType type) throws CoreException;
-
- /**
- * Returns the launch configuration type extension with the specified
- * id, or <code>null</code> if it does not exist.
- *
- * @param id unique identifier for a launch configuration type extension
- * @return the launch configuration type extension with the specified
- * id, or <code>null</code> if it does not exist
- * @since 2.0
- */
- public ILaunchConfigurationType getLaunchConfigurationType(String id);
-
- /**
- * Returns all defined launch configuration type extensions
- *
- * @return all defined launch configuration type extensions
- * @since 2.0
- */
- public ILaunchConfigurationType[] getLaunchConfigurationTypes();
-
- /**
- * Returns the collection of launches currently registered
- * with this launch manager.
- *
- * @return an array of launches
- */
- public ILaunch[] getLaunches();
-
- /**
- * Returns the launch mode registered with the given mode identifier,
- * or <code>null</code> if none.
- *
- * @param mode mode identifier
- * @return launch mode or <code>null</code>
- * @since 3.0
- */
- public ILaunchMode getLaunchMode(String mode);
-
- /**
- * Returns all registered launch modes.
- *
- * @return all registered launch modes
- * @since 3.0
- */
- public ILaunchMode[] getLaunchModes();
-
- /**
- * Returns a collection of launch configurations that required migration to be
- * compatible with current tooling.
- *
- * @return a collection of launch configurations that required migration
- * @exception org.eclipse.core.runtime.CoreException if an exception occurs determining
- * migration candidates
- * @since 3.2
- */
- public ILaunchConfiguration[] getMigrationCandidates() throws CoreException;
-
- /**
- * When a launch configuration is created or moved, registered launch
- * configuration listeners (see <code>ILaunchConfigurationListener</code>)
- * are notified of an add notification for the new configuration. If the
- * notification is the result of a move this method will return a handle to
- * the launch configuration that the added launch configuration was moved
- * from. This method returns <code>null</code> if the added launch
- * configuration was not the result of a rename or move. This information is
- * only available during the add notification call back
- * <code>launchConfigurationAdded</code>.
- * <p>
- * Renaming a configuration is considered the same as moving a
- * configuration.
- * </p>
- *
- * @param addedConfiguration a launch configuration for which an add
- * notification is being broadcast
- * @return the launch configuration that the added launch configuration was
- * moved from, or <code>null</code> if the add notification is not the
- * result of a move
- * @since 2.1
- */
- public ILaunchConfiguration getMovedFrom(ILaunchConfiguration addedConfiguration);
-
- /**
- * When a launch configuration is deleted or moved, registered launch
- * configuration listeners (see <code>ILaunchConfigurationListener</code>)
- * are notified of a remove notification for launch configuration that has
- * been deleted. If the notification is the result of a move this method
- * will return a handle to the launch configuration that the removed launch
- * configuration was moved to. This method returns <code>null</code> if the
- * removed launch configuration was not the result of a rename or move. This
- * information is only available during the add notification call back
- * <code>launchConfigurationRemoved</code>.
- * <p>
- * Renaming a configuration is considered the same as moving a
- * configuration.
- * </p>
- *
- * @param removedConfiguration a launch configuration for which a
- * remove notification is being broadcast
- * @return the launch configuration that the removed launch configuration
- * was moved to, or <code>null</code> if the add notification is not the
- * result of a move
- * @since 2.1
- */
- public ILaunchConfiguration getMovedTo(ILaunchConfiguration removedConfiguration);
-
- /**
- * Returns the native system environment variables as a map of
- * variable names and values (Strings).
- * <p>
- * Note that WIN32 system environment preserves
- * the case of variable names but is otherwise case insensitive.
- * Depending on what you intend to do with the environment, the
- * lack of normalization may or may not be create problems. On
- * WIN32, this method normalizes mixed-case keys variable names
- * to upper case. Use {@link #getNativeEnvironmentCasePreserved()}
- * instead to get a WIN32 system environment where the keys are
- * the mixed-case variable names recorded by the OS.
- * </p>
- *
- * @return the native system environment variables; on WIN32, mixed-case
- * variable names (keys) have been normalized to upper case
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @since 3.0
- */
- public Map getNativeEnvironment();
-
- /**
- * Returns the native system environment variables as a map of
- * variable names and values (Strings).
- * <p>
- * Note that WIN32 system environment preserves
- * the case of variable names but is otherwise case insensitive.
- * Depending on what you intend to do with the environment, the
- * lack of normalization may or may not be create problems. This
- * method returns mixed-case keys using the variable names
- * recorded by the OS.
- * Use {@link #getNativeEnvironment()} instead to get a WIN32 system
- * environment where all keys have been normalized to upper case.
- * </p>
- *
- * @return the native system environment variables; on WIN32, mixed-case
- * variable names (keys) are returned without normalization
- * (key type: <code>String</code>; value type: <code>String</code>)
- * @since 3.1
- */
- public Map getNativeEnvironmentCasePreserved();
-
- /**
- * Returns the collection of processes currently registered with this
- * launch manager.
- *
- * @return an array of processes
- */
- public IProcess[] getProcesses();
-
- /**
- * Returns the source container type extension registered with the
- * given unique identifier, or <code>null</code> if none.
- *
- * @param id unique identifier of a source container type extension
- * @return the source container type extension registered with the
- * given unique identifier, or <code>null</code> if none
- * @since 3.0
- */
- public ISourceContainerType getSourceContainerType(String id);
-
- /**
- * Returns all registered source container type extensions.
- *
- * @return all registered source container type extensions
- * @since 3.0
- */
- public ISourceContainerType[] getSourceContainerTypes();
-
- /**
- * Returns a source path computer to compute a default source lookup path for
- * the given launch configuration, or <code>null</code> if a source path
- * computer has not been registered for the associated launch configuration
- * type.
- *
- * @param configuration a launch configuration
- * @return a source path computer registered for the associated launch
- * configurations type, or <code>null</code> if unspecified
- * @throws CoreException if an exception occurs while instantiating a source
- * path computer
- * @since 3.0
- */
- public ISourcePathComputer getSourcePathComputer(ILaunchConfiguration configuration) throws CoreException;
-
- /**
- * Returns the source path computer extension registered with the given
- * unique identifier, or <code>null</code> if none.
- *
- * @param id source path computer identifier
- * @return the source path computer extension registered with the given
- * unique identifier, or <code>null</code> if none
- * @since 3.0
- */
- public ISourcePathComputer getSourcePathComputer(String id);
-
- /**
- * Return <code>true</code> if there is a launch configuration with the specified name,
- * <code>false</code> otherwise.
- *
- * @return whether a launch configuration already exists with the given name
- * @param name the name of the launch configuration whose existence is being checked
- * @exception CoreException if unable to retrieve existing launch configuration names
- * @since 2.0
- */
- public boolean isExistingLaunchConfigurationName(String name) throws CoreException;
-
- /**
- * Returns whether the given launch is currently registered.
- *
- * @param launch a launch
- * @return whether the launch is currently registered
- * @since 3.1
- */
- public boolean isRegistered(ILaunch launch);
-
- /**
- * Creates and returns a new source locator of the specified
- * type.
- *
- * @param identifier the identifier associated with a
- * persistable source locator extension
- * @return a source locator
- * @exception CoreException if an exception occurs creating
- * the source locator
- * @since 2.0
- */
- public IPersistableSourceLocator newSourceLocator(String identifier) throws CoreException;
-
- /**
- * Removes the specified launch and notifies listeners.
- * Has no effect if an identical launch is not already
- * registered.
- *
- * @param launch the launch to remove
- * @since 2.0
- */
- public void removeLaunch(ILaunch launch);
-
- /**
- * Removes the given launch configuration listener from the list
- * of listeners notified when a launch configuration is
- * added, removed, or changed. Has no effect if the given listener
- * is not already registered.
- *
- * @param listener launch configuration listener
- * @since 2.0
- */
- public void removeLaunchConfigurationListener(ILaunchConfigurationListener listener);
-
- /**
- * Removes the specified launch objects and notifies listeners.
- * Has no effect on identical launch objects that are not already
- * registered.
- *
- * @param launches the launch objects to remove
- * @since 2.1
- */
- public void removeLaunches(ILaunch[] launches);
-
- /**
- * Removes the given listener from the collection of registered launch listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to unregister
- * @since 2.1
- */
- public void removeLaunchListener(ILaunchesListener listener);
-
- /**
- * Removes the given listener from the collection of registered launch listeners.
- * Has no effect if an identical listener is not already registered.
- *
- * @param listener the listener to unregister
- */
- public void removeLaunchListener(ILaunchListener listener);
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchMode.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchMode.java
deleted file mode 100644
index 9f9849d9a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchMode.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-/**
- * A launch mode. The debug platform contributes launch modes
- * for run, debug, and profile. Clients may contribute additional launch
- * modes in plug-in XML via the <code>launchModes</code> extension point.
- * <p>
- * Following is an example launch mode contribution for profiling. A launch
- * mode has an unique identifier specified by the <code>mode</code> attribute
- * and a human readable label specified by the <code>label</code> attribute.
- * <pre>
- * &lt;extension point=&quot;org.eclipse.debug.core.launchModes&quot;&gt;
- * &lt;launchMode
- * mode=&quot;profile&quot;
- * label=&quot;Profile&quot;&gt;
- * &lt;/launchMode&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ILaunchMode {
-
- /**
- * Returns the unique identifier for this launch mode.
- *
- * @return the unique identifier for this launch mode
- */
- public String getIdentifier();
-
- /**
- * Returns a human readable label for this launch mode.
- *
- * @return a human readable label for this launch mode
- */
- public String getLabel();
-
- /**
- * Returns a human readable label for this launch mode when used in a
- * cascade menu. For example, "Run As". Allows the label to be
- * properly externalized.
- * <p>
- * A new attribute has been added the the launch mode extension in 3.2
- * to specify this label. When unspecified a default label is generated
- * by concatenation, for backwards compatibility.
- * </p>
- * @return human readable label for this launch mode when used in a
- * cascade menu
- * @since 3.2
- */
- public String getLaunchAsLabel();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener.java
deleted file mode 100644
index e6c8232b4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-/**
- * A launches listener is notified of launches as they
- * are added and removed from the launch manager. Also,
- * when a process or debug target is added to a launch,
- * listeners are notified of a change.
- * <p>
- * This interface is analogous to {@link ILaunchListener}, except
- * notifications are batched to include more than one launch object
- * when possible.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * <p>
- * Clients may also implement the extension interface {@link ILaunchesListener2} for
- * notification of more than one launch being terminated.
- * </p>
- * @see org.eclipse.debug.core.ILaunch
- * @see org.eclipse.debug.core.ILaunchManager
- * @see ILaunchListener
- * @see ILaunchesListener2
- * @since 2.1
- */
-public interface ILaunchesListener {
- /**
- * Notifies this listener that the specified
- * launches have been removed.
- *
- * @param launches the removed launch objects
- */
- public void launchesRemoved(ILaunch[] launches);
- /**
- * Notifies this listener that the specified launches
- * have been added.
- *
- * @param launches the newly added launch objects
- */
- public void launchesAdded(ILaunch[] launches);
- /**
- * Notifies this listener that the specified launches
- * have changed. For example, a process or debug target
- * has been added to a launch.
- *
- * @param launches the changed launch object
- */
- public void launchesChanged(ILaunch[] launches);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener2.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener2.java
deleted file mode 100644
index 7bf7022ca..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILaunchesListener2.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-/**
- * Enhancements to the launches listener interface. Provides notification
- * when one or more launches terminate.
- * <p>
- * Clients implementing launches listener may implement
- * this interface.
- * </p>
- * @since 3.0
- */
-public interface ILaunchesListener2 extends ILaunchesListener {
-
- /**
- * Notification that the given launches have terminated.
- *
- * @param launches the launches that have terminated
- */
- public void launchesTerminated(ILaunch[] launches);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureProvider.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureProvider.java
deleted file mode 100644
index df4fb4872..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-import org.eclipse.debug.core.model.IValue;
-
-/**
- * Provides logical structure types applicable to a raw implementation value from
- * a debug model. Associated with a logical structure provider extension.
- * <p>
- * The following is an example of a logical structure provider extension:
- * <pre>
- * &lt;extension point=&quot;org.eclipse.debug.core.logicalStructureProviders&quot;&gt;
- * &lt;logicalStructureProvider
- * class=&quot;com.example.ExampleLogicalStructureProvider&quot;
- * modelIdentifier=&quot;com.example.debug.model&quot;&gt;
- * &lt;/logicalStructureProvider&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * In the example above, the specified logical structure provider will be consulted for
- * alternative logical structures for values from the <code>com.example.debug.model</code>
- * debug model as they are displayed in the variables view.
- * </p>
- * <p>
- * Clients contributing logical structure providers must implement this
- * interface.
- * </p>
- * @since 3.1
- * @see org.eclipse.debug.core.ILogicalStructureType
- */
-public interface ILogicalStructureProvider {
-
- /**
- * Returns the logical structure types which are applicable to the given value.
- *
- * @param value value for which logical structure types are being requested
- * @return the logical structure types which are applicable to the given value
- */
- public ILogicalStructureType[] getLogicalStructureTypes(IValue value);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureType.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureType.java
deleted file mode 100644
index ae049d52b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/ILogicalStructureType.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-import org.eclipse.debug.core.model.ILogicalStructureTypeDelegate;
-import org.eclipse.debug.core.model.ILogicalStructureTypeDelegate2;
-
-/**
- * Provides a value representing the logical structure of a raw implementation value
- * from a debug model. Logical structures are useful for navigating complex data
- * structures. Logical structure types are contributed via extensions in plug-in XML,
- * and provide a delegate for performing logical value computation. Logical
- * structure types can be retrieved from the <code>DebugPlugin</code>.
- * <p>
- * Following is example plug-in XML to define a logical structure type.
- * </p>
- * <pre>
- * &lt;extension point=&quot;org.eclipse.debug.core.logicalStructureTypes&quot;&gt;
- * &lt;logicalStructureType
- * id=&quot;com.example.ExampleLogicalStructure&quot;
- * class=&quot;com.example.ExampleLogicalStructureDelegate&quot;
- * modelIdentifier=&quot;com.example.debug.model&quot;
- * description=&quot;Ordered Collection&quot;&gt;
- * &lt;/logicalStructureType&gt;
- * &lt;/extension&gt;
- * </pre>
- * <p>
- * The attributes are specified as follows:
- * <ul>
- * <li>id - unique identifier for this logical structure type</li>
- * <li>class - fully qualified name of class that implements
- * <code>ILogicalStructureTypeDelegate</code></li>
- * <li>modelIdentifier - identifier of the debug model this logical structure
- * type is associated with</li>
- * <li>description - description of the logical structure provided</li>
- * </ul>
- * </p>
- * <p>
- * Clients contributing logicalStructureType extensions are not intended to implement
- * this interface. Rather, they provide an <code>ILogicalStructureTypeDelegate</code>
- * that optionally implements <code>ILogicalStructureTypeDelegate2</code> to provide
- * dynamic descriptions of logical structures.
- * Since 3.1, clients contributing logicalStructureProviders extensions may implement this
- * interface to return a collection of logical structure types applicable to a value.
- * </p>
- * @since 3.0
- * @see org.eclipse.debug.core.model.ILogicalStructureTypeDelegate
- * @see org.eclipse.debug.core.ILogicalStructureProvider
- */
-public interface ILogicalStructureType extends ILogicalStructureTypeDelegate, ILogicalStructureTypeDelegate2 {
-
- /**
- * Returns a simple description of the logical structure provided by this
- * structure type.
- * <p>
- * Since 3.1, this method can return <code>null</code> if this logical structure
- * type's delegate implements <code>ILogicalStructureTypeDelegate2</code>.
- * </p>
- *
- * @return a simple description of the logical structure provided by this
- * structure type, possibly <code>null</code>
- */
- public String getDescription();
-
- /**
- * Returns this logical structure type's unique identifier, as defined
- * in plug-in XML.
- *
- * @return this logical structure type's unique identifier
- */
- public String getId();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockListener.java
deleted file mode 100644
index 65ff4d535..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.core;
-
-import org.eclipse.debug.core.model.IMemoryBlock;
-
-/**
- * A memory block listener is notified of the addition and removal
- * of memory blocks with the memory block manager. Listeners must
- * register with the memory block manager for notification.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface IMemoryBlockListener {
-
- /**
- * Notification the given memory blocks have been added to the
- * memory block manager.
- *
- * @param memory blocks added to the memory block manager
- */
- void memoryBlocksAdded(IMemoryBlock[] memory);
-
- /**
- * Notification the given memory blocks have been removed from
- * the memory block manager.
- *
- * @param memory blocks removed from the memory block manager
- */
- void memoryBlocksRemoved(IMemoryBlock[] memory);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockManager.java
deleted file mode 100644
index 3c572aae5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IMemoryBlockManager.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.core;
-
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.core.model.IMemoryBlockRetrieval;
-
-
-/**
- * Manages registered memory blocks in the workspace. Clients
- * interested in notification of the addition and removal of
- * memory blocks may register as a memory block listener with
- * the memory block manager.
- * @see org.eclipse.debug.core.model.IMemoryBlock
- * @see org.eclipse.debug.core.IMemoryBlockListener
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface IMemoryBlockManager {
-
- /**
- * Adds the given memory blocks to the memory block manager.
- * Registered memory block listeners are notified of the additions.
- * Has no effect on memory blocks that are already registered.
- *
- * @param memoryBlocks memory blocks to add
- */
- public void addMemoryBlocks(IMemoryBlock[] memoryBlocks);
-
- /**
- * Removes the given memory blocks from the memory block manager.
- * Registered memory block listeners are notified of the removals.
- * Has no effect on memory blocks that are not currently registered.
- *
- * @param memoryBlocks memory blocks to remove
- */
- public void removeMemoryBlocks(IMemoryBlock[] memoryBlocks);
-
- /**
- * Registers the given listener for memory block addition and
- * removal notification. Has no effect if an identical listener
- * is already registered.
- *
- * @param listener the listener to add
- */
- public void addListener(IMemoryBlockListener listener);
-
- /**
- * Unregisters the given listener for memory block addition and
- * removal notification. Has no effect if an identical listener
- * is not already registered.
- *
- * @param listener the listener to remove
- */
- public void removeListener(IMemoryBlockListener listener);
-
- /**
- * Returns all registered memory blocks.
- *
- * @return all registered memory blocks
- */
- public IMemoryBlock[] getMemoryBlocks();
-
- /**
- * Returns all registered memory blocks associated with the
- * given debug target. That is, all registered memory blocks
- * whose <code>getDebugTarget()</code> method returns the
- * specified debug target.
- *
- * @param debugTarget target for which memory blocks have been requested
- * @return all registered memory blocks associated with the given debug
- * target
- */
- public IMemoryBlock[] getMemoryBlocks(IDebugTarget debugTarget);
-
- /**
- * Returns all registered memory blocks that originated from the
- * given memory retrieval source.
- *
- * @param source source for which memory blocks have been requested
- * @return all registered memory blocks that originated from the
- * given memory retrieval source
- */
- public IMemoryBlock[] getMemoryBlocks(IMemoryBlockRetrieval source);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IProcessFactory.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IProcessFactory.java
deleted file mode 100644
index 802ffc917..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IProcessFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-import java.util.Map;
-
-import org.eclipse.debug.core.model.IProcess;
-
-/**
- * A process factory is used to override default process (<code>IProcess</code>)
- * creation by the debug plug-in, and can be contributed via plug-in XML. When a
- * new process is created via <code>DebugPlugin.newProcess(..)</code>, the
- * launch configuration associated with the specified launch is consulted for
- * a process factory attribute (<code>DebugPlugin.ATTR_PROCESS_FACTORY_ID</code>). If
- * present, the associated process factory is consulted to create a process for
- * the launch. If not present a default process implementation is created and
- * returned by the debug plug-in.
- * <p>
- * Following is example plug-in XML that contributes a process factory.
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.processFactories"&gt;
- * &lt;processFactory
- * id="com.example.ExampleIdentifier"
- * class="com.example.ExampleProcessFactory"&gt;
- * &lt;/processFactory&gt;
- * &lt;/extension&gt;
- * </pre>
- * The attributes are specified as follows:
- * <ul>
- * <li>id - a unique identifier for this extension point</li>
- * <li>class - the fully qualified name of a class the implements
- * <code>IProcessFactory</code></li>
- * </ul>
- * </p>
- * <p>
- * Clients contributing a process factory are intended to implement this interface.
- * </p>
- * @since 3.0
- */
-
-public interface IProcessFactory {
-
- /**
- * Creates and returns a new process representing the given
- * <code>java.lang.Process</code>. A streams proxy is created
- * for the I/O streams in the system process. The process
- * is added to the given launch, and the process is initialized
- * with the given attribute map.
- *
- * @param launch the launch the process is contained in
- * @param process the system process to wrap
- * @param label the label assigned to the process
- * @param attributes initial values for the attribute map
- * @return the process
- * @see IProcess
- */
- public IProcess newProcess(ILaunch launch, Process process, String label, Map attributes);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IRequest.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IRequest.java
deleted file mode 100644
index 851a4c80b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IRequest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * Common base interface for an asynchronously processed request. A request may succeed,
- * fail or be canceled as indicated by the request's status. When a request is complete
- * the client fulfilling the request must call <code>done()</code> on the request whether
- * the operation succeeds, fails, or is canceled.
- * <p>
- * Specific requests (sub types of this interface) often include data pertaining to
- * the request and usually contain results of the request.
- * </p>
- * <p>
- * Clients are expected to poll a request (using <code>isCanceled</code>)
- * periodically and abort at their earliest convenience calling <code>done()</code>.
- * A request can be canceled by the originator of the request or a client
- * fulfilling a request.
- * </p>
- * <p>
- * Clients that invoke request handlers may implement this interface.
- * </p>
- * @since 3.3
- */
-public interface IRequest {
-
- /**
- * Sets the status for this request indicating whether this request
- * succeeded, failed, or was canceled. When a request fails, the status
- * indicates why the request failed. A <code>null</code> status is considered
- * to be successful. Only clients fulfilling a request should call this
- * method. Clients making a request are not intended to call this method.
- *
- * @param status request status or <code>null</code>
- */
- public void setStatus(IStatus status);
-
- /**
- * Returns the status of this request, or <code>null</code>.
- *
- * @return request status - <code>null</code> is equivalent
- * to an OK status
- */
- public IStatus getStatus();
-
- /**
- * Indicates this request is complete. Clients must call this method
- * whether the request succeeds, fails, or is cancelled to indicate that
- * processing is complete. Only clients fulfilling a request should call this
- * method. Clients making a request are not intended to call this method.
- */
- public void done();
-
- /**
- * Cancels this request. A request may be canceled by the originator of request
- * or a client fulfilling a request. Optionally a canceled status may be set on
- * this request with more details. A client fulfilling a request must still call
- * <code>done()</code> to indicate the request is complete.
- */
- public void cancel();
-
- /**
- * Returns whether this request has been canceled.
- * <p>
- * Clients fulfilling a request are expected to poll a request (using <code>isCanceled</code>)
- * periodically and abort at their earliest convenience calling <code>done()</code>.
- * A request can be canceled by the originator of the request or a processor fulfilling a
- * request.
- * </p>
- * @return whether this request has been canceled
- */
- public boolean isCanceled();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IStatusHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IStatusHandler.java
deleted file mode 100644
index 571b06408..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IStatusHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-
-/**
- * A status handler registers to handle a specific status - error
- * or otherwise. Provides a mechanism for separating core (headless)
- * function from UI interaction. The debug plug-in provides a
- * status handlers extension point, against which handlers can
- * register for specific status codes - identified by plug-in
- * identifier and plug-in specific status code. The interaction between
- * an object requiring a status handler (source), and the status handler
- * is defined by the source and handler.
- * <p>
- * For example, a launch configuration delegate might encounter a timeout
- * while launching an application. In this case the delegate could abort
- * or, via the use of a status handler, prompt the user to continue. This
- * allows the launcher to be implemented in a plug-in that does not require
- * UI support, and allows another (UI) plug-in to register a handler.
- * </p>
- * <p>
- * A status handler extension is defined in <code>plugin.xml</code>.
- * Following is an example definition of a status handler extension.
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.statusHandlers"&gt;
- * &lt;statusHandler
- * id="com.example.ExampleIdentifier"
- * class="com.example.ExampleStatusHandler"
- * plugin="com.example.ExamplePluginId"
- * code="123"&gt;
- * &lt;/statusHandler&gt;
- * &lt;/extension&gt;
- * </pre>
- * The attributes are specified as follows:
- * <ul>
- * <li><code>id</code> specifies a unique identifier for this status handler.</li>
- * <li><code>class</code> specifies the fully qualified name of the Java class
- * that implements <code>IStatusHandler</code>.</li>
- * <li><code>plugin</code> plug-in identifier that corresponds to the
- * plug-in of the status this handler is registered for (i.e.
- * <code>IStatus.getPlugin()</code>).</li>
- * <li><code>code</code> specifies the status code this handler
- * is registered for.</li>
- * </ul>
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see DebugPlugin#getStatusHandler(IStatus)
- * @since 2.0
- */
-
-public interface IStatusHandler {
-
- /**
- * Notifies this status handler that the given status has been
- * generated by the specified source object and requires resolution.
- *
- * @param status the status to handle
- * @param source the object delegating to this status handler
- * the given status
- * @return an object representing the resolution of the status
- * @exception CoreException if unable to resolve the status
- */
- public Object handleStatus(IStatus status, Object source) throws CoreException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/IStreamListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/IStreamListener.java
deleted file mode 100644
index a074c89f8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/IStreamListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import org.eclipse.debug.core.model.IStreamMonitor;
-
-/**
- * A stream listener is notified of changes
- * to a stream monitor.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IStreamMonitor
- */
-public interface IStreamListener {
- /**
- * Notifies this listener that text has been appended to
- * the given stream monitor.
- *
- * @param text the appended text
- * @param monitor the stream monitor to which text was appended
- */
- public void streamAppended(String text, IStreamMonitor monitor);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java
deleted file mode 100644
index 2ce48cca6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/Launch.java
+++ /dev/null
@@ -1,594 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Pawel Piech - Bug 82003: The IDisconnect implementation by Launch module is too restrictive.
- *******************************************************************************/
-package org.eclipse.debug.core;
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IDisconnect;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.ISourceLocator;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-import org.eclipse.debug.internal.core.LaunchManager;
-
-/**
- * A launch is the result of launching a debug session
- * and/or one or more system processes. This class provides
- * a public implementation of <code>ILaunch</code> for client
- * use.
- * <p>
- * Clients may instantiate this class. Clients may subclass this class.
- * </p>
- * @see ILaunch
- * @see ILaunchManager
- */
-
-public class Launch extends PlatformObject implements ILaunch, IDisconnect, ILaunchListener, ILaunchConfigurationListener, IDebugEventSetListener {
-
- /**
- * The debug targets associated with this
- * launch (the primary target is the first one
- * in this collection), or empty if
- * there are no debug targets.
- */
- private List fTargets= new ArrayList();
-
- /**
- * The configuration that was launched, or null.
- */
- private ILaunchConfiguration fConfiguration= null;
-
- /**
- * The system processes associated with
- * this launch, or empty if none.
- */
- private List fProcesses= new ArrayList();
-
- /**
- * The source locator to use in the debug session
- * or <code>null</code> if not supported.
- */
- private ISourceLocator fLocator= null;
-
- /**
- * The mode this launch was launched in.
- */
- private String fMode;
-
- /**
- * Table of client defined attributes
- */
- private HashMap fAttributes;
-
- /**
- * Flag indicating that change notification should
- * be suppressed. <code>true</code> until this
- * launch has been initialized.
- */
- private boolean fSuppressChange = true;
-
- /**
- * Constructs a launch with the specified attributes.
- *
- * @param launchConfiguration the configuration that was launched
- * @param mode the mode of this launch - run or debug (constants
- * defined by <code>ILaunchManager</code>)
- * @param locator the source locator to use for this debug session, or
- * <code>null</code> if not supported
- */
- public Launch(ILaunchConfiguration launchConfiguration, String mode, ISourceLocator locator) {
- fConfiguration = launchConfiguration;
- setSourceLocator(locator);
- fMode = mode;
- fSuppressChange = false;
- getLaunchManager().addLaunchListener(this);
- getLaunchManager().addLaunchConfigurationListener(this);
- }
-
- /**
- * Registers debug event listener.
- */
- private void addEventListener() {
- DebugPlugin.getDefault().addDebugEventListener(this);
- }
-
- /**
- * Removes debug event listener.
- */
- private void removeEventListener() {
- DebugPlugin.getDefault().removeDebugEventListener(this);
- }
-
- /**
- * @see org.eclipse.debug.core.model.ITerminate#canTerminate()
- */
- public boolean canTerminate() {
- List processes = getProcesses0();
- for (int i = 0; i < processes.size(); i++) {
- IProcess process = (IProcess)processes.get(i);
- if (process.canTerminate()) {
- return true;
- }
- }
- List targets = getDebugTargets0();
- for (int i = 0; i < targets.size(); i++) {
- IDebugTarget target = (IDebugTarget)targets.get(i);
- if (target.canTerminate() || target.canDisconnect()) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @see ILaunch#getChildren()
- */
- public Object[] getChildren() {
- ArrayList children = new ArrayList(getDebugTargets0());
- children.addAll(getProcesses0());
- return children.toArray();
- }
-
- /**
- * @see ILaunch#getDebugTarget()
- */
- public IDebugTarget getDebugTarget() {
- if (!getDebugTargets0().isEmpty()) {
- return (IDebugTarget)getDebugTargets0().get(0);
- }
- return null;
- }
-
- /**
- * @see ILaunch#getProcesses()
- */
- public IProcess[] getProcesses() {
- return (IProcess[])getProcesses0().toArray(new IProcess[getProcesses0().size()]);
- }
-
- /**
- * Returns the processes associated with this
- * launch, in its internal form - a list.
- *
- * @return list of processes
- */
- protected List getProcesses0() {
- return fProcesses;
- }
-
- /**
- * @see ILaunch#getSourceLocator()
- */
- public ISourceLocator getSourceLocator() {
- return fLocator;
- }
-
- /**
- * @see ILaunch#setSourceLocator(ISourceLocator)
- */
- public void setSourceLocator(ISourceLocator sourceLocator) {
- fLocator = sourceLocator;
- }
-
- /**
- * @see org.eclipse.debug.core.model.ITerminate#isTerminated()
- */
- public boolean isTerminated() {
- if (getProcesses0().isEmpty() && getDebugTargets0().isEmpty()) {
- return false;
- }
-
- Iterator processes = getProcesses0().iterator();
- while (processes.hasNext()) {
- IProcess process = (IProcess)processes.next();
- if (!process.isTerminated()) {
- return false;
- }
- }
-
- Iterator targets = getDebugTargets0().iterator();
- while (targets.hasNext()) {
- IDebugTarget target = (IDebugTarget)targets.next();
- if (!(target.isTerminated() || target.isDisconnected())) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * @see org.eclipse.debug.core.model.ITerminate#terminate()
- */
- public void terminate() throws DebugException {
- MultiStatus status=
- new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, DebugCoreMessages.Launch_terminate_failed, null);
- //stop targets first to free up and sockets, etc held by the target
- // terminate or disconnect debug target if it is still alive
- IDebugTarget[] targets = getDebugTargets();
- for (int i = 0; i < targets.length; i++) {
- IDebugTarget target= targets[i];
- if (target != null) {
- if (target.canTerminate()) {
- try {
- target.terminate();
- } catch (DebugException e) {
- status.merge(e.getStatus());
- }
- } else {
- if (target.canDisconnect()) {
- try {
- target.disconnect();
- } catch (DebugException de) {
- status.merge(de.getStatus());
- }
- }
- }
- }
- }
- //second kill the underlying process
- // terminate the system processes
- IProcess[] processes = getProcesses();
- for (int i = 0; i < processes.length; i++) {
- IProcess process = processes[i];
- if (process.canTerminate()) {
- try {
- process.terminate();
- } catch (DebugException e) {
- status.merge(e.getStatus());
- }
- }
- }
- if (status.isOK()) {
- return;
- }
- IStatus[] children= status.getChildren();
- if (children.length == 1) {
- throw new DebugException(children[0]);
- }
- throw new DebugException(status);
- }
-
- /**
- * @see ILaunch#getLaunchMode()
- */
- public String getLaunchMode() {
- return fMode;
- }
-
- /**
- * @see ILaunch#getLaunchConfiguration()
- */
- public ILaunchConfiguration getLaunchConfiguration() {
- return fConfiguration;
- }
-
- /**
- * @see ILaunch#setAttribute(String, String)
- */
- public void setAttribute(String key, String value) {
- if (fAttributes == null) {
- fAttributes = new HashMap(5);
- }
- fAttributes.put(key, value);
- }
-
- /**
- * @see ILaunch#getAttribute(String)
- */
- public String getAttribute(String key) {
- if (fAttributes == null) {
- return null;
- }
- return (String)fAttributes.get(key);
- }
-
- /**
- * @see ILaunch#getDebugTargets()
- */
- public IDebugTarget[] getDebugTargets() {
- return (IDebugTarget[])fTargets.toArray(new IDebugTarget[fTargets.size()]);
- }
-
- /**
- * Returns the debug targets associated with this
- * launch, in its internal form - a list
- *
- * @return list of debug targets
- */
- protected List getDebugTargets0() {
- return fTargets;
- }
-
- /**
- * @see ILaunch#addDebugTarget(IDebugTarget)
- */
- public void addDebugTarget(IDebugTarget target) {
- if (target != null) {
- if (!getDebugTargets0().contains(target)) {
- addEventListener();
- getDebugTargets0().add(target);
- fireChanged();
- }
- }
- }
-
- /**
- * @see ILaunch#removeDebugTarget(IDebugTarget)
- */
- public void removeDebugTarget(IDebugTarget target) {
- if (target != null) {
- if (getDebugTargets0().remove(target)) {
- fireChanged();
- }
- }
- }
-
- /**
- * @see ILaunch#addProcess(IProcess)
- */
- public void addProcess(IProcess process) {
- if (process != null) {
- if (!getProcesses0().contains(process)) {
- addEventListener();
- getProcesses0().add(process);
- fireChanged();
- }
- }
- }
-
- /**
- * @see ILaunch#removeProcess(IProcess)
- */
- public void removeProcess(IProcess process) {
- if (process != null) {
- if (getProcesses0().remove(process)) {
- fireChanged();
- }
- }
- }
-
- /**
- * Adds the given processes to this launch.
- *
- * @param processes processes to add
- */
- protected void addProcesses(IProcess[] processes) {
- if (processes != null) {
- for (int i = 0; i < processes.length; i++) {
- addProcess(processes[i]);
- fireChanged();
- }
- }
- }
-
- /**
- * Notifies listeners that this launch has changed.
- * Has no effect of this launch has not yet been
- * properly created/initialized.
- */
- protected void fireChanged() {
- if (!fSuppressChange) {
- ((LaunchManager)getLaunchManager()).fireUpdate(this, LaunchManager.CHANGED);
- ((LaunchManager)getLaunchManager()).fireUpdate(new ILaunch[] {this}, LaunchManager.CHANGED);
- }
- }
-
- /**
- * Notifies listeners that this launch has terminated.
- * Has no effect of this launch has not yet been
- * properly created/initialized.
- */
- protected void fireTerminate() {
- if (!fSuppressChange) {
- ((LaunchManager)getLaunchManager()).fireUpdate(this, LaunchManager.TERMINATE);
- ((LaunchManager)getLaunchManager()).fireUpdate(new ILaunch[] {this}, LaunchManager.TERMINATE);
- }
- removeEventListener();
- }
-
- /**
- * @see ILaunch#hasChildren()
- */
- public boolean hasChildren() {
- return getProcesses0().size() > 0 || (getDebugTargets0().size() > 0);
- }
-
- /**
- * Returns whether any processes or targets can be disconnected.
- * Ones that are already terminated or disconnected are ignored.
- *
- * @see org.eclipse.debug.core.model.IDisconnect#canDisconnect()
- */
- public boolean canDisconnect() {
- List processes = getProcesses0();
- for (int i = 0; i < processes.size(); i++) {
- if (processes.get(i) instanceof IDisconnect) {
- IDisconnect process = (IDisconnect)processes.get(i);
- if (process.canDisconnect()) {
- return true;
- }
- }
- }
- List targets = getDebugTargets0();
- for (int i = 0; i < targets.size(); i++) {
- if ( ((IDebugTarget)targets.get(i)).canDisconnect() ) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IDisconnect#disconnect()
- */
- public void disconnect() throws DebugException {
- List processes = getProcesses0();
- for (int i = 0; i < processes.size(); i++) {
- if (processes.get(i) instanceof IDisconnect) {
- IDisconnect disconnect = (IDisconnect)processes.get(i);
- if (disconnect.canDisconnect()) {
- disconnect.disconnect();
- }
- }
- }
- List targets = getDebugTargets0();
- for (int i = 0; i < targets.size(); i++) {
- IDebugTarget debugTarget = (IDebugTarget)targets.get(i);
- if (debugTarget.canDisconnect()) {
- debugTarget.disconnect();
- }
- }
- }
-
- /**
- * Returns whether all of the contained targets and processes are
- * disconnected. Processes that don't support disconnecting are not
- * counted.
- *
- * @see org.eclipse.debug.core.model.IDisconnect#isDisconnected()
- */
- public boolean isDisconnected() {
- List processes = getProcesses0();
- for (int i = 0; i < processes.size(); i++) {
- if (processes.get(i) instanceof IDisconnect) {
- IDisconnect process = (IDisconnect)processes.get(i);
- if (!process.isDisconnected()) {
- return false;
- }
- }
- }
- List targets = getDebugTargets0();
- for (int i = 0; i < targets.size(); i++) {
- if ( !((IDebugTarget)targets.get(i)).isDisconnected() ) {
- return false;
- }
- }
- // only return true if there are processes or targets that are disconnected
- return hasChildren();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchRemoved(org.eclipse.debug.core.ILaunch)
- */
- public void launchRemoved(ILaunch launch) {
- if (this.equals(launch)) {
- removeEventListener();
- getLaunchManager().removeLaunchListener(this);
- getLaunchManager().removeLaunchConfigurationListener(this);
- }
- }
-
- /**
- * Returns the launch manager.
- *
- * @return the launch manager.
- */
- protected ILaunchManager getLaunchManager() {
- return DebugPlugin.getDefault().getLaunchManager();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchAdded(org.eclipse.debug.core.ILaunch)
- */
- public void launchAdded(ILaunch launch) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchChanged(org.eclipse.debug.core.ILaunch)
- */
- public void launchChanged(ILaunch launch) {
- }
-
- /* (non-Javadoc)
- *
- * If the launch configuration this launch is associated with is
- * moved, update the underlying handle to the new location.
- *
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationAdded(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationAdded(ILaunchConfiguration configuration) {
- ILaunchConfiguration from = getLaunchManager().getMovedFrom(configuration);
- if (from != null && from.equals(getLaunchConfiguration())) {
- fConfiguration = configuration;
- fireChanged();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationChanged(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationChanged(ILaunchConfiguration configuration) {}
-
- /* (non-Javadoc)
- *
- * Update the launch configuration associated with this launch if the
- * underlying configuration is deleted.
- *
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationRemoved(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
- if (configuration.equals(getLaunchConfiguration())) {
- if (getLaunchManager().getMovedTo(configuration) == null) {
- fConfiguration = null;
- fireChanged();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[])
- */
- public void handleDebugEvents(DebugEvent[] events) {
- for (int i = 0; i < events.length; i++) {
- DebugEvent event = events[i];
- if (event.getKind() == DebugEvent.TERMINATE) {
- Object object = event.getSource();
- ILaunch launch = null;
- if (object instanceof IProcess) {
- launch = ((IProcess)object).getLaunch();
- } else if (object instanceof IDebugTarget) {
- launch = ((IDebugTarget)object).getLaunch();
- }
- if (this.equals(launch)) {
- if (isTerminated()) {
- fireTerminate();
- }
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter.equals(ILaunch.class)) {
- return this;
- }
- //CONTEXTLAUNCHING
- if(adapter.equals(ILaunchConfiguration.class)) {
- return getLaunchConfiguration();
- }
- return super.getAdapter(adapter);
- }
-
-
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandHandler.java
deleted file mode 100644
index 9769aacda..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-
-
-/**
- * Handles a command for a debugger. Specific command handlers extend this interface.
- * <p>
- * The debug platform provides actions for common debug commands that operate against
- * these handler interfaces. For example, the platform provides a terminate action that
- * operates on the active debug context (selected element in the debug view). The action
- * delegates to the active context's {@link ITerminateHandler} implementation to update
- * its enabled state and execute the command. Debug model elements may implement supported
- * command handler interfaces directly or provide them as adapters. The debug platform
- * provides implementations of handlers for standard debug models.
- * </p>
- * @see org.eclipse.core.runtime.IAdaptable
- * @see IDisconnectHandler
- * @see IDropToFrameHandler
- * @see IResumeHandler
- * @see IStepFiltersHandler
- * @see IStepIntoHandler
- * @see IStepOverHandler
- * @see IStepReturnHandler
- * @see ISuspendHandler
- * @see ITerminateHandler
- * @since 3.3
- */
-public interface IDebugCommandHandler {
-
- /**
- * Determines whether this handler can execute on the elements specified
- * in the given request by reporting enabled state to the request.
- * <p>
- * Implementations must be non-blocking and may respond asynchronously to the
- * given request. Errors can reported by setting an appropriate status
- * on the given request. A request can be canceled by this handler or caller.
- * A <code>null</code> status is equivalent to an OK status.
- * When a request succeeds, fails, or is canceled, implementations must call
- * <code>done()</code> on the given request.
- * </p>
- * <p>
- * Clients are expected to poll the request (using <code>isCanceled</code>)
- * periodically and abort at their earliest convenience calling <code>done()</code>
- * on the request.
- * </p>
- * @param request specifies elements to operate on and collects enabled state
- */
- public void canExecute(IEnabledStateRequest request);
-
- /**
- * Executes this command on the elements specified in the given request
- * reporting status to the given request and returns whether this handler should
- * remain enabled while the command is executing.
- * <p>
- * Implementations must be non-blocking and may respond asynchronously to the
- * given request. Errors can reported by setting an appropriate status
- * on the given request. A request can be canceled by this handler or the caller.
- * A <code>null</code> status is equivalent to an OK status. When a request is
- * complete, has encountered an error, or cancelled, implementations must call
- * <code>done()</code> on the given collector.
- * </p>
- * <p>
- * Handlers are expected to poll the request (using <code>isCanceled</code>)
- * periodically and abort at their earliest convenience calling <code>done()</code>
- * on the request.
- * </p>
- * @param request specifies elements to operate on and collects execution status
- * @return whether this handler remains enabled while command is executing
- */
- public boolean execute(IDebugCommandRequest request);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandRequest.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandRequest.java
deleted file mode 100644
index b72100554..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDebugCommandRequest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-import org.eclipse.debug.core.IRequest;
-
-/**
- * A request to execute a command on specific elements. A debug command request is
- * passed to a {@link IDebugCommandHandler} when a command is invoked.
- * <p>
- * Clients that invoke command handlers may implement this interface.
- * </p>
- * @since 3.3
- */
-public interface IDebugCommandRequest extends IRequest {
-
- /**
- * Returns the elements to execute a command on.
- *
- * @return elements to execute a command on
- */
- public Object[] getElements();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDisconnectHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDisconnectHandler.java
deleted file mode 100644
index 99b9bd885..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDisconnectHandler.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A disconnect handler disconnects the debug user interface from
- * a debug session. Typically a disconnect handler is supported by remote
- * debuggers allowing the debug user interface to disconnect and the
- * remote process to continue.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * disconnect action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the disconnect handler registered
- * as an adapter on objects that implement {@link org.eclipse.debug.core.model.IDisconnect}.
- * </p>
- * @since 3.3
- */
-public interface IDisconnectHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDropToFrameHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDropToFrameHandler.java
deleted file mode 100644
index d600c0942..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IDropToFrameHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A drop to frame handler typically resets a program's instruction pointer
- * to the first executable line of code associated with a stack frame.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * drop to frame action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the drop to frame handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.IDropToFrame}.
- * </p>
- * @since 3.3
- */
-public interface IDropToFrameHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IEnabledStateRequest.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IEnabledStateRequest.java
deleted file mode 100644
index ee3e5b50f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IEnabledStateRequest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-
-
-/**
- * A request to update the enabled state of a command. A enabled state request
- * is passed to a {@link IDebugCommandHandler} to update the enabled state of
- * the handler.
- * <p>
- * Clients than invoke command handlers may implement this interface.
- * </p>
- * @since 3.3
- */
-public interface IEnabledStateRequest extends IDebugCommandRequest {
-
- /**
- * Sets the enabled state of a command handler.
- *
- * @param result whether enabled
- */
- public void setEnabled(boolean result);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IResumeHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IResumeHandler.java
deleted file mode 100644
index 6df44ef54..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IResumeHandler.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A resume handler typically resumes execution of a suspended thread or target.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * resume action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the resume handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.ISuspendResume}.
- * </p>
- * @since 3.3
- */
-public interface IResumeHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepFiltersHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepFiltersHandler.java
deleted file mode 100644
index 5d0b7391d..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepFiltersHandler.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * A step filters handler typically toggles the use of step filters
- * in a debug session based on the user preference setting. To determine if step filters
- * should be enabled use the method <code>isUseStepFilters()</code> in
- * {@link DebugPlugin}.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * toggle step filters action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the step filters handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.IStepFilters}.
- * </p>
- * @since 3.3
- */
-public interface IStepFiltersHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepIntoHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepIntoHandler.java
deleted file mode 100644
index 96a38cb9e..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepIntoHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A step into handler typically steps into the next instruction to
- * be executed.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * step into action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the step into handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.IStep}.
- * </p>
- * @since 3.3
- */
-public interface IStepIntoHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepOverHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepOverHandler.java
deleted file mode 100644
index 14e3b0e3a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepOverHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A step over handler typically steps over the next instruction or line
- * of code to be executed.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * step over action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the step over handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.IStep}.
- * </p>
- * @since 3.3
- */
-public interface IStepOverHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepReturnHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepReturnHandler.java
deleted file mode 100644
index 01a8edafc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/IStepReturnHandler.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A step return handler typically steps out of the current method or function
- * that the debugger is suspended in.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * step return action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the step return handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.IStep}.
- * </p>
- * @since 3.3
- */
-public interface IStepReturnHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ISuspendHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ISuspendHandler.java
deleted file mode 100644
index 39dc939ad..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ISuspendHandler.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A suspend handler typically suspends an executing thread or target.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * suspend action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the suspend handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.ISuspendResume}.
- * </p>
- * @since 3.3
- */
-public interface ISuspendHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ITerminateHandler.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ITerminateHandler.java
deleted file mode 100644
index db2600893..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/ITerminateHandler.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.commands;
-
-/**
- * A terminate handler typically terminates an executing thread or target.
- * <p>
- * Clients may implement this interface. The debug platform provides a
- * terminate action that delegates to this handler interface. As well, the
- * debug platform provides an implementation of the terminate handler registered
- * as an adapter on objects that implement
- * {@link org.eclipse.debug.core.model.ITerminate}.
- * </p>
- * @since 3.3
- */
-public interface ITerminateHandler extends IDebugCommandHandler {
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/package.html b/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/package.html
deleted file mode 100644
index 5bae793de..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/commands/package.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Debug Commands</title>
-</head>
-
-<body link="#0000FF" vlink="#800080">
-
-<p align="left">Provides a set of interfaces for common debug commands.</p>
-
-<h2 align="left">Package Specification</h2>
-
-<p>This package provides a set interfaces for common debug commands. A debug command
- represent a debugger function that can be enabled or disabled and executed.
- The debug platform provides actions corresponding to the common debug commands.
- The actions delegate to the command handler interfaces to determine enabled
- state and execute.</p>
-<p>A debugger implementation can provide its own implementation of a command by
- implementing a command handler interface directly, or by registering an adapter
- that implements the command handler interface. The debug platform's actions
- update enabled state and execute based on the active debug context. The debug
- platform provides implementations of handlers for the common debug commands
- for debuggers that are an implementation of the standard debug model. For example,
- the debug platform registers an <code>IStepOverHandler</code> adapter for implementations
- of <code>IStep</code>.</p>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/Breakpoint.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/Breakpoint.java
deleted file mode 100644
index 3fd04ff38..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/Breakpoint.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import java.util.Map;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceRuleFactory;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-
-/**
- * Abstract implementation of a breakpoint. This class is
- * intended to be subclassed by implementations
- * of breakpoints.
- *
- * @see IBreakpoint
- * @since 2.0
- */
-
-public abstract class Breakpoint extends PlatformObject implements IBreakpoint {
-
- static {
- // making sure that the BreakpointManager is correctly initialized
- // before any breakpoint marker related operation (see bug 54993)
- DebugPlugin.getDefault().getBreakpointManager().getBreakpoints();
- }
-
- /**
- * Underlying marker.
- */
- private IMarker fMarker= null;
-
- /**
- * @see IBreakpoint#setMarker(IMarker)
- */
- public void setMarker(IMarker marker) throws CoreException {
- fMarker= marker;
- }
-
- /**
- * @see Object#equals(Object)
- */
- public boolean equals(Object item) {
- if (item instanceof IBreakpoint) {
- return getMarker().equals(((IBreakpoint)item).getMarker());
- }
- return false;
- }
-
- /**
- * @see Object#hashCode()
- */
- public int hashCode() {
- return getMarker().hashCode();
- }
-
- /**
- * @see IBreakpoint#setEnabled(boolean)
- */
- public void setEnabled(boolean enabled) throws CoreException {
- if (enabled != isEnabled()) {
- setAttribute(ENABLED, enabled);
- }
- }
-
- /**
- * @see IBreakpoint#isEnabled()
- */
- public boolean isEnabled() throws CoreException {
- return getMarker().getAttribute(ENABLED, false);
- }
-
- /**
- * @see IBreakpoint#isRegistered()
- */
- public boolean isRegistered() throws CoreException {
- IMarker marker= getMarker();
- return marker.exists() && marker.getAttribute(REGISTERED, true);
- }
-
- /**
- * @see IBreakpoint#setRegistered(boolean)
- */
- public void setRegistered(boolean registered) throws CoreException {
- if (isRegistered() != registered) {
- setAttribute(REGISTERED, registered);
- IBreakpointManager mgr = DebugPlugin.getDefault().getBreakpointManager();
- if (registered) {
- mgr.addBreakpoint(this);
- } else {
- mgr.removeBreakpoint(this, false);
- }
- }
- }
-
- /**
- * @see IBreakpoint#delete()
- */
- public void delete() throws CoreException {
- DebugPlugin.getDefault().getBreakpointManager().removeBreakpoint(this, false);
- getMarker().delete();
- }
-
- /**
- * @see IBreakpoint#getMarker()
- */
- public IMarker getMarker() {
- return fMarker;
- }
-
- /**
- * @see IBreakpoint#isPersisted()
- */
- public boolean isPersisted() throws CoreException {
- return getMarker().getAttribute(PERSISTED, true);
- }
-
- /**
- * @see IBreakpoint#setPersisted(boolean)
- */
- public void setPersisted(boolean persisted) throws CoreException {
- if (isPersisted() != persisted) {
- setAttributes(new String[] {PERSISTED, IMarker.TRANSIENT}, new Object[] {Boolean.valueOf(persisted), Boolean.valueOf(!persisted)});
- }
- }
-
- /**
- * Convenience method to set the given boolean attribute of
- * this breakpoint's underlying marker in a workspace
- * runnable. Setting marker attributes in a workspace runnable
- * prevents deadlock.
- *
- * @param attributeName attribute name
- * @param value attribute value
- * @exception CoreException is setting the attribute fails
- * @see IMarker#setAttribute(java.lang.String, boolean)
- */
- protected void setAttribute(final String attributeName, final boolean value) throws CoreException {
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- ensureMarker().setAttribute(attributeName, value);
- }
- };
-
- workspace.run(runnable, getMarkerRule(), 0, null);
- }
-
- /**
- * Convenience method to set the given integer attribute of
- * this breakpoint's underlying marker in a workspace
- * runnable. Setting marker attributes in a workspace runnable
- * prevents deadlock.
- *
- * @param attributeName attribute name
- * @param value attribute value
- * @exception CoreException is setting the attribute fails
- * @see IMarker#setAttribute(java.lang.String, int)
- */
- protected void setAttribute(final String attributeName, final int value) throws CoreException {
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- ensureMarker().setAttribute(attributeName, value);
- }
- };
-
- workspace.run(runnable, getMarkerRule(), 0, null);
- }
-
- /**
- * Convenience method to set the given attribute of
- * this breakpoint's underlying marker in a workspace
- * runnable. Setting marker attributes in a workspace runnable
- * prevents deadlock.
- *
- * @param attributeName attribute name
- * @param value attribute value
- * @exception CoreException is setting the attribute fails
- * @see IMarker#setAttribute(java.lang.String, java.lang.Object)
- */
- protected void setAttribute(final String attributeName, final Object value) throws CoreException {
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- ensureMarker().setAttribute(attributeName, value);
- }
- };
-
- workspace.run(runnable, getMarkerRule(), 0, null);
- }
-
- /**
- * Convenience method to set the given attributes of
- * this breakpoint's underlying marker in a workspace
- * runnable. Setting marker attributes in a workspace runnable
- * prevents deadlock.
- *
- * @param attributeNames attribute names
- * @param values attribute values
- * @exception CoreException is setting the attributes fails
- * @see IMarker#setAttributes(java.lang.String[], java.lang.Object[])
- */
- protected void setAttributes(final String[] attributeNames, final Object[] values) throws CoreException {
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- ensureMarker().setAttributes(attributeNames, values);
- }
- };
-
- workspace.run(runnable, getMarkerRule(), IWorkspace.AVOID_UPDATE, null);
- }
-
- /**
- * Convenience method to set the attributes of
- * this breakpoint's underlying marker in a workspace
- * runnable. Setting marker attributes in a workspace runnable
- * prevents deadlock.
- *
- * @param attributes attribute map
- * @exception CoreException is setting the attributes fails
- * @see IMarker#setAttributes(java.util.Map)
- */
- protected void setAttributes(final Map attributes) throws CoreException{
- IWorkspace workspace= ResourcesPlugin.getWorkspace();
- IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- ensureMarker().setAttributes(attributes);
- }
- };
-
- workspace.run(runnable, getMarkerRule(), IWorkspace.AVOID_UPDATE, null);
- }
-
- /**
- * Returns the marker associated with this breakpoint.
- *
- * @return breakpoint marker
- * @exception DebugException if no marker is associated with
- * this breakpoint or the associated marker does not exist
- */
- protected IMarker ensureMarker() throws DebugException {
- IMarker m = getMarker();
- if (m == null || !m.exists()) {
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED,
- DebugCoreMessages.Breakpoint_no_associated_marker, null));
- }
- return m;
- }
-
- /**
- * Returns whether this breakpoint has an associated marker that exists.
- *
- * @return returns whether this breakpoint has an associated marker that exists
- * @since 2.1
- */
- protected boolean markerExists() {
- IMarker m = getMarker();
- return (m != null && m.exists());
- }
-
- /**
- * Returns a scheduling rule to use when modifying markers on the given resource,
- * possibly <code>null</code>.
- *
- * @param resource a resource on which a marker will be created, modified, or deleted
- * @return a scheduling rule to use when modifying markers on the given resource
- * possibly <code>null</code>
- * @since 3.1
- */
- protected ISchedulingRule getMarkerRule(IResource resource) {
- ISchedulingRule rule = null;
- if (resource != null) {
- IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
- rule = ruleFactory.markerRule(resource);
- }
- return rule;
- }
-
- /**
- * Returns a scheduling rule to use when modifying or deleting this breakpoint's marker,
- * possibly <code>null</code>. This method is only valid when this breakpoint's
- * marker has already been created. When creating a marker on a specific resource,
- * use <code>getMarkerRule(IResource)</code> instead.
- *
- * @return a scheduling rule to use when modifying or deleting this breakpoint's marker
- * @since 3.1
- */
- protected ISchedulingRule getMarkerRule() {
- ISchedulingRule rule = null;
- IMarker marker = getMarker();
- if (marker != null) {
- IResource resource = marker.getResource();
- if (resource != null) {
- IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
- rule = ruleFactory.markerRule(resource);
- }
- }
- return rule;
- }
-
- /**
- * Execute the given workspace runnable with the scheduling rule to use when running the operation.
- *
- * @param rule the rule to use when running the operation
- * @param wr the runnable operation
- * @throws DebugException If a core exception occurs performing the operation
- * @since 3.1
- */
- protected void run(ISchedulingRule rule, IWorkspaceRunnable wr) throws DebugException {
- try {
- ResourcesPlugin.getWorkspace().run(wr, rule, 0, null);
- } catch (CoreException e) {
- throw new DebugException(e.getStatus());
- }
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/DebugElement.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/DebugElement.java
deleted file mode 100644
index 2d139433f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/DebugElement.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * Implementation of common function for debug elements.
- * <p>
- * Clients may subclass this class.
- * </p>
- * @since 3.1
- */
-public abstract class DebugElement extends PlatformObject implements IDebugElement {
-
- private IDebugTarget fTarget;
-
- /**
- * Constructs a debug element referring to an artifact in the given
- * debug target.
- *
- * @param target debug target containing this element
- */
- public DebugElement(IDebugTarget target) {
- fTarget = target;
- }
-
- /* (non-Javadoc)
- *
- * Debug target implementation should override this method.
- *
- * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget()
- */
- public IDebugTarget getDebugTarget() {
- return fTarget;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IDebugElement#getLaunch()
- */
- public ILaunch getLaunch() {
- return getDebugTarget().getLaunch();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter == IDebugElement.class) {
- return this;
- }
-
- // a debug target may not implement IStepFilters
- if (adapter == IStepFilters.class) {
- if (getDebugTarget() instanceof IStepFilters)
- return getDebugTarget();
- }
- if (adapter == IDebugTarget.class) {
- return getDebugTarget();
- }
- if (adapter == ILaunch.class) {
- return getLaunch();
- }
- if (adapter == IProcess.class) {
- return getDebugTarget().getProcess();
- }
- //CONTEXTLAUNCHING
- if(adapter == ILaunchConfiguration.class) {
- return getLaunch().getLaunchConfiguration();
- }
- return super.getAdapter(adapter);
- }
-
- /**
- * Fires a debug event.
- *
- * @param event debug event to fire
- */
- public void fireEvent(DebugEvent event) {
- DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[] {event});
- }
-
- /**
- * Fires a change event for this debug element
- * with the specified detail code.
- *
- * @param detail detail code for the change event,
- * such as <code>DebugEvent.STATE</code> or <code>DebugEvent.CONTENT</code>
- */
- public void fireChangeEvent(int detail) {
- fireEvent(new DebugEvent(this, DebugEvent.CHANGE, detail));
- }
-
- /**
- * Fires a creation event for this debug element.
- */
- public void fireCreationEvent() {
- fireEvent(new DebugEvent(this, DebugEvent.CREATE));
- }
-
- /**
- * Fires a resume for this debug element with
- * the specified detail code.
- *
- * @param detail detail code for the resume event, such
- * as <code>DebugEvent.STEP_OVER</code>
- */
- public void fireResumeEvent(int detail) {
- fireEvent(new DebugEvent(this, DebugEvent.RESUME, detail));
- }
-
- /**
- * Fires a suspend event for this debug element with
- * the specified detail code.
- *
- * @param detail detail code for the suspend event, such
- * as <code>DebugEvent.BREAKPOINT</code>
- */
- public void fireSuspendEvent(int detail) {
- fireEvent(new DebugEvent(this, DebugEvent.SUSPEND, detail));
- }
-
- /**
- * Fires a terminate event for this debug element.
- */
- public void fireTerminateEvent() {
- fireEvent(new DebugEvent(this, DebugEvent.TERMINATE));
- }
-
- /**
- * Throws a debug exception with a status code of <code>TARGET_REQUEST_FAILED</code>.
- *
- * @param message exception message
- * @param e underlying exception or <code>null</code>
- * @throws DebugException
- */
- protected void requestFailed(String message, Throwable e) throws DebugException {
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.TARGET_REQUEST_FAILED, message, e));
- }
-
- /**
- * Throws a debug exception with a status code of <code>NOT_SUPPORTED</code>.
- *
- * @param message exception message
- * @param e underlying exception or <code>null</code>
- * @throws DebugException
- */
- protected void notSupported(String message, Throwable e) throws DebugException {
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.NOT_SUPPORTED, message, e));
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpoint.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpoint.java
deleted file mode 100644
index d25865518..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpoint.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * A breakpoint is capable of suspending the execution of a
- * program at a specific location when a program is running
- * in debug mode. Each breakpoint has an associated marker which
- * stores and persists all attributes associated with a breakpoint.
- * <p>
- * A breakpoint is defined in two parts:
- * <ol>
- * <li>By an extension of kind <code>"org.eclipse.debug.core.breakpoints"</code></li>
- * <li>By a marker definition that corresponds to the above breakpoint extension</li>
- * </ol>
- * <p>
- * For example, following is a definition of corresponding breakpoint
- * and breakpoint marker definitions. Note that the <code>markerType</code>
- * attribute defined by the breakpoint extension corresponds to the
- * type of the marker definition.
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.breakpoints"&gt;
- * &lt;breakpoint
- * id="com.example.Breakpoint"
- * class="com.example.Breakpoint"
- * markerType="com.example.BreakpointMarker"&gt;
- * &lt;/breakpoint&gt;
- * &lt;/extension&gt;
- * &lt;extension point="org.eclipse.core.resources.markers"&gt;
- * &lt;marker
- * id="com.example.BreakpointMarker"
- * super type="org.eclipse.debug.core.breakpointMarker"
- * attribute name ="exampleAttribute"&gt;
- * &lt;/marker&gt;
- * &lt;/extension&gt;
- * </pre>
- * <p>
- * The breakpoint manager instantiates persisted breakpoints by
- * traversing all markers that are a subtype of
- * <code>"org.eclipse.debug.core.breakpointMarker"</code>, and
- * instantiating the class defined by the <code>class</code> attribute
- * on the associated breakpoint extension. The method <code>setMarker</code>
- * is then called to associate a marker with the breakpoint.
- * </p>
- * <p>
- * Breakpoints may or may not be registered with the breakpoint manager, and
- * are persisted and restored as such. Since marker definitions only allow
- * all or none of a specific marker type to be persisted, breakpoints define
- * a <code>PERSISTED</code> attribute for selective persistence of breakpoints
- * of the same type.
- * </p>
- *
- * @since 2.0
- */
-
-public interface IBreakpoint extends IAdaptable {
-
- /**
- * Root breakpoint marker type
- * (value <code>"org.eclipse.debug.core.breakpointMarker"</code>).
- */
- public static final String BREAKPOINT_MARKER = DebugPlugin.getUniqueIdentifier() + ".breakpointMarker"; //$NON-NLS-1$
-
- /**
- * Line breakpoint marker type
- * (value <code>"org.eclipse.debug.core.lineBreakpoint"</code>).
- */
- public static final String LINE_BREAKPOINT_MARKER = DebugPlugin.getUniqueIdentifier() + ".lineBreakpointMarker"; //$NON-NLS-1$
-
- /**
- * Enabled breakpoint marker attribute (value <code>"org.eclipse.debug.core.enabled"</code>).
- * The attribute is a <code>boolean</code> corresponding to the
- * enabled state of a breakpoint.
- *
- * @see org.eclipse.core.resources.IMarker#getAttribute(String, boolean)
- */
- public static final String ENABLED= "org.eclipse.debug.core.enabled"; //$NON-NLS-1$
-
- /**
- * Debug model identifier breakpoint marker attribute (value <code>"org.eclipse.debug.core.id"</code>).
- * The attribute is a <code>String</code> corresponding to the
- * identifier of the debug model a breakpoint is associated with.
- */
- public static final String ID= "org.eclipse.debug.core.id"; //$NON-NLS-1$
-
- /**
- * Registered breakpoint marker attribute (value <code>"org.eclipse.debug.core.registered"</code>).
- * The attribute is a <code>boolean</code> corresponding to
- * whether a breakpoint has been registered with the breakpoint manager.
- *
- * @see org.eclipse.core.resources.IMarker#getAttribute(String, boolean)
- */
- public static final String REGISTERED= "org.eclipse.debug.core.registered"; //$NON-NLS-1$
-
- /**
- * Persisted breakpoint marker attribute (value <code>"org.eclipse.debug.core.persisted"</code>).
- * The attribute is a <code>boolean</code> corresponding to
- * whether a breakpoint is to be persisted across workspace
- * invocations.
- *
- * @see org.eclipse.core.resources.IMarker#getAttribute(String, boolean)
- */
- public static final String PERSISTED= "org.eclipse.debug.core.persisted"; //$NON-NLS-1$
-
- /**
- * Deletes this breakpoint's underlying marker, and removes
- * this breakpoint from the breakpoint manager.
- *
- * @exception CoreException if unable to delete this breakpoint's
- * underlying marker
- */
- public void delete() throws CoreException;
-
- /**
- * Returns the marker associated with this breakpoint, or
- * <code>null</code> if no marker is associated with this breakpoint.
- *
- * @return associated marker, or <code>null</code> if there is
- * no associated marker.
- */
- public IMarker getMarker();
- /**
- * Sets the marker associated with this breakpoint. This method is
- * called once at breakpoint creation.
- *
- * @param marker the marker to associate with this breakpoint
- * @exception CoreException if an error occurs accessing the marker
- */
- public void setMarker(IMarker marker) throws CoreException;
- /**
- * Returns the identifier of the debug model this breakpoint is
- * associated with.
- *
- * @return the identifier of the debug model this breakpoint is
- * associated with
- */
- public String getModelIdentifier();
- /**
- * Returns whether this breakpoint is enabled
- *
- * @return whether this breakpoint is enabled
- * @exception CoreException if unable to access the associated
- * attribute from this breakpoint's underlying marker
- */
- public boolean isEnabled() throws CoreException;
- /**
- * Sets the enabled state of this breakpoint. This has no effect
- * if the current enabled state is the same as specified by the
- * enabled parameter.
- *
- * @param enabled whether this breakpoint should be enabled
- * @exception CoreException if unable to set the associated attribute on
- * this breakpoint's underlying marker.
- */
- public void setEnabled(boolean enabled) throws CoreException;
-
- /**
- * Returns whether this breakpoint is currently registered with
- * the breakpoint manager.
- *
- * @return whether this breakpoint is currently registered with
- * the breakpoint manager
- * @exception CoreException if unable to access the associated
- * attribute on this breakpoint's underlying marker
- */
- public boolean isRegistered() throws CoreException;
-
- /**
- * Sets whether this breakpoint is currently registered with the
- * breakpoint manager.
- *
- * @param registered whether this breakpoint is registered with the
- * breakpoint manager
- * @exception CoreException if unable to set the associated attribute
- * on this breakpoint's underlying marker.
- */
- public void setRegistered(boolean registered) throws CoreException;
-
- /**
- * Returns whether this breakpoint is to be persisted across
- * workspace invocations, or when a project is closed and re-opened.
- * Since marker definitions only allow all/none of a specific type
- * of marker to be persisted (rather than selected markers of a
- * specific type), breakpoints define this functionality.
- *
- * @return whether this breakpoint is to be persisted
- * @exception CoreException if unable to access the associated attribute
- * on this breakpoint's underlying marker
- */
- public boolean isPersisted() throws CoreException;
-
- /**
- * Sets whether this breakpoint is to be persisted across
- * workspace invocations, or when a project is closed and re-opened.
- * Has no effect if this breakpoint's marker definition is defined as not
- * persisted. Sets the underlying <code>TRANSIENT</code> attribute on this
- * breakpoint's marker to <code>true</code>.
- *
- * @param registered whether this breakpoint is to be persisted across
- * workspace invocations
- * @exception CoreException if unable to set the associated attribute on
- * this breakpoint's underlying marker.
- */
- public void setPersisted(boolean registered) throws CoreException;
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpointImportParticipant.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpointImportParticipant.java
deleted file mode 100644
index cbafd8933..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IBreakpointImportParticipant.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.IBreakpointManager;
-
-/**
- * This interface defines a breakpoint import participant.
- * <p>
- * Participants are used during a breakpoint import operation
- * to specify how breakpoints of the associated marker type should be compared
- * and how the breakpoint should be validated once it is decided it will be imported.
- * </p>
- * <p>
- * A breakpoint import participant it contributed via the
- * <code>org.eclipse.debug.core.breakpointImportParticipants</code> extension point.
- * </p>
- * <p>
- * Following is an example of a breakpoint participant extension:
- * </p>
- * <pre>
- * <extension point="org.eclipse.debug.core.breakpointImportParticipants">
- * <importParticipant
- * participant="x.y.z.BreakpointImportParticipant"
- * type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
- * </importParticipant>
- * </extension>
- * </pre>
- * <p>
- * Clients may implement this interface.
- * </p>
- *
- * @see IBreakpointManager
- * @since 3.5
- */
-public interface IBreakpointImportParticipant {
-
- /**
- * Determines if the given attributes match the given breakpoint.
- *
- * @param attributes the map of raw breakpoint attributes read from the import memento
- * @param breakpoint the current breakpoint context in the import operation
- * @return true if the breakpoint matches the given attributes, false otherwise
- * @throws CoreException if an exception occurs
- */
- public boolean matches(Map attributes, IBreakpoint breakpoint) throws CoreException;
-
- /**
- * Verifies the state of the breakpoint once it has been imported. This method can be used to correct
- * attributes of the imported breakpoint once it has been imported.
- *
- * For example: updating line number information or character ranges to ensure the marker appears correctly
- *
- * @param breakpoint the breakpoint to be verified
- * @throws CoreException if an exception occurs
- */
- public void verify(IBreakpoint breakpoint) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugElement.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugElement.java
deleted file mode 100644
index a6defd6c5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugElement.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.debug.core.ILaunch;
-
-/**
- * A debug element represents an artifact in a program being
- * debugged.
- * <p>
- * Some methods on debug elements require communication
- * with the target program. Such methods may throw a <code>DebugException</code>
- * with a status code of <code>TARGET_REQUEST_FAILED</code>
- * when unable to complete a request due to a failure on the target.
- * Methods that require communication with the target program or require
- * the target to be in a specific state (for example, suspended), are declared
- * as such.
- * </p>
- * <p>
- * Debug elements are language independent. However, language specific
- * features can be made available via the adapter mechanism provided by
- * <code>IAdaptable</code>, or by extending the debug element interfaces.
- * A debug model is responsible for declaring any special adapters
- * its debug elements implement.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- */
-public interface IDebugElement extends IAdaptable {
-
- /**
- * Returns the unique identifier of the plug-in
- * this debug element originated from.
- *
- * @return the plug-in identifier
- */
- public String getModelIdentifier();
- /**
- * Returns the debug target this element is contained in.
- *
- * @return the debug target this element is contained in
- */
- public IDebugTarget getDebugTarget();
- /**
- * Returns the launch this element is contained in.
- *
- * @return the launch this element is contained in
- */
- public ILaunch getLaunch();
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugModelProvider.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugModelProvider.java
deleted file mode 100644
index 49fd1777a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugModelProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * A debug model provider provides debug model identifiers.
- * This interface is used as an adapter to determine what
- * debug models are associated with an adaptable object.
- * Generally, when debugging one language, only one debug
- * model is associated with a debug element. However,
- * a debug model that provides cross language debugging
- * may represent several debug models.
- * <p>
- * Clients are intended to implement this interface.
- * </p>
- * @since 3.0
- */
-public interface IDebugModelProvider {
-
- /**
- * Returns a collection of debug model identifiers.
- *
- * @return a collection of debug model identifiers
- */
- public String[] getModelIdentifiers();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugTarget.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugTarget.java
deleted file mode 100644
index 35c21b6bc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDebugTarget.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.IBreakpointListener;
-
-/**
- * A debug target is a debuggable execution context. For example, a debug target
- * may represent a debuggable process or a virtual machine. A debug target is the root
- * of the debug element hierarchy. A debug target contains threads. Minimally, a debug
- * target supports the following:
- * <ul>
- * <li>terminate
- * <li>suspend/resume
- * <li>breakpoints
- * <li>disconnect
- * </ul>
- * <p>
- * Generally, launching a debug session results in the creation of a
- * debug target. Launching is a client responsibility, as is debug target
- * creation.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see ITerminate
- * @see ISuspendResume
- * @see IBreakpointListener
- * @see IDisconnect
- * @see IMemoryBlockRetrieval
- * @see org.eclipse.debug.core.ILaunch
- */
-public interface IDebugTarget extends IDebugElement, ITerminate, ISuspendResume, IBreakpointListener, IDisconnect, IMemoryBlockRetrieval {
- /**
- * Returns the system process associated with this debug target.
- *
- * @return the system process associated with this debug target
- */
- public IProcess getProcess();
- /**
- * Returns the threads contained in this debug target. An
- * empty collection is returned if this debug target contains
- * no threads.
- *
- * @return a collection of threads
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li></ul>
- * @since 2.0
- */
- public IThread[] getThreads() throws DebugException;
-
- /**
- * Returns whether this debug target currently contains any threads.
- *
- * @return whether this debug target currently contains any threads
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li></ul>
- * @since 2.0
- */
- public boolean hasThreads() throws DebugException;
-
- /**
- * Returns the name of this debug target. Name format is debug model
- * specific, and should be specified by a debug model.
- *
- * @return this target's name
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li></ul>
- */
- public String getName() throws DebugException;
-
- /**
- * Returns whether this target can install the given breakpoint.
- *
- * @param breakpoint breakpoing to consider
- * @return whether this target can install the given breakpoint
- */
- public boolean supportsBreakpoint(IBreakpoint breakpoint);
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDisconnect.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDisconnect.java
deleted file mode 100644
index c0cf267d5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDisconnect.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * The ability to end a debug session with a target program
- * and allow the target to continue running.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IDebugTarget
- */
-public interface IDisconnect {
- /**
- * Returns whether this element can currently disconnect.
- *
- * @return whether this element can currently disconnect
- */
- public boolean canDisconnect();
- /**
- * Disconnects this element from its target. Generally, disconnecting
- * ends a debug session with a debug target, but allows the target
- * program to continue running.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public void disconnect() throws DebugException;
- /**
- * Returns whether this element is disconnected.
- *
- * @return whether this element is disconnected
- */
- public boolean isDisconnected();
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDropToFrame.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDropToFrame.java
deleted file mode 100644
index 79229afd4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IDropToFrame.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to drop to frame. Drop to frame
- * generally means popping a selected stack frame (and all frames above it) from
- * the execution stack and then stepping back into the frame.
- *
- * @since 3.1
- */
-public interface IDropToFrame {
-
- /**
- * Returns whether this element can currently perform a drop to frame.
- * @return whether this element can currently perform a drop to frame
- */
- public boolean canDropToFrame();
-
- /**
- * Performs a drop to frame on this element. Implementations must generate
- * events such that debug clients can update appropriately, such as corresponding
- * <code>RESUME</code> and <code>SUSPEND</code> events, or a single <code>CHANGE</code>
- * event when the drop is complete. Implementations should implement drop to frame
- * in a non-blocking fashion.
- *
- * @throws DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
- * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
- * </ul>
- */
- public void dropToFrame() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IErrorReportingExpression.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IErrorReportingExpression.java
deleted file mode 100644
index 3ba24d400..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IErrorReportingExpression.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * An expression that can report errors which occurred during the
- * expression's evaluation.
- *
- * @since 3.0
- */
-public interface IErrorReportingExpression extends IExpression {
- /**
- * Returns whether this expression has errors to report. An expression
- * can have errors if errors were generated the last time its value was
- * computed
- *
- * @return whether this expression's result has errors
- */
- public boolean hasErrors();
- /**
- * Returns this expression's error messages, if any. An expression can
- * have errors if errors were generated the last time its value was
- * computed.
- *
- * @return this expression's error messages
- */
- public String[] getErrorMessages();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IExpression.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IExpression.java
deleted file mode 100644
index 31c4f25d7..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IExpression.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-/**
- * An expression is a snippet of code that can be evaluated
- * to produce a value. When and how an expression is evaluated
- * is implementation specific. The context/binding required to
- * evaluate an expression varies by debug model, and by
- * user intent. Furthermore, an expression may need to be evaluated
- * at a specific location in a program (for example, at a
- * breakpoint/line where certain variables referenced in the
- * expression are visible/allocated). A user may want to
- * evaluate an expression once to produce a value that can
- * be inspected iteratively, or they may wish to evaluate an
- * expression iteratively producing new values each time
- * (i.e. as in a watch list).
- * <p>
- * Clients are intended to implement this interface.
- * </p>
- * @since 2.0
- */
-public interface IExpression extends IDebugElement {
-
- /**
- * Returns this expression's snippet of code.
- *
- * @return the expression
- */
- public abstract String getExpressionText();
-
- /**
- * Returns the current value of this expression or
- * <code>null</code> if this expression does not
- * currently have a value.
- *
- * @return value or <code>null</code>
- */
- public abstract IValue getValue();
-
- /**
- * Returns the debug target this expression is associated
- * with, or <code>null</code> if this expression is not
- * associated with a debug target.
- *
- * @return debug target or <code>null</code>
- * @see IDebugElement#getDebugTarget()
- */
- public abstract IDebugTarget getDebugTarget();
-
- /**
- * Notifies this expression that it has been removed
- * from the expression manager. Any required clean up
- * is be performed such that this expression can be
- * garbage collected.
- */
- public abstract void dispose();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFilteredStep.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFilteredStep.java
deleted file mode 100644
index 24e375c12..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFilteredStep.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to perform a filtered step. Implementations must be non-
- * blocking. Filter implementation is debug model specific and may not be
- * supported by all debug models.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 2.1
- * @deprecated clients should implement <code>IStepFilters</code> instead
- */
-public interface IFilteredStep extends IStep {
- /**
- * Returns whether this element can currently perform a filtered step into.
- *
- * @return whether this element can currently perform a filtered step into
- */
- public boolean canStepWithFilters();
- /**
- * Steps into the current statement, generating <code>RESUME</code>
- * and <code>SUSPEND</code> events for the associated thread, applying step
- * filters, as applicable for the associated thread. Can only be called when
- * the associated thread is suspended. Implementations must implement
- * stepping as non- blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
- * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
- * </ul>
- */
- public void stepWithFilters() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFlushableStreamMonitor.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFlushableStreamMonitor.java
deleted file mode 100644
index 463faa3ff..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IFlushableStreamMonitor.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-
-/**
- * A stream monitor who's contents can be flushed. As well, a client may
- * turn buffering on/off in a flushable stream monitor.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 2.1
- */
-public interface IFlushableStreamMonitor extends IStreamMonitor {
-
- /**
- * Empties the contents of this stream monitor's underlying buffer.
- */
- public void flushContents();
-
- /**
- * Sets whether the contents of this monitor's underlying stream should be
- * buffered. When <code>false</code>, contents appended to this stream monitor
- * are not stored in a buffer, and are thus not available from
- * <code>getContents()</code>. Registered listeners are notified of appended
- * text, and must buffer the contents if desired.
- *
- * @param buffer whether the contents of this monitor's underlying stream
- * should be buffered
- */
- public void setBuffered(boolean buffer);
-
- /**
- * Returns whether the contents of this monitor's underlying stream is
- * buffered.
- *
- * @return whether the contents of this monitor's underlying stream is
- * buffered
- */
- public boolean isBuffered();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IIndexedValue.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IIndexedValue.java
deleted file mode 100644
index 0b66289af..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IIndexedValue.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A value containing an indexed collection of variables - for example,
- * an array.
- * <p>
- * The indexed collection value has been added to the debug model to support
- * automatic partitioning of large arrays in the debug UI. Clients are not required
- * to implement this interface for values representing indexed collections,
- * however, doing so will provide enhanced display options in the debug UI.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.0
- */
-public interface IIndexedValue extends IValue {
-
- /**
- * Returns the variable at the given offset in this collection.
- * The offset is zero based.
- * @param offset zero based offset into this collection
- * @return returns the variable in this collection at the given
- * offset
- * @throws DebugException if unable to retrieve the variable at the
- * given offset
- */
- public IVariable getVariable(int offset) throws DebugException;
-
- /**
- * Returns a subset of the elements in this collection of variables as
- * specified by the given offset and length.
- *
- * @param offset beginning offset of the subset of elements to return
- * @param length the number of elements to return
- * @return a subset of the elements in this collection of variables as
- * specified by the given offset and length
- * @throws DebugException if unable to retrieve the variables
- */
- public IVariable[] getVariables(int offset, int length) throws DebugException;
-
- /**
- * Returns the number of entries in this indexed collection.
- *
- * @return the number of entries in this indexed collection
- * @throws DebugException if unable to determine the number
- * of entries in this collection
- */
- public int getSize() throws DebugException;
-
- /**
- * Returns the index of the first variable contained in this value.
- * Generally, indexed values are zero based, but this allows for
- * an arbitrary base offset.
- *
- * @return the index of the first variable contained in this value
- */
- public int getInitialOffset();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java
deleted file mode 100644
index ac331fa24..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * A launch configuration delegate performs launching for a
- * specific type of launch configuration. A launch configuration
- * delegate is defined by the <code>delegate</code> attribute
- * of a <code>launchConfigurationType</code> extension.
- * <p>
- * This interface is intended to be implemented by clients.
- * </p>
- * @see org.eclipse.debug.core.ILaunchConfigurationType
- * @see ILaunchConfiguration
- * @since 2.0
- */
-public interface ILaunchConfigurationDelegate {
-
- /**
- * Launches the given configuration in the specified mode, contributing
- * debug targets and/or processes to the given launch object. The
- * launch object has already been registered with the launch manager.
- *
- * @param configuration the configuration to launch
- * @param mode the mode in which to launch, one of the mode constants
- * defined by <code>ILaunchManager</code> -
- * <code>RUN_MODE</code> or <code>DEBUG_MODE</code>.
- * @param monitor progress monitor, or <code>null</code> progress monitor, or <code>null</code>. A cancelable progress
- * monitor is provided by the Job framework. It should be noted that the setCanceled(boolean) method should
- * never be called on the provided monitor or the monitor passed to any delegates from this method; due to a
- * limitation in the progress monitor framework using the setCanceled method can cause entire workspace batch
- * jobs to be canceled, as the canceled flag is propagated up the top-level parent monitor.
- * The provided monitor is not guaranteed to have been started.
- * @param launch the launch object to contribute processes and debug
- * targets to
- * @exception CoreException if launching fails
- */
- public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java
deleted file mode 100644
index c37339e42..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILaunchConfigurationDelegate2.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * Optional enhancements to the launch configuration delegate interface.
- * Allows launch delegates to abort a launch, build relevant projects in
- * the workspace before a launch, and create the launch object to be used
- * in a launch.
- * <p>
- * Clients implementing <code>ILaunchConfigurationDelegate</code> may also
- * implement this interface.
- * </p>
- * @since 3.0
- */
-public interface ILaunchConfigurationDelegate2 extends ILaunchConfigurationDelegate {
-
- /**
- * Returns a launch object to use when launching the given launch
- * configuration in the given mode, or <code>null</code> if a new default
- * launch object should be created by the debug platform. If a launch object
- * is returned, its launch mode must match that of the mode specified in
- * this method call.
- *
- * @param configuration the configuration being launched
- * @param mode the mode the configuration is being launched in
- * @return a launch object or <code>null</code>
- * @throws CoreException if unable to launch
- */
- public ILaunch getLaunch(ILaunchConfiguration configuration, String mode) throws CoreException;
-
- /**
- * Optionally performs any required building before launching the given
- * configuration in the specified mode, and returns whether the debug platform
- * should perform an incremental workspace build before the launch continues.
- * If <code>false</code> is returned the launch will proceed without further
- * building, and if <code>true</code> is returned an incremental build will
- * be performed on the workspace before launching.
- * <p>
- * This method is only called if the launch is invoked with flag indicating
- * building should take place before the launch. This is done via the
- * method
- * <code>ILaunchConfiguration.launch(String mode, IProgressMonitor monitor, boolean build)</code>.
- * </p>
- * @param configuration the configuration being launched
- * @param mode the mode the configuration is being launched in
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @return whether the debug platform should perform an incremental workspace
- * build before the launch
- * @throws CoreException if an exception occurs while building
- */
- public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Returns whether a launch should proceed. This method is called after
- * <code>preLaunchCheck()</code> and <code>buildForLaunch()</code> providing
- * a final chance for this launch delegate to abort a launch if required.
- * For example, a delegate could cancel a launch if it discovered compilation
- * errors that would prevent the launch from succeeding.
- *
- * @param configuration the configuration being launched
- * @param mode launch mode
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @return whether the launch should proceed
- * @throws CoreException if an exception occurs during final checks
- */
- public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException;
-
- /**
- * Returns whether a launch should proceed. This method is called first
- * in the launch sequence providing an opportunity for this launch delegate
- * to abort the launch.
- *
- * @param configuration configuration being launched
- * @param mode launch mode
- * @param monitor progress monitor, or <code>null</code>. A cancelable progress monitor is provided by the Job
- * framework. It should be noted that the setCanceled(boolean) method should never be called on the provided
- * monitor or the monitor passed to any delegates from this method; due to a limitation in the progress monitor
- * framework using the setCanceled method can cause entire workspace batch jobs to be canceled, as the canceled flag
- * is propagated up the top-level parent monitor. The provided monitor is not guaranteed to have been started.
- * @return whether the launch should proceed
- * @throws CoreException if an exception occurs while performing pre-launch checks
- */
- public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILineBreakpoint.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILineBreakpoint.java
deleted file mode 100644
index 9b7b4cf0c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILineBreakpoint.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A breakpoint that can be located at a specific line of source code.
- */
-public interface ILineBreakpoint extends IBreakpoint {
-
-/**
- * Returns the line number in the original source that corresponds
- * to the location of this breakpoint, or -1 if the attribute is not
- * present.
- *
- * @return this breakpoint's line number, or -1 if unknown
- * @exception CoreException if a <code>CoreException</code> is thrown
- * while accessing the underlying <code>IMarker.LINE_NUMBER</code> marker attribute
- */
-public int getLineNumber() throws CoreException;
-/**
- * Returns starting source index in the original source that corresponds
- * to the location of this breakpoint, or -1 if the attribute is not present.
- *
- * @return this breakpoint's char start value, or -1 if unknown
- * @exception CoreException if a <code>CoreException</code> is thrown
- * while accessing the underlying <code>IMarker.CHAR_START</code> marker attribute
- */
-public int getCharStart() throws CoreException;
-/**
- * Returns ending source index in the original source that corresponds
- * to the location of this breakpoint, or -1 if the attribute is not present.
- *
- * @return this breakpoint's char end value, or -1 if unknown
- * @exception CoreException if a <code>CoreException</code> is thrown
- * while accessing the underlying <code>IMarker.CHAR_END</code> marker attribute
- */
-public int getCharEnd() throws CoreException;
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate.java
deleted file mode 100644
index 50865a79e..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A delegate that provides a value representing the logical structure of a raw
- * implementation value from a debug model. Associated with a logical structure
- * type extension.
- * <p>
- * Clients contributing logical structure types should implement this
- * interface.
- * </p>
- * @since 3.0
- * @see org.eclipse.debug.core.ILogicalStructureType
- */
-public interface ILogicalStructureTypeDelegate {
-
- /**
- * Returns whether this structure type can provide a logical structure for
- * the given value.
- *
- * @param value value for which a logical structure is being requested
- * @return whether this structure type can provide a logical structure for
- * the given value
- */
- public boolean providesLogicalStructure(IValue value);
-
- /**
- * Returns a value representing a logical structure of the given value.
- *
- * @param value value for which a logical structure is being requested
- * @return value representing logical structure
- * @throws CoreException if an exception occurs generating a logical
- * structure
- */
- public IValue getLogicalStructure(IValue value) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate2.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate2.java
deleted file mode 100644
index ff5f4e8b8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ILogicalStructureTypeDelegate2.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-/**
- * Optional extension to <code>ILogicalStructureTypeDelegate</code> that allows
- * a logical structure type delegate to provide a description for a value.
- * This allows a logical structure type to provide logical structures and
- * descriptions for more than one type of value.
- * <p>
- * If a logical structure type delegate implements this interface, it will
- * be consulted for a description rather than using the description attribute
- * provided in plug-in XML.
- * </p>
- * <p>
- * Clients contributing logical structure types can implement this
- * interface.
- * </p>
- * @since 3.1
- * @see org.eclipse.debug.core.ILogicalStructureType
- */
-public interface ILogicalStructureTypeDelegate2 {
-
- /**
- * Returns a simple description of the logical structure provided by this
- * structure type delegate, for the given value.
- * Cannot return <code>null</code>. This method is only called if this
- * logical structure type delegate returns <code>true</code> for
- * <code>providesLogicalStructure(IValue)</code>.
- *
- * @param value a value a description is requested for
- * @return a simple description of the logical structure provided by this
- * structure type delegate, for the given value
- */
- public String getDescription(IValue value);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlock.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlock.java
deleted file mode 100644
index 7740c8adc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlock.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A contiguous segment of memory in an execution context.
- * A memory block is represented by a starting memory address
- * and a length. Not all debug architectures support the retrieval
- * of memory blocks.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IMemoryBlockRetrieval
- * @since 2.0
- */
-public interface IMemoryBlock extends IDebugElement {
-
- /**
- * Returns the start address of this memory block.
- *
- * @return the start address of this memory block
- */
- public long getStartAddress();
-
- /**
- * Returns the length of this memory block in bytes.
- *
- * @return the length of this memory block in bytes
- */
- public long getLength();
-
- /**
- * Returns the values of the bytes currently contained
- * in this this memory block.
- *
- * @return the values of the bytes currently contained
- * in this this memory block
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- */
- public byte[] getBytes() throws DebugException;
-
- /**
- * Returns whether this memory block supports value modification
- *
- * @return whether this memory block supports value modification
- */
- public boolean supportsValueModification();
-
- /**
- * Sets the value of the bytes in this memory block at the specified
- * offset within this memory block to the specified bytes.
- * The offset is zero based.
- *
- * @param offset the offset at which to set the new values
- * @param bytes the new values
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * <li>This memory block does not support value modification</li>
- * <li>The specified offset is greater than or equal to the length
- * of this memory block, or the number of bytes specified goes
- * beyond the end of this memory block (index of out of range)</li>
- * </ul>
- */
- public void setValue(long offset, byte[] bytes) throws DebugException;
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockExtension.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockExtension.java
deleted file mode 100644
index cb4134807..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockExtension.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import java.math.BigInteger;
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Extensions to {@link org.eclipse.debug.core.model.IMemoryBlock}. Allows
- * for bytes to be accessed in a larger address space, and for state information
- * to be provided for each byte.
- * <p>
- * Clients may optionally implement this interface when providing implementations of
- * {@link org.eclipse.debug.core.model.IMemoryBlock}.
- * </p>
- * @since 3.1
- * @see org.eclipse.debug.core.model.MemoryByte
- */
-public interface IMemoryBlockExtension extends IMemoryBlock {
-
- /**
- * Returns the expression used to create this memory block. An expression can
- * be used as name for a memory block and typically represents an expression
- * used to compute a base address for a memory block.
- *
- * @return the expression used to create this memory block
- */
- public String getExpression();
-
- /**
- * Returns the base address of this memory block as a big integer. The
- * address is in terms of addressable units.
- *
- * @return the base address of this memory block
- * @throws DebugException if unable to retrieve the base address
- */
- public BigInteger getBigBaseAddress() throws DebugException;
-
- /**
- * Returns the hard start address of this memory block as a big integer, or
- * <code>null</code> if none. A <code>null</code> start address indicates that
- * memory may be retrieved at any address less than this memory block's base
- * address.
- *
- * @return the hard start address of this memory block or <code>null</code>
- * @throws DebugException if unable to retrieve the start address of this memory block.
- */
- public BigInteger getMemoryBlockStartAddress() throws DebugException;
-
- /**
- * Returns the hard end address of this memory block as a big integer, or
- * <code>null</code> if none. A <code>null</code> end address indicates that
- * memory may be retrieved from any positive offset relative to the base address
- * of this memory block.
- *
- * @return the hard end address of this memory block or <code>null</code>
- * @throws DebugException if unable to retrieve the end address of this memory block.
- */
- public BigInteger getMemoryBlockEndAddress() throws DebugException;
-
- /**
- * Returns the length of this memory block, or -1 if unbounded.
- * Returns "end address - start address" for a memory block with a fixed
- * length (i.e. when both start and end address are known).
- * Returns -1 for an unbounded memory block (i.e. when start or end address is
- * <code>null</code>).
- *
- * @return length of this memory block or -1 if unbounded
- * @throws DebugException if unable to retrieve the length of this memory block.
- */
- public BigInteger getBigLength() throws DebugException;
-
- /**
- * Returns the address size of this memory block in number of bytes. The address
- * size indicates the number of bytes used to construct an address.
- *
- * @return address size in number of bytes
- * @throws DebugException if unable to retrieve the address size
- */
- public int getAddressSize() throws DebugException;
-
- /**
- * Returns whether the base address of this memory block can be modified.
- *
- * @return whether the base address of this memory block can be modified
- * @throws DebugException is unable to determine if base address modification is supported
- */
- public boolean supportBaseAddressModification() throws DebugException;
-
- /**
- * Returns whether this memory block manages the change state of its bytes.
- * <p>
- * If a memory block manages changes the memory block is responsible for
- * setting the <code>CHANGED</code> state of its <code>MemoryByte</code>'s
- * returned from <code>getBytesFromAddress</code> and
- * <code>getBytesFromOffset</code>. The changed state of a byte should
- * be updated each time a thread suspends in a memory block's target.
- * </p>
- * @return whether this memory block manages the change state of its bytes
- */
- public boolean supportsChangeManagement();
-
- /**
- * Sets the base address of this memory block to the given address.
- *
- * @param address new base address
- * @throws DebugException if unable to modify the base address, or modification
- * of the base address fails
- */
- public void setBaseAddress(BigInteger address) throws DebugException;
-
- /**
- * Returns bytes from this memory block based on the base address and
- * addressable size of this memory block.
- * <p>
- * A memory block may be asked to retrieve bytes beyond it's start
- * or end address. If a memory block is unable to retrieve memory outside
- * these boundaries, implementations should return memory bytes with
- * the <code>READABLE</code> bit turned off for each byte outside
- * the of the accessible range. An exception should not be thrown in this
- * case.
- * </p>
- * @param unitOffset zero based offset into this memory block at which to start
- * retrieving bytes in terms of addressable units. Client should retrieve
- * memory starting from "base address + offset".
- * @param addressableUnits the number of addressable units to retrieve
- * @return an array of bytes from this memory block based on the given offset
- * and number of units. The size of the array returned must to be equal to
- * <code>units</code> * <code>getAddressableSize()</code>.
- * @throws DebugException if unable to retrieve the specified bytes due to
- * a failure communicating with the target
- * @see MemoryByte
- */
- public MemoryByte[] getBytesFromOffset(BigInteger unitOffset, long addressableUnits) throws DebugException;
-
- /**
- * Returns bytes from this memory block based on the given address and the
- * addressable size of this memory block.
- * <p>
- * A memory block may be asked to retrieve bytes beyond it's start
- * or end address. If a memory block is unable to retrieve memory outside
- * these boundaries, implementations should return memory bytes with
- * the <code>READABLE</code> bit turned off for each byte outside
- * the of the accessible range. An exception should not be thrown in this
- * case.
- * </p>
- * @param address address at which to begin retrieving bytes in terms
- * of addressable units
- * @param units is the number of addressable units of memory to retrieve
- * @return an array of bytes from this memory block based on the given address
- * and number of units. The size of the array returned must to be equal to
- * <code>units</code> * <code>getAddressableSize()</code>.
- * @throws DebugException if unable to retrieve the specified bytes due to
- * a failure communicating with the target
- * @see MemoryByte
- */
- public MemoryByte[] getBytesFromAddress(BigInteger address, long units) throws DebugException;
-
- /**
- * Sets bytes in this memory block at the specified offset within this memory block to
- * the specified bytes. The offset is zero based. After successfully modifying the
- * specified bytes, a debug event should be fired with a kind of <code>CHANGE</code>.
- *
- * @param offset the zero based offset at which to set the new value. Modify
- * the memory starting from base address + offset.
- * @param bytes replacement bytes
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * <li>This memory block does not support value modification</li>
- * <li>The specified offset is greater than or equal to the length
- * of this memory block, or the number of bytes specified goes
- * beyond the end of this memory block (index of out of range)</li>
- * </ul>
- * @see org.eclipse.debug.core.DebugEvent
- */
- public void setValue(BigInteger offset, byte[] bytes) throws DebugException;
-
- /**
- * Connects the given client to this memory block. Allows a memory block
- * to know when it is being monitored. Has no effect if an identical
- * client is already connected.
- * <p>
- * Memory blocks supporting change management may selectively turn off
- * change management when no clients are connected, for reasons of
- * efficiency. Clients that require access to change state information
- * are required to connect to a memory block before change information
- * is considered to be valid.
- * </p>
- * @param client the client to connect
- */
- public void connect(Object client);
-
- /**
- * Disconnects the given client from this memory block. Has no effect if
- * an identical client is not already connected.
- *
- * @param client the client to disconnect
- */
- public void disconnect(Object client);
-
- /**
- * Returns the possibly empty list of clients currently connected to this
- * memory block.
- *
- * @return the possibly empty list of clients currently connected to this
- * memory block
- */
- public Object[] getConnections();
-
- /**
- * Dispose this memory block. Connected clients are disconnected.
- * @throws DebugException if the memory block cannot be disposed.
- */
- public void dispose() throws DebugException;
-
- /**
- * Returns the origin of this memory block.
- *
- * @return the origin of this memory block
- */
- public IMemoryBlockRetrieval getMemoryBlockRetrieval();
-
- /**
- * Returns this memory block's addressable size in number of bytes. The addressable size
- * of memory block indicates the minimum number of bytes that can be retrieved as
- * a single unit.
- *
- * @return this memory block's addressable size
- * @throws DebugException if the addressable size cannot be obtained.
- */
- public int getAddressableSize() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrieval.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrieval.java
deleted file mode 100644
index 925366297..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrieval.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Supports the retrieval of arbitrary blocks of memory.
- *
- * @see IMemoryBlock
- * @since 2.0
- */
-public interface IMemoryBlockRetrieval {
-
- /**
- * Returns whether this debug target supports the retrieval
- * of memory blocks.
- *
- * @return whether this debug target supports the retrieval
- * of memory blocks
- */
- public boolean supportsStorageRetrieval();
-
- /**
- * Returns a memory block that starts at the specified
- * memory address, with the specified length.
- *
- * @param startAddress starting address
- * @param length length of the memory block in bytes
- * @return a memory block that starts at the specified
- * memory address, with the specified length
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * <li>This debug target does not support memory block retrieval</li>
- * <li>The specified address and length are not within valid
- * ranges</li>
- * </ul>
- */
- public IMemoryBlock getMemoryBlock(long startAddress, long length) throws DebugException;
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrievalExtension.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrievalExtension.java
deleted file mode 100644
index f6aea1b55..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IMemoryBlockRetrievalExtension.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.core.model;
-
-import org.eclipse.debug.core.DebugException;
-
-
-/**
- * Extended capabilities for memory block retrieval. Supports the retrieval
- * of memory blocks based on an expression and context.
- *
- * @since 3.1
- */
-public interface IMemoryBlockRetrievalExtension extends IMemoryBlockRetrieval {
-
- /**
- * Retrieves and returns a memory block.
- *
- * @param expression expression to be evaluated to an address
- * @param context context for evaluating the expression. This is typically
- * a debug element.
- * @return a memory block based on the given expression and context
- * @throws DebugException if unable to retrieve the specified memory
- */
-
- public IMemoryBlockExtension getExtendedMemoryBlock(String expression, Object context) throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IPersistableSourceLocator.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IPersistableSourceLocator.java
deleted file mode 100644
index 8433aa8d4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IPersistableSourceLocator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * A source locator that can be persisted and restored,
- * to be used with a specific launch configuration.
- * The debug plug-in defines a source locator extension
- * point for persistable source locators.
- * <p>
- * A source locator extension is defined in <code>plugin.xml</code>.
- * Following is an example definition of a source locator extension.
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.sourceLocators"&gt;
- * &lt;sourceLocator
- * id="com.example.ExampleIdentifier"
- * class="com.example.ExampleSourceLocator"
- * name="Example Source Locator"&gt;
- * &lt;/sourceLocator&gt;
- * &lt;/extension&gt;
- * </pre>
- * The attributes are specified as follows:
- * <ul>
- * <li><code>id</code> specifies a unique identifier for this source locator.</li>
- * <li><code>class</code> specifies the fully qualified name of the Java class
- * that implements <code>IPersistableSourceLocator</code>.</li>
- * <li><code>name</code> a human readable name, describing the type of
- * this source locator.</li>
- * </ul>
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.ILaunch
- * @see IStackFrame
- * @since 2.0
- */
-public interface IPersistableSourceLocator extends ISourceLocator {
-
- /**
- * Returns a memento that can be used to reconstruct
- * this source locator
- *
- * @return a memento that can be used to reconstruct
- * this source locator
- * @exception CoreException if unable to construct a memento
- */
- public String getMemento() throws CoreException;
-
- /**
- * Initializes this source locator based on the given
- * memento.
- *
- * @param memento a memento to initialize this source locator
- * @exception CoreException on failure to initialize
- */
- public void initializeFromMemento(String memento) throws CoreException;
-
- /**
- * Initializes this source locator to perform default
- * source lookup for the given launch configuration.
- *
- * @param configuration launch configuration this source locator
- * will be performing source lookup for
- * @exception CoreException on failure to initialize
- */
- public void initializeDefaults(ILaunchConfiguration configuration) throws CoreException;
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IProcess.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IProcess.java
deleted file mode 100644
index 7ce2452b4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IProcess.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-
-/**
- * A process represents a program running in normal (non-debug) mode.
- * Processes support setting and getting of client defined attributes.
- * This way, clients can annotate a process with any extra information
- * important to them. For example, classpath annotations, or command
- * line arguments used to launch the process may be important to a client.
- * <p>
- * Clients may implement this interface, however, the debug plug-in
- * provides an implementation of this interface for a
- * <code>java.lang.Process</code>.
- * </p>
- * @see org.eclipse.debug.core.DebugPlugin#newProcess(ILaunch, Process, String)
- */
-public interface IProcess extends IAdaptable, ITerminate {
-
- /**
- * Attribute key for a common, optional, process property. The value of this
- * attribute is the command line a process was launched with.
- *
- * @since 2.1
- */
- public final static String ATTR_CMDLINE= DebugPlugin.getUniqueIdentifier() + ".ATTR_CMDLINE"; //$NON-NLS-1$
-
- /**
- * Attribute key for a common, optional, process property. The value of this
- * attribute is an identifier for the type of this process. Process types
- * are client defined - whoever creates a process may define its type. For
- * example, a process type could be "java", "javadoc", or "ant".
- *
- * @since 2.1
- */
- public final static String ATTR_PROCESS_TYPE = DebugPlugin.getUniqueIdentifier() + ".ATTR_PROCESS_TYPE"; //$NON-NLS-1$
-
- /**
- * Attribute key for a common, optional, process property. The value of this
- * attribute specifies an alternate dynamic label for a process, displayed by
- * the console.
- *
- * @since 3.0
- */
- public final static String ATTR_PROCESS_LABEL = DebugPlugin.getUniqueIdentifier() + ".ATTR_PROCESS_LABEL"; //$NON-NLS-1$
-
- /**
- * Returns a human-readable label for this process.
- *
- * @return a label for this process
- */
- public String getLabel();
- /**
- * Returns the launch this element originated from.
- *
- * @return the launch this process is contained in
- */
- public ILaunch getLaunch();
- /**
- * Returns a proxy to the standard input, output, and error streams
- * for this process, or <code>null</code> if not supported.
- *
- * @return a streams proxy, or <code>null</code> if not supported
- */
- public IStreamsProxy getStreamsProxy();
-
- /**
- * Sets the value of a client defined attribute.
- *
- * @param key the attribute key
- * @param value the attribute value
- */
- public void setAttribute(String key, String value);
-
- /**
- * Returns the value of a client defined attribute.
- *
- * @param key the attribute key
- * @return value the String attribute value, or <code>null</code> if undefined
- */
- public String getAttribute(String key);
-
- /**
- * Returns the exit value of this process. Conventionally, 0 indicates
- * normal termination.
- *
- * @return the exit value of this process
- * @exception DebugException if this process has not yet terminated
- */
- public int getExitValue() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegister.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegister.java
deleted file mode 100644
index d3bd7390c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegister.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A register is a special kind of variable that is contained
- * in a register group. Each register has a name and a value.
- * Not all debug architectures provide access to registers.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 2.0
- */
-public interface IRegister extends IVariable {
-
- /**
- * Returns the register group this register is contained in.
- *
- * @return the register group this register is contained in
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public IRegisterGroup getRegisterGroup() throws DebugException;
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegisterGroup.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegisterGroup.java
deleted file mode 100644
index 528df358f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IRegisterGroup.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A register group is a group of registers that are
- * assigned to a stack frame. Some debug architectures
- * provide access to registers, and registers are often
- * grouped logically. For example, a floating point
- * register group.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 2.0
- */
-public interface IRegisterGroup extends IDebugElement {
-
-
- /**
- * Returns the name of this register group.
- *
- * @return this register group's name
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getName() throws DebugException;
-
- /**
- * Returns the registers in this register group.
- *
- * @return the registers in this register group
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public IRegister[] getRegisters() throws DebugException;
-
- /**
- * Returns whether this register group currently contains any registers.
- *
- * @return whether this register group currently contains any registers
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public boolean hasRegisters() throws DebugException;
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISourceLocator.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISourceLocator.java
deleted file mode 100644
index e78a7f893..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISourceLocator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.model.IStackFrame;
-
-/**
- * A source locator locates source elements for stack frames. A launch (optionally)
- * specifies a source locator which is
- * used to locate source for that debug session. If a launch does not
- * provide a source locator, source cannot be displayed.
- * Abstraction of source lookup allows clients to hide implementation
- * details of source location and representation.
- * <p>
- * Generally, an implementor of a debug model will also implement launch configuration types,
- * delegates, and source locators that work together as a whole. That is, the implementation
- * of a source locator will have knowledge of how to locate a source element
- * for a stack frame. For example, a Java stack frame could define API which
- * specifies a source file name. A Java source locator would use this information
- * to locate the associated file in the workspace.
- * </p>
- * <p>
- * Source is displayed by the debug UI plug-in. The debug UI uses a source locator
- * to resolve an object representing the source for a stack frame, and then uses
- * a debug model presentation to determine the editor and editor input to use to
- * display the actual source in an editor.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.ILaunch
- * @see org.eclipse.debug.core.model.IStackFrame
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator
- */
-public interface ISourceLocator {
-
- /**
- * Returns a source element that corresponds to the given stack frame, or
- * <code>null</code> if a source element could not be located. The object returned
- * by this method will be used by the debug UI plug-in to display source.
- * The debug UI uses the debug model presentation associated
- * with the given stack frame's debug model to translate a source object into an
- * {editor input, editor id} pair in which to display source.
- * <p>
- * For example, a java source locator could return an object representing a
- * compilation unit or class file. The java debug model presentation would
- * then be responsible for providing an editor input and editor id for each
- * compilation unit and class file such that the debug UI could display source.
- * </p>
- *
- * @param stackFrame the stack frame for which to locate source
- * @return an object representing a source element.
- */
- public Object getSourceElement(IStackFrame stackFrame);
-
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStackFrame.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStackFrame.java
deleted file mode 100644
index 72ee242e1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStackFrame.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A stack frame represents an execution context in a suspended thread.
- * A stack frame contains variables representing visible locals and arguments at
- * the current execution location. Minimally, a stack frame supports
- * the following:
- * <ul>
- * <li>suspend/resume (convenience to resume this stack frame's thread)
- * <li>stepping
- * <li>termination (convenience to terminate this stack frame's thread or debug target)
- * </ul>
- * <p>
- * A debug model implementation may choose to re-use or discard
- * stack frames on iterative thread suspensions. Clients
- * cannot assume that stack frames are identical or equal across
- * iterative thread suspensions and must check for equality on iterative
- * suspensions if they wish to re-use the objects.
- * </p>
- * <p>
- * A debug model implementation that preserves equality
- * across iterative suspensions may display more desirable behavior in
- * some clients. For example, if stack frames are preserved
- * while stepping, a UI client would be able to update the UI incrementally,
- * rather than collapse and redraw the entire list.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IStep
- * @see ISuspendResume
- * @see ITerminate
- */
-public interface IStackFrame extends IDebugElement, IStep, ISuspendResume, ITerminate {
- /**
- * Returns the thread this stack frame is contained in.
- *
- * @return thread
- * @since 2.0
- */
- public IThread getThread();
- /**
- * Returns the visible variables in this stack frame. An empty
- * collection is returned if there are no visible variables.
- *
- * @return collection of visible variables
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public IVariable[] getVariables() throws DebugException;
-
- /**
- * Returns whether this stack frame currently contains any visible variables.
- *
- * @return whether this stack frame currently contains any visible variables
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public boolean hasVariables() throws DebugException;
-
- /**
- * Returns the line number of the instruction pointer in
- * this stack frame that corresponds to a line in an associated source
- * element, or <code>-1</code> if line number information
- * is unavailable.
- *
- * @return line number of instruction pointer in this stack frame, or
- * <code>-1</code> if line number information is unavailable
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- */
- public int getLineNumber() throws DebugException;
-
- /**
- * Returns the index of the first character in the associated source
- * element that corresponds to the current location of the instruction pointer
- * in this stack frame, or <code>-1</code> if the information is unavailable.
- * <p>
- * If a debug model supports expression level stepping, the start/end
- * character ranges are used to highlight the expression within a line
- * that is being executed.
- * </p>
- * @return index of the first character in the associated source
- * element that corresponds to the current location of the instruction pointer
- * in this stack frame, or <code>-1</code> if the information is unavailable
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public int getCharStart() throws DebugException;
-
- /**
- * Returns the index of the last character in the associated source
- * element that corresponds to the current location of the instruction pointer
- * in this stack frame, or <code>-1</code> if the information is unavailable.
- * <p>
- * If a debug model supports expression level stepping, the start/end
- * character ranges are used to highlight the expression within a line
- * that is being executed.
- * </p>
- * @return index of the last character in the associated source
- * element that corresponds to the current location of the instruction pointer
- * in this stack frame, or <code>-1</code> if the information is unavailable
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public int getCharEnd() throws DebugException;
-
- /**
- * Returns the name of this stack frame. Name format is debug model
- * specific, and should be specified by a debug model.
- *
- * @return this frame's name
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- */
- public String getName() throws DebugException;
-
- /**
- * Returns the register groups assigned to this stack frame,
- * or an empty collection if no register groups are assigned
- * to this stack frame.
- *
- * @return the register groups assigned to this stack frame
- * or an empty collection if no register groups are assigned
- * to this stack frame
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public IRegisterGroup[] getRegisterGroups() throws DebugException;
-
- /**
- * Returns whether this stack frame contains any register groups.
- *
- * @return whether this stack frame contains any visible register groups
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public boolean hasRegisterGroups() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStep.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStep.java
deleted file mode 100644
index 009aaad14..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStep.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to step into, over, and return
- * from the current execution location. Implementations
- * must be non-blocking.
- * <p>
- * Implementations should honor step filter settings in their
- * associated debug target, as defined by <code>IStepFilters</code>.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.model.IStepFilters
- */
-public interface IStep {
- /**
- * Returns whether this element can currently perform a step into.
- *
- * @return whether this element can currently perform a step into
- */
- public boolean canStepInto();
- /**
- * Returns whether this element can currently perform a step over.
- *
- * @return whether this element can currently perform a step over
- */
- public boolean canStepOver();
- /**
- * Returns whether this element can currently perform a step return.
- *
- * @return whether this element can currently perform a step return
- */
- public boolean canStepReturn();
- /**
- * Returns whether this element is currently stepping.
- * <p>
- * For example, a thread is considered to be stepping
- * after the <code>stepOver</code> call until the step over is completed,
- * a breakpoint is reached, an exception is thrown, or the thread or debug target is
- * terminated.
- * </p>
- *
- * @return whether this element is currently stepping
- */
- public boolean isStepping();
- /**
- * Steps into the current statement, generating <code>RESUME</code>
- * and <code>SUSPEND</code> events for the associated thread. Can only be called
- * when the associated thread is suspended. Implementations must implement
- * stepping as non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
- * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
- * </ul>
- */
- public void stepInto() throws DebugException;
- /**
- * Steps over the current statement, generating <code>RESUME</code>
- * and <code>SUSPEND</code> events for the associated thread. Can only be called
- * when the associated thread is suspended. Implementations must implement
- * stepping as non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
- * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
- * </ul>
- */
- public void stepOver() throws DebugException;
- /**
- * Steps to the next return statement in the current scope,
- * generating <code>RESUME</code> and <code>SUSPEND</code> events for
- * the associated thread. Can only be called when the associated thread is suspended.
- * Implementations must implement stepping as non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
- * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
- * </ul>
- */
- public void stepReturn() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStepFilters.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStepFilters.java
deleted file mode 100644
index 1e11c956c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStepFilters.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * Support for step filters for a debug target. A debug target
- * that supports step filters should implement this interface.
- * Step filters can be toggled on/off for a debug target via
- * this interface. When a step method is called (see
- * <code>IStep</code>), the step implementation must respect
- * the state of the step filters as defined by this interface.
- * This allows step filters to be toggled on/off for
- * all stepping operations (in, over, return).
- * <p>
- * Step filter management is debug model specific - this interface
- * is used only to turn them on/off.
- * </p>
- * <p>
- * In 2.1, the <code>IFilteredStep</code> interface was used
- * to implement step filtering. The <code>IFilteredStep</code>
- * interface is now deprecated, and this interface should be used
- * in its place to allow filters to be applied to any step
- * function.
- * </p>
- * <p>
- * Clients may implement this interface. Debug targets that support
- * step filters should implement this interface.
- * </p>
- * @see org.eclipse.debug.core.model.IStep
- * @since 3.0
- */
-public interface IStepFilters {
-
- /**
- * Returns whether this debug target supports step filters.
- *
- * @return whether this debug target supports step filters
- */
- public boolean supportsStepFilters();
-
- /**
- * Returns whether step filters are currently enabled in this
- * debug target.
- *
- * @return whether step filters are currently enabled in this
- * debug target
- */
- public boolean isStepFiltersEnabled();
-
- /**
- * Sets whether step filters are enabled in this debug target.
- *
- * @param enabled whether step filters are enabled in this debug target
- */
- public void setStepFiltersEnabled(boolean enabled);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamMonitor.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamMonitor.java
deleted file mode 100644
index fdabfb2d7..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamMonitor.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.IStreamListener;
-
-/**
- * A stream monitor manages the contents of the stream a process
- * is writing to, and notifies registered listeners of changes in
- * the stream.
- * <p>
- * Clients may implement this interface. Generally, a client that
- * provides an implementation of the <code>IStreamsProxy</code>
- * interface must also provide an implementation of this interface.
- * </p>
- * @see org.eclipse.debug.core.model.IStreamsProxy
- * @see org.eclipse.debug.core.model.IFlushableStreamMonitor
- */
-public interface IStreamMonitor {
- /**
- * Adds the given listener to this stream monitor's registered listeners.
- * Has no effect if an identical listener is already registered.
- *
- * @param listener the listener to add
- */
- public void addListener(IStreamListener listener);
- /**
- * Returns the entire current contents of the stream. An empty
- * String is returned if the stream is empty.
- *
- * @return the stream contents as a <code>String</code>
- */
- public String getContents();
- /**
- * Removes the given listener from this stream monitor's registered listeners.
- * Has no effect if the listener is not already registered.
- *
- * @param listener the listener to remove
- */
- public void removeListener(IStreamListener listener);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy.java
deleted file mode 100644
index 120e5e831..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import java.io.IOException;
-
-/**
- * A streams proxy acts as proxy between the streams of a
- * process and interested clients. This abstraction allows
- * implementations of <code>IProcess</code> to handle I/O related
- * to the standard input, output, and error streams associated
- * with a process.
- * <p>
- * Clients implementing the <code>IProcess</code> interface must also
- * provide an implementation of this interface.
- * </p>
- * @see IProcess
- */
-public interface IStreamsProxy {
- /**
- * Returns a monitor for the error stream of this proxy's process,
- * or <code>null</code> if not supported.
- * The monitor is connected to the error stream of the
- * associated process.
- *
- * @return an error stream monitor, or <code>null</code> if none
- */
- public IStreamMonitor getErrorStreamMonitor();
- /**
- * Returns a monitor for the output stream of this proxy's process,
- * or <code>null</code> if not supported.
- * The monitor is connected to the output stream of the
- * associated process.
- *
- * @return an output stream monitor, or <code>null</code> if none
- */
- public IStreamMonitor getOutputStreamMonitor();
- /**
- * Writes the given text to the output stream connected to the
- * standard input stream of this proxy's process.
- *
- * @param input the text to be written
- * @exception IOException when an error occurs writing to the
- * underlying <code>OutputStream</code>.
- *
- */
- public void write(String input) throws IOException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy2.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy2.java
deleted file mode 100644
index d0294dbb9..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IStreamsProxy2.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import java.io.IOException;
-
-/**
- * Extension to a streams proxy that allows closing of the output stream
- * connected to the standard input stream of a proxy's process.
- * <p>
- * Clients should implement this interface, in addition to
- * <code>IStreamsProxy</code>, if interested closing the standard
- * input stream.
- * </p>
- * @since 3.1
- */
-public interface IStreamsProxy2 extends IStreamsProxy {
-
- /**
- * Closes the output stream connected to the standard input stream
- * of this proxy's process.
- *
- * @throws IOException if unable to close the stream
- */
- public void closeInputStream() throws IOException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISuspendResume.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISuspendResume.java
deleted file mode 100644
index 9ffe269e1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ISuspendResume.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to suspend and resume a thread
- * or debug target.
- * <p>
- * Clients may implement this interface.
- * </p>
- */
-public interface ISuspendResume {
- /**
- * Returns whether this element can currently be resumed.
- *
- * @return whether this element can currently be resumed
- */
- public boolean canResume();
- /**
- * Returns whether this element can currently be suspended.
- *
- * @return whether this element can currently be suspended
- */
- public boolean canSuspend();
- /**
- * Returns whether this element is currently suspended.
- *
- * @return whether this element is currently suspended
- */
- public boolean isSuspended();
- /**
- * Causes this element to resume its execution, generating a <code>RESUME</code> event.
- * Has no effect on an element that is not suspended. This call is non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public void resume() throws DebugException;
- /**
- * Causes this element to suspend its execution, generating a <code>SUSPEND</code> event.
- * Has no effect on an already suspended element.
- * Implementations may be blocking or non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public void suspend() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ITerminate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ITerminate.java
deleted file mode 100644
index 0c376aa75..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/ITerminate.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to terminate an execution
- * context - for example, a thread, debug target or process.
- * <p>
- * Clients may implement this interface.
- * </p>
- */
-public interface ITerminate {
- /**
- * Returns whether this element can be terminated.
- *
- * @return whether this element can be terminated
- */
- public boolean canTerminate();
- /**
- * Returns whether this element is terminated.
- *
- * @return whether this element is terminated
- */
- public boolean isTerminated();
- /**
- * Causes this element to terminate, generating a <code>TERMINATE</code> event.
- * Implementations may be blocking or non-blocking.
- *
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public void terminate() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IThread.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IThread.java
deleted file mode 100644
index 54f56679b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IThread.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A thread is a sequential flow of execution in a debug target.
- * A thread contains stack frames. Stack frames are only available when the
- * thread is suspended, and are returned in top-down order.
- * Minimally, a thread supports the following:
- * <ul>
- * <li>suspend/resume
- * <li>stepping
- * <li>terminate
- * </ul>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see ISuspendResume
- * @see IStep
- * @see ITerminate
- * @see IStackFrame
- */
-
-public interface IThread extends IDebugElement, ISuspendResume, IStep, ITerminate {
- /**
- * Returns the stack frames contained in this thread. An
- * empty collection is returned if this thread contains
- * no stack frames, or is not currently suspended. Stack frames
- * are returned in top down order.
- *
- * @return a collection of stack frames
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public IStackFrame[] getStackFrames() throws DebugException;
-
- /**
- * Returns whether this thread currently contains any stack
- * frames.
- *
- * @return whether this thread currently contains any stack frames
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public boolean hasStackFrames() throws DebugException;
-
- /**
- * Returns the priority of this thread. The meaning of this
- * number is operating-system dependent.
- *
- * @return thread priority
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public int getPriority() throws DebugException;
- /**
- * Returns the top stack frame or <code>null</code> if there is
- * currently no top stack frame.
- *
- * @return the top stack frame, or <code>null</code> if none
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public IStackFrame getTopStackFrame() throws DebugException;
- /**
- * Returns the name of this thread. Name format is debug model
- * specific, and should be specified by a debug model.
- *
- * @return this thread's name
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getName() throws DebugException;
-
- /**
- * Returns the breakpoints that caused this thread to suspend,
- * or an empty collection if this thread is not suspended or
- * was not suspended by a breakpoint. Usually a single breakpoint
- * will be returned, but this collection can contain more than
- * one breakpoint if two breakpoints are at the same location in
- * a program.
- *
- * @return the collection of breakpoints that caused this thread to suspend
- */
- public IBreakpoint[] getBreakpoints();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValue.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValue.java
deleted file mode 100644
index 89652fe42..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValue.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A value represents the value of a variable.
- * A value representing a complex data structure contains variables.
- * <p>
- * An implementation may choose to re-use or discard
- * values on iterative thread suspensions. Clients
- * cannot assume that values are identical or equal across
- * iterative thread suspensions and must check for equality on iterative
- * suspensions if they wish to re-use the objects.
- * </p>
- * <p>
- * An implementation that preserves equality
- * across iterative suspensions may display more desirable behavior in
- * some clients. For example, if variables are preserved
- * while stepping, a UI client would be able to update the UI incrementally,
- * rather than collapse and redraw the entire list or tree.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IVariable
- */
-
-
-public interface IValue extends IDebugElement {
-
- /**
- * Returns a description of the type of data this value contains
- * or references.
- *
- * @return the name of this value's reference type
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getReferenceTypeName() throws DebugException;
-
- /**
- * Returns this value as a <code>String</code>.
- *
- * @return a String representation of this value
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getValueString() throws DebugException;
-
- /**
- * Returns whether this value is currently allocated.
- * <p>
- * For example, if this value represents
- * an object that has been garbage collected, <code>false</code> is returned.
- * </p>
- * @return whether this value is currently allocated
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public boolean isAllocated() throws DebugException;
- /**
- * Returns the visible variables in this value. An empty
- * collection is returned if there are no visible variables.
- *
- * @return an array of visible variables
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public IVariable[] getVariables() throws DebugException;
-
- /**
- * Returns whether this value currently contains any visible variables.
- *
- * @return whether this value currently contains any visible variables
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the debug target. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- * </ul>
- * @since 2.0
- */
- public boolean hasVariables() throws DebugException;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValueModification.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValueModification.java
deleted file mode 100644
index b4266017c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IValueModification.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * Provides the ability to modify the value of a variable in
- * a target.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IVariable
- */
-public interface IValueModification {
-
- /**
- * Attempts to set the value of this variable to the
- * value of the given expression.
- *
- * @param expression an expression to generate a new value
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public void setValue(String expression) throws DebugException;
-
- /**
- * Sets the value of this variable to the given value.
- *
- * @param value a new value
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- * @since 2.0
- */
- public void setValue(IValue value) throws DebugException;
-
- /**
- * Returns whether this variable supports value modification.
- *
- * @return whether this variable supports value modification
- */
- public boolean supportsValueModification();
-
- /**
- * Returns whether the given expression is valid to be used in
- * setting a new value for this variable.
- *
- * @param expression an expression to generate a new value
- * @return whether the expression is valid
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- */
- public boolean verifyValue(String expression) throws DebugException;
-
- /**
- * Returns whether the given value can be used as
- * a new value for this variable.
- *
- * @param value a new value
- * @return whether the value is valid
- * @exception DebugException on failure. Reasons include:<ul>
- * <li>TARGET_REQUEST_FAILED - The request failed in the target
- * <li>NOT_SUPPORTED - The capability is not supported by the target
- * </ul>
- * @since 2.0
- */
- public boolean verifyValue(IValue value) throws DebugException;
-}
-
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IVariable.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IVariable.java
deleted file mode 100644
index f199c0539..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IVariable.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * A variable represents a visible data structure in a stack frame
- * or value.
- * Each variable has a value which may in turn contain more variables.
- * A variable may support value modification.
- * <p>
- * An implementation may choose to re-use or discard
- * variables on iterative thread suspensions. Clients
- * cannot assume that variables are identical or equal across
- * iterative thread suspensions and must check for equality on iterative
- * suspensions if they wish to re-use the objects.
- * </p>
- * <p>
- * An implementation that preserves equality
- * across iterative suspensions may display more desirable behavior in
- * some clients. For example, if variables are preserved
- * while stepping, a UI client would be able to update the UI incrementally,
- * rather than collapse and redraw the entire list or tree.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see IValue
- * @see IStackFrame
- * @see IValueModification
- */
-public interface IVariable extends IDebugElement, IValueModification {
- /**
- * Returns the value of this variable.
- *
- * @return this variable's value
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public IValue getValue() throws DebugException;
- /**
- * Returns the name of this variable. Name format is debug model
- * specific, and should be specified by a debug model.
- *
- * @return this variable's name
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getName() throws DebugException;
- /**
- * Returns a description of the type of data this variable is
- * declared to reference. Note that the declared type of a
- * variable and the concrete type of its value are not necessarily
- * the same.
- *
- * @return the declared type of this variable
- * @exception DebugException if this method fails. Reasons include:
- * <ul><li>Failure communicating with the VM. The DebugException's
- * status code contains the underlying exception responsible for
- * the failure.</li>
- */
- public String getReferenceTypeName() throws DebugException;
-
- /**
- * Returns whether this variable's value has changed since the last suspend event.
- * Implementations may choose whether the last suspend event is the last suspend
- * event in this variable's debug target, or within the thread(s) in which this variable
- * is visible.
- * <p>
- * Implementations that choose not to implement this function should always
- * return <code>false</code>.
- * </p>
- *
- * @return whether this variable's value has changed since the last suspend event
- * @exception DebugException if an exception occurs determining if this variable's
- * value has changed since the last suspend event
- */
- public boolean hasValueChanged() throws DebugException;
-
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpression.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpression.java
deleted file mode 100644
index db4617353..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpression.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * A watch expression is an expression that is evaluated in the context
- * of a specific stack frame, thread, debug target, process, or launch.
- * Generally, a watch expression is a snippet of code that is evaluated
- * each time a debug target suspends, or when a user provides a context
- * for an evaluation by selecting a debug target or thread. An expression
- * updates its value when it is provided with a context in which it
- * can perform an evaluation.
- * <p>
- * An implementation is provided by the debug platform. Clients that support watch expressions
- * should contribute and implement a watch expression delegate. Watch
- * expressions can be created via the <code>IExpressionManager</code>.
- * </p>
- * @see org.eclipse.debug.core.model.IWatchExpressionDelegate
- * @see org.eclipse.debug.core.IExpressionManager
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface IWatchExpression extends IErrorReportingExpression {
-
- /**
- * Updates this watch expression's value based on the current evaluation
- * context. This watch expression fires a debug change event when the
- * evaluation is complete. A watch expression can be asked to
- * evaluate even when it is disabled. Note that implementations should
- * generally be asynchronous to avoid blocking the calling thread.
- */
- public void evaluate();
- /**
- * Sets the context for this watch expression, or <code>null</code> if none.
- * If the given context is valid for this expression, this expression may
- * update its value. When the value update is complete, a debug change event is
- * fired. When <code>null</code> is specified as a context, this expression
- * may choose to retain its previous value.
- * <p>
- * The context is usually one of (but not limited to):
- * <ul>
- * <li>a debug target (<code>IDebugTarget</code>)</li>
- * <li>a thread (<code>IThread</code>)</li>
- * <li>a stack frame (<code>IStackFrame</code>)</li>
- * </ul>
- * </p>
- *
- * @param context context in which to update this expression's value, or
- * <code>null</code> if none
- */
- public void setExpressionContext(IDebugElement context);
- /**
- * Sets this watch expression's snippet of code. This method
- * causes the new snippet to be evaluated immediately in
- * the expression's last context.
- *
- * @param expressionText the snippet which will be evaluated
- */
- public void setExpressionText(String expressionText);
- /**
- * Returns whether the result of this watch expression is pending.
- * An expression is pending if an evaluation has been requested, but
- * the value has not yet been returned.
- *
- * @return whether this expression's result is pending
- */
- public boolean isPending();
- /**
- * Returns whether this expression is enabled. An enabled expression will
- * update its value. A disabled expression will not.
- *
- * @return whether this expression is enabled
- */
- public boolean isEnabled();
- /**
- * Sets this expression's enabled state. This method
- * causes the new snippet to be evaluated immediately in
- * the expression's last context.
- *
- * @param enabled whether this expression should be enabled
- */
- public void setEnabled(boolean enabled);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionDelegate.java
deleted file mode 100644
index ec662ecc1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionDelegate.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * A delegate which computes the value of a watch expression
- * when provided a context. Watch delegates are provided on a
- * per debug model basis. Watch expressions query the appropriate
- * delegate based on the debug model of the context element.
- * Plug-ins that wish to contribute watch expression delegates may do so using the
- * <code>org.eclipse.debug.core.watchExpressionDelegates</code>
- * extension point.
- * <p>
- * For example, the following is the definition of a watch expression
- * delegate for the com.example.foo plug-in:
- * <pre>
- * &lt;extension point="org.eclipse.debug.core.watchExpressionDelegates"&gt;
- * &lt;watchExpressionDelegate
- * debugModel="org.eclipse.jdt.debug"
- * delegateClass="org.eclipse.jdt.internal.debug.ui.JavaWatchExpressionDelegate"/&gt;
- * &lt;/extension&gt;
- * </pre>
- * <p>
- * Clients are intended to implement this interface.
- * </p>
- * @see org.eclipse.debug.core.model.IWatchExpression
- * @see org.eclipse.debug.core.model.IWatchExpressionListener
- *
- * @since 3.0
- */
-public interface IWatchExpressionDelegate {
-
- /**
- * Evaluates the given expression in the given context asynchronously and
- * notifies the given listener when the evaluation finishes.
- *
- * @param expression the expression to evaluate
- * @param context the context for the evaluation
- * @param listener the listener to notify when the evaluation completes
- */
- public void evaluateExpression(String expression, IDebugElement context, IWatchExpressionListener listener);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionListener.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionListener.java
deleted file mode 100644
index 34007a9ec..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-/**
- * A watch expression listener is notified when an
- * <code>org.eclipse.debug.core.model.IWatchExpressionDelegate</code>
- * completes an evaluation.
- *
- * @see org.eclipse.debug.core.model.IWatchExpressionDelegate
- * @see org.eclipse.debug.core.model.IWatchExpressionResult
- * @since 3.0
- */
-public interface IWatchExpressionListener {
-
- /**
- * Notifies the listener that an evaluation has completed.
- *
- * @param result the result of the evaluation
- */
- public void watchEvaluationFinished(IWatchExpressionResult result);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionResult.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionResult.java
deleted file mode 100644
index 26bfd7728..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchExpressionResult.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import org.eclipse.debug.core.DebugException;
-
-/**
- * The result of an evaluation performed by an
- * <code>org.eclipse.debug.core.model.IWatchExpressionDelegate</code>.
- * A watch expression reports the value of the evaluation
- * and any errors or exceptions that occurred.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.model.IWatchExpressionDelegate
- * @since 3.0
- */
-public interface IWatchExpressionResult {
- /**
- * Returns the value representing the result of the
- * evaluation, or <code>null</code> if the
- * associated evaluation failed. If
- * the associated evaluation failed, there will
- * be problems, or an exception in this result.
- *
- * @return the resulting value, possibly
- * <code>null</code>
- */
- public IValue getValue();
-
- /**
- * Returns whether the evaluation had any problems
- * or if an exception occurred while performing the
- * evaluation.
- *
- * @return whether there were any problems.
- * @see #getErrorMessages()
- * @see #getException()
- */
- public boolean hasErrors();
-
- /**
- * Returns an array of problem messages. Each message describes a problem that
- * occurred while compiling the snippet.
- *
- * @return evaluation error messages, or an empty array if no errors occurred
- */
- public String[] getErrorMessages();
-
- /**
- * Returns the expression that was evaluated.
- *
- * @return The string expression.
- */
- public String getExpressionText();
-
- /**
- * Returns any exception that occurred while performing the evaluation
- * or <code>null</code> if an exception did not occur.
- * The exception will be a debug exception or a debug exception
- * that wrappers a debug model specific exception that indicates a problem communicating
- * with the target or with actually performing some action in the target.
- *
- * @return The exception that occurred during the evaluation
- * @see org.eclipse.debug.core.DebugException
- */
- public DebugException getException();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchpoint.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchpoint.java
deleted file mode 100644
index bb356fe9f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/IWatchpoint.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A breakpoint that suspends when an associated variable is
- * read or written.
- * <p>
- * Clients may implement this interface. Clients are not required to
- * implement this interface to implement watchpoints, but those that do inherit
- * default rendering of images for watchpoints from the debug platform's
- * default label provider and actions to toggle access and modification
- * properties of a watchpoint.
- * </p>
- * @since 3.1
- */
-public interface IWatchpoint extends IBreakpoint {
- /**
- * Returns whether this watchpoint will suspend execution when its associated
- * variable is accessed (read).
- *
- * @return whether this is an access watchpoint
- * @exception CoreException if unable to access the property
- * on this breakpoint's underlying marker
- */
- public boolean isAccess() throws CoreException;
- /**
- * Sets whether this breakpoint will suspend execution when its associated
- * variable is accessed.
- *
- * @param access whether to suspend on access
- * @exception CoreException if unable to set the property on this breakpoint's
- * underlying marker or if the capability is not supported
- */
- public void setAccess(boolean access) throws CoreException;
- /**
- * Returns whether this watchpoint will suspend execution when its associated
- * variable is written.
- *
- * @return whether this is a modification watchpoint
- * @exception CoreException if unable to access the property
- * on this breakpoint's underlying marker
- */
- public boolean isModification() throws CoreException;
- /**
- * Sets whether this breakpoint will suspend execution when its associated
- * variable is modified.
- *
- * @param modification whether to suspend on modification
- * @exception CoreException if unable to set the property on
- * this breakpoint's underlying marker or if the capability is not supported
- */
- public void setModification(boolean modification) throws CoreException;
- /**
- * Returns whether this breakpoints supports the capability to suspend
- * when an associated variable is read.
- *
- * @return whether this breakpoints supports the capability to suspend
- * when an associated variable is read
- */
- public boolean supportsAccess();
- /**
- * Returns whether this breakpoints supports the ability to suspend
- * when an associated variable is written.
- *
- * @return whether this breakpoints supports the ability to suspend
- * when an associated variable is written
- */
- public boolean supportsModification();
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LaunchConfigurationDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LaunchConfigurationDelegate.java
deleted file mode 100644
index cf91b20cc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LaunchConfigurationDelegate.java
+++ /dev/null
@@ -1,432 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Mike Morearty - Bug 255310: Launching only gets the progress bar to 91%
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-import com.ibm.icu.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.IStatusHandler;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-import org.eclipse.debug.internal.core.IInternalDebugCoreConstants;
-
-/**
- * Default implementation of a launch configuration delegate. Provides
- * convenience methods for computing the build order of projects,
- * building projects, and searching for errors in the workspace. The
- * default pre-launch check prompts the user to launch in debug mode
- * if breakpoints are present in the workspace.
- * <p>
- * Clients implementing launch configuration delegates should subclass
- * this class.
- * </p>
- * @since 3.0
- */
-public abstract class LaunchConfigurationDelegate implements ILaunchConfigurationDelegate2 {
-
- /**
- * Constant to define debug.core for the status codes
- *
- * @since 3.2
- */
- private static final String DEBUG_CORE = "org.eclipse.debug.core"; //$NON-NLS-1$
-
- /**
- * Constant to define debug.ui for the status codes
- *
- * @since 3.2
- */
- private static final String DEBUG_UI = "org.eclipse.debug.ui"; //$NON-NLS-1$
-
- /**
- * Status code for which a UI prompter is registered.
- */
- protected static final IStatus promptStatus = new Status(IStatus.INFO, DEBUG_UI, 200, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /**
- * Status code for which a prompter is registered to ask the user if they
- * want to launch in debug mode when breakpoints are present.
- */
- protected static final IStatus switchToDebugPromptStatus = new Status(IStatus.INFO, DEBUG_CORE, 201, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /**
- * Status code for which a prompter is registered to ask the user if the
- * want to continue launch despite existing compile errors
- */
- protected static final IStatus complileErrorPromptStatus = new Status(IStatus.INFO, DEBUG_CORE, 202, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /**
- * Status code for which a prompter will ask the user to save any/all of the dirty editors which have only to do
- * with this launch (scoping them to the current launch/build)
- *
- * @since 3.2
- */
- protected static final IStatus saveScopedDirtyEditors = new Status(IStatus.INFO, DEBUG_CORE, 222, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /**
- * Status code for which a prompter is registered to ask the user if the
- * want to continue launch despite existing compile errors in specific
- * projects. This enhances the 'compileErrorPromptStatus' by specifying
- * which projects the errors exist in.
- *
- * @since 3.1
- */
- protected static final IStatus complileErrorProjectPromptStatus = new Status(IStatus.INFO, DEBUG_CORE, 203, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate2#getLaunch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String)
- */
- public ILaunch getLaunch(ILaunchConfiguration configuration, String mode) throws CoreException {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate2#buildForLaunch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
- */
- public boolean buildForLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
- if (monitor != null) {
- monitor.beginTask("", 1); //$NON-NLS-1$
- }
- try {
- IProject[] projects = getBuildOrder(configuration, mode);
- if (projects == null) {
- return true;
- }
- buildProjects(projects, new SubProgressMonitor(monitor, 1));
- return false;
- } finally {
- if (monitor != null) {
- monitor.done();
- }
- }
- }
-
- /**
- * Returns the projects to build before launching the given launch configuration
- * or <code>null</code> if the entire workspace should be built incrementally.
- * Subclasses should override as required.
- *
- * @param configuration the configuration being launched
- * @param mode launch mode
- * @return projects to build, in build order, or <code>null</code>
- * @throws CoreException if an exception occurs
- */
- protected IProject[] getBuildOrder(ILaunchConfiguration configuration, String mode) throws CoreException {
- return null;
- }
-
- /**
- * Returns the set of projects to use when searching for errors or <code>null</code>
- * if no search is to be done.
- *
- * @param configuration the configuration being launched
- * @param mode launch mode
- * @return a list of projects or <code>null</code>
- * @throws CoreException if an exception occurs
- */
- protected IProject[] getProjectsForProblemSearch(ILaunchConfiguration configuration, String mode) throws CoreException {
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate2#finalLaunchCheck(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
- */
- public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
- monitor.beginTask("", 1); //$NON-NLS-1$
- try {
- IProject[] projects = getProjectsForProblemSearch(configuration, mode);
- if (projects == null) {
- return true; //continue launch
- }
- boolean continueLaunch = true;
-
- monitor.subTask(DebugCoreMessages.LaunchConfigurationDelegate_6);
- List errors = new ArrayList();
- for (int i = 0; i < projects.length; i++) {
- monitor.subTask(MessageFormat.format(DebugCoreMessages.LaunchConfigurationDelegate_7, new String[]{projects[i].getName()}));
- if (existsProblems(projects[i])) {
- errors.add(projects[i]);
- }
- }
- if (!errors.isEmpty()) {
- errors.add(0, configuration);
- IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(promptStatus);
- if (prompter != null) {
- continueLaunch = ((Boolean) prompter.handleStatus(complileErrorProjectPromptStatus, errors)).booleanValue();
- }
- }
-
- return continueLaunch;
- } finally {
- monitor.done();
- }
- }
-
- /* (non-Javadoc)
- *
- * If launching in run mode, and the configuration supports debug mode, check
- * if there are any breakpoints in the workspace, and ask the user if they'd
- * rather launch in debug mode.
- * <p>
- * Since 3.2, this check also performs saving of resources before launching.
- * </p>
- *
- * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate2#preLaunchCheck(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
- */
- public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
- if (!saveBeforeLaunch(configuration, mode, monitor)) {
- return false;
- }
- if (mode.equals(ILaunchManager.RUN_MODE) && configuration.supportsMode(ILaunchManager.DEBUG_MODE)) {
- IBreakpoint[] breakpoints= getBreakpoints(configuration);
- if (breakpoints == null) {
- return true;
- }
- for (int i = 0; i < breakpoints.length; i++) {
- if (breakpoints[i].isEnabled()) {
- IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(promptStatus);
- if (prompter != null) {
- boolean launchInDebugModeInstead = ((Boolean)prompter.handleStatus(switchToDebugPromptStatus, configuration)).booleanValue();
- if (launchInDebugModeInstead) {
- return false; //kill this launch
- }
- }
- // if no user prompt, or user says to continue (no need to check other breakpoints)
- return true;
- }
- }
- }
- // no enabled breakpoints... continue launch
- return true;
- }
-
- /**
- * Performs the scoped saving of resources before launching and returns whether
- * the launch should continue. By default, only resources contained within the projects
- * which are part of the build scope are considered.
- * <p>
- * Subclasses may override this method if required.
- * </p>
- *
- * @param configuration the configuration being launched
- * @param mode the launch mode
- * @param monitor progress monitor
- * @return whether the launch should continue
- * @throws CoreException if an exception occurs during the save
- * @since 3.2
- */
- protected boolean saveBeforeLaunch(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
- monitor.beginTask("", 1); //$NON-NLS-1$
- try {
- IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(promptStatus);
- if(prompter != null) {
- //do save here and remove saving from DebugUIPlugin to avoid it 'trumping' this save
- IProject[] buildOrder = getBuildOrder(configuration, mode);
- if(!((Boolean)prompter.handleStatus(saveScopedDirtyEditors, new Object[]{configuration, buildOrder})).booleanValue()) {
- return false;
- }
- }
- return true;
- } finally {
- monitor.done();
- }
- }
-
- /**
- * Returns the breakpoint collection that is relevant for this launch delegate.
- * By default this is all the breakpoints registered with the Debug breakpoint manager.
- *
- * @param configuration the configuration to get associated breakpoints for
- * @since 3.1
- * @return the breakpoints that are relevant for this launch delegate
- */
- protected IBreakpoint[] getBreakpoints(ILaunchConfiguration configuration) {
- IBreakpointManager breakpointManager = DebugPlugin.getDefault().getBreakpointManager();
- if (!breakpointManager.isEnabled()) {
- // no need to check breakpoints individually.
- return null;
- }
- return breakpointManager.getBreakpoints();
- }
-
- /**
- * Returns an array of projects in their suggested build order
- * containing all of the projects specified by <code>baseProjects</code>
- * and all of their referenced projects.
- *
- * @param baseProjects a collection of projects
- * @return an array of projects in their suggested build order
- * containing all of the projects specified by <code>baseProjects</code>
- * @throws CoreException if an error occurs while computing referenced
- * projects
- */
- protected IProject[] computeReferencedBuildOrder(IProject[] baseProjects) throws CoreException {
- HashSet unorderedProjects = new HashSet();
- for(int i = 0; i< baseProjects.length; i++) {
- unorderedProjects.add(baseProjects[i]);
- addReferencedProjects(baseProjects[i], unorderedProjects);
- }
- IProject[] projectSet = (IProject[]) unorderedProjects.toArray(new IProject[unorderedProjects.size()]);
- return computeBuildOrder(projectSet);
- }
-
-
- /**
- * Adds all projects referenced by <code>project</code> to the given
- * set.
- *
- * @param project project
- * @param references set to which referenced projects are added
- * @throws CoreException if an error occurs while computing referenced
- * projects
- */
- protected void addReferencedProjects(IProject project, Set references) throws CoreException{
- if (project.isOpen()) {
- IProject[] projects = project.getReferencedProjects();
- for (int i = 0; i < projects.length; i++) {
- IProject refProject= projects[i];
- if (refProject.exists() && !references.contains(refProject)) {
- references.add(refProject);
- addReferencedProjects(refProject, references);
- }
- }
- }
- }
-
- /**
- * Returns a list of projects in their suggested build order from the
- * given unordered list of projects.
- *
- * @param projects the list of projects to sort into build order
- * @return a new array containing all projects from <code>projects</code> sorted
- * according to their build order.
- */
- protected IProject[] computeBuildOrder(IProject[] projects) {
- String[] orderedNames = ResourcesPlugin.getWorkspace().getDescription().getBuildOrder();
- if (orderedNames != null) {
- List orderedProjects = new ArrayList(projects.length);
- //Projects may not be in the build order but should be built if selected
- List unorderedProjects = new ArrayList(projects.length);
- for(int i = 0; i < projects.length; ++i) {
- unorderedProjects.add(projects[i]);
- }
-
- for (int i = 0; i < orderedNames.length; i++) {
- String projectName = orderedNames[i];
- for (Iterator iterator = unorderedProjects.iterator(); iterator.hasNext(); ) {
- IProject project = (IProject)iterator.next();
- if (project.getName().equals(projectName)) {
- orderedProjects.add(project);
- iterator.remove();
- break;
- }
- }
- }
- //Add anything not specified before we return
- orderedProjects.addAll(unorderedProjects);
- return (IProject[]) orderedProjects.toArray(new IProject[orderedProjects.size()]);
- }
-
- // Computing build order returned null, try the project prerequisite order
- IWorkspace.ProjectOrder po = ResourcesPlugin.getWorkspace().computeProjectOrder(projects);
- return po.projects;
- }
-
- /**
- * Returns whether the given project contains any problem markers of the
- * specified severity.
- *
- * @param proj the project to search
- * @return whether the given project contains any problems that should
- * stop it from launching
- * @throws CoreException if an error occurs while searching for
- * problem markers
- */
- protected boolean existsProblems(IProject proj) throws CoreException {
- IMarker[] markers = proj.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
- if (markers.length > 0) {
- for (int i = 0; i < markers.length; i++) {
- if (isLaunchProblem(markers[i])) {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Returns whether the given problem should potentially abort the launch.
- * By default if the problem has an error severity, the problem is considered
- * a potential launch problem. Subclasses may override to specialize error
- * detection.
- *
- * @param problemMarker candidate problem
- * @return whether the given problem should potentially abort the launch
- * @throws CoreException if any exceptions occur while accessing marker attributes
- */
- protected boolean isLaunchProblem(IMarker problemMarker) throws CoreException {
- Integer severity = (Integer)problemMarker.getAttribute(IMarker.SEVERITY);
- if (severity != null) {
- return severity.intValue() >= IMarker.SEVERITY_ERROR;
- }
-
- return false;
- }
-
- /**
- * Performs an incremental build on each of the given projects.
- *
- * @param projects projects to build
- * @param monitor progress monitor
- * @throws CoreException if an exception occurs while building
- */
- protected void buildProjects(final IProject[] projects, IProgressMonitor monitor) throws CoreException {
- IWorkspaceRunnable build = new IWorkspaceRunnable(){
- public void run(IProgressMonitor pm) throws CoreException {
- SubMonitor localmonitor = SubMonitor.convert(pm, DebugCoreMessages.LaunchConfigurationDelegate_scoped_incremental_build, projects.length);
- try {
- for (int i = 0; i < projects.length; i++ ) {
- if (localmonitor.isCanceled()) {
- throw new OperationCanceledException();
- }
- projects[i].build(IncrementalProjectBuilder.INCREMENTAL_BUILD, localmonitor.newChild(1));
- }
- } finally {
- localmonitor.done();
- }
- }
- };
- ResourcesPlugin.getWorkspace().run(build, monitor);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LineBreakpoint.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LineBreakpoint.java
deleted file mode 100644
index 94f04baa8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/LineBreakpoint.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-
-
-/**
- * Abstract implementation of a line breakpoint. This class is
- * intended to be subclassed by debug model specific implementations
- * of line breakpoints.
- *
- * @see ILineBreakpoint
- */
-
-public abstract class LineBreakpoint extends Breakpoint implements ILineBreakpoint {
-
-
- /**
- * @see ILineBreakpoint#getLineNumber()
- */
- public int getLineNumber() throws CoreException {
- IMarker m = getMarker();
- if (m != null) {
- return m.getAttribute(IMarker.LINE_NUMBER, -1);
- }
- return -1;
- }
-
- /**
- * @see ILineBreakpoint#getCharStart()
- */
- public int getCharStart() throws CoreException {
- IMarker m = getMarker();
- if (m != null) {
- return m.getAttribute(IMarker.CHAR_START, -1);
- }
- return -1;
- }
-
- /**
- * @see ILineBreakpoint#getCharEnd()
- */
- public int getCharEnd() throws CoreException {
- IMarker m = getMarker();
- if (m != null) {
- return m.getAttribute(IMarker.CHAR_END, -1);
- }
- return -1;
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/MemoryByte.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/MemoryByte.java
deleted file mode 100644
index 6498ec379..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/MemoryByte.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-/**
- * A byte of memory in a memory block. Each byte of memory has a value and
- * attributes indicating if the byte is read-only, valid, or if its value has
- * changed.
- * <p>
- * Clients may instantiate this class. Clients may subclass this class to
- * add other attributes to a memory byte, as required.
- * </p>
- * @since 3.1
- * @see org.eclipse.debug.core.model.IMemoryBlockExtension
- */
-public class MemoryByte {
-
- /**
- * Bit mask used to indicate a byte is writable.
- */
- public static final byte WRITABLE = 0x01;
-
- /**
- * Bit mask used to indicate a byte is readable.
- * A memory byte is readable when its value and attributes are retrievable.
- * Otherwise, a byte is considered non-readable.
- */
- public static final byte READABLE = 0x02;
-
- /**
- * Bit mask used to indicate a byte has changed since the last
- * suspend event.
- *
- * @see org.eclipse.debug.core.DebugEvent#SUSPEND
- */
- public static final byte CHANGED = 0x04;
-
- /**
- * Bit mask used to indicate a memory byte has history to
- * determine if its value has changed. When a memory byte's
- * history is unknown, the change state has no meaning.
- */
- public static final byte HISTORY_KNOWN = 0x08;
-
- /**
- * Bit mask used to indicate a this byte of memory
- * is big endian. If this byte of memory is little endian,
- * turn this bit mask to off.
- */
- public static final byte BIG_ENDIAN = 0x10;
-
- /**
- * Bit mask used to indicate that the endianess of this byte
- * of memory is known. When a memory byte's endianess is
- * unknown, the endianess of this byte has no meaning.
- */
- public static final byte ENDIANESS_KNOWN = 0x20;
-
- /**
- * Value of this byte.
- */
- protected byte value;
-
- /**
- * Attribute flags.
- * <p>
- * To specify READABLE: flags |= MemoryByte.READABLE;
- * To specify WRITABLE: flags |= MemoryByte.WRITABLE;
- * </p>
- */
- protected byte flags;
-
- /**
- * Constructs a readable, writable memory byte without a change history,
- * and a value of 0. The byte's endianess is known and is little endian
- * by default.
- */
- public MemoryByte() {
- this((byte)0, (byte)(WRITABLE | READABLE | ENDIANESS_KNOWN));
- }
-
- /**
- * Constructs a readable, writable memory byte without a change history,
- * with the given value. The byte's endianess is known and is little endian
- * by default.
- *
- * @param byteValue value of this memory byte
- *
- */
- public MemoryByte(byte byteValue) {
- this(byteValue, (byte)(WRITABLE | READABLE | ENDIANESS_KNOWN));
- }
-
- /**
- * Constructs a memory byte with the given value and attributes.
- *
- * @param byteValue value of this memory byte
- * @param byteFlags attributes of the byte specified as a bit mask
- */
- public MemoryByte(byte byteValue, byte byteFlags) {
- value = byteValue;
- flags = byteFlags;
- }
-
- /**
- * Returns this memory byte's attribute as a bit mask.
- *
- * @return this memory byte's attribute as a bit mask
- */
- public byte getFlags() {
- return flags;
- }
- /**
- * Sets this memory byte's attributes based on the given bit mask.
- *
- * @param flags bit mask of attributes
- */
- public void setFlags(byte flags) {
- this.flags = flags;
- }
-
- /**
- * Returns the value of this memory byte.
- *
- * @return the value of this memory byte
- */
- public byte getValue() {
- return value;
- }
-
- /**
- * Sets the value of this memory byte.
- *
- * @param value the new value of this memory byte
- */
- public void setValue(byte value) {
- this.value = value;
- }
-
- /**
- * Sets whether this memory byte is readable. A memory byte
- * is considered readable when its value and attributes are
- * retrievable.
- *
- * @param readable whether this memory byte is readable
- */
- public void setReadable(boolean readable) {
- flags |= MemoryByte.READABLE;
- if (!readable)
- flags ^= MemoryByte.READABLE;
- }
-
- /**
- * Returns whether this memory byte is readable. A memory byte
- * is considered readable when its value and attributes are
- * retrievable.
- *
- * @return whether this memory byte is readable
- */
- public boolean isReadable() {
- return ((flags & MemoryByte.READABLE) == MemoryByte.READABLE);
- }
-
- /**
- * Sets whether this memory byte is writable.
- *
- * @param writable whether this memory byte is writable.
- */
- public void setWritable(boolean writable) {
- flags |= MemoryByte.WRITABLE;
- if (!writable)
- flags ^= MemoryByte.WRITABLE;
- }
-
- /**
- * Returns whether this memory byte is writable.
- *
- * @return whether this memory byte is writable
- */
- public boolean isWritable() {
- return ((flags & MemoryByte.WRITABLE) == MemoryByte.WRITABLE);
- }
-
- /**
- * Sets whether this memory byte has changed.
- *
- * @param changed whether this memory byte has changed
- */
- public void setChanged(boolean changed) {
- flags |= MemoryByte.CHANGED;
- if (!changed)
- flags ^= MemoryByte.CHANGED;
- }
-
- /**
- * Returns whether this memory byte has changed.
- *
- * @return whether this memory byte has changed
- */
- public boolean isChanged() {
- return ((flags & MemoryByte.CHANGED) == MemoryByte.CHANGED);
- }
-
- /**
- * Sets whether the history of this byte is known. When history
- * is unknown, the change state of a memory byte has no meaning.
- *
- * @param known whether the change state of this byte is known
- */
- public void setHistoryKnown(boolean known) {
- flags |= MemoryByte.HISTORY_KNOWN;
- if (!known)
- flags ^= MemoryByte.HISTORY_KNOWN;
- }
-
- /**
- * Returns whether the history of this byte is known. When history
- * is unknown, the change state of a memory byte has no meaning.
- *
- * @return whether the change state of this byte is known
- */
- public boolean isHistoryKnown() {
- return ((flags & MemoryByte.HISTORY_KNOWN) == MemoryByte.HISTORY_KNOWN);
- }
-
- /**
- * Sets whether this byte of memory is big endian.
- *
- * @param isBigEndian whether the byte of memory is big endian.
- */
- public void setBigEndian(boolean isBigEndian)
- {
- flags |= MemoryByte.BIG_ENDIAN;
- if (!isBigEndian)
- flags ^= MemoryByte.BIG_ENDIAN;
- }
-
- /**
- * Returns whether this byte of memory is big endian.
- *
- * @return whether the byte of memory is big endian.
- */
- public boolean isBigEndian()
- {
- return ((flags & MemoryByte.BIG_ENDIAN) == MemoryByte.BIG_ENDIAN);
- }
-
- /**
- * Sets whether the endianess of this byte of memory is known.
- * If the endianess is unknown, the endianess of this byte
- * has no meaning.
- *
- * @param isEndianessKnown whether the endianess of this byte is known.
- */
- public void setEndianessKnown(boolean isEndianessKnown)
- {
- flags |= MemoryByte.ENDIANESS_KNOWN;
- if (!isEndianessKnown)
- flags ^= MemoryByte.ENDIANESS_KNOWN;
- }
-
- /**
- * Returns whether the endianess of this byte of memory is known.
- * If the endianess is unknown, the endianess of this byte
- * has no meaning.
- *
- * @return whether the endianess of this byte of memory is known.
- */
- public boolean isEndianessKnown()
- {
- return ((flags & MemoryByte.ENDIANESS_KNOWN) == MemoryByte.ENDIANESS_KNOWN);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java
deleted file mode 100644
index 3bd24ed4e..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/RuntimeProcess.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.model;
-
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.internal.core.DebugCoreMessages;
-import org.eclipse.debug.internal.core.NullStreamsProxy;
-import org.eclipse.debug.internal.core.StreamsProxy;
-
-
-/**
- * Standard implementation of an <code>IProcess</code> that wrappers a system
- * process (<code>java.lang.Process</code>).
- * <p>
- * Clients may subclass this class. Clients that need to replace the implementation
- * of a streams proxy associated with an <code>IProcess</code> should subclass this
- * class. Generally clients should not instantiate this class directly, but should
- * instead call <code>DebugPlugin.newProcess(...)</code>, which can delegate to an
- * <code>IProcessFactory</code> if one is referenced by the associated launch configuration.
- * </p>
- * @see org.eclipse.debug.core.model.IProcess
- * @see org.eclipse.debug.core.IProcessFactory
- * @since 3.0
- */
-public class RuntimeProcess extends PlatformObject implements IProcess {
-
- private static final int MAX_WAIT_FOR_DEATH_ATTEMPTS = 10;
- private static final int TIME_TO_WAIT_FOR_THREAD_DEATH = 500; // ms
-
- /**
- * The launch this process is contained in
- */
- private ILaunch fLaunch;
-
- /**
- * The system process represented by this <code>IProcess</code>
- */
- private Process fProcess;
-
- /**
- * This process's exit value
- */
- private int fExitValue;
-
- /**
- * The monitor which listens for this runtime process' system process
- * to terminate.
- */
- private ProcessMonitorThread fMonitor;
-
- /**
- * The streams proxy for this process
- */
- private IStreamsProxy fStreamsProxy;
-
- /**
- * The name of the process
- */
- private String fName;
-
- /**
- * Whether this process has been terminated
- */
- private boolean fTerminated;
-
- /**
- * Table of client defined attributes
- */
- private Map fAttributes;
-
- /**
- * Whether output from the process should be captured or swallowed
- */
- private boolean fCaptureOutput = true;
-
- /**
- * Constructs a RuntimeProcess on the given system process
- * with the given name, adding this process to the given
- * launch.
- *
- * @param launch the parent launch of this process
- * @param process underlying system process
- * @param name the label used for this process
- * @param attributes map of attributes used to initialize the attributes
- * of this process, or <code>null</code> if none
- */
- public RuntimeProcess(ILaunch launch, Process process, String name, Map attributes) {
- setLaunch(launch);
- initializeAttributes(attributes);
- fProcess= process;
- fName= name;
- fTerminated= true;
- try {
- process.exitValue();
- } catch (IllegalThreadStateException e) {
- fTerminated= false;
- }
-
- String captureOutput = launch.getAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT);
- fCaptureOutput = !("false".equals(captureOutput)); //$NON-NLS-1$
-
- fStreamsProxy= createStreamsProxy();
- fMonitor = new ProcessMonitorThread(this);
- fMonitor.start();
- launch.addProcess(this);
- fireCreationEvent();
- }
-
- /**
- * Initialize the attributes of this process to those in the given map.
- *
- * @param attributes attribute map or <code>null</code> if none
- */
- private void initializeAttributes(Map attributes) {
- if (attributes != null) {
- Iterator keys = attributes.keySet().iterator();
- while (keys.hasNext()) {
- String key = (String)keys.next();
- setAttribute(key, (String)attributes.get(key));
- }
- }
- }
-
- /**
- * @see ITerminate#canTerminate()
- */
- public boolean canTerminate() {
- return !fTerminated;
- }
-
- /**
- * @see IProcess#getLabel()
- */
- public String getLabel() {
- return fName;
- }
-
- /**
- * Sets the launch this process is contained in
- *
- * @param launch the launch this process is contained in
- */
- protected void setLaunch(ILaunch launch) {
- fLaunch = launch;
- }
-
- /**
- * @see IProcess#getLaunch()
- */
- public ILaunch getLaunch() {
- return fLaunch;
- }
-
- /**
- * Returns the underlying system process associated with this process.
- *
- * @return system process
- */
- protected Process getSystemProcess() {
- return fProcess;
- }
-
- /**
- * @see ITerminate#isTerminated()
- */
- public boolean isTerminated() {
- return fTerminated;
- }
-
- /**
- * @see ITerminate#terminate()
- */
- public void terminate() throws DebugException {
- if (!isTerminated()) {
- if (fStreamsProxy instanceof StreamsProxy) {
- ((StreamsProxy)fStreamsProxy).kill();
- }
- Process process = getSystemProcess();
- if (process != null) {
- process.destroy();
- }
- int attempts = 0;
- while (attempts < MAX_WAIT_FOR_DEATH_ATTEMPTS) {
- try {
- process = getSystemProcess();
- if (process != null) {
- fExitValue = process.exitValue(); // throws exception if process not exited
- }
- return;
- } catch (IllegalThreadStateException ie) {
- }
- try {
- Thread.sleep(TIME_TO_WAIT_FOR_THREAD_DEATH);
- } catch (InterruptedException e) {
- }
- attempts++;
- }
- // clean-up
- if (fMonitor != null) {
- fMonitor.killThread();
- fMonitor = null;
- }
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.TARGET_REQUEST_FAILED, DebugCoreMessages.RuntimeProcess_terminate_failed, null);
- throw new DebugException(status);
- }
- }
-
- /**
- * Notification that the system process associated with this process
- * has terminated.
- */
- protected void terminated() {
- if (fStreamsProxy instanceof StreamsProxy) {
- ((StreamsProxy)fStreamsProxy).close();
- }
- fTerminated= true;
- try {
- fExitValue = fProcess.exitValue();
- } catch (IllegalThreadStateException ie) {
- }
- fProcess= null;
- fireTerminateEvent();
- }
-
- /**
- * @see IProcess#getStreamsProxy()
- */
- public IStreamsProxy getStreamsProxy() {
- if (!fCaptureOutput) {
- return null;
- }
- return fStreamsProxy;
- }
-
- /**
- * Creates and returns the streams proxy associated with this process.
- *
- * @return streams proxy
- */
- protected IStreamsProxy createStreamsProxy() {
- if (!fCaptureOutput) {
- return new NullStreamsProxy(getSystemProcess());
- }
- String encoding = getLaunch().getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING);
- return new StreamsProxy(getSystemProcess(), encoding);
- }
-
- /**
- * Fires a creation event.
- */
- protected void fireCreationEvent() {
- fireEvent(new DebugEvent(this, DebugEvent.CREATE));
- }
-
- /**
- * Fires the given debug event.
- *
- * @param event debug event to fire
- */
- protected void fireEvent(DebugEvent event) {
- DebugPlugin manager= DebugPlugin.getDefault();
- if (manager != null) {
- manager.fireDebugEventSet(new DebugEvent[]{event});
- }
- }
-
- /**
- * Fires a terminate event.
- */
- protected void fireTerminateEvent() {
- fireEvent(new DebugEvent(this, DebugEvent.TERMINATE));
- }
-
- /**
- * Fires a change event.
- */
- protected void fireChangeEvent() {
- fireEvent(new DebugEvent(this, DebugEvent.CHANGE));
- }
-
- /**
- * @see IProcess#setAttribute(String, String)
- */
- public void setAttribute(String key, String value) {
- if (fAttributes == null) {
- fAttributes = new HashMap(5);
- }
- Object origVal = fAttributes.get(key);
- if (origVal != null && origVal.equals(value)) {
- return; //nothing changed.
- }
-
- fAttributes.put(key, value);
- fireChangeEvent();
- }
-
- /**
- * @see IProcess#getAttribute(String)
- */
- public String getAttribute(String key) {
- if (fAttributes == null) {
- return null;
- }
- return (String)fAttributes.get(key);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- if (adapter.equals(IProcess.class)) {
- return this;
- }
- if (adapter.equals(IDebugTarget.class)) {
- ILaunch launch = getLaunch();
- IDebugTarget[] targets = launch.getDebugTargets();
- for (int i = 0; i < targets.length; i++) {
- if (this.equals(targets[i].getProcess())) {
- return targets[i];
- }
- }
- return null;
- }
- if (adapter.equals(ILaunch.class)) {
- return getLaunch();
- }
- //CONTEXTLAUNCHING
- if(adapter.equals(ILaunchConfiguration.class)) {
- return getLaunch().getLaunchConfiguration();
- }
- return super.getAdapter(adapter);
- }
- /**
- * @see IProcess#getExitValue()
- */
- public int getExitValue() throws DebugException {
- if (isTerminated()) {
- return fExitValue;
- }
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.TARGET_REQUEST_FAILED, DebugCoreMessages.RuntimeProcess_Exit_value_not_available_until_process_terminates__1, null));
- }
-
- /**
- * Monitors a system process, waiting for it to terminate, and
- * then notifies the associated runtime process.
- */
- class ProcessMonitorThread extends Thread {
-
- /**
- * Whether the thread has been told to exit.
- */
- protected boolean fExit;
- /**
- * The underlying <code>java.lang.Process</code> being monitored.
- */
- protected Process fOSProcess;
- /**
- * The <code>IProcess</code> which will be informed when this
- * monitor detects that the underlying process has terminated.
- */
- protected RuntimeProcess fRuntimeProcess;
-
- /**
- * The <code>Thread</code> which is monitoring the underlying process.
- */
- protected Thread fThread;
-
- /**
- * A lock protecting access to <code>fThread</code>.
- */
- private final Object fThreadLock = new Object();
-
- /**
- * @see Thread#run()
- */
- public void run() {
- synchronized (fThreadLock) {
- if (fExit) {
- return;
- }
- fThread = Thread.currentThread();
- }
- while (fOSProcess != null) {
- try {
- fOSProcess.waitFor();
- } catch (InterruptedException ie) {
- // clear interrupted state
- Thread.interrupted();
- } finally {
- fOSProcess = null;
- fRuntimeProcess.terminated();
- }
- }
- fThread = null;
- }
-
- /**
- * Creates a new process monitor and starts monitoring the process for
- * termination.
- *
- * @param process process to monitor for termination
- */
- public ProcessMonitorThread(RuntimeProcess process) {
- super(DebugCoreMessages.ProcessMonitorJob_0);
- setDaemon(true);
- fRuntimeProcess= process;
- fOSProcess= process.getSystemProcess();
- }
-
- /**
- * Kills the monitoring thread.
- *
- * This method is to be useful for dealing with the error
- * case of an underlying process which has not informed this
- * monitor of its termination.
- */
- protected void killThread() {
- synchronized (fThreadLock) {
- if (fThread == null) {
- fExit = true;
- } else {
- fThread.interrupt();
- }
- }
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/package.html b/org.eclipse.debug.core/core/org/eclipse/debug/core/model/package.html
deleted file mode 100644
index 6192e28d6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/model/package.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse Debug Platform [org.eclipse.debug.core.model]</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<p>Defines interfaces for debug model elements, source lookup, and launching.</p>
-
-<h2>Package Specification</h2>
-
-<p>This package defines classes and interfaces known as the &quot;debug model&quot;
- which support an extensible set of debug architectures and languages. The debug
- model is a set of interfaces representing common artifacts in debuggable programs.
- The debug plug-in itself does not provide an implementation of a debug model.
- It is intended that third parties providing an integrated set of development
- tools for a specific language will also implement a debug model for that language,
- using an underlying debug architecture of their choice. For example, Java development
- tooling provides an implementation of a debug model based on the standard Java
- Platform Debug Architecture (JPDA).</p>
-
-<h4>The Debug Model</h4>
-
-<p>A client implements a debug model by
-providing an implementation of the interfaces defined in this package. (There is no explicit
-extension point that represents a debug model). Each debug model provides one or more
-launch configuration types capable of initiating a debug session.</p>
-
-<p>The common elements defined by the debug model are:
-
-<ul>
- <li>Debug Target - A debug target represents a debuggable program - for example, a virtual
- machine or a process.</li>
- <li>Thread - A debug target may contain one or more threads.</li>
- <li>Stack Frame - A suspended thread may contain one or more stack frames.</li>
- <li>Variable - A stack frame may contain variables.</li>
- <li>Value - Each variable has an associated value, and a value may contain more variables (to
- represent complex data structures and objects).</li>
- <li>Register Group - A stack frame may (optionally) be associated with one or more register
- groups.</li>
- <li>Register - A register group contains one or more registers.</li>
- <li>Memory Blocks - A debug target may (optionally) support the retrieval of
- arbitrary contiguous segments of memory.</li>
- <li>Breakpoint - Breakpoints suspend the execution of a program.</li>
- <li>Expression - An expression is a snippet of code that can be evaluated to
- produce a value.</li>
-</ul>
-
-<p>A debug model implementation is responsible for firing debug events. A debug event
-corresponds to an event in a program being debugged - for example the creation or
-termination of a thread.</p>
-
-<h4>Breakpoints</h4>
-
-<p>Breakpoints are used to suspend the execution of a program being debugged. There are
-many kinds of breakpoints - line breakpoints, conditional line breakpoints, hit count
-breakpoints, exception breakpoints, etc. The kinds of breakpoints supported by each debug
-architecture, and the information required to create those breakpoints
-is dictated by each debug architecture. The debug platform supports an extensible
-set of breakpoint via the breakpoints extension point.</p>
-
-<p>The debug platform provides a breakpoint manager that maintains the collection
- of all registered breakpoints. Clients add and remove breakpoints via this manager.
- Breakpoints are implemented by instances of <b>IBreakpoint</b>. Each breakpoint
- object has an associated marker, which provides persistence and presentation
- in editors. The debug platform defines a generic breakpoint and line breakpoint,
- as well as their corresponding marker definitions. Breakpoint creation is a
- client responsibility - that is, defining the attributes of a breakpoint and
- the resource to associate a breakpoint marker with.</p>
-
-<p>Breakpoints are persisted via their underlying marker. Breakpoint markers defined
- with the <b>persisted</b> attribute as <b>false</b> will not be persisted. Breakpoints
- are restored at workspace startup time by the breakpoint manager - that is,
- breakpoint objects are created for all persisted markers which are a subtype
- of the root breakpoint marker and are added to the breakpoint manager. To allow
- for selective persistence of breakpoints (of the same kind), the <b>IBreakpoint</b>
- interface and root breakpoint implementation defines a &quot;persisted&quot;
- attribute. If this value is set to false, the breakpoint will not be persisted
- across workspace invocations.</p>
-
-<p>As breakpoint markers are modified (created, removed, and changed), resource
- deltas are created by the platform. The breakpoint manager translates pertinent
- resource deltas into breakpoint change notifications (breakpoint added/removed/changed
- messages). Interested listeners may register with the breakpoint manager. The
- breakpoint manager only fires change notifications for registered breakpoints.
- This simplifies breakpoint processing for clients, as resource delta traversal
- and analysis is not required. Debug targets that support breakpoints should
- register for breakpoint change notifications.</p>
-<h4>New Features in the Debug Model, Eclipse 3.0</h4>
-<blockquote>
- <h4>Launch Delegate Enhancements<br>
- </h4>
- <p>Lanuch delegates can optionally implement the new interface <code>ILaunchConfigurationDelegate2</code>.
- This allows launch delegates to provide a launch object to be used for a launch.
- For example, when debugging on a server a delegate could create a new launch
- object or may reuse an existing launch object if the server is already running
- in debug mode. As well, the inteface provides a mechanism for performing a
- scoped build prior to launching (i.e. scoped to the projects in the workspace
- pertaining to the launch), and searching for errors in the workspace which
- may prevent the launch from succeeding (for example, compilation errors).</p>
- <p></p>
- <h4>Extensible Watch Expressions</h4>
- <p>The debug platform provides an implementation of watch expressions. Debug
- models can contribute watch expression delegates if they support watch expressions.
- When a stack frame is selected, the associated delegate is queried to provide
- a value for a watch expression in that context. The debug platform provides
- persistence, enabling, disabling, entering, and editing of watch expressions.</p>
- <h4>Automatic Array Partitioning<br>
- </h4>
- <p>The debug plug-in supports automatic partitioning of indexed collections,
- which partitions large arrays into sub-ranges in the variables view. This
- is supported with the introduction of a new interface in the debug model representing
- an indexed value - <code>IIndexedValue</code>. If a value implements this
- interface, the variables view will automatically partition its elements as
- required, into sub-ranges</p>
- <h4>Logical Structure Types<br>
- </h4>
- <p>Often, it is convenient to navigate complex data structures in terms of a
- logical structure, rather than an implementation structure. For example, no
- matter how a list is implemented (i.e. linked list, collection of arrays,
- etc.), it is often convenient to be able to view the list as an ordered collection.
- To facilitate the display of logical structures in the variables view, an
- extension point has been added (<code>org.eclipse.debug.core.logicalStructureTypes</code>)
- allowing debug models to contribute logical structures of its values, where
- applicable. Debug models may contribute delegates to translate raw implementation
- values into logical values. The variables view will display the logical values,
- when the option to display logical structures is turned on. More than one
- logical structure can be provided for a single value - the user can choose
- which structure to display.</p>
- <h4>Step Filters<br>
- </h4>
- <p>To support step filters on all stepping functions (into, over, return), a
- new interface has been added to the debug platform - <code>IStepFilters</code>
- - which can be implemented by debug targets. This interface replaces <code>IFilteredStep</code>,
- which is now deprecated. The debugger provides a global toggle that turns
- step filters on/off for all stepping functions. Debug targets should implement
- this new interface and honor the step filter enablement setting when stepping.</p>
- <p>This change maintains binary compatibility with previous releases. However,
- targets wishing to leverage the new function must implement the new interface.<br>
- </p>
-</blockquote>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/package.html b/org.eclipse.debug.core/core/org/eclipse/debug/core/package.html
deleted file mode 100644
index 069ad320f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/package.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse Debug Platform</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<p>Provides support for launching programs, breakpoint management, expression management,
-and debug events.</p>
-
-<h2>Package Specification</h2>
-
-<p>This package provides classes and interfaces to support facilities common among
- many debug architectures: launching programs, breakpoint management, expression
- management, and debug events. An extensible set of debug architectures and languages
- are supported by the definition of a &quot;debug model&quot; - a set of interfaces
- representing common artifacts in debuggable programs, which are defined in <b>org.eclipse.debug.core.model</b>.
- The debug plug-in itself does not provide an implementation of a debug model.
- It is intended that third parties providing an integrated set of development
- tools for a specific language will also implement a debug model for that language,
- using an underlying debug architecture of their choice. For example, Java development
- tooling provides an implementation of a debug model based on the standard Java
- Platform Debug Architecture (JPDA).</p>
-
-<h4>The Managers</h4>
-
-<p>The debug platform defines and provides an implementation of the following managers:
-<ul>
- <li>Launch Manager - The launch manager maintains the set of registered launches
- - that is, a collection of programs that have been launched in debuggable
- or non-debuggable (run) mode. Each launch contains its associated debug targets
- and system processes. A launch that represents a debuggable program may specify
- an associated source locator used to locate source elements associated with
- stack frames for a particular debug session. Clients may provide implementations
- of source locators, which are generally tied to the manner in which a program
- is launched.</li>
- <li>Breakpoint Manager - The breakpoint manager maintains, persists, and restores the collection
- of all registered breakpoints in the workspace. As well, it provides change notification for
- breakpoints.</li>
- <li>Expression Manager - The expression manager maintains a collection of registered expressions.
- Expressions are not automatically persisted, but a client could persist its own expressions
- if required.</li>
-</ul>
-<p></p>
-
-<h4>Launch Configurations</h4>
-
-<p>A launch configuration is a persistable description of how to launch an application.
- Each launch configuration is an instance of a type of launch configuration -
- for example, a Java Application. The debug plug-in defines a launch configuration
- type extension point that clients can contribute to. A launch configuration
- is a set of attributes describing how to launch a program. The launching of
- an application is performed by an associated implementation of a launch configuration
- delegate, contributed by each launch configuration type extension.</p>
-<p>A launch configuration may be stored as a file in the worksapce (and shared
- in a repository via standard team mechanisms), or may be stored locally, essentially
- making the launch configuration private for a single user.</p>
-<h4>New Features in the Debug Platform, Eclipse 3.0</h4>
-<blockquote>
- <h4>Extensible Launch Modes</h4>
- <p>The debug platform supports an extensible set of launch modes. Prior releases
- only supported two launch modes - run and debug. The debug platform defines
- an extension point for contributing new launch modes (<code>org.eclipse.debug.core.launchModes)</code>,
- and contributes three basic launch modes itself: run, debug, and profile.
- The launch manager has API to retrieve all launch modes, and a human readable
- label for each launch mode.</p>
- <p>The debug platform has an extension point to support the contribution of
- a launch delegate for a specific launch configuration type and launch mode
- - <code>org.eclipse.debug.core.launchDelegates</code>. This allows launch
- configurations to be extended by third parties, to support new launch modes.
- For example, a client could contribute a launch delegate that launches a Java
- Application in profile mode (currently, the SDK does not provide a Java profiler).</p>
- <p>For backwards compatibility, the launch delegate supplied by a launch configuration
- type extension is used for the launch modes specified by the launch configuration
- type. A launch delegate supplied for a specific mode, is used only for that
- mode.</p>
- <h4>Extensible Debug Events</h4>
- <p>The debug platform supports an extensible set of debug events. A debug event
- kind of <code>MODEL_SPECIFIC</code> has been added to indicate an application
- specific debug event. When a debug event of kind <code>MODEL_SPECIFIC</code>
- is created, the detail code in the event is client defined. The source of
- the event (debug element that generated the event) identifies the debug model
- from which the event was generated. The debug platform and user interface
- ignores model specific debug events.</p>
- <p>A data field has been added to debug events to allow clients to store application
- specific data in debug events.<br>
- </p>
- <h4>Process Factories<br>
- </h4>
- <p>The debug platform provides an extension point (<code>org.eclipse.debug.core.processFactories</code>)
- for contributing process factories. A process factory can be used to override
- default process creation for a launch configuration when the debug plug-in
- creates a new process. A launch configuration can specify a process factory
- to use when creating a process, via the launch configuration attribute<code>
- DebugPlugin.ATTR_PROCESS_FACTORY_ID</code>.</p>
- <h4>Launch Termination Notification<br>
- </h4>
- <p>The debug platform provides a mechanism for launch listeners to be notified
- when a launch terminates. A launch is a container of processes and debug targets.
- When all of the contained targets and processes terminate, a terminate notification
- is sent to those listeners implementing <code>ILaunchesListener2</code>.</p>
- <h4>Breakpoint Manager Enablement<br>
- </h4>
- <p>The breakpoint manager defines the methods <code>setEnabled(boolean)</code>
- and <code>isEnabled()</code>. When the breakpoint manager is disabled, debuggers
- should ignore all registered breakpoints. The debug platform also provides
- a new listener mechanism, <code>IBreakpointManagerListener</code> which allows
- clients to register with the breakpoint manager to be notified when its enablement
- changes.</p>
-</blockquote>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java
deleted file mode 100644
index 3cda6cb9f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupDirector.java
+++ /dev/null
@@ -1,775 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * QNX Software Systems - Mikhail Khodjaiants - Bug 88232
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationListener;
-import org.eclipse.debug.core.ILaunchListener;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.IStatusHandler;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.sourcelookup.containers.DefaultSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Directs source lookup among a collection of source lookup participants,
- * and a common collection of source containers.
- * Each source lookup participant is a source locator itself, which allows
- * more than one source locator to participate in source lookup for a
- * launch. Each source lookup participant searches for source in the source
- * containers managed by this director, and each participant is notified
- * of changes in the source containers (i.e. when the set of source
- * containers changes).
- * <p>
- * When a source director is initialized, it adds it self as a launch listener,
- * and automatically disposes itself when its associated launch is removed
- * from the launch manager. If a source director is instantiated by a client
- * that is not part of a launch, that client is responsible for disposing
- * the source director.
- * </p>
- * <p>
- * Clients may subclass this class.
- * </p>
- * @since 3.0
- * @see org.eclipse.debug.core.model.ISourceLocator
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainerType
- * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputer
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant
- */
-public abstract class AbstractSourceLookupDirector implements ISourceLookupDirector, ILaunchConfigurationListener, ILaunchListener {
-
- // source locator type identifier
- protected String fId;
- //ISourceLocatorParticipants that are listening for container changes
- protected ArrayList fParticipants = new ArrayList();
- //list of current source containers
- protected ISourceContainer[] fSourceContainers = null;
- //the launch config associated with this director
- protected ILaunchConfiguration fConfig;
- //whether duplicates should be searched for or not
- protected boolean fDuplicates = false;
- // source path computer, or null if default
- protected ISourcePathComputer fComputer = null;
- /**
- * Cache of resolved source elements when duplicates exist.
- * Keys are the duplicates, values are the source element to use.
- */
- protected Map fResolvedElements = null;
- // current participant performing lookup or <code>null</code>
- private ISourceLookupParticipant fCurrentParticipant;
-
- protected static final IStatus fPromptStatus = new Status(IStatus.INFO, "org.eclipse.debug.ui", 200, "", null); //$NON-NLS-1$//$NON-NLS-2$
- protected static final IStatus fResolveDuplicatesStatus = new Status(IStatus.INFO, "org.eclipse.debug.ui", 205, "", null); //$NON-NLS-1$//$NON-NLS-2$
-
- // XML nodes & attributes for persistence
- protected static final String DIRECTOR_ROOT_NODE = "sourceLookupDirector"; //$NON-NLS-1$
- protected static final String CONTAINERS_NODE = "sourceContainers"; //$NON-NLS-1$
- protected static final String DUPLICATES_ATTR = "duplicates"; //$NON-NLS-1$
- protected static final String CONTAINER_NODE = "container"; //$NON-NLS-1$
- protected static final String CONTAINER_TYPE_ATTR = "typeId"; //$NON-NLS-1$
- protected static final String CONTAINER_MEMENTO_ATTR = "memento"; //$NON-NLS-1$
-
- class SourceLookupQuery implements ISafeRunnable {
-
- private List fSourceElements = new ArrayList();
- private Object fElement = null;
- private Throwable fException = null;
-
- SourceLookupQuery(Object element) {
- fElement = element;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- fException = exception;
- }
-
- /**
- * Returns any exception that occurred during source lookup.
- *
- * @return the (any) exception that occured during source lookup
- */
- public Throwable getException() {
- return fException;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- MultiStatus multiStatus = null;
- CoreException single = null;
- ISourceLookupParticipant[] participants = getParticipants();
- try {
- for(int i=0; i < participants.length; i++) {
- setCurrentParticipant(participants[i]);
- Object[] sourceArray;
- try {
- sourceArray = participants[i].findSourceElements(fElement);
- if (sourceArray !=null && sourceArray.length > 0) {
- if (isFindDuplicates()) {
- for(int j=0; j<sourceArray.length; j++)
- if(!checkDuplicate(sourceArray[j], fSourceElements))
- fSourceElements.add(sourceArray[j]);
- } else {
- fSourceElements.add(sourceArray[0]);
- return;
- }
- }
- } catch (CoreException e) {
- if (single == null) {
- single = e;
- } else if (multiStatus == null) {
- multiStatus = new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, new IStatus[]{single.getStatus()}, SourceLookupMessages.Source_Lookup_Error, null);
- multiStatus.add(e.getStatus());
- } else {
- multiStatus.add(e.getStatus());
- }
- }
- }
- } finally {
- setCurrentParticipant(null);
- }
- if (fSourceElements.isEmpty()) {
- // set exception if there was one
- if (multiStatus != null) {
- fException = new CoreException(multiStatus);
- } else if (single != null) {
- fException = single;
- }
- }
- }
-
- public List getSourceElements() {
- return fSourceElements;
- }
-
- public void dispose() {
- fElement = null;
- fSourceElements = null;
- fException = null;
- }
-
- }
-
- /**
- * Constructs source lookup director
- */
- public AbstractSourceLookupDirector() {
- }
-
- /**
- * Sets the type identifier for this source locator's type
- *
- * @param id corresponds to source locator type identifier for a
- * persistable source locator
- */
- public void setId(String id) {
- fId = id;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.IPersistableSourceLocator2#dispose()
- */
- public synchronized void dispose() {
- ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
- launchManager.removeLaunchConfigurationListener(this);
- launchManager.removeLaunchListener(this);
- Iterator iterator = fParticipants.iterator();
- while (iterator.hasNext()) {
- ISourceLookupParticipant participant = (ISourceLookupParticipant) iterator.next();
- //director may also be a participant
- if(participant != this)
- participant.dispose();
- }
- fParticipants.clear();
- if (fSourceContainers != null) {
- for (int i = 0; i < fSourceContainers.length; i++) {
- fSourceContainers[i].dispose();
- }
- }
- fSourceContainers = null;
- fResolvedElements = null;
- }
-
- /**
- * Throws an exception with the given message and underlying exception.
- *
- * @param message error message
- * @param exception underlying exception, or <code>null</code>
- * @throws CoreException
- */
- protected void abort(String message, Throwable exception) throws CoreException {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, message, exception);
- throw new CoreException(status);
- }
-
- /**
- * Constructs source containers from a list of container mementos.
- *
- * @param list the list of nodes to be parsed
- * @exception CoreException if parsing encounters an error
- * @return a list of source containers
- */
- private List parseSourceContainers(NodeList list) throws CoreException {
- List containers = new ArrayList();
- for (int i=0; i < list.getLength(); i++) {
- if(!(list.item(i).getNodeType() == Node.ELEMENT_NODE))
- continue;
- Element element = (Element)list.item(i);
- String typeId = element.getAttribute(CONTAINER_TYPE_ATTR);
- if (typeId == null || typeId.equals("")) { //$NON-NLS-1$
- abort(SourceLookupMessages.AbstractSourceLookupDirector_11, null);
- }
- ISourceContainerType type = DebugPlugin.getDefault().getLaunchManager().getSourceContainerType(typeId);
- if(type == null) {
- abort(MessageFormat.format(SourceLookupMessages.AbstractSourceLookupDirector_12, new String[]{typeId}), null);
- }
- String memento = element.getAttribute(CONTAINER_MEMENTO_ATTR);
- if (memento == null || memento.equals("")) { //$NON-NLS-1$
- abort(SourceLookupMessages.AbstractSourceLookupDirector_13, null);
- }
- ISourceContainer container = type.createSourceContainer(memento);
- containers.add(container);
- }
- return containers;
- }
-
- /**
- * Registers the given source lookup participant. Has no effect if an identical
- * participant is already registered. Participants receive notification
- * when the source containers associated with this source director change.
- *
- * @param participant the participant to register
- */
- private synchronized void addSourceLookupParticipant(ISourceLookupParticipant participant) {
- if (!fParticipants.contains(participant)) {
- fParticipants.add(participant);
- participant.init(this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getSourceContainers()
- */
- public synchronized ISourceContainer[] getSourceContainers() {
- if (fSourceContainers == null) {
- return new ISourceContainer[0];
- }
- ISourceContainer[] copy = new ISourceContainer[fSourceContainers.length];
- System.arraycopy(fSourceContainers, 0, copy, 0, fSourceContainers.length);
- return copy;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#isFindDuplicates()
- */
- public boolean isFindDuplicates() {
- return fDuplicates;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#setFindDuplicates(boolean)
- */
- public void setFindDuplicates(boolean duplicates) {
- fDuplicates = duplicates;
- }
-
- /**
- * Removes the given participant from the list of registered participants.
- * Has no effect if an identical participant is not already registered.
- *
- * @param participant the participant to remove
- */
- private synchronized void removeSourceLookupParticipant(ISourceLookupParticipant participant) {
- if (fParticipants.remove(participant)) {
- participant.dispose();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationAdded(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationAdded(ILaunchConfiguration configuration) {
- ILaunchConfiguration from = DebugPlugin.getDefault().getLaunchManager().getMovedFrom(configuration);
- if (from != null && from.equals(getLaunchConfiguration())) {
- fConfig = configuration;
- }
- }
-
- /* (non-Javadoc)
- *
- * Updates source containers in response to changes in underlying launch
- * configuration. Only responds to changes in non-working copies.
- *
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationChanged(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationChanged(ILaunchConfiguration configuration) {
- if (fConfig == null || configuration.isWorkingCopy()) {
- return;
- }
- if(fConfig.equals(configuration)) {
- try{
- String locatorMemento = configuration.getAttribute(ILaunchConfiguration.ATTR_SOURCE_LOCATOR_MEMENTO,(String)null);
- if (locatorMemento == null) {
- initializeDefaults(configuration);
- } else {
- initializeFromMemento(locatorMemento, configuration);
- }
- } catch (CoreException e){
- }
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationListener#launchConfigurationRemoved(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void launchConfigurationRemoved(ILaunchConfiguration configuration) {
- if (configuration.equals(getLaunchConfiguration())) {
- if (DebugPlugin.getDefault().getLaunchManager().getMovedTo(configuration) == null) {
- fConfig = null;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator#getMemento()
- */
- public synchronized String getMemento() throws CoreException {
- Document doc = DebugPlugin.newDocument();
- Element rootNode = doc.createElement(DIRECTOR_ROOT_NODE);
- doc.appendChild(rootNode);
-
- Element pathNode = doc.createElement(CONTAINERS_NODE);
- if(fDuplicates) {
- pathNode.setAttribute(DUPLICATES_ATTR, "true"); //$NON-NLS-1$
- } else {
- pathNode.setAttribute(DUPLICATES_ATTR, "false"); //$NON-NLS-1$
- }
- rootNode.appendChild(pathNode);
- if(fSourceContainers !=null){
- for(int i=0; i<fSourceContainers.length; i++){
- Element node = doc.createElement(CONTAINER_NODE);
- ISourceContainer container = fSourceContainers[i];
- ISourceContainerType type = container.getType();
- node.setAttribute(CONTAINER_TYPE_ATTR, type.getId());
- node.setAttribute(CONTAINER_MEMENTO_ATTR, type.getMemento(container));
- pathNode.appendChild(node);
- }
- }
- return DebugPlugin.serializeDocument(doc);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator#initializeFromMemento(java.lang.String)
- */
- public void initializeFromMemento(String memento) throws CoreException {
- doInitializeFromMemento(memento, true);
- }
-
- /**
- * Initializes this source lookup director from the given memento.
- * Disposes itself before initialization if specified.
- *
- * @param memento source locator memento
- * @param dispose whether to dispose any current source containers and participants
- * before initializing
- * @throws CoreException if an exception occurs during initialization
- * @since 3.1
- */
- protected void doInitializeFromMemento(String memento, boolean dispose) throws CoreException {
- if (dispose) {
- dispose();
- }
- Element rootElement = DebugPlugin.parseDocument(memento);
- if (!rootElement.getNodeName().equalsIgnoreCase(DIRECTOR_ROOT_NODE)) {
- abort(SourceLookupMessages.AbstractSourceLookupDirector_14, null);
- }
- NodeList list = rootElement.getChildNodes();
- int length = list.getLength();
- for (int i = 0; i < length; ++i) {
- Node node = list.item(i);
- short type = node.getNodeType();
- if (type == Node.ELEMENT_NODE) {
- Element entry = (Element) node;
- if(entry.getNodeName().equalsIgnoreCase(CONTAINERS_NODE)){
- setFindDuplicates("true".equals(entry.getAttribute(DUPLICATES_ATTR))); //$NON-NLS-1$
- NodeList children = entry.getChildNodes();
- List containers = parseSourceContainers(children);
- setSourceContainers((ISourceContainer[]) containers.toArray(new ISourceContainer[containers.size()]));
- }
- }
- }
- initializeParticipants();
- }
-
- /**
- * Sets the source containers used by this source lookup
- * director.
- *
- * @param containers source containers to search
- */
- public void setSourceContainers(ISourceContainer[] containers) {
- synchronized (this) {
- List list = Arrays.asList( containers );
- ISourceContainer[] old = getSourceContainers();
- for (int i = 0; i < old.length; i++) {
- // skip overlapping containers
- if (!list.contains(old[i]))
- old[i].dispose();
- }
- fSourceContainers = containers;
- for (int i = 0; i < containers.length; i++) {
- ISourceContainer container = containers[i];
- container.init(this);
- }
- }
- // clear resolved duplicates
- fResolvedElements = null;
- // notify participants
- ISourceLookupParticipant[] participants = getParticipants();
- for (int i = 0; i < participants.length; i++) {
- ISourceLookupParticipant participant = participants[i];
- participant.sourceContainersChanged(this);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ISourceLocator#getSourceElement(org.eclipse.debug.core.model.IStackFrame)
- * Would be better to accept Object so this can be used for breakpoints and other objects.
- */
- public Object getSourceElement(IStackFrame stackFrame) {
- return getSourceElement((Object)stackFrame);
- }
-
- /**
- * Performs a source lookup query for the given element
- * returning the source elements associated with the element.
- *
- * @param element stack frame
- * @return list of associated source elements
- */
- protected List doSourceLookup(Object element) {
- SourceLookupQuery query = new SourceLookupQuery(element);
- SafeRunner.run(query);
- List sources = query.getSourceElements();
- query.dispose();
- return sources;
- }
-
- /**
- * Returns the source element to associate with the given element.
- * This method is called when more than one source element has been found
- * for an element, and allows the source director to select a single
- * source element to associate with the element.
- * <p>
- * Subclasses should override this method as appropriate. For example,
- * to prompt the user to choose a source element.
- * </p>
- * @param element the debug artifact for which source is being searched for
- * @param sources the source elements found for the given element
- * @return a single source element for the given element
- */
- public Object resolveSourceElement(Object element, List sources) {
- // check the duplicates cache first
- Iterator duplicates = sources.iterator();
- while (duplicates.hasNext()) {
- Object dup = duplicates.next();
- Object resolved = getCachedElement(dup);
- if (resolved != null) {
- return resolved;
- }
- }
- // consult a status handler
- IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(fPromptStatus);
- if (prompter != null) {
- try {
- Object result = prompter.handleStatus(fResolveDuplicatesStatus, new Object[]{element, sources});
- if (result != null) {
- cacheResolvedElement(sources, result);
- return result;
- }
- } catch (CoreException e) {
- }
- }
- return sources.get(0);
- }
-
- /**
- * Checks if the object being added to the list of sources is a duplicate of what's already in the list
- * @param sourceToAdd the new source file to be added
- * @param sources the list that the source will be compared against
- * @return true if it is already in the list, false if it is a new object
- */
- private boolean checkDuplicate(Object sourceToAdd, List sources){
- if(sources.size() == 0)
- return false;
- Iterator iterator = sources.iterator();
- while(iterator.hasNext())
- if(iterator.next().equals(sourceToAdd))
- return true;
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.IPersistableSourceLocator2#initializeFromMemento(java.lang.String, org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void initializeFromMemento(String memento, ILaunchConfiguration configuration) throws CoreException {
- dispose();
- setLaunchConfiguration(configuration);
- doInitializeFromMemento(memento, false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator#initializeDefaults(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public void initializeDefaults(ILaunchConfiguration configuration) throws CoreException {
- dispose();
- setLaunchConfiguration(configuration);
- setSourceContainers(new ISourceContainer[]{new DefaultSourceContainer()});
- initializeParticipants();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getLaunchConfiguration()
- */
- public ILaunchConfiguration getLaunchConfiguration() {
- return fConfig;
- }
-
- /**
- * Sets the launch configuration associated with this source lookup
- * director. If the given configuration is a working copy, this director
- * will respond to changes the working copy. If the given configuration
- * is a persisted launch configuration, this director will respond to changes
- * in the persisted launch configuration.
- *
- * @param configuration launch configuration to associate with this
- * source lookup director, or <code>null</code> if none
- */
- protected void setLaunchConfiguration(ILaunchConfiguration configuration) {
- fConfig = configuration;
- ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
- launchManager.addLaunchConfigurationListener(this);
- launchManager.addLaunchListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchAdded(org.eclipse.debug.core.ILaunch)
- */
- public void launchAdded(ILaunch launch) {
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchChanged(org.eclipse.debug.core.ILaunch)
- */
- public void launchChanged(ILaunch launch) {
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchRemoved(org.eclipse.debug.core.ILaunch)
- */
- public void launchRemoved(ILaunch launch) {
- if (this.equals(launch.getSourceLocator())) {
- dispose();
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getParticipants()
- */
- public synchronized ISourceLookupParticipant[] getParticipants() {
- return (ISourceLookupParticipant[]) fParticipants.toArray(new ISourceLookupParticipant[fParticipants.size()]);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType)
- */
- public boolean supportsSourceContainerType(ISourceContainerType type) {
- return true;
- }
-
- /**
- * Caches the resolved source element to use when one of the following
- * duplicates is found.
- *
- * @param duplicates duplicates source elements
- * @param sourceElement chosen source element to use in place of the
- * duplicates
- */
- protected void cacheResolvedElement(List duplicates, Object sourceElement) {
- if (fResolvedElements == null) {
- fResolvedElements = new HashMap(10);
- }
- Iterator iterator = duplicates.iterator();
- while (iterator.hasNext()) {
- Object dup = iterator.next();
- fResolvedElements.put(dup, sourceElement);
- }
-
- }
-
- /**
- * Returns the cached source element to use when the given duplicate
- * is encountered.
- *
- * @param duplicate duplicates source element
- * @return element to use in the duplicate's place
- */
- protected Object getCachedElement(Object duplicate) {
- if (fResolvedElements != null) {
- return fResolvedElements.get(duplicate);
- }
- return null;
- }
-
- /**
- * Clears any cached source element associated with the given duplicate
- * is source element.
- *
- * @param duplicate duplicate source element to cache resolved results
- * for
- */
- protected void clearCachedElement(Object duplicate) {
- if (fResolvedElements != null) {
- fResolvedElements.remove(duplicate);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#clearSourceElements(java.lang.Object)
- */
- public void clearSourceElements(Object element) {
- List list = doSourceLookup(element);
- if (list.size() > 0) {
- Iterator iterator = list.iterator();
- while (iterator.hasNext()) {
- clearCachedElement(iterator.next());
- }
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#addParticipants(org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant[])
- */
- public void addParticipants(ISourceLookupParticipant[] participants) {
- for (int i = 0; i < participants.length; i++) {
- ISourceLookupParticipant participant = participants[i];
- addSourceLookupParticipant(participant);
- participant.sourceContainersChanged(this);
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#removeParticipants(org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant[])
- */
- public void removeParticipants(ISourceLookupParticipant[] participants) {
- for (int i = 0; i < participants.length; i++) {
- removeSourceLookupParticipant(participants[i]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getId()
- */
- public String getId() {
- return fId;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getSourcePathComputer()
- */
- public ISourcePathComputer getSourcePathComputer() {
- if (fComputer == null && getLaunchConfiguration() != null) {
- try {
- return DebugPlugin.getDefault().getLaunchManager().getSourcePathComputer(getLaunchConfiguration());
- } catch (CoreException e) {
- }
- }
- return fComputer;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#setSourcePathComputer(org.eclipse.debug.core.sourcelookup.ISourcePathComputer)
- */
- public void setSourcePathComputer(ISourcePathComputer computer) {
- fComputer = computer;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#findSourceElements(java.lang.Object)
- */
- public Object[] findSourceElements(Object object) throws CoreException {
- SourceLookupQuery query = new SourceLookupQuery(object);
- SafeRunner.run(query);
- List sources = query.getSourceElements();
- Throwable exception = query.getException();
- query.dispose();
- if (exception != null && sources.isEmpty()) {
- if (exception instanceof CoreException) {
- throw (CoreException)exception;
- }
- abort(SourceLookupMessages.AbstractSourceLookupDirector_10, exception);
- }
- return sources.toArray();
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#getSourceElement(java.lang.Object)
- */
- public Object getSourceElement(Object element) {
- List sources = doSourceLookup(element);
- if(sources.size() == 1) {
- return sources.get(0);
- } else if(sources.size() > 1) {
- return resolveSourceElement(element, sources);
- } else {
- return null;
- }
- }
-
- /**
- * Sets the current participant or <code>null</code> if none.
- *
- * @param participant active participant or <code>null</code>
- */
- private void setCurrentParticipant(ISourceLookupParticipant participant) {
- fCurrentParticipant = participant;
- }
-
- /**
- * Returns the participant currently looking up source or <code>null</code>
- * if none.
- *
- * @return the participant currently looking up source or <code>null</code>
- * if none
- * @since 3.5
- */
- public ISourceLookupParticipant getCurrentParticipant() {
- return fCurrentParticipant;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupParticipant.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupParticipant.java
deleted file mode 100644
index d0272f597..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/AbstractSourceLookupParticipant.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-
-/**
- * Common super class for implementations of source lookup participants.
- * <p>
- * Clients implementing source lookup participants should subclass this class.
- * </p>
- * @since 3.0
- */
-public abstract class AbstractSourceLookupParticipant implements ISourceLookupParticipant {
-
- private ISourceLookupDirector fDirector;
-
- protected static final Object[] EMPTY = new Object[0];
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#init(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
- */
- public void init(ISourceLookupDirector director) {
- fDirector = director;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#dispose()
- */
- public void dispose() {
- fDirector = null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#findSourceElements(java.lang.Object)
- */
- public Object[] findSourceElements(Object object) throws CoreException {
- List results = null;
- CoreException single = null;
- MultiStatus multiStatus = null;
- if (isFindDuplicates()) {
- results = new ArrayList();
- }
- String name = getSourceName(object);
- if (name != null) {
- ISourceContainer[] containers = getSourceContainers();
- for (int i = 0; i < containers.length; i++) {
- try {
- ISourceContainer container = getDelegateContainer(containers[i]);
- if (container != null) {
- Object[] objects = container.findSourceElements(name);
- if (objects.length > 0) {
- if (isFindDuplicates()) {
- for (int j = 0; j < objects.length; j++) {
- results.add(objects[j]);
- }
- } else {
- if (objects.length == 1) {
- return objects;
- }
- return new Object[]{objects[0]};
- }
- }
- }
- } catch (CoreException e) {
- if (single == null) {
- single = e;
- } else if (multiStatus == null) {
- multiStatus = new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, new IStatus[]{single.getStatus()}, SourceLookupMessages.Source_Lookup_Error, null);
- multiStatus.add(e.getStatus());
- } else {
- multiStatus.add(e.getStatus());
- }
- }
- }
- }
- if (results == null) {
- if (multiStatus != null) {
- throw new CoreException(multiStatus);
- } else if (single != null) {
- throw single;
- }
- return EMPTY;
- }
- return results.toArray();
- }
-
- /**
- * Returns the source container to search in place of the given source
- * container, or <code>null</code> if the given source container is not
- * to be searched. The default implementation does not translate source
- * containers. Subclasses should override if required.
- *
- * @param container the source container about to be searched (proxy)
- * @return the source container to be searched (delegate), or <code>null</code>
- * if the source container should not be searched
- */
- protected ISourceContainer getDelegateContainer(ISourceContainer container) {
- return container;
- }
-
- /**
- * Returns the source lookup director this participant is registered with
- * or <code>null</code> if none.
- *
- * @return the source lookup director this participant is registered with
- * or <code>null</code> if none
- */
- protected ISourceLookupDirector getDirector() {
- return fDirector;
- }
-
- /**
- * Returns whether this participant's source lookup director is configured
- * to search for duplicate source elements.
- *
- * @return whether this participant's source lookup director is configured
- * to search for duplicate source elements
- * @since 3.5
- */
- public boolean isFindDuplicates() {
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- return director.isFindDuplicates();
- }
- return false;
- }
-
- /**
- * Returns the source containers currently registered with this participant's
- * source lookup director.
- *
- * @return the source containers currently registered with this participant's
- * source lookup director
- */
- protected ISourceContainer[] getSourceContainers() {
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- return director.getSourceContainers();
- }
- return new ISourceContainer[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#sourceContainersChanged(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
- */
- public void sourceContainersChanged(ISourceLookupDirector director) {
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/IPersistableSourceLocator2.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/IPersistableSourceLocator2.java
deleted file mode 100644
index f30b9712b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/IPersistableSourceLocator2.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.IPersistableSourceLocator;
-
-/**
- * Extensions to the <code>IPersistableSourceLocator</code> interface.
- * <p>
- * Clients may optionally implement this interface when implementing an
- * {@link org.eclipse.debug.core.model.IPersistableSourceLocator}.
- * </p>
- * @see org.eclipse.debug.core.model.IPersistableSourceLocator
- * @since 3.0
- */
-public interface IPersistableSourceLocator2 extends IPersistableSourceLocator {
-
- /**
- * Initializes this source locator based on the given
- * memento, for the given launch configuration. This method
- * is called instead of <code>initializeFrom(String memento)</code>
- * defined in <code>IPersistableSourceLocator</code> when a source
- * locator implements this interface.
- *
- * @param memento a memento to initialize this source locator
- * @param configuration the launch configuration this source locator is
- * being created for
- * @exception CoreException on failure to initialize
- */
- public void initializeFromMemento(String memento, ILaunchConfiguration configuration) throws CoreException;
-
- /**
- * Disposes this source locator. This method is called when a source
- * locator's associated launch is removed from the launch manager.
- */
- public void dispose();
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainer.java
deleted file mode 100644
index ed721bd58..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainer.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-
-/**
- * A source container is a container of source code. A source container is
- * capable of searching for source elements by name. For example, a source
- * container may be a project or a directory capable of searching for files
- * by name. A source container may be a composite container - i.e. contain
- * other source containers.
- * <p>
- * When a source container is created and added to a source director, the
- * source container's <code>dispose()</code> method is called when the
- * source director is disposed. Clients creating source containers for other
- * purposes must dispose of containers themselves.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see ISourceLookupParticipant
- * @see ISourceContainerType
- * @since 3.0
- */
-public interface ISourceContainer extends IAdaptable {
-
- /**
- * Notification this source container has been added to the given
- * source lookup director.
- *
- * @param director the director this container has been added to
- */
- public void init(ISourceLookupDirector director);
-
- /**
- * Returns a collection of source elements in this container corresponding to the
- * given name. Returns an empty collection if no source elements are found.
- * This source container's source lookup director specifies if duplicate
- * source elements should be searched for, via <code>isFindDuplicates()</code>.
- * When <code>false</code> the returned collection should contain at most one
- * source element. If this is a composite container, the containers contained
- * by this container are also searched.
- * <p>
- * The format of the given name is implementation specific but generally conforms
- * to the format of a file name. If a source container does not recognize the
- * name format provided, an empty collection should be returned. A source container
- * may or may not require names to be fully qualified (i.e. be qualified with directory
- * names).
- * </p>
- * @param name the name of the source element to search for
- * @return a collection of source elements corresponding to the given name
- * @exception CoreException if an exception occurs while searching for source elements
- */
- public Object[] findSourceElements(String name) throws CoreException;
-
- /**
- * The name of this source container that can be used for presentation purposes.
- * For example, the name of a project.
- *
- * @return the name of this source container
- */
- public String getName();
-
- /**
- * Returns the source containers this container is composed of. An empty
- * collection is returned if this container is not a composite container.
- * For example, a workspace source container may be composed of project source
- * containers.
- *
- * @return the source containers this container is composed of, possibly
- * an empty collection
- * @exception CoreException if unable to retrieve source containers
- */
- public ISourceContainer[] getSourceContainers() throws CoreException;
-
- /**
- * Returns whether this container is a composite container. A composite
- * container is composed of other source containers. For example, a workspace
- * source container may be composed of project source containers.
- *
- * @return whether this container is a composite container
- */
- public boolean isComposite();
-
- /**
- * Returns this container's type.
- *
- * @return this container's type
- */
- public ISourceContainerType getType();
-
- /**
- * Disposes this source container. This method is called when the source
- * director associated with this source container is disposed.
- */
- public void dispose();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerType.java
deleted file mode 100644
index 0204389e6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerType.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-
-
-/**
- * A source container type represents a kind of container of source code.
- * For example, a source container type may be a project or a directory. A specific
- * project or directory is represented by an instance of a source container type,
- * which is called a source container (<code>ISourceContainer</code>).
- * <p>
- * A source container type is contributed via the <code>sourceContainerTypes</code>
- * extension point, providing a delegate to the work specific to the contributed
- * type. Following is an example contribution.
- * <pre>
- * &lt;extension point=&quot;org.eclipse.debug.core.sourceContainerTypes&quot;&gt;
- * &lt;sourceContainerType
- * name=&quot;Project&quot;
- * class=&quot;org.eclipse.debug.internal.core.sourcelookup.containers.ProjectSourceContainerType&quot;
- * id=&quot;org.eclipse.debug.core.containerType.project&quot;
- * description=&quot;A project in the workspace&quot;&gt;
- * &lt;/sourceContainerType&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * <p>
- * Clients contributing a source container type implement
- * {@link org.eclipse.debug.core.sourcelookup.ISourceContainerTypeDelegate}.
- * </p>
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainerTypeDelegate
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ISourceContainerType extends ISourceContainerTypeDelegate {
-
- /**
- * Returns the name of this source container type that can be used for
- * presentation purposes. For example, <code>Working Set</code> or
- * <code>Project</code>. The value returned is
- * identical to the name specified in plugin.xml by the <code>name</code>
- * attribute.
- *
- * @return the name of this source container type
- */
- public String getName();
-
- /**
- * Returns the unique identifier associated with this source container type.
- * The value returned is identical to the identifier specified in plugin.xml by
- * the <code>id</code> attribute.
- *
- * @return the unique identifier associated with this source container type
- */
- public String getId();
-
- /**
- * Returns a short description of this source container type that can be used
- * for presentation purposes, or <code>null</code> if none.
- *
- * @return a short description of this source container type, or <code>null</code>
- */
- public String getDescription();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerTypeDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerTypeDelegate.java
deleted file mode 100644
index d8c944891..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceContainerTypeDelegate.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A source container type delegate represents a kind of container of source code.
- * For example, a source container type may be a project or a directory. A specific
- * project or directory is represented by an instance of a source container type,
- * which is called a source container (<code>ISourceContainer</code>).
- * <p>
- * A source container type delegate is contributed via the
- * <code>sourceContainerTypes</code> extension point.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainerType
- * @since 3.0
- */
-public interface ISourceContainerTypeDelegate {
-
- /**
- * Creates and returns a new source container of this type
- * corresponding to the given memento.
- *
- * @param memento a memento for a source container of this source container type
- * @return a source container corresponding to the given memento
- * @exception CoreException if unable to construct a source container based
- * on the given memento
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException;
-
- /**
- * Constructs and returns a memento for the given source container. A memento
- * can be used to reconstruct a source container.
- *
- * @param container The container for which a memento should be created. The
- * container must of this source container type.
- * @return a memento for the source container
- * @exception CoreException if unable to create a memento
- */
- public String getMemento(ISourceContainer container) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java
deleted file mode 100644
index 5eb45964a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupDirector.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * A source lookup director directs the source lookup process
- * among a set of participants and source containers.
- * <p>
- * Clients may implement this interface. An abstract implementation
- * is provided by <code>AbstractSourceLookupDirector</code>, which
- * clients should subclass.
- * </p>
- * @since 3.0
- */
-public interface ISourceLookupDirector extends IPersistableSourceLocator2 {
-
- /**
- * Returns the launch configuration associated with this source
- * lookup director, or <code>null</code> if none.
- *
- * @return the launch configuration associated with this source
- * lookup director, or <code>null</code> if none
- */
- public ILaunchConfiguration getLaunchConfiguration();
-
- /**
- * Returns the source lookup participants currently registered with
- * this director, possibly an empty collection.
- *
- * @return the source lookup participants currently registered with
- * this director, possibly an empty collection
- */
- public ISourceLookupParticipant[] getParticipants();
-
- /**
- * Returns the source containers currently registered with this
- * director, possibly an empty collection.
- *
- * @return the source containers currently registered with this
- * director, possibly an empty collection
- */
- public ISourceContainer[] getSourceContainers();
-
- /**
- * Sets the source containers this source lookup director
- * should search when looking for source, possibly an empty collection.
- *
- * @param containers the source containers this source lookup director
- * should search when looking for source, possibly an empty collection
- */
- public void setSourceContainers(ISourceContainer[] containers);
-
- /**
- * Returns whether to search exhaustively for all source elements
- * with the same name in all registered source containers, or
- * whether to stop searching when the first source element matching
- * the required name is found.
- *
- * @return whether to search exhaustively for all source elements
- * with the same name
- */
- public boolean isFindDuplicates();
-
- /**
- * Sets whether to search exhaustively for all source elements
- * with the same name in all registered source containers, or
- * whether to stop searching when the first source element matching
- * the required name is found.
- *
- * @param findDuplicates whether to search exhaustively for all source elements
- * with the same name
- */
- public void setFindDuplicates(boolean findDuplicates);
-
- /**
- * Notifies this source lookup director that it should initialize
- * its set of source lookup participants.
- */
- public void initializeParticipants();
-
- /**
- * Returns whether this source director supports the given type
- * of source location.
- *
- * @param type source container type
- * @return whether this source director supports the given type
- * of source location
- */
- public boolean supportsSourceContainerType(ISourceContainerType type);
-
- /**
- * Clears any source lookup results associated with the given
- * debug artifact, such that a subsequent lookup will force a new search
- * to be performed.
- *
- * @param element debug artifact to clear source lookup results for
- */
- public void clearSourceElements(Object element);
-
- /**
- * Adds the given source lookup participants to this director.
- *
- * @param participants participants to add
- */
- public void addParticipants(ISourceLookupParticipant[] participants);
-
- /**
- * Removes the given source lookup participants from this director.
- *
- * @param participants participants to remove
- */
- public void removeParticipants(ISourceLookupParticipant[] participants);
-
- /**
- * Returns the identifier of this type of source locator.
- *
- * @return the identifier of this type of source locator
- */
- public String getId();
-
- /**
- * Returns the source path computer to use with this source lookup
- * director, possibly <code>null</code>. By default, the source path
- * computer returned is the one associated with this director's launch
- * configuration's type. However, the source path computer can be specified
- * programmatically by calling <code>setSourcePathComputer(...)</code>.
- *
- * @return the source path computer to use with this source lookup
- * director, possibly <code>null</code>
- */
- public ISourcePathComputer getSourcePathComputer();
-
- /**
- * Sets the source path computer for this source lookup director.
- * This method can be used to override the default source path computer
- * for a launch configuration type. When <code>null</code> is specified
- * the default source path computer will be used (i.e. the one associated
- * with this director's launch configuration's type).
- *
- * @param computer source path computer or <code>null</code>
- */
- public void setSourcePathComputer(ISourcePathComputer computer);
-
- /**
- * Returns a collection of source elements corresponding to the given debug
- * artifact (for example, a stack frame or breakpoint). Returns an empty
- * collection if no source elements are found.
- * This participant's source lookup director specifies if duplicate
- * source elements should be searched for, via <code>isFindDuplicates()</code>.
- * When <code>false</code> the returned collection should contain at most one
- * source element.
- *
- * @param object the debug artifact for which source needs to be found (e.g., stack frame)
- * @return a collection of source elements corresponding to the given
- * debug artifact, possibly empty
- * @exception CoreException if an exception occurs while searching for source
- */
- public Object[] findSourceElements(Object object) throws CoreException;
-
- /**
- * Returns a source element that corresponds to the given debug artifact, or
- * <code>null</code> if a source element could not be located. This is a
- * generalization of <code>getSourceElement(IStackFrame)</code> to allow
- * source to be found for other types of elements.
- *
- * @param element the debug artifact for which to locate source
- * @return an object representing a source element.
- */
- public Object getSourceElement(Object element);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupParticipant.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupParticipant.java
deleted file mode 100644
index b47d086c1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourceLookupParticipant.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-
-/**
- * A source lookup participant participates in source lookup by searching an ordered
- * list of source containers for source elements corresponding to a debug artifact.
- * For example, a participant may be asked to find source corresponding to a stack
- * frame or breakpoint. An implementation of a source lookup participant is debug
- * model specific, since it must convert the debug model artifact (stack frame,
- * breakpoint, etc.), into a source name that can be recognized by a source container
- * (<code>ISourceContainer</code>), to search for source elements. Source containers
- * are generally debug model independent, whereas source lookup participants are
- * debug model specific.
- * <p>
- * Clients may implement this interface. An abstract implementation is
- * provided by <code>AbstractSourceLookupParticipant</code>, which clients
- * should subclass.
- * </p>
- * @since 3.0
- */
-public interface ISourceLookupParticipant {
-
- /**
- * Notification this participant has been added to the specified
- * source lookup director.
- *
- * @param director the source lookup director that this participant
- * has been added to
- */
- public void init(ISourceLookupDirector director);
-
- /**
- * Returns a collection of source elements corresponding to the given debug
- * artifact (for example, a stack frame or breakpoint). Returns an empty
- * collection if no source elements are found.
- * This participant's source lookup director specifies if duplicate
- * source elements should be searched for, via <code>isFindDuplicates()</code>.
- * When <code>false</code> the returned collection should contain at most one
- * source element.
- * <p>
- * If the given debug artifact is not recognized by this participant, an empty
- * collection is returned. Otherwise, this participant generates a source name
- * from the given artifact and performs a search for associated source elements
- * in its source containers.
- * </p>
- * @param object the debug artifact for which source needs to be found (e.g., stack frame)
- * @return a collection of source elements corresponding to the given
- * debug artifact, possibly empty
- * @exception CoreException if an exception occurs while searching for source
- */
- public Object[] findSourceElements(Object object) throws CoreException;
-
- /**
- * Returns the source file name associated with the given debug artifact that
- * source needs to be found for, or <code>null</code> if none.
- *
- * @param object the debug artifact for which source needs to be found (e.g., stack frame)
- * @return the source file name associated with the given debug artifact,
- * or <code>null</code> if none.
- * @throws CoreException if unable to determine a source file name
- */
- public String getSourceName(Object object) throws CoreException;
-
- /**
- * Disposes this source lookup participant. This method is called when
- * the source lookup director associated with this participant is
- * disposed.
- */
- public void dispose();
-
- /**
- * Notification that the source lookup containers in the given source
- * lookup director have changed.
- *
- * @param director source lookup director that is directing this
- * participant
- */
- public void sourceContainersChanged(ISourceLookupDirector director);
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputer.java
deleted file mode 100644
index 3e9558979..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * A source path computer computes the default source lookup path (set of source
- * containers that should be considered) for a launch configuration.
- * <p>
- * A source path computer is contributed in plug-in XML via the
- * <code>sourcePathComputers</code> extension point, that provides a delegate
- * to compute the path specific to a launch configuration. Following
- * is an example contribution.
- * <pre>
- * &lt;extension point=&quot;org.eclipse.debug.core.sourcePathComputers&quot;&gt;
- * &lt;sourcePathComputer
- * id=&quot;org.eclipse.example.exampleSourcePathComputer&quot;
- * class=&quot;org.eclipse.example.SourcePathComputer&quot;&gt;
- * &lt;/sourcePathComputer&gt;
- * &lt;/extension&gt;
- * </pre>
- * </p>
- * <p>
- * A source path computer can be associated with a launch configuration type
- * via the <code>sourcePathComputerId</code> attribute of a launch configuration
- * type extension. As well, a launch configuration can specify its own
- * source path computer to use via the <code>ATTR_SOURCE_PATH_COMPUTER_ID</code>
- * attribute.
- * </p>
- * <p>
- * Clients contributing a source path computer provide an implementation of
- * {@link org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate}.
- * </p>
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface ISourcePathComputer extends ISourcePathComputerDelegate {
-
- /**
- * Launch configuration attribute to specify a source path computer
- * that should be used for a launch configuration. The value is an identifier
- * of a source path computer extension, or unspecified (<code>null</code>), if the
- * default source path computer should be used. A default source path computer
- * can be associated with a launch configuration type.
- */
- public static final String ATTR_SOURCE_PATH_COMPUTER_ID = DebugPlugin.getUniqueIdentifier() + ".SOURCE_PATH_COMPUTER_ID"; //$NON-NLS-1$
-
- /**
- * Returns the unique identifier for this source path computer.
- *
- * @return the unique identifier for this source path computer
- */
- public String getId();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputerDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputerDelegate.java
deleted file mode 100644
index 9d5506190..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/ISourcePathComputerDelegate.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.ILaunchConfiguration;
-
-/**
- * A source path computer delegate computes the default source lookup path
- * (set of source containers that should be considered) for a launch
- * configuration.
- * <p>
- * A source path computer is contributed in plug-in XML via the
- * <code>sourcePathComputers</code> extension point, providing a delegate
- * to compute the default source lookup path specific to a launch
- * configuration.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputer
- * @since 3.0
- */
-public interface ISourcePathComputerDelegate {
-
- /**
- * Returns a default collection source containers to be considered for the
- * given launch configuration. The collection returned represents the default
- * source lookup path for the given configuration.
- *
- * @param configuration the launch configuration for which a default source lookup path
- * is to be computed
- * @param monitor a progress monitor to be used in case of long operations
- * @return a default collection source containers to be considered for the
- * given launch configuration
- * @exception CoreException if unable to compute a default source lookup path
- */
- public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException;
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainer.java
deleted file mode 100644
index cab9d8854..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainer.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupParticipant;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
-
-/**
- * Common function for source containers.
- * <p>
- * Clients implementing source containers should subclass this class.
- * </p>
- * @since 3.0
- */
-public abstract class AbstractSourceContainer extends PlatformObject implements ISourceContainer {
-
- public static final Object[] EMPTY = new Object[0];
-
- private ISourceLookupDirector fDirector;
-
- /**
- * Throws an error exception with the given message and underlying exception.
- *
- * @param message error message
- * @param exception underlying exception, or <code>null</code>
- * @throws CoreException
- */
- protected void abort(String message, Throwable exception) throws CoreException {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, message, exception);
- throw new CoreException(status);
- }
-
- /**
- * Throws a warning exception with the given message and underlying exception.
- *
- * @param message error message
- * @param exception underlying exception, or <code>null</code>
- * @throws CoreException
- * @since 3.3
- */
- protected void warn(String message, Throwable exception) throws CoreException {
- IStatus status = new Status(IStatus.WARNING, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, message, exception);
- throw new CoreException(status);
- }
-
- /* (non-Javadoc)
- *
- * By default, do nothing. Subclasses should override as required.
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#dispose()
- */
- public void dispose() {
- fDirector = null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getSourceContainers()
- */
- public ISourceContainer[] getSourceContainers() throws CoreException {
- return new ISourceContainer[0];
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#isComposite()
- */
- public boolean isComposite() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#init(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
- */
- public void init(ISourceLookupDirector director) {
- fDirector = director;
- }
-
- /**
- * Returns the source lookup director this source container registered
- * in, or <code>null</code> if none.
- *
- * @return the source lookup director this source container registered
- * in, or <code>null</code> if none
- */
- protected ISourceLookupDirector getDirector() {
- return fDirector;
- }
-
- /**
- * Returns whether this container's source should search for duplicate source
- * elements. Since 3.5, the current participant is consulted to determine if
- * duplicates should be found. Fall back to querying the source lookup director
- * if the participant is not an {@link AbstractSourceLookupParticipant}.
- *
- * @return whether to search for duplicate source elements
- */
- protected boolean isFindDuplicates() {
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- if (director instanceof AbstractSourceLookupDirector) {
- AbstractSourceLookupDirector asld = (AbstractSourceLookupDirector) director;
- ISourceLookupParticipant participant = asld.getCurrentParticipant();
- if (participant instanceof AbstractSourceLookupParticipant ) {
- AbstractSourceLookupParticipant aslp = (AbstractSourceLookupParticipant) participant;
- return aslp.isFindDuplicates();
- }
- }
- return director.isFindDuplicates();
- }
- return false;
- }
-
- /**
- * Returns the source container type identified by the given id,
- * or <code>null</code> if none.
- *
- * @param id source container type identifier
- * @return source container type or <code>null</code>
- */
- protected ISourceContainerType getSourceContainerType(String id) {
- return DebugPlugin.getDefault().getLaunchManager().getSourceContainerType(id);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java
deleted file mode 100644
index 77aea7421..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/AbstractSourceContainerTypeDelegate.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerTypeDelegate;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Common function for source container type delegates.
- * <p>
- * Clients implementing source container delegates should subclass this class.
- * </p>
- * @since 3.0
- */
-public abstract class AbstractSourceContainerTypeDelegate implements ISourceContainerTypeDelegate {
-
- /**
- * Throws an exception with the given message and underlying exception.
- *
- * @param message error message
- * @param exception underlying exception, or <code>null</code>
- * @throws CoreException
- */
- protected void abort(String message, Throwable exception) throws CoreException {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, message, exception);
- throw new CoreException(status);
- }
-
- /**
- * Creates and returns a new XML document.
- *
- * @return a new XML document
- * @throws CoreException if unable to create a new document
- */
- protected Document newDocument()throws CoreException {
- return DebugPlugin.newDocument();
- }
-
- /**
- * Returns the given XML document as a string.
- *
- * @param document document to serialize
- * @return the given XML document as a string
- * @throws CoreException if unable to serialize the document
- */
- protected String serializeDocument(Document document) throws CoreException {
- return DebugPlugin.serializeDocument(document);
- }
-
- /**
- * Parses the given XML document, returning its root element.
- *
- * @param document XML document as a string
- * @return the document's root element
- * @throws CoreException if unable to parse the document
- */
- protected Element parseDocument(String document) throws CoreException {
- return DebugPlugin.parseDocument(document);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ArchiveSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ArchiveSourceContainer.java
deleted file mode 100644
index 3120a01d5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ArchiveSourceContainer.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-
-/**
- * Archive source container for an archive in the workspace. Returns instances
- * of <code>ZipEntryStorage</code> as source elements.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ArchiveSourceContainer extends AbstractSourceContainer {
-
- private IFile fFile;
- private boolean fDetectRoot;
- private ExternalArchiveSourceContainer fDelegateContainer;
-
- /**
- * Unique identifier for the archive source container type
- * (value <code>org.eclipse.debug.core.containerType.archive</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.archive"; //$NON-NLS-1$
-
- /**
- * Creates an archive source container on the given file.
- *
- * @param archive archive in the workspace
- * @param detectRootPath whether a root path should be detected. When
- * <code>true</code>, searching is performed relative to a root path
- * within the archive based on fully qualified file names. The root
- * path is automatically determined when the first successful search
- * is performed. For example, when searching for a file named
- * <code>a/b/c.d</code>, and an entry in the archive named
- * <code>r/a/b/c.d</code> exists, the root path is set to <code>r</code>.
- * From that point on, searching is performed relative to <code>r</code>.
- * When <code>false</code>, searching is performed by
- * matching file names as suffixes to the entries in the archive.
- */
- public ArchiveSourceContainer(IFile archive, boolean detectRootPath) {
- fFile = archive;
- fDetectRoot = detectRootPath;
- if (archive.exists() && archive.getLocation() != null) {
- fDelegateContainer = new ExternalArchiveSourceContainer(archive.getLocation().toOSString(), detectRootPath);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return fFile.getName();
- }
-
- /**
- * Returns the associated file in the workspace.
- *
- * @return associated file in the workspace
- */
- public IFile getFile() {
- return fFile;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return obj instanceof ArchiveSourceContainer &&
- ((ArchiveSourceContainer)obj).getName().equals(getName());
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getName().hashCode();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String)
- */
- public Object[] findSourceElements(String name) throws CoreException {
- ExternalArchiveSourceContainer container = getDelegateContainer();
- if (container != null) {
- return container.findSourceElements(name);
- }
- return EMPTY;
- }
-
- /**
- * Returns the underlying external archive source container.
- *
- * @return underlying external archive source container
- * @since 3.0.1.1
- */
- private ExternalArchiveSourceContainer getDelegateContainer() {
- return fDelegateContainer;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#init(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
- */
- public void init(ISourceLookupDirector director) {
- super.init(director);
- if (fDelegateContainer != null) {
- fDelegateContainer.init(director);
- }
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#dispose()
- */
- public void dispose() {
- super.dispose();
- if (fDelegateContainer != null) {
- fDelegateContainer.dispose();
- }
- }
-
- /**
- * Returns whether root paths are automatically detected in this
- * archive source container.
- *
- * @return whether root paths are automatically detected in this
- * archive source container
- * @since 3.0.1.1
- */
- public boolean isDetectRoot() {
- return fDetectRoot;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/CompositeSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/CompositeSourceContainer.java
deleted file mode 100644
index ab0254290..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/CompositeSourceContainer.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-/**
- * A source container of source containers.
- * <p>
- * Clients implementing composite source containers should subclass
- * this class.
- * </p>
- * @since 3.0
- */
-public abstract class CompositeSourceContainer extends AbstractSourceContainer {
-
- private ISourceContainer[] fContainers;
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#isComposite()
- */
- public boolean isComposite() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String)
- */
- public Object[] findSourceElements(String name) throws CoreException {
- return findSourceElements(name, getSourceContainers());
- }
-
- /**
- * Returns a collection of source elements in the given containers corresponding to
- * the given name. Returns an empty collection if no source elements are found.
- * This source container's source lookup director specifies if duplicate
- * source elements should be searched for, via <code>isFindDuplicates()</code>.
- * When <code>false</code> the returned collection should contain at most one
- * source element. If this is a composite container, the containers contained
- * by this container are also searched.
- * <p>
- * The format of the given name is implementation specific but generally conforms
- * to the format of a file name. If a source container does not recognize the
- * name format provided, an empty collection should be returned. A source container
- * may or may not require names to be fully qualified (i.e. be qualified with directory
- * names).
- * </p>
- * @param name the name of the source element to search for
- * @param containers the containers to search
- * @return a collection of source elements corresponding to the given name
- * @exception CoreException if an exception occurs while searching for source elements
- */
- protected Object[] findSourceElements(String name, ISourceContainer[] containers) throws CoreException {
- List results = null;
- CoreException single = null;
- MultiStatus multiStatus = null;
- if (isFindDuplicates()) {
- results = new ArrayList();
- }
- for (int i = 0; i < containers.length; i++) {
- ISourceContainer container = containers[i];
- try {
- Object[] objects = container.findSourceElements(name);
- if (objects.length > 0) {
- if (isFindDuplicates()) {
- for (int j = 0; j < objects.length; j++) {
- results.add(objects[j]);
- }
- } else {
- if (objects.length == 1) {
- return objects;
- }
- return new Object[]{objects[0]};
- }
- }
- } catch (CoreException e) {
- if (single == null) {
- single = e;
- } else if (multiStatus == null) {
- multiStatus = new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, new IStatus[]{single.getStatus()}, SourceLookupMessages.Source_Lookup_Error, null);
- multiStatus.add(e.getStatus());
- } else {
- multiStatus.add(e.getStatus());
- }
- }
- }
- if (results == null) {
- if (multiStatus != null) {
- throw new CoreException(multiStatus);
- } else if (single != null) {
- throw single;
- }
- return EMPTY;
- }
- return results.toArray();
- }
-
- /**
- * Creates the source containers in this composite container.
- * Subclasses should override this methods.
- *
- * @throws CoreException if unable to create the containers
- */
- protected abstract ISourceContainer[] createSourceContainers() throws CoreException;
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getSourceContainers()
- */
- public synchronized ISourceContainer[] getSourceContainers() throws CoreException {
- if (fContainers == null) {
- fContainers = createSourceContainers();
- for (int i = 0; i < fContainers.length; i++) {
- ISourceContainer container = fContainers[i];
- container.init(getDirector());
- }
- }
- return fContainers;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#dispose()
- */
- public void dispose() {
- super.dispose();
- if (fContainers != null) {
- for (int i = 0; i < fContainers.length; i++) {
- ISourceContainer container = fContainers[i];
- container.dispose();
- }
- }
- fContainers = null;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java
deleted file mode 100644
index cfdea07ba..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * QNX Software Systems - Mikhail Khodjaiants - Bug 80857
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-
-/**
- * A source container for a container in the workspace. Source elements are searched
- * for within this container and optionally nested containers.
- * <p>
- * Names specified in <code>findSourceElements</code> method can
- * be simple or qualified. When a name is qualified, a file will
- * be searched for relative to this container, and optionally
- * nested containers.
- * </p>
- * @since 3.2
- * @noextend This class is not intended to be subclassed by clients.
- */
-public abstract class ContainerSourceContainer extends CompositeSourceContainer {
-
- private IContainer fContainer = null;
- private boolean fSubfolders = false;
-
- private URI fRootURI = null;
- private IFileStore fRootFile = null;
- private IWorkspaceRoot fRoot = null;
-
- /**
- * Constructs a source container on the given workspace container.
- *
- * @param container the container to search for source in
- * @param subfolders whether nested folders should be searched
- * for source elements
- */
- public ContainerSourceContainer(IContainer container, boolean subfolders) {
- fContainer = container;
- fSubfolders = subfolders;
- fRootURI = fContainer.getLocationURI();
- if (fRootURI != null) {
- try {
- fRootFile = EFS.getStore(fRootURI);
- } catch (CoreException e) {
- }
- fRoot = ResourcesPlugin.getWorkspace().getRoot();
- }
- }
-
- /**
- * Returns the workspace container this source container is
- * rooted at.
- *
- * @return the workspace container this source container is
- * rooted at
- */
- public IContainer getContainer() {
- return fContainer;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String)
- */
- public Object[] findSourceElements(String name) throws CoreException {
- ArrayList sources = new ArrayList();
-
- // An IllegalArgumentException is thrown from the "getFile" method
- // if the path created by appending the file name to the container
- // path doesn't conform with Eclipse resource restrictions.
- // To prevent the interruption of the search procedure we check
- // if the path is valid before passing it to "getFile".
- if ( validateFile(name) ) {
- IFile file = fContainer.getFile(new Path(name));
- if (file.exists()) {
- sources.add(file);
- } else {
- // See bug 82627 - perform case insensitive source lookup
- if (fRootURI == null) {
- return EMPTY;
- }
- // See bug 98090 - we need to handle relative path names
- IFileStore target = fRootFile.getChild(new Path(name));
- if (target.fetchInfo().exists()) {
- // We no longer have to account for bug 95832, and URIs take care
- // of canonical paths (fix to bug 95679 was removed).
- IFile[] files = fRoot.findFilesForLocationURI(target.toURI());
- if (isFindDuplicates() && files.length > 1) {
- for (int i = 0; i < files.length; i++) {
- sources.add(files[i]);
- }
- } else if (files.length > 0) {
- sources.add(files[0]);
- }
- }
- }
- }
-
- //check sub-folders
- if ((isFindDuplicates() && fSubfolders) || (sources.isEmpty() && fSubfolders)) {
- ISourceContainer[] containers = getSourceContainers();
- for (int i=0; i < containers.length; i++) {
- Object[] objects = containers[i].findSourceElements(name);
- if (objects == null || objects.length == 0) {
- continue;
- }
- if (isFindDuplicates()) {
- for(int j=0; j < objects.length; j++)
- sources.add(objects[j]);
- } else {
- sources.add(objects[0]);
- break;
- }
- }
- }
-
- if(sources.isEmpty())
- return EMPTY;
- return sources.toArray();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return getContainer().getName();
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (obj != null && obj instanceof ContainerSourceContainer) {
- ContainerSourceContainer loc = (ContainerSourceContainer) obj;
- return loc.getContainer().equals(getContainer());
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getContainer().hashCode();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#isComposite()
- */
- public boolean isComposite() {
- return fSubfolders;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers()
- */
- protected ISourceContainer[] createSourceContainers() throws CoreException {
- if(fSubfolders) {
- IResource[] resources = getContainer().members();
- List list = new ArrayList(resources.length);
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- if (resource.getType() == IResource.FOLDER) {
- list.add(new FolderSourceContainer((IFolder)resource, fSubfolders));
- }
- }
- ISourceContainer[] containers = (ISourceContainer[]) list.toArray(new ISourceContainer[list.size()]);
- for (int i = 0; i < containers.length; i++) {
- ISourceContainer container = containers[i];
- container.init(getDirector());
- }
- return containers;
- }
- return new ISourceContainer[0];
- }
-
- /**
- * Validates the given string as a path for a file in this container.
- *
- * @param name path name
- */
- private boolean validateFile(String name) {
- IContainer container = getContainer();
- IPath path = container.getFullPath().append(name);
- return ResourcesPlugin.getWorkspace().validatePath(path.toOSString(), IResource.FILE).isOK();
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DefaultSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DefaultSourceContainer.java
deleted file mode 100644
index 957655ad0..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DefaultSourceContainer.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-/**
- * A source container that computer the default source lookup path
- * for a launch configuration on each launch using a launch configuration's
- * associated source path computer.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class DefaultSourceContainer extends CompositeSourceContainer {
-
- /**
- * Unique identifier for the default source container type
- * (value <code>org.eclipse.debug.core.containerType.default</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.default"; //$NON-NLS-1$
-
- /**
- * Constructs a default source container.
- */
- public DefaultSourceContainer() {
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return obj instanceof DefaultSourceContainer;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getClass().hashCode();
- }
-
- /**
- * Returns the launch configuration for which a default source lookup
- * path will be computed, or <code>null</code> if none.
- *
- * @return the launch configuration for which a default source lookup
- * path will be computed, or <code>null</code>
- */
- protected ILaunchConfiguration getLaunchConfiguration() {
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- return director.getLaunchConfiguration();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /**
- * Returns the source path computer to use, or <code>null</code>
- * if none.
- *
- * @return the source path computer to use, or <code>null</code>
- * if none
- */
- private ISourcePathComputer getSourcePathComputer() {
- ISourceLookupDirector director = getDirector();
- if (director != null) {
- return director.getSourcePathComputer();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return SourceLookupMessages.DefaultSourceContainer_0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers()
- */
- protected ISourceContainer[] createSourceContainers() throws CoreException {
- ISourcePathComputer sourcePathComputer = getSourcePathComputer();
- if (sourcePathComputer != null) {
- ILaunchConfiguration config= getLaunchConfiguration();
- if (config != null) {
- return sourcePathComputer.computeSourceContainers(config, null);
- }
- }
-
- return new ISourceContainer[0];
- }
-} \ No newline at end of file
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DirectorySourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DirectorySourceContainer.java
deleted file mode 100644
index 311dba478..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/DirectorySourceContainer.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-
-/**
- * A directory in the local file system. Source elements returned
- * from <code>findSourceElements(...)</code> are instances
- * of <code>LocalFileStorage</code>.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-
-public class DirectorySourceContainer extends CompositeSourceContainer {
-
- // root directory
- private File fDirectory;
- // whether to search sub-folders
- private boolean fSubfolders = false;
- /**
- * Unique identifier for the directory source container type
- * (value <code>org.eclipse.debug.core.containerType.directory</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.directory"; //$NON-NLS-1$
-
- /**
- * Constructs an external folder container for the
- * directory identified by the given path.
- *
- * @param dirPath path to a directory in the local file system
- * @param subfolders whether folders within the root directory
- * should be searched for source elements
- */
- public DirectorySourceContainer(IPath dirPath, boolean subfolders) {
- this(dirPath.toFile(), subfolders);
- }
-
- /**
- * Constructs an external folder container for the
- * directory identified by the given file.
- *
- * @param dir a directory in the local file system
- * @param subfolders whether folders within the root directory
- * should be searched for source elements
- */
- public DirectorySourceContainer(File dir, boolean subfolders) {
- fDirectory = dir;
- fSubfolders = subfolders;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return fDirectory.getName();
- }
-
- /**
- * Returns the root directory in the local file system associated
- * with this source container.
- *
- * @return the root directory in the local file system associated
- * with this source container
- */
- public File getDirectory() {
- return fDirectory;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String)
- */
- public Object[] findSourceElements(String name) throws CoreException {
- ArrayList sources = new ArrayList();
- File directory = getDirectory();
- File file = new File(directory, name);
- if (file.exists() && file.isFile()) {
- sources.add(new LocalFileStorage(file));
- }
-
- //check sub-folders
- if ((isFindDuplicates() && fSubfolders) || (sources.isEmpty() && fSubfolders)) {
- ISourceContainer[] containers = getSourceContainers();
- for (int i=0; i < containers.length; i++) {
- Object[] objects = containers[i].findSourceElements(name);
- if (objects == null || objects.length == 0) {
- continue;
- }
- if (isFindDuplicates()) {
- for(int j=0; j < objects.length; j++)
- sources.add(objects[j]);
- } else {
- sources.add(objects[0]);
- break;
- }
- }
- }
-
- if(sources.isEmpty())
- return EMPTY;
- return sources.toArray();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#isComposite()
- */
- public boolean isComposite() {
- return fSubfolders;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (obj instanceof DirectorySourceContainer) {
- DirectorySourceContainer container = (DirectorySourceContainer) obj;
- return container.getDirectory().equals(getDirectory());
- }
- return false;
- }
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getDirectory().hashCode();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers()
- */
- protected ISourceContainer[] createSourceContainers() throws CoreException {
- if (isComposite()) {
- String[] files = fDirectory.list();
- if (files != null) {
- List dirs = new ArrayList();
- for (int i = 0; i < files.length; i++) {
- String name = files[i];
- File file = new File(getDirectory(), name);
- if (file.exists() && file.isDirectory()) {
- dirs.add(new DirectorySourceContainer(file, true));
- }
- }
- ISourceContainer[] containers = (ISourceContainer[]) dirs.toArray(new ISourceContainer[dirs.size()]);
- for (int i = 0; i < containers.length; i++) {
- ISourceContainer container = containers[i];
- container.init(getDirector());
- }
- return containers;
- }
- }
- return new ISourceContainer[0];
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ExternalArchiveSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ExternalArchiveSourceContainer.java
deleted file mode 100644
index d1bb037e9..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ExternalArchiveSourceContainer.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.io.File;
-import java.io.IOException;
-import com.ibm.icu.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupUtils;
-
-/**
- * An archive in the local file system. Returns instances
- * of <code>ZipEntryStorage</code> as source elements.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ExternalArchiveSourceContainer extends AbstractSourceContainer {
-
- private boolean fDetectRoots = false;
- private Set fPotentialRoots = null;
- private List fRoots = new ArrayList();
- private String fArchivePath = null;
- /**
- * Unique identifier for the external archive source container type
- * (value <code>org.eclipse.debug.core.containerType.externalArchive</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.externalArchive"; //$NON-NLS-1$
-
- /**
- * Creates an archive source container on the archive at the
- * specified location in the local file system.
- *
- * @param archivePath path to the archive in the local file system
- * @param detectRootPaths whether root container paths should be detected. When
- * <code>true</code>, searching is performed relative to a root path
- * within the archive based on fully qualified file names. A root
- * path is automatically determined for when the first
- * successful search is performed. For example, when searching for a file
- * named <code>a/b/c.d</code>, and an entry in the archive named
- * <code>r/a/b/c.d</code> exists, a root path is set to <code>r</code>.
- * When searching for an unqualified file name, root containers are not
- * considered.
- * When <code>false</code>, searching is performed by
- * matching file names as suffixes to the entries in the archive.
- */
- public ExternalArchiveSourceContainer(String archivePath, boolean detectRootPaths) {
- fArchivePath = archivePath;
- fDetectRoots = detectRootPaths;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String)
- */
- public Object[] findSourceElements(String name) throws CoreException {
- name = name.replace('\\', '/');
- ZipFile file = getArchive();
- // NOTE: archive can be closed between get (above) and synchronized block (below)
- synchronized (file) {
- boolean isQualfied = name.indexOf('/') > 0;
- if (fDetectRoots && isQualfied) {
- ZipEntry entry = searchRoots(file, name);
- if (entry != null) {
- return new Object[]{new ZipEntryStorage(file, entry)};
- }
- } else {
- // try exact match
- ZipEntry entry = null;
- try {
- entry = file.getEntry(name);
- } catch (IllegalStateException e) {
- // archive was closed between retrieving and locking
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- e.getMessage(), e));
- }
- if (entry != null) {
- // can't be any duplicates if there is an exact match
- return new Object[]{new ZipEntryStorage(file, entry)};
- }
- // search
- Enumeration entries = file.entries();
- List matches = null;
- while (entries.hasMoreElements()) {
- entry = (ZipEntry)entries.nextElement();
- String entryName = entry.getName();
- if (entryName.endsWith(name)) {
- if (isQualfied || entryName.length() == name.length() || entryName.charAt(entryName.length() - name.length() - 1) == '/') {
- if (isFindDuplicates()) {
- if (matches == null) {
- matches = new ArrayList();
- }
- matches.add(new ZipEntryStorage(file, entry));
- } else {
- return new Object[]{new ZipEntryStorage(file, entry)};
- }
- }
- }
- }
- if (matches != null) {
- return matches.toArray();
- }
- }
- }
- return EMPTY;
- }
-
- /**
- * Returns the root path in this archive for the given file name, based
- * on its type, or <code>null</code> if none. Detects a root if a root has
- * not yet been detected for the given file type.
- *
- * @param file zip file to search in
- * @param name file name
- * @exception CoreException if an exception occurs while detecting the root
- */
- private ZipEntry searchRoots(ZipFile file, String name) throws CoreException {
- if (fPotentialRoots == null) {
- fPotentialRoots = new HashSet();
- fPotentialRoots.add(""); //$NON-NLS-1$
- // all potential roots are the directories
- try {
- Enumeration entries = file.entries();
- while (entries.hasMoreElements()) {
- ZipEntry entry = (ZipEntry) entries.nextElement();
- if (entry.isDirectory()) {
- fPotentialRoots.add(entry.getName());
- } else {
- String entryName = entry.getName();
- int index = entryName.lastIndexOf("/"); //$NON-NLS-1$
- while (index > 0) {
- if (fPotentialRoots.add(entryName.substring(0, index + 1))) {
- entryName = entryName.substring(0, index);
- index = entryName.lastIndexOf("/"); //$NON-NLS-1$
- } else {
- break;
- }
- }
- }
- }
- } catch (IllegalStateException e) {
- // archive was closed between retrieving and locking
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- e.getMessage(), e));
- }
- }
- int i = 0;
- while (i < fRoots.size()) {
- String root = (String) fRoots.get(i);
- ZipEntry entry = file.getEntry(root+name);
- if (entry != null) {
- return entry;
- }
- i++;
- }
- if (!fPotentialRoots.isEmpty()) {
- Iterator roots = fPotentialRoots.iterator();
- String root = null;
- ZipEntry entry = null;
- while (roots.hasNext()) {
- root = (String) roots.next();
- entry = file.getEntry(root+name);
- if (entry != null) {
- break;
- }
- }
- if (entry != null) {
- if (root != null) {
- fRoots.add(root);
- fPotentialRoots.remove(root);
- // remove any roots that begin with the new root, as roots cannot be nested
- Iterator rs = fPotentialRoots.iterator();
- while (rs.hasNext()) {
- String r = (String) rs.next();
- if (r.startsWith(root)) {
- rs.remove();
- }
- }
- }
- return entry;
- }
- }
- return null;
- }
-
- /**
- * Returns the archive to search in.
- *
- * @throws CoreException if unable to access the archive
- */
- private ZipFile getArchive() throws CoreException {
- try {
- return SourceLookupUtils.getZipFile(fArchivePath);
- } catch (IOException e) {
- File file = new File(fArchivePath);
- if (file.exists()) {
- abort(MessageFormat.format(SourceLookupMessages.ExternalArchiveSourceContainer_2, new String[]{fArchivePath}), e);
- } else {
- warn(MessageFormat.format(SourceLookupMessages.ExternalArchiveSourceContainer_1, new String[]{fArchivePath}), e);
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return fArchivePath;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /**
- * Returns whether root paths are automatically detected in this
- * archive source container.
- *
- * @return whether root paths are automatically detected in this
- * archive source container
- */
- public boolean isDetectRoot() {
- return fDetectRoots;
- }
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return obj instanceof ExternalArchiveSourceContainer &&
- ((ExternalArchiveSourceContainer)obj).getName().equals(getName());
- }
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getName().hashCode();
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#dispose()
- */
- public void dispose() {
- super.dispose();
- if (fPotentialRoots != null) {
- fPotentialRoots.clear();
- }
- fRoots.clear();
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/FolderSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/FolderSourceContainer.java
deleted file mode 100644
index d43b9e289..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/FolderSourceContainer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-
-/**
- * A folder in the workspace.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class FolderSourceContainer extends ContainerSourceContainer {
-
- /**
- * Unique identifier for the folder source container type
- * (value <code>org.eclipse.debug.core.containerType.folder</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.folder"; //$NON-NLS-1$
-
-
- /**
- * Constructs a source container on the given folder.
- *
- * @param folder the folder to search for source in
- * @param subfolders whether to search nested folders
- */
- public FolderSourceContainer(IContainer folder, boolean subfolders) {
- super(folder, subfolders);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/LocalFileStorage.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/LocalFileStorage.java
deleted file mode 100644
index 454c06a54..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/LocalFileStorage.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-/**
- * Implementation of storage for a local file
- * (<code>java.io.File</code>).
- * <p>
- * This class may be instantiated.
- * </p>
- * @see IStorage
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class LocalFileStorage extends PlatformObject implements IStorage {
-
- /**
- * The file this storage refers to.
- */
- private File fFile;
-
- /**
- * Constructs and returns storage for the given file.
- *
- * @param file a local file
- */
- public LocalFileStorage(File file){
- setFile(file);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getContents()
- */
- public InputStream getContents() throws CoreException {
- try {
- return new FileInputStream(getFile());
- } catch (IOException e){
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, SourceLookupMessages.LocalFileStorage_0, e));
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getFullPath()
- */
- public IPath getFullPath() {
- try {
- return new Path(getFile().getCanonicalPath());
- } catch (IOException e) {
- DebugPlugin.log(e);
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getName()
- */
- public String getName() {
- return getFile().getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#isReadOnly()
- */
- public boolean isReadOnly() {
- return true;
- }
-
- /**
- * Sets the file associated with this storage
- *
- * @param file a local file
- */
- private void setFile(File file) {
- fFile = file;
- }
-
- /**
- * Returns the file associated with this storage
- *
- * @return file
- */
- public File getFile() {
- return fFile;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object object) {
- return object instanceof LocalFileStorage &&
- getFile().equals(((LocalFileStorage)object).getFile());
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getFile().hashCode();
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ProjectSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ProjectSourceContainer.java
deleted file mode 100644
index be8f9ddb3..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ProjectSourceContainer.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Mikhail Khodjaiants, QNX - Bug 110227: Possible infinite loop in ProjectSourceContainer
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-
-/**
- * A project in the workspace. Source is searched for in the root project
- * folder and all folders within the project recursively. Optionally,
- * referenced projects may be searched as well.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ProjectSourceContainer extends ContainerSourceContainer {
-
- boolean fReferencedProjects=false;
- /**
- * Unique identifier for the project source container type
- * (value <code>org.eclipse.debug.core.containerType.project</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.project"; //$NON-NLS-1$
-
- /**
- * Constructs a project source container.
- *
- * @param project the project to search for source in
- * @param referenced whether referenced projects should be considered
- */
- public ProjectSourceContainer(IProject project, boolean referenced) {
- super(project, true);
- fReferencedProjects = referenced;
- }
-
- /**
- * Returns whether referenced projects are considered.
- *
- * @return whether referenced projects are considered
- */
- public boolean isSearchReferencedProjects() {
- return fReferencedProjects;
- }
-
- /**
- * Returns the project this source container references.
- *
- * @return the project this source container references
- */
- public IProject getProject() {
- return (IProject) getContainer();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#isComposite()
- */
- public boolean isComposite() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers()
- */
- protected ISourceContainer[] createSourceContainers() throws CoreException {
- if (getProject().isOpen()) {
- if (isSearchReferencedProjects()) {
- IProject project = getProject();
- IProject[] projects = getAllReferencedProjects(project);
- ISourceContainer[] folders = super.createSourceContainers();
- List all = new ArrayList(folders.length + projects.length);
- for (int i = 0; i < folders.length; i++) {
- all.add(folders[i]);
- }
- for (int i = 0; i < projects.length; i++) {
- if (project.exists() && project.isOpen()) {
- ProjectSourceContainer container = new ProjectSourceContainer(projects[i], false);
- container.init(getDirector());
- all.add(container);
- }
- }
- return (ISourceContainer[]) all.toArray(new ISourceContainer[all.size()]);
- }
- return super.createSourceContainers();
- }
- return new ISourceContainer[0];
- }
-
- private IProject[] getAllReferencedProjects(IProject project) throws CoreException {
- Set all = new HashSet();
- getAllReferencedProjects(all, project);
- return (IProject[]) all.toArray(new IProject[all.size()]);
- }
-
- private void getAllReferencedProjects(Set all, IProject project) throws CoreException {
- IProject[] refs = project.getReferencedProjects();
- for (int i = 0; i < refs.length; i++) {
- if (!all.contains(refs[i]) && refs[i].exists() && refs[i].isOpen()) {
- all.add(refs[i]);
- getAllReferencedProjects(all, refs[i]);
- }
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/WorkspaceSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/WorkspaceSourceContainer.java
deleted file mode 100644
index 9bed84fb7..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/WorkspaceSourceContainer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-/**
- * All projects in the workspace.
- * <p>
- * Clients may instantiate this class.
- * </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class WorkspaceSourceContainer extends CompositeSourceContainer {
-
- /**
- * Unique identifier for the workspace source container type
- * (value <code>org.eclipse.debug.core.containerType.workspace</code>).
- */
- public static final String TYPE_ID = DebugPlugin.getUniqueIdentifier() + ".containerType.workspace"; //$NON-NLS-1$
-
- public WorkspaceSourceContainer() {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getName()
- */
- public String getName() {
- return SourceLookupMessages.WorkspaceSourceContainer_0;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- return obj instanceof WorkspaceSourceContainer;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return ResourcesPlugin.getWorkspace().hashCode();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#getType()
- */
- public ISourceContainerType getType() {
- return getSourceContainerType(TYPE_ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers()
- */
- protected ISourceContainer[] createSourceContainers() throws CoreException {
- IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- ISourceContainer[] containers = new ISourceContainer[projects.length];
- for (int i = 0; i < projects.length; i++) {
- ISourceContainer container = new ProjectSourceContainer(projects[i], false);
- container.init(getDirector());
- containers[i] = container;
- }
- return containers;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ZipEntryStorage.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ZipEntryStorage.java
deleted file mode 100644
index 205d91566..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ZipEntryStorage.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.core.sourcelookup.containers;
-
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-
-/**
- * Storage implementation for zip entries.
- * <p>
- * This class may be instantiated.
- * </p>
- * @see IStorage
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ZipEntryStorage extends PlatformObject implements IStorage {
-
- /**
- * Zip file associated with zip entry
- */
- private ZipFile fArchive;
-
- /**
- * Zip entry
- */
- private ZipEntry fZipEntry;
-
- /**
- * Constructs a new storage implementation for the
- * given zip entry in the specified zip file
- *
- * @param archive zip file
- * @param entry zip entry
- */
- public ZipEntryStorage(ZipFile archive, ZipEntry entry) {
- setArchive(archive);
- setZipEntry(entry);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getContents()
- */
- public InputStream getContents() throws CoreException {
- try {
- return getArchive().getInputStream(getZipEntry());
- } catch (IOException e) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, SourceLookupMessages.ZipEntryStorage_0, e));
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getFullPath()
- */
- public IPath getFullPath() {
- return new Path(getArchive().getName()).append(getZipEntry().getName());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#getName()
- */
- public String getName() {
- int index = getZipEntry().getName().lastIndexOf('\\');
- if (index == -1) {
- index = getZipEntry().getName().lastIndexOf('/');
- }
- if (index == -1) {
- return getZipEntry().getName();
- }
- return getZipEntry().getName().substring(index + 1);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IStorage#isReadOnly()
- */
- public boolean isReadOnly() {
- return true;
- }
-
- /**
- * Sets the archive containing the zip entry.
- *
- * @param archive a zip file
- */
- private void setArchive(ZipFile archive) {
- fArchive = archive;
- }
-
- /**
- * Returns the archive containing the zip entry.
- *
- * @return zip file
- */
- public ZipFile getArchive() {
- return fArchive;
- }
-
- /**
- * Sets the entry that contains the source.
- *
- * @param entry the entry that contains the source
- */
- private void setZipEntry(ZipEntry entry) {
- fZipEntry = entry;
- }
-
- /**
- * Returns the entry that contains the source
- *
- * @return zip entry
- */
- public ZipEntry getZipEntry() {
- return fZipEntry;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object object) {
- return object instanceof ZipEntryStorage &&
- getArchive().equals(((ZipEntryStorage)object).getArchive()) &&
- getZipEntry().getName().equals(((ZipEntryStorage)object).getZipEntry().getName());
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return getZipEntry().getName().hashCode();
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/package.html b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/package.html
deleted file mode 100644
index 7125fb5a2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/package.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse Debug Platform</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<p>Provides implementations of common source containers supporting source lookup.</p>
-
-<h2>Package Specification</h2>
-
-<p>This package provides implementations of common source containers, such as
- archives, folders, and projects.</p>
-
-<blockquote>&nbsp;</blockquote>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/package.html b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/package.html
deleted file mode 100644
index 8866be6cc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/package.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<title>Eclipse Debug Platform</title>
-</head>
-
-<body bgcolor="#FFFFFF">
-
-<p>Provides support for source lookup.</p>
-
-<h2>Package Specification</h2>
-
-<p>This package provides classes and interfaces to support source lookup. A source
- lookup director is a persistable source locator that directs source lookup among
- a collection of source lookup participants and a collection of source containers.
- Each source lookup participant is a source locator itself, which allows more
- than one source locator to participate in source lookup for a launch. Each source
- lookup participant searches for source in the source containers managed by its
- director, and each participant is notified of changes in the set of source containers
- being searched.</p>
-<p>A source lookup participant participates in source lookup by searching an ordered
- list of source containers for source elements corresponding to a debug artifact.
- For example, a participant may be asked to find source corresponding to a stack
- frame or breakpoint. An implementation of a source lookup participant is debug
- model specific, since it must convert the debug model artifact (stack frame,
- breakpoint, etc.), into a source name that can be recognized by a source container,
- to search for source elements. Source containers are generally debug model independent,
- whereas source lookup participants are debug model specific.</p>
-
-<blockquote>&nbsp;</blockquote>
-</body>
-</html>
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointImportParticipantDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointImportParticipantDelegate.java
deleted file mode 100644
index 6bd2824e2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointImportParticipantDelegate.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.debug.core.model.IBreakpointImportParticipant;
-
-/**
- * Proxy to a breakpointImportParticipant extension.
- * Client can contribute participant through the <code>breakpointImportParticipant</code> extension point
- *
- * Example contribution:
- * <pre>
- * <extension
- point="org.eclipse.debug.core.breakpointImportParticipant">
- <ImportParticipant
- participant="x.y.z.BreakpointImportParticipant"
- type="org.eclipse.jdt.debug.javaLineBreakpointMarker">
- </ImportParticipant>
- </extension>
- * </pre>
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- *
- * @since 3.5
- */
-public class BreakpointImportParticipantDelegate {
-
- /**
- * The configuration element for this delegate
- */
- private IConfigurationElement fElement = null;
- private IBreakpointImportParticipant fParticipant = null;
-
- /**
- * Constructor
- * @param element the element this proxy is created on
- */
- public BreakpointImportParticipantDelegate(IConfigurationElement element) {
- fElement = element;
- }
-
- /**
- * Returns the {@link IBreakpointImportParticipant} delegate or <code>null</code> of there was
- * a problem loading the delegate
- *
- * @return the {@link IBreakpointImportParticipant} or <code>null</code>
- * @throws CoreException
- */
- public IBreakpointImportParticipant getDelegate() throws CoreException {
- if(fParticipant == null) {
- fParticipant = (IBreakpointImportParticipant) fElement.createExecutableExtension(IConfigurationElementConstants.PARTICIPANT);
- }
- return fParticipant;
- }
-
- /**
- * Returns the marker type this participant is registered for.
- *
- * @return the marker type this participant is registered for
- * @throws CoreException
- */
- public String getType() throws CoreException {
- return fElement.getAttribute(IConfigurationElementConstants.TYPE);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java
deleted file mode 100644
index 84156ab22..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java
+++ /dev/null
@@ -1,1197 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IMarkerDelta;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IBreakpointListener;
-import org.eclipse.debug.core.IBreakpointManager;
-import org.eclipse.debug.core.IBreakpointManagerListener;
-import org.eclipse.debug.core.IBreakpointsListener;
-import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.IBreakpointImportParticipant;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * The breakpoint manager manages all registered breakpoints
- * for the debug plug-in. It is instantiated by the debug plug-in at startup.
- *
- * @see IBreakpointManager
- */
-public class BreakpointManager implements IBreakpointManager, IResourceChangeListener {
-
- /**
- * Constants for breakpoint add/remove/change updates
- */
- private final static int ADDED = 0;
- private final static int REMOVED = 1;
- private final static int CHANGED = 2;
-
- /**
- * A collection of breakpoints registered with this manager.
- */
- private Vector fBreakpoints= null;
-
- /**
- * Map of breakpoint import participants.
- * Map has the form:
- * <pre>Map(String - markerid, List of {@link IBreakpointImportParticipantDelegate})</pre>
- */
- private HashMap fImportParticipants = null;
-
- /**
- * A system default import participant that performs legacy comparison support
- * when no participants are provided for a given type.
- *
- * @since 3.5
- */
- private IBreakpointImportParticipant fDefaultParticipant = null;
-
- /**
- * A collection of breakpoint markers that have received a POST_CHANGE notification
- * that they have changed before a POST_BUILD notification of add. This allows us
- * to tell if a marker has been created & changed since the breakpoint has been
- * registered (see bug 138473).
- */
- private Set fPostChangMarkersChanged = new HashSet();
-
- /**
- * A collection of breakpoint markers that have received a POST_BUILD notification
- * of being added.
- */
- private Set fPostBuildMarkersAdded = new HashSet();
-
- /**
- * Collection of breakpoints being added currently. Used to
- * suppress change notification of "REGISTERED" attribute when
- * being added.
- */
- private List fSuppressChange = new ArrayList();
-
- /**
- * A table of breakpoint extension points, keyed by
- * marker type
- * key: a marker type
- * value: the breakpoint extension which corresponds to that marker type
- */
- private HashMap fBreakpointExtensions;
-
- /**
- * Collection of markers that associates markers to breakpoints
- * key: a marker
- * value: the breakpoint which contains that marker
- */
- private HashMap fMarkersToBreakpoints;
-
- /**
- * Collection of breakpoint listeners.
- */
- private ListenerList fBreakpointListeners= new ListenerList();
-
- /**
- * Collection of (plural) breakpoint listeners.
- */
- private ListenerList fBreakpointsListeners= new ListenerList();
-
- /**
- * Singleton resource delta visitor which handles marker
- * additions, changes, and removals.
- */
- private static BreakpointManagerVisitor fgVisitor;
-
- /**
- * Whether or not this breakpoint manager is enabled.
- */
- private boolean fEnabled= true;
-
- /**
- * Collection of breakpoint manager listeners which are
- * notified when this manager's state changes.
- */
- private ListenerList fBreakpointManagerListeners= new ListenerList();
-
- /**
- * Listens to POST_CHANGE notifications of breakpoint markers to detect when
- * a breakpoint is added & changed before the POST_BUILD add notification is
- * sent.
- */
- class PostChangeListener implements IResourceChangeListener {
-
- private PostChangeVisitor fVisitor = new PostChangeVisitor();
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
- */
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta delta= event.getDelta();
- if (delta != null) {
- try {
- delta.accept(fVisitor);
- } catch (CoreException ce) {
- DebugPlugin.log(ce);
- }
- }
- }
-
- }
-
- /**
- * Default implementation of a breakpoint import participant
- *
- * @since 3.5
- */
- class DefaultImportParticipant implements IBreakpointImportParticipant {
-
- public boolean matches(Map attributes, IBreakpoint breakpoint) throws CoreException {
- //perform legacy comparison
- IMarker marker = breakpoint.getMarker();
- String type = (String) attributes.get("type"); //$NON-NLS-1$
- Integer line = (Integer) attributes.get(IMarker.LINE_NUMBER);
- Object localline = marker.getAttribute(IMarker.LINE_NUMBER);
- String localtype = marker.getType();
- if (type.equals(localtype)) {
- if(line != null && line.equals(localline)) {
- return true;
- }
- else if(line == null) {
- return true;
- }
- }
- return false;
- }
- public void verify(IBreakpoint breakpoint) throws CoreException {}
- }
-
- /**
- * The listener
- */
- private PostChangeListener fPostChangeListener = new PostChangeListener();
-
- class PostChangeVisitor implements IResourceDeltaVisitor {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
- */
- public boolean visit(IResourceDelta delta) throws CoreException {
- if (delta == null) {
- return false;
- }
- IMarkerDelta[] markerDeltas= delta.getMarkerDeltas();
- for (int i= 0; i < markerDeltas.length; i++) {
- IMarkerDelta markerDelta= markerDeltas[i];
- if (markerDelta.isSubtypeOf(IBreakpoint.BREAKPOINT_MARKER)) {
- switch (markerDelta.getKind()) {
- case IResourceDelta.ADDED :
- break;
- case IResourceDelta.REMOVED :
- break;
- case IResourceDelta.CHANGED :
- IMarker marker = markerDelta.getMarker();
- synchronized (fPostChangMarkersChanged) {
- if (!fPostBuildMarkersAdded.contains(marker)) {
- fPostChangMarkersChanged.add(marker);
- }
- }
- break;
- }
- }
- }
- return true;
- }
-
- }
-
- /**
- * Constructs a new breakpoint manager.
- */
- public BreakpointManager() {
- fMarkersToBreakpoints= new HashMap(10);
- fBreakpointExtensions= new HashMap(15);
- }
-
- /**
- * Loads all the breakpoints on the given resource.
- *
- * @param resource the resource which contains the breakpoints
- * @param notify whether to notify of the breakpoint additions
- */
- private void loadBreakpoints(IResource resource, boolean notify) throws CoreException {
- initBreakpointExtensions();
- IMarker[] markers= getPersistedMarkers(resource);
- List added = new ArrayList();
- for (int i = 0; i < markers.length; i++) {
- IMarker marker= markers[i];
- try {
- IBreakpoint breakpoint = createBreakpoint(marker);
- synchronized (fPostChangMarkersChanged) {
- fPostBuildMarkersAdded.add(marker);
- }
- if (breakpoint.isRegistered()) {
- added.add(breakpoint);
- }
- } catch (DebugException e) {
- DebugPlugin.log(e);
- }
- }
- addBreakpoints((IBreakpoint[])added.toArray(new IBreakpoint[added.size()]), notify);
- }
-
- /**
- * Returns the persisted markers associated with the given resource.
- *
- * Delete any invalid breakpoint markers. This is done at startup rather
- * than shutdown, since the changes made at shutdown are not persisted as
- * the workspace state has already been saved. See bug 7683.
- *
- * Since the <code>TRANSIENT</code> marker attribute/feature has been added,
- * we no longer have to manually delete non-persisted markers - the platform
- * does this for us (at shutdown, transient markers are not saved). However,
- * the code is still present to delete non-persisted markers from old
- * workspaces.
- */
- protected IMarker[] getPersistedMarkers(IResource resource) throws CoreException {
- IMarker[] markers= resource.findMarkers(IBreakpoint.BREAKPOINT_MARKER, true, IResource.DEPTH_INFINITE);
- final List delete = new ArrayList();
- List persisted= new ArrayList();
- for (int i = 0; i < markers.length; i++) {
- IMarker marker= markers[i];
- // ensure the marker has a valid model identifier attribute
- // and delete the breakpoint if not
- String modelId = marker.getAttribute(IBreakpoint.ID, null);
- if (modelId == null) {
- // marker with old/invalid format - delete
- delete.add(marker);
- } else if (!marker.getAttribute(IBreakpoint.PERSISTED, true)) {
- // the breakpoint is marked as not to be persisted,
- // schedule for deletion
- delete.add(marker);
- } else {
- persisted.add(marker);
- }
- }
- // delete any markers that are not to be restored
- if (!delete.isEmpty()) {
- final IMarker[] delMarkers = (IMarker[])delete.toArray(new IMarker[delete.size()]);
- IWorkspaceRunnable wr = new IWorkspaceRunnable() {
- public void run(IProgressMonitor pm) throws CoreException {
- for (int i = 0; i < delMarkers.length; i++) {
- IMarker marker = delMarkers[i];
- marker.delete();
- }
- }
- };
- new BreakpointManagerJob(wr).schedule();
- }
- return (IMarker[])persisted.toArray(new IMarker[persisted.size()]);
- }
-
- /**
- * Removes this manager as a resource change listener
- * and removes all breakpoint listeners.
- */
- public void shutdown() {
- getWorkspace().removeResourceChangeListener(this);
- getWorkspace().removeResourceChangeListener(fPostChangeListener);
- fBreakpointListeners = null;
- fBreakpointsListeners = null;
- fBreakpointManagerListeners = null;
- if(fImportParticipants != null) {
- fImportParticipants.clear();
- fImportParticipants = null;
- fDefaultParticipant = null;
- }
- }
-
- /**
- * Find the defined breakpoint extensions and cache them for use in recreating
- * breakpoints from markers.
- */
- private void initBreakpointExtensions() {
- IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_BREAKPOINTS);
- IConfigurationElement[] elements = ep.getConfigurationElements();
- for (int i= 0; i < elements.length; i++) {
- String markerType = elements[i].getAttribute(IConfigurationElementConstants.MARKER_TYPE);
- String className = elements[i].getAttribute(IConfigurationElementConstants.CLASS);
- if (markerType == null) {
- DebugPlugin.log(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "Breakpoint extension " + elements[i].getDeclaringExtension().getUniqueIdentifier() + " missing required attribute: markerType", null)); //$NON-NLS-1$ //$NON-NLS-2$
- } else if (className == null){
- DebugPlugin.log(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "Breakpoint extension " + elements[i].getDeclaringExtension().getUniqueIdentifier() + " missing required attribute: class", null)); //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- fBreakpointExtensions.put(markerType, elements[i]);
- }
- }
- }
-
- /**
- * Convenience method to get the workspace
- */
- private IWorkspace getWorkspace() {
- return ResourcesPlugin.getWorkspace();
- }
-
- /**
- * @see IBreakpointManager#getBreakpoint(IMarker)
- */
- public IBreakpoint getBreakpoint(IMarker marker) {
- // ensure that breakpoints are initialized
- getBreakpoints0();
- return (IBreakpoint)fMarkersToBreakpoints.get(marker);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#getBreakpoints()
- */
- public IBreakpoint[] getBreakpoints() {
- IBreakpoint[] temp = new IBreakpoint[0];
- Vector breakpoints = getBreakpoints0();
- synchronized (breakpoints) {
- temp = new IBreakpoint[breakpoints.size()];
- breakpoints.copyInto(temp);
- }
- return temp;
- }
-
- /**
- * The BreakpointManager waits to load the breakpoints
- * of the workspace until a request is made to retrieve the
- * breakpoints.
- */
- private synchronized Vector getBreakpoints0() {
- if (fBreakpoints == null) {
- initializeBreakpoints();
- }
- return fBreakpoints;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#getBreakpoints(java.lang.String)
- */
- public IBreakpoint[] getBreakpoints(String modelIdentifier) {
- Vector allBreakpoints= getBreakpoints0();
- synchronized (allBreakpoints) {
- ArrayList temp = new ArrayList(allBreakpoints.size());
- Iterator breakpoints= allBreakpoints.iterator();
- while (breakpoints.hasNext()) {
- IBreakpoint breakpoint= (IBreakpoint) breakpoints.next();
- String id= breakpoint.getModelIdentifier();
- if (id != null && id.equals(modelIdentifier)) {
- temp.add(breakpoint);
- }
- }
- return (IBreakpoint[]) temp.toArray(new IBreakpoint[temp.size()]);
- }
- }
-
- /**
- * Loads the list of breakpoints from the breakpoint markers in the
- * workspace. Start listening to resource deltas.
- */
- private void initializeBreakpoints() {
- setBreakpoints(new Vector(10));
- try {
- loadBreakpoints(getWorkspace().getRoot(), false);
- getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_BUILD);
- getWorkspace().addResourceChangeListener(fPostChangeListener, IResourceChangeEvent.POST_CHANGE);
- } catch (CoreException ce) {
- DebugPlugin.log(ce);
- setBreakpoints(new Vector(0));
- }
- }
-
- /**
- * @see IBreakpointManager#isRegistered(IBreakpoint)
- */
- public boolean isRegistered(IBreakpoint breakpoint) {
- return getBreakpoints0().contains(breakpoint);
- }
-
-
- /**
- * @see IBreakpointManager#removeBreakpoint(IBreakpoint, boolean)
- */
- public void removeBreakpoint(IBreakpoint breakpoint, boolean delete) throws CoreException {
- removeBreakpoints(new IBreakpoint[]{breakpoint}, delete);
- }
-
- /**
- * @see IBreakpointManager#removeBreakpoints(IBreakpoint[], boolean)
- */
- public void removeBreakpoints(IBreakpoint[] breakpoints, final boolean delete) throws CoreException {
- final List remove = new ArrayList(breakpoints.length);
- for (int i = 0; i < breakpoints.length; i++) {
- IBreakpoint breakpoint = breakpoints[i];
- if (getBreakpoints0().contains(breakpoint)) {
- remove.add(breakpoint);
- }
- }
- if (!remove.isEmpty()) {
- Iterator iter = remove.iterator();
- while (iter.hasNext()) {
- IBreakpoint breakpoint = (IBreakpoint)iter.next();
- getBreakpoints0().remove(breakpoint);
- fMarkersToBreakpoints.remove(breakpoint.getMarker());
- }
- fireUpdate(remove, null, REMOVED);
- IWorkspaceRunnable r = new IWorkspaceRunnable() {
- public void run(IProgressMonitor montitor) throws CoreException {
- Iterator innerIter = remove.iterator();
- while (innerIter.hasNext()) {
- IBreakpoint breakpoint = (IBreakpoint)innerIter.next();
- if (delete) {
- breakpoint.delete();
- } else {
- // if the breakpoint is being removed from the manager
- // because the project is closing, the breakpoint should
- // remain as registered, otherwise, the breakpoint should
- // be marked as unregistered
- IMarker marker = breakpoint.getMarker();
- if (marker.exists()) {
- IProject project = breakpoint.getMarker().getResource().getProject();
- if (project == null || project.isOpen()) {
- breakpoint.setRegistered(false);
- }
- }
- }
- }
- }
- };
- getWorkspace().run(r, null, 0, null);
- }
- }
-
- /**
- * Create a breakpoint for the given marker. The created breakpoint
- * is of the type specified in the breakpoint extension associated
- * with the given marker type.
- *
- * @param marker marker to create a breakpoint for
- * @return a breakpoint on this marker
- * @exception DebugException if breakpoint creation fails. Reasons for
- * failure include:
- * <ol>
- * <li>The breakpoint manager cannot determine what kind of breakpoint
- * to instantiate for the given marker type</li>
- * <li>A lower level exception occurred while accessing the given marker</li>
- * </ol>
- */
- public IBreakpoint createBreakpoint(IMarker marker) throws DebugException {
- IBreakpoint breakpoint= (IBreakpoint) fMarkersToBreakpoints.get(marker);
- if (breakpoint != null) {
- return breakpoint;
- }
- try {
- IConfigurationElement config = (IConfigurationElement)fBreakpointExtensions.get(marker.getType());
- if (config == null) {
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.CONFIGURATION_INVALID, MessageFormat.format(DebugCoreMessages.BreakpointManager_Missing_breakpoint_definition, new String[] {marker.getType()}), null));
- }
- Object object = config.createExecutableExtension(IConfigurationElementConstants.CLASS);
- if (object instanceof IBreakpoint) {
- breakpoint = (IBreakpoint)object;
- breakpoint.setMarker(marker);
- } else {
- DebugPlugin.log(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "Breakpoint extension " + config.getDeclaringExtension().getUniqueIdentifier() + " missing required attribute: class", null)); //$NON-NLS-1$ //$NON-NLS-2$
- }
- return breakpoint;
- } catch (CoreException e) {
- throw new DebugException(e.getStatus());
- }
- }
-
- /**
- * @see IBreakpointManager#addBreakpoint(IBreakpoint)
- */
- public void addBreakpoint(IBreakpoint breakpoint) throws CoreException {
- addBreakpoints(new IBreakpoint[]{breakpoint});
- }
-
- /**
- * @see IBreakpointManager#addBreakpoints(IBreakpoint[])
- */
- public void addBreakpoints(IBreakpoint[] breakpoints) throws CoreException {
- addBreakpoints(breakpoints, true);
- }
-
- /**
- * Registers the given breakpoints and notifies listeners if specified.
- *
- * @param breakpoints the breakpoints to register
- * @param notify whether to notify listeners of the add
- * @param loading whether the given breakpoints are being automatically loaded
- * from previously persisted markers
- */
- private void addBreakpoints(IBreakpoint[] breakpoints, boolean notify) throws CoreException {
- List added = new ArrayList(breakpoints.length);
- final List update = new ArrayList();
- for (int i = 0; i < breakpoints.length; i++) {
- IBreakpoint breakpoint = breakpoints[i];
- if (!getBreakpoints0().contains(breakpoint)) {
- verifyBreakpoint(breakpoint);
- if (breakpoint.isRegistered()) {
- // If notify == false, the breakpoints are just being added at startup
- added.add(breakpoint);
- getBreakpoints0().add(breakpoint);
- fMarkersToBreakpoints.put(breakpoint.getMarker(), breakpoint);
- } else {
- // need to update the 'registered' and/or 'group' attributes
- update.add(breakpoint);
- }
- }
- }
- if (notify) {
- fireUpdate(added, null, ADDED);
- }
- if (!update.isEmpty()) {
- IWorkspaceRunnable r = new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- Iterator iter = update.iterator();
- while (iter.hasNext()) {
- IBreakpoint breakpoint = (IBreakpoint)iter.next();
- getBreakpoints0().add(breakpoint);
- breakpoint.setRegistered(true);
- fMarkersToBreakpoints.put(breakpoint.getMarker(), breakpoint);
- }
- }
- };
- // Need to suppress change notification, since this is really
- // an add notification
- fSuppressChange.addAll(update);
- getWorkspace().run(r, null, 0, null);
- fSuppressChange.removeAll(update);
- if (notify) {
- fireUpdate(update, null, ADDED);
- }
- }
- }
-
- /**
- * Returns whether change notification is to be suppressed for the given breakpoint.
- * Used when adding breakpoints and changing the "REGISTERED" attribute.
- *
- * @param breakpoint
- * @return boolean whether change notification is suppressed
- */
- protected boolean isChangeSuppressed(IBreakpoint breakpoint) {
- return fSuppressChange.contains(breakpoint);
- }
-
- /**
- * @see IBreakpointManager#fireBreakpointChanged(IBreakpoint)
- */
- public void fireBreakpointChanged(IBreakpoint breakpoint) {
- if (getBreakpoints0().contains(breakpoint)) {
- List changed = new ArrayList();
- changed.add(breakpoint);
- fireUpdate(changed, null, CHANGED);
- }
- }
-
- /**
- * Verifies that the breakpoint marker has the minimal required attributes,
- * and throws a debug exception if not.
- */
- private void verifyBreakpoint(IBreakpoint breakpoint) throws DebugException {
- try {
- String id= breakpoint.getModelIdentifier();
- if (id == null) {
- throw new DebugException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.CONFIGURATION_INVALID, DebugCoreMessages.BreakpointManager_Missing_model_identifier, null));
- }
- } catch (CoreException e) {
- throw new DebugException(e.getStatus());
- }
- }
-
- /**
- * A resource has changed. Traverses the delta for breakpoint changes.
- *
- * @param event resource change event
- */
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta delta= event.getDelta();
- if (delta != null) {
- try {
- if (fgVisitor == null) {
- fgVisitor= new BreakpointManagerVisitor();
- }
- delta.accept(fgVisitor);
- fgVisitor.update();
- } catch (CoreException ce) {
- DebugPlugin.log(ce);
- }
- }
- }
-
- /**
- * Visitor for handling resource deltas
- */
- class BreakpointManagerVisitor implements IResourceDeltaVisitor {
- /**
- * Moved markers
- */
- private List fMoved = new ArrayList();
- /**
- * Removed breakpoints
- */
- private List fRemoved = new ArrayList();
- /**
- * Changed breakpoints and associated marker deltas
- */
- private List fChanged = new ArrayList();
- private List fChangedDeltas = new ArrayList();
-
- /**
- * Resets the visitor for a delta traversal - empties
- * collections of removed/changed breakpoints.
- */
- protected void reset() {
- fMoved.clear();
- fRemoved.clear();
- fChanged.clear();
- fChangedDeltas.clear();
- }
-
- /**
- * Performs updates on accumulated changes, and fires change notification after
- * a traversal. Accumulated updates are reset.
- */
- public void update() {
- if (!fMoved.isEmpty()) {
- // delete moved markers
- IWorkspaceRunnable wRunnable= new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- IMarker[] markers = (IMarker[])fMoved.toArray(new IMarker[fMoved.size()]);
- for (int i = 0; i < markers.length; i++) {
- markers[i].delete();
- }
- }
- };
- try {
- getWorkspace().run(wRunnable, null, 0, null);
- } catch (CoreException e) {
- }
- }
- if (!fRemoved.isEmpty()) {
- try {
- removeBreakpoints((IBreakpoint[])fRemoved.toArray(new IBreakpoint[fRemoved.size()]), false);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- if (!fChanged.isEmpty()) {
- fireUpdate(fChanged, fChangedDeltas, CHANGED);
- }
- reset();
- }
-
- /**
- * @see IResourceDeltaVisitor#visit(IResourceDelta)
- */
- public boolean visit(IResourceDelta delta) {
- if (delta == null) {
- return false;
- }
- if (0 != (delta.getFlags() & IResourceDelta.OPEN) && 0 == (delta.getFlags() & IResourceDelta.MOVED_FROM)) {
- handleProjectResourceOpenStateChange(delta.getResource());
- return false;
- }
- IMarkerDelta[] markerDeltas= delta.getMarkerDeltas();
- for (int i= 0; i < markerDeltas.length; i++) {
- IMarkerDelta markerDelta= markerDeltas[i];
- if (markerDelta.isSubtypeOf(IBreakpoint.BREAKPOINT_MARKER)) {
- switch (markerDelta.getKind()) {
- case IResourceDelta.ADDED :
- handleAddBreakpoint(delta, markerDelta.getMarker(), markerDelta);
- break;
- case IResourceDelta.REMOVED :
- handleRemoveBreakpoint(markerDelta.getMarker());
- break;
- case IResourceDelta.CHANGED :
- handleChangeBreakpoint(markerDelta.getMarker(), markerDelta);
- break;
- }
- }
- }
-
- return true;
- }
-
- /**
- * Wrapper for handling adds
- */
- protected void handleAddBreakpoint(IResourceDelta rDelta, IMarker marker, IMarkerDelta mDelta) {
- if (0 != (rDelta.getFlags() & IResourceDelta.MOVED_FROM)) {
- // This breakpoint has actually been moved - already removed
- // from the Breakpoint manager during the remove callback.
- // Schedule the marker associated with the new resource for deletion.
- if (getBreakpoint(marker) == null) {
- fMoved.add(marker);
- }
- } else {
- // check if the an add & change have be combined into one add notification
- synchronized (fPostChangMarkersChanged) {
- if (fPostChangMarkersChanged.contains(marker)) {
- handleChangeBreakpoint(marker, mDelta);
- fPostChangMarkersChanged.remove(marker);
- }
- fPostBuildMarkersAdded.add(marker);
- }
- }
- }
-
- /**
- * Wrapper for handling removes
- */
- protected void handleRemoveBreakpoint(IMarker marker) {
- synchronized (fPostChangMarkersChanged) {
- fPostChangMarkersChanged.remove(marker);
- fPostBuildMarkersAdded.remove(marker);
- }
- IBreakpoint breakpoint= getBreakpoint(marker);
- if (breakpoint != null) {
- fRemoved.add(breakpoint);
- }
- }
-
- /**
- * Wrapper for handling changes
- */
- protected void handleChangeBreakpoint(IMarker marker, IMarkerDelta delta) {
- IBreakpoint breakpoint= getBreakpoint(marker);
- if (breakpoint != null && isRegistered(breakpoint) && !isChangeSuppressed(breakpoint)) {
- fChanged.add(breakpoint);
- fChangedDeltas.add(delta);
- }
- }
-
- /**
- * A project has been opened or closed. Updates the breakpoints for
- * that project
- */
- private void handleProjectResourceOpenStateChange(final IResource project) {
- if (!project.isAccessible()) {
- //closed
- Enumeration breakpoints= ((Vector)getBreakpoints0().clone()).elements();
- while (breakpoints.hasMoreElements()) {
- IBreakpoint breakpoint= (IBreakpoint) breakpoints.nextElement();
- IResource markerResource= breakpoint.getMarker().getResource();
- if (project.getFullPath().isPrefixOf(markerResource.getFullPath())) {
- fRemoved.add(breakpoint);
- }
- }
- return;
- }
- try {
- loadBreakpoints(project, true);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- }
-
- /**
- * @see IBreakpointManager#addBreakpointListener(IBreakpointListener)
- */
- public void addBreakpointListener(IBreakpointListener listener) {
- fBreakpointListeners.add(listener);
- }
-
- /**
- * @see IBreakpointManager#removeBreakpointListener(IBreakpointListener)
- */
- public void removeBreakpointListener(IBreakpointListener listener) {
- fBreakpointListeners.remove(listener);
- }
-
- /**
- * Notifies listeners of the adds/removes/changes
- *
- * @param breakpoints associated breakpoints
- * @param deltas or <code>null</code>
- * @param update type of change
- */
- private void fireUpdate(List breakpoints, List deltas, int update) {
- if (breakpoints.isEmpty()) {
- return;
- }
- IBreakpoint[] bpArray = (IBreakpoint[])breakpoints.toArray(new IBreakpoint[breakpoints.size()]);
- IMarkerDelta[] deltaArray = new IMarkerDelta[bpArray.length];
- if (deltas != null) {
- deltaArray = (IMarkerDelta[])deltas.toArray(deltaArray);
- }
- // single listeners
- getBreakpointNotifier().notify(bpArray, deltaArray, update);
-
- // plural listeners
- getBreakpointsNotifier().notify(bpArray, deltaArray, update);
- }
-
- protected void setBreakpoints(Vector breakpoints) {
- fBreakpoints = breakpoints;
- }
-
- /**
- * @see IBreakpointManager#hasBreakpoints()
- */
- public boolean hasBreakpoints() {
- return !getBreakpoints0().isEmpty();
- }
-
- /**
- * @see org.eclipse.debug.core.IBreakpointManager#addBreakpointListener(org.eclipse.debug.core.IBreakpointsListener)
- */
- public void addBreakpointListener(IBreakpointsListener listener) {
- fBreakpointsListeners.add(listener);
- }
-
- /**
- * @see org.eclipse.debug.core.IBreakpointManager#removeBreakpointListener(org.eclipse.debug.core.IBreakpointsListener)
- */
- public void removeBreakpointListener(IBreakpointsListener listener) {
- fBreakpointsListeners.remove(listener);
- }
-
- private BreakpointNotifier getBreakpointNotifier() {
- return new BreakpointNotifier();
- }
-
- /**
- * Notifies breakpoint listener (single breakpoint) in a safe runnable to
- * handle exceptions.
- */
- class BreakpointNotifier implements ISafeRunnable {
-
- private IBreakpointListener fListener;
- private int fType;
- private IMarkerDelta fDelta;
- private IBreakpoint fBreakpoint;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during breakpoint change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.breakpointAdded(fBreakpoint);
- break;
- case REMOVED:
- fListener.breakpointRemoved(fBreakpoint, fDelta);
- break;
- case CHANGED:
- fListener.breakpointChanged(fBreakpoint, fDelta);
- break;
- }
- }
-
- /**
- * Notifies the listeners of the add/change/remove
- *
- * @param breakpoints the breakpoints that changed
- * @param deltas the deltas associated with the change
- * @param update the type of change
- */
- public void notify(IBreakpoint[] breakpoints, IMarkerDelta[] deltas, int update) {
- fType = update;
- Object[] copiedListeners= fBreakpointListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IBreakpointListener)copiedListeners[i];
- for (int j = 0; j < breakpoints.length; j++) {
- fBreakpoint = breakpoints[j];
- fDelta = deltas[j];
- SafeRunner.run(this);
- }
- }
- fListener = null;
- fDelta = null;
- fBreakpoint = null;
- }
- }
-
- private BreakpointsNotifier getBreakpointsNotifier() {
- return new BreakpointsNotifier();
- }
-
- /**
- * Notifies breakpoint listener (multiple breakpoints) in a safe runnable to
- * handle exceptions.
- */
- class BreakpointsNotifier implements ISafeRunnable {
-
- private IBreakpointsListener fListener;
- private int fType;
- private IMarkerDelta[] fDeltas;
- private IBreakpoint[] fNotifierBreakpoints;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during breakpoint change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.breakpointsAdded(fNotifierBreakpoints);
- break;
- case REMOVED:
- fListener.breakpointsRemoved(fNotifierBreakpoints, fDeltas);
- break;
- case CHANGED:
- fListener.breakpointsChanged(fNotifierBreakpoints, fDeltas);
- break;
- }
- }
-
- /**
- * Notifies the listeners of the adds/changes/removes
- *
- * @param breakpoints the breakpoints that changed
- * @param deltas the deltas associated with the changed breakpoints
- * @param update the type of change
- */
- public void notify(IBreakpoint[] breakpoints, IMarkerDelta[] deltas, int update) {
- fType = update;
- fNotifierBreakpoints = breakpoints;
- fDeltas = deltas;
- Object[] copiedListeners = fBreakpointsListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IBreakpointsListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- fDeltas = null;
- fNotifierBreakpoints = null;
- fListener = null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#isEnabled()
- */
- public boolean isEnabled() {
- return fEnabled;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#setEnabled(boolean)
- */
- public void setEnabled(final boolean enabled) {
- if (fEnabled != enabled) {
- fEnabled= enabled;
- IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
- public void run(IProgressMonitor monitor) throws CoreException {
- IBreakpoint[] breakpoints = getBreakpoints();
- for (int i = 0; i < breakpoints.length; i++) {
- IBreakpoint breakpoint = breakpoints[i];
- // Touch the marker (but don't actually change anything) so that the icon in
- // the editor ruler will be updated (editors listen to marker changes).
- breakpoint.getMarker().setAttribute(IBreakpoint.ENABLED, breakpoint.isEnabled());
- }
- }
- };
- try {
- ResourcesPlugin.getWorkspace().run(runnable, null, IWorkspace.AVOID_UPDATE ,null);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- new BreakpointManagerNotifier().notify(enabled);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#addBreakpointManagerListener(org.eclipse.debug.core.IBreakpointManagerListener)
- */
- public void addBreakpointManagerListener(IBreakpointManagerListener listener) {
- fBreakpointManagerListeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#removeBreakpointManagerListener(org.eclipse.debug.core.IBreakpointManagerListener)
- */
- public void removeBreakpointManagerListener(IBreakpointManagerListener listener) {
- fBreakpointManagerListeners.remove(listener);
- }
-
- /**
- * Notifies breakpoint manager listeners in a safe runnable to
- * handle exceptions.
- */
- class BreakpointManagerNotifier implements ISafeRunnable {
-
- private IBreakpointManagerListener fListener;
- private boolean fManagerEnabled;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during breakpoint change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- fListener.breakpointManagerEnablementChanged(fManagerEnabled);
- }
-
- /**
- * Notifies the listeners of the enabled state change
- *
- * @param enabled whether the manager is enabled
- */
- public void notify(boolean enabled) {
- fManagerEnabled= enabled;
- Object[] copiedListeners = fBreakpointManagerListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IBreakpointManagerListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- fListener = null;
- }
- }
-
- class BreakpointManagerJob extends Job {
-
- private final IWorkspaceRunnable fRunnable;
-
- public BreakpointManagerJob (IWorkspaceRunnable wRunnable) {
- super("breakpoint manager job"); //$NON-NLS-1$
- fRunnable= wRunnable;
- setSystem(true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
- */
- protected IStatus run(IProgressMonitor monitor) {
- try {
- getWorkspace().run(fRunnable, null, 0, null);
- } catch (CoreException ce) {
- DebugPlugin.log(ce);
- }
- return new Status(IStatus.OK, DebugPlugin.getUniqueIdentifier(), IStatus.OK, "", null); //$NON-NLS-1$
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#getTypeName(org.eclipse.debug.core.model.IBreakpoint)
- */
- public String getTypeName(IBreakpoint breakpoint) {
- String typeName= null;
- IMarker marker = breakpoint.getMarker();
- if (marker != null) {
- try {
- IConfigurationElement element = (IConfigurationElement) fBreakpointExtensions.get(marker.getType());
- if (element != null) {
- typeName= element.getAttribute(IConfigurationElementConstants.NAME);
- }
- }
- catch (CoreException e) {}
- }
- return typeName;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IBreakpointManager#getImportParticipants(java.lang.String)
- */
- public IBreakpointImportParticipant[] getImportParticipants(String markertype) throws CoreException {
- initializeImportParticipants();
- ArrayList list = (ArrayList) fImportParticipants.get(markertype);
- if(list == null) {
- return new IBreakpointImportParticipant[] {fDefaultParticipant};
- }
- IBreakpointImportParticipant[] participants = new IBreakpointImportParticipant[list.size()];
- BreakpointImportParticipantDelegate delegate = null;
- for(int i = 0; i < list.size(); i++) {
- delegate = (BreakpointImportParticipantDelegate) list.get(i);
- participants[i] = delegate.getDelegate();
- }
- if(participants.length == 0) {
- return new IBreakpointImportParticipant[] {fDefaultParticipant};
- }
- return participants;
- }
-
- /**
- * Initializes the cache of breakpoint import participants. Does no work if the cache
- * has already been initialized
- */
- private synchronized void initializeImportParticipants() {
- if(fImportParticipants == null) {
- fImportParticipants = new HashMap();
- fDefaultParticipant = new DefaultImportParticipant();
- IExtensionPoint ep = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_BREAKPOINT_IMPORT_PARTICIPANTS);
- IConfigurationElement[] elements = ep.getConfigurationElements();
- String type = null;
- ArrayList list = null;
- for(int i = 0; i < elements.length; i++) {
- type = elements[i].getAttribute(IConfigurationElementConstants.TYPE);
- if(type != null) {
- list = (ArrayList) fImportParticipants.get(type);
- if(list == null) {
- list = new ArrayList();
- fImportParticipants.put(type, list);
- }
- list.add(new BreakpointImportParticipantDelegate(elements[i]));
- }
- }
- }
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java
deleted file mode 100644
index 23dca1e58..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.osgi.util.NLS;
-
-public class DebugCoreMessages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.debug.internal.core.DebugCoreMessages";//$NON-NLS-1$
-
- public static String Breakpoint_no_associated_marker;
- public static String BreakpointManager_Missing_breakpoint_definition;
- public static String BreakpointManager_Missing_model_identifier;
- public static String DebugEvent_illegal_detail;
- public static String DebugEvent_illegal_kind;
-
- public static String DebugPlugin_0;
- public static String DebugPlugin_1;
- public static String DebugPlugin_2;
- public static String DebugPlugin_3;
- public static String DebugPlugin_4;
- public static String DebugPlugin_5;
- public static String DebugPlugin_6;
- public static String DebugPlugin_7;
- public static String DebugPlugin_8;
- public static String DebugPlugin_Eclipse_runtime_does_not_support_working_directory_2;
-
- public static String EnvironmentVariableResolver_0;
-
- public static String LaunchConfiguration_0;
- public static String LaunchConfiguration_11;
- public static String LaunchConfiguration_13;
- public static String LaunchConfiguration_14;
- public static String LaunchConfiguration_16;
- public static String LaunchConfiguration_17;
- public static String LaunchConfiguration_18;
- public static String LaunchConfiguration_19;
- public static String LaunchConfiguration_2;
- public static String LaunchConfiguration_3;
- public static String LaunchConfiguration_4;
- public static String LaunchConfiguration_5;
- public static String LaunchConfiguration_6;
- public static String LaunchConfiguration_7;
- public static String LaunchConfiguration_8;
- public static String LaunchConfiguration_9;
- public static String LaunchConfigurationInfo_35;
- public static String LaunchConfigurationType_7;
-
- public static String LaunchConfigurationWorkingCopy_0;
- public static String LaunchConfigurationWorkingCopy_1;
- public static String LaunchConfigurationWorkingCopy_2;
- public static String LaunchConfigurationWorkingCopy_3;
-
- public static String LaunchDelegate_0;
- public static String LaunchDelegate_1;
- public static String LaunchDelegate_2;
- public static String LaunchDelegate_3;
- public static String LaunchManager_26;
- public static String LaunchManager_27;
- public static String LaunchManager_28;
- public static String LaunchManager_29;
- public static String LaunchManager_31;
-
- public static String LaunchMode_1;
-
- public static String LogicalStructureProvider_0;
-
- public static String LogicalStructureProvider_1;
-
- public static String LogicalStructureType_1;
- public static String SystemPropertyResolver_0;
- public static String InputStreamMonitor_label;
- public static String Launch_terminate_failed;
- public static String LaunchConfiguration_Failed_to_delete_launch_configuration__1;
- public static String LaunchConfigurationDelegate_6;
- public static String LaunchConfigurationDelegate_7;
-
- public static String LaunchConfigurationDelegate_scoped_incremental_build;
- public static String LaunchConfigurationInfo_Attribute__0__is_not_of_type_boolean__3;
- public static String LaunchConfigurationInfo_Attribute__0__is_not_of_type_int__2;
- public static String LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_lang_String__1;
- public static String LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_List__1;
- public static String LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_Map__1;
- public static String LaunchConfigurationInfo_Invalid_launch_configuration_XML__10;
- public static String LaunchConfigurationInfo_missing_type;
- public static String LaunchConfigurationInfo_36;
- public static String LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1;
-
- public static String LaunchConfigurationWorkingCopy_4;
- public static String LaunchConfigurationWorkingCopy_Specified_container_for_launch_configuration_does_not_exist_2;
- public static String LaunchConfigurationWorkingCopy_5;
- public static String LaunchManager__0__occurred_while_reading_launch_configuration_file__1___1;
- public static String LaunchManager_Invalid_launch_configuration_index__18;
- public static String LaunchManager_does_not_exist;
-
- public static String LaunchManager_does_not_exist_no_store_found;
- public static String LaunchManager_Source_locator_does_not_exist___0__13;
- public static String LogicalStructureType_0;
- public static String OutputStreamMonitor_label;
- public static String ProcessMonitorJob_0;
- public static String RuntimeProcess_terminate_failed;
- public static String RuntimeProcess_Exit_value_not_available_until_process_terminates__1;
- public static String WatchExpression_0;
- public static String NullStreamsProxy_0;
-
- static {
- // load message values from bundle file
- NLS.initializeMessages(BUNDLE_NAME, DebugCoreMessages.class);
- }
- public static String LaunchMode_0;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties
deleted file mode 100644
index a9f99dcbc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugCoreMessages.properties
+++ /dev/null
@@ -1,100 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-Breakpoint_no_associated_marker=Breakpoint does not have an associated marker.
-BreakpointManager_Missing_breakpoint_definition=Missing breakpoint definition for marker type {0}
-BreakpointManager_Missing_model_identifier=Breakpoint missing debug model identifier
-DebugEvent_illegal_detail=detail is not one of the allowed constants, see IDebugEventConstants
-DebugEvent_illegal_kind=kind is not one of the allowed constants, see IDebugEventConstants
-DebugPlugin_Eclipse_runtime_does_not_support_working_directory_2=Eclipse runtime does not support working directory
-DebugPlugin_1=Debug Event Dispatch
-DebugPlugin_0=Exception occurred executing command line.
-DebugPlugin_2=Internal message logged from Debug Core: {0}
-DebugPlugin_3=Error logged from Debug Core:
-DebugPlugin_4=Invalid process factory extension contributed by {0}; id: {1}
-DebugPlugin_5=Invalid status handler extension: {0}
-DebugPlugin_6=An exception occurred in asynchronous runnable.
-DebugPlugin_7=An exception occurred while filtering debug events.
-DebugPlugin_8=An exception occurred while dispatching debug events.
-EnvironmentVariableResolver_0=Environment variable not specified
-SystemPropertyResolver_0=System property not specified
-InputStreamMonitor_label=Input Stream Monitor
-Launch_terminate_failed=Terminate failed
-LaunchConfiguration_Failed_to_delete_launch_configuration__1=Failed to delete launch configuration.
-LaunchConfiguration_9=Preparing launch delegate...
-LaunchConfiguration_8=Performing pre-launch check...
-LaunchConfiguration_7=Build before launch -
-LaunchConfiguration_6=Performing required build...
-LaunchConfiguration_5=Performing incremental workspace build...
-LaunchConfiguration_4=Performing final launch validation...
-LaunchConfiguration_3=Initializing source locator...
-LaunchConfiguration_2=Launching delegate...
-LaunchConfiguration_0=Launch configuration has corrupt resource mapping attributes
-LaunchConfiguration_11=No launch delegate found - launch canceled
-LaunchConfiguration_13=Duplicate launcher detected - launch canceled
-LaunchConfiguration_14=Incompatible launch mode: expecting {0} instead of {1}
-LaunchConfiguration_16=Exception occurred creating launch configuration memento
-LaunchConfiguration_17=Exception occurred parsing memento
-LaunchConfiguration_18=Invalid launch configuration memento: missing path attribute
-LaunchConfiguration_19=Invalid launch configuration memento: missing local attribute
-LaunchConfigurationDelegate_6=Searching for errors
-LaunchConfigurationDelegate_7=Searching for errors in {0}
-LaunchConfigurationDelegate_scoped_incremental_build=Scoped incremental build before launch...
-LaunchConfigurationInfo_Attribute__0__is_not_of_type_boolean__3=Attribute {0} is not of type boolean.
-LaunchConfigurationInfo_Attribute__0__is_not_of_type_int__2=Attribute {0} is not of type int.
-LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_lang_String__1=Attribute {0} is not of type java.lang.String.
-LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_List__1=Attribute {0} is not of type java.util.List.
-LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_Map__1=Attribute {0} is not of type java.util.Map.
-LaunchConfigurationInfo_Invalid_launch_configuration_XML__10=Invalid launch configuration XML.
-LaunchConfigurationInfo_missing_type=Launch configuration type id \"{0}\" does not exist.\nPossible causes:\n\tMissing specification of a launch type (missing plug-in)\n\tIncorrect launch configuration XML
-LaunchConfigurationInfo_36=A null key has been specified for an attribute in this launch configuration
-LaunchConfigurationInfo_35=Attribute {0} is not of type java.util.Set.
-LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1={0} occurred generating launch configuration XML.
-LaunchConfigurationWorkingCopy_Specified_container_for_launch_configuration_does_not_exist_2=Specified container for launch configuration does not exist
-LaunchConfigurationWorkingCopy_5=Unable to save launch configuration.
-LaunchConfigurationWorkingCopy_0=Saving launch configuration [{0}]:
-LaunchConfigurationWorkingCopy_1=Writing local file
-LaunchConfigurationWorkingCopy_2=Creating new file {0}.launch in workspace
-LaunchConfigurationWorkingCopy_3=Setting contents of {0}.launch
-LaunchConfigurationWorkingCopy_4=Unable to obtain storage to write launch configuration
-LaunchManager__0__occurred_while_reading_launch_configuration_file__1___1={0} occurred while reading launch configuration file: {1}.
-LaunchManager_Invalid_launch_configuration_index__18=Invalid launch configuration index.
-LaunchManager_does_not_exist=Launch configuration {0} at {1} does not exist.
-LaunchManager_does_not_exist_no_store_found=Launch configuration {0} does not exist
-LaunchManager_Source_locator_does_not_exist___0__13=Source locator does not exist: {0}
-LaunchManager_26=Import failed
-LaunchManager_27=Failed to import {0}.
-LaunchManager_28=Importing {0}
-LaunchManager_29=Importing launch configurations
-
-# This describes the name of a single launch configuration
-# {0} is the base name of the configuration
-# {1} is the numerical modifier for the name
-# For example if we have a config named 'test' and we created a new one from test
-# we would get 'test (1)', where test is the basename, and 1 is the numerical modifier
-LaunchManager_31={0} ({1})
-LaunchDelegate_0=No description provided.
-LaunchDelegate_1={0} Launcher
-LaunchDelegate_2={0} launcher
-LaunchDelegate_3=Launch delegate for {0} does not implement required interface ILaunchConfigurationDelegate.
-LaunchMode_0={0} As
-LaunchMode_1=Required attribute {0} missing for launchMode extension.
-LogicalStructureType_0=<Missing Description>
-LogicalStructureType_1=Required attribute {0} missing for logicalStructureType extension.
-LogicalStructureProvider_0=Required attribute modelIdentifier missing for logicalStructureType extension.
-LogicalStructureProvider_1=Required attribute class missing for logicalStructureType extension.
-OutputStreamMonitor_label=Output Stream Monitor
-ProcessMonitorJob_0=Process monitor
-RuntimeProcess_terminate_failed=Terminate failed
-RuntimeProcess_Exit_value_not_available_until_process_terminates__1=Exit value not available until process terminates.
-LaunchConfigurationType_7=Launch mode not supported: {0}
-WatchExpression_0=(Watch expressions not supported)
-NullStreamsProxy_0=Null Stream Monitor
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugOptions.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugOptions.java
deleted file mode 100644
index 2345f0556..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugOptions.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.Platform;
-
-/**
- * Access to debug options.
- *
- * @since 3.3
- */
-public class DebugOptions {
-
- // debug option flags
- public static boolean DEBUG = false;
- public static boolean DEBUG_COMMANDS = false;
- public static boolean DEBUG_EVENTS = false;
-
- public static void initDebugOptions() {
- DEBUG = "true".equals(Platform.getDebugOption("org.eclipse.debug.core/debug")); //$NON-NLS-1$//$NON-NLS-2$
- DEBUG_COMMANDS = DEBUG && "true".equals( //$NON-NLS-1$
- Platform.getDebugOption("org.eclipse.debug.core/debug/commands")); //$NON-NLS-1$
- DEBUG_EVENTS = DEBUG && "true".equals( //$NON-NLS-1$
- Platform.getDebugOption("org.eclipse.debug.core/debug/events")); //$NON-NLS-1$
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugPreferenceInitializer.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugPreferenceInitializer.java
deleted file mode 100644
index 2ef4d7fef..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/DebugPreferenceInitializer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * Initializes preferences for debug.core
- *
- * @since 3.3
- */
-public class DebugPreferenceInitializer extends AbstractPreferenceInitializer {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
- */
- public void initializeDefaultPreferences() {
- Preferences prefs = DebugPlugin.getDefault().getPluginPreferences();
- // Step filter preferences
- prefs.setDefault(StepFilterManager.PREF_USE_STEP_FILTERS, false);
- prefs.setDefault(LaunchManager.PREF_DELETE_CONFIGS_ON_PROJECT_DELETE, true);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/EnvironmentVariableResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/EnvironmentVariableResolver.java
deleted file mode 100644
index b3f1f6c8a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/EnvironmentVariableResolver.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.internal.core;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.osgi.service.environment.Constants;
-
-/**
- * Resolves the value of environment variables.
- */
-public class EnvironmentVariableResolver implements IDynamicVariableResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- if (argument == null) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), IStatus.ERROR, DebugCoreMessages.EnvironmentVariableResolver_0, null));
- }
- Map map= DebugPlugin.getDefault().getLaunchManager().getNativeEnvironmentCasePreserved();
- String value= (String) map.get(argument);
- if (value == null && Platform.getOS().equals(Constants.OS_WIN32)) {
- // On Win32, env variables are case insensitive, so we search the map
- // for matches manually.
- Iterator iter = map.entrySet().iterator();
- while (iter.hasNext()) {
- Map.Entry entry= ((Map.Entry) iter.next());
- String key= (String) entry.getKey();
- if (key.equalsIgnoreCase(argument)) {
- return (String) entry.getValue();
- }
- }
- }
- return value;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/ExpressionManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/ExpressionManager.java
deleted file mode 100644
index e69a1d95d..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/ExpressionManager.java
+++ /dev/null
@@ -1,676 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IExpressionListener;
-import org.eclipse.debug.core.IExpressionManager;
-import org.eclipse.debug.core.IExpressionsListener;
-import org.eclipse.debug.core.model.IExpression;
-import org.eclipse.debug.core.model.IWatchExpression;
-import org.eclipse.debug.core.model.IWatchExpressionDelegate;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * The expression manager manages all registered expressions
- * for the debug plug-in. It is instantiated by the debug plug-in
- * at startup.
- *
- * @see IExpressionManager
- */
-public class ExpressionManager extends PlatformObject implements IExpressionManager {
-
- /**
- * Ordered collection of registered expressions.
- */
- private Vector fExpressions = null;
-
- /**
- * List of expression listeners
- */
- private ListenerList fListeners = null;
-
- /**
- * List of expressions listeners (plural)
- */
- private ListenerList fExpressionsListeners = null;
-
- /**
- * Mapping of debug model identifiers (String) to
- * expression delegate extensions (IConfigurationElement)
- */
- private Map fWatchExpressionDelegates= new HashMap();
-
- // Constants for add/remove/change/insert/move notification
- private static final int ADDED = 1;
- private static final int CHANGED = 2;
- private static final int REMOVED = 3;
- private static final int INSERTED = 4;
- private static final int MOVED = 5;
-
- // Preference for persisted watch expressions
- private static final String PREF_WATCH_EXPRESSIONS= "prefWatchExpressions"; //$NON-NLS-1$
- // Persisted watch expression XML tags
- private static final String WATCH_EXPRESSIONS_TAG= "watchExpressions"; //$NON-NLS-1$
- private static final String EXPRESSION_TAG= "expression"; //$NON-NLS-1$
- private static final String TEXT_TAG= "text"; //$NON-NLS-1$
- private static final String ENABLED_TAG= "enabled"; //$NON-NLS-1$
- // XML values
- private static final String TRUE_VALUE= "true"; //$NON-NLS-1$
- private static final String FALSE_VALUE= "false"; //$NON-NLS-1$
-
- public ExpressionManager() {
- loadPersistedExpressions();
- loadWatchExpressionDelegates();
- }
-
- /**
- * Loads the mapping of debug models to watch expression delegates
- * from the org.eclipse.debug.core.watchExpressionDelegates
- * extension point.
- */
- private void loadWatchExpressionDelegates() {
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), "watchExpressionDelegates"); //$NON-NLS-1$
- IConfigurationElement[] configurationElements = extensionPoint.getConfigurationElements();
- for (int i = 0; i < configurationElements.length; i++) {
- IConfigurationElement element = configurationElements[i];
- if (element.getName().equals("watchExpressionDelegate")) { //$NON-NLS-1$
- String debugModel = element.getAttribute("debugModel"); //$NON-NLS-1$
- if (debugModel == null || debugModel.length() == 0) {
- continue;
- }
- fWatchExpressionDelegates.put(debugModel, element);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#newWatchExpressionDelegate(java.lang.String)
- */
- public IWatchExpressionDelegate newWatchExpressionDelegate(String debugModel) {
- try {
- IConfigurationElement element= (IConfigurationElement) fWatchExpressionDelegates.get(debugModel);
- if (element != null) {
- return (IWatchExpressionDelegate) element.createExecutableExtension(IConfigurationElementConstants.DELEGATE_CLASS);
- }
- return null;
- } catch (CoreException e) {
- DebugPlugin.log(e);
- return null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#hasWatchExpressionDelegate(java.lang.String)
- */
- public boolean hasWatchExpressionDelegate(String id) {
- IConfigurationElement element= (IConfigurationElement) fWatchExpressionDelegates.get(id);
- return element != null;
- }
-
- /**
- * Loads any persisted watch expressions from the preferences.
- * NOTE: It's important that no setter methods are called on
- * the watchpoints which will fire change events as this
- * will cause an infinite loop (see Bug 27281).
- */
- private void loadPersistedExpressions() {
- String expressionsString= DebugPlugin.getDefault().getPluginPreferences().getString(PREF_WATCH_EXPRESSIONS);
- if (expressionsString.length() == 0) {
- return;
- }
- Element root;
- try {
- root = DebugPlugin.parseDocument(expressionsString);
- } catch (CoreException e) {
- DebugPlugin.logMessage("An exception occurred while loading watch expressions.", e); //$NON-NLS-1$
- return;
- }
- if (!root.getNodeName().equals(WATCH_EXPRESSIONS_TAG)) {
- DebugPlugin.logMessage("Invalid format encountered while loading watch expressions.", null); //$NON-NLS-1$
- return;
- }
- NodeList list= root.getChildNodes();
- for (int i= 0, numItems= list.getLength(); i < numItems; i++) {
- Node node= list.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element= (Element) node;
- if (!element.getNodeName().equals(EXPRESSION_TAG)) {
- DebugPlugin.logMessage(MessageFormat.format("Invalid XML element encountered while loading watch expressions: {0}", new String[] {node.getNodeName()}), null); //$NON-NLS-1$
- continue;
- }
- String expressionText= element.getAttribute(TEXT_TAG);
- if (expressionText.length() > 0) {
- boolean enabled= TRUE_VALUE.equals(element.getAttribute(ENABLED_TAG));
- IWatchExpression expression= newWatchExpression(expressionText, enabled);
- if (fExpressions == null) {
- fExpressions= new Vector(list.getLength());
- }
- fExpressions.add(expression);
- } else {
- DebugPlugin.logMessage("Invalid expression entry encountered while loading watch expressions. Expression text is empty.", null); //$NON-NLS-1$
- }
- }
- }
- }
-
- /**
- * Creates a new watch expression with the given expression
- * and the given enablement;
- *
- * @param expressionText the text of the expression to be evaluated
- * @param enabled whether or not the new expression should be enabled
- * @return the new watch expression
- */
- private IWatchExpression newWatchExpression(String expressionText, boolean enabled) {
- return new WatchExpression(expressionText, enabled);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#newWatchExpression(java.lang.String)
- */
- public IWatchExpression newWatchExpression(String expressionText) {
- return new WatchExpression(expressionText);
- }
-
- /**
- * Persists this manager's watch expressions as XML in the
- * preference store.
- */
- public void storeWatchExpressions() {
- Preferences prefs= DebugPlugin.getDefault().getPluginPreferences();
- String expressionString= ""; //$NON-NLS-1$
- try {
- expressionString= getWatchExpressionsAsXML();
- } catch (IOException e) {
- DebugPlugin.log(e);
- } catch (ParserConfigurationException e) {
- DebugPlugin.log(e);
- } catch (TransformerException e) {
- DebugPlugin.log(e);
- }
- prefs.setValue(PREF_WATCH_EXPRESSIONS, expressionString);
- }
-
- /**
- * Returns this manager's watch expressions as XML.
- * @return this manager's watch expressions as XML
- * @throws IOException if an exception occurs while creating
- * the XML document.
- * @throws ParserConfigurationException if an exception occurs while creating
- * the XML document.
- * @throws TransformerException if an exception occurs while creating
- * the XML document.
- */
- private String getWatchExpressionsAsXML() throws IOException, ParserConfigurationException, TransformerException {
- IExpression[] expressions= getExpressions();
- Document document= LaunchManager.getDocument();
- Element rootElement= document.createElement(WATCH_EXPRESSIONS_TAG);
- document.appendChild(rootElement);
- for (int i = 0; i < expressions.length; i++) {
- IExpression expression= expressions[i];
- if (expression instanceof IWatchExpression) {
- Element element= document.createElement(EXPRESSION_TAG);
- element.setAttribute(TEXT_TAG, expression.getExpressionText());
- element.setAttribute(ENABLED_TAG, ((IWatchExpression) expression).isEnabled() ? TRUE_VALUE : FALSE_VALUE);
- rootElement.appendChild(element);
- }
- }
- return LaunchManager.serializeDocument(document);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#addExpression(org.eclipse.debug.core.model.IExpression)
- */
- public void addExpression(IExpression expression) {
- addExpressions(new IExpression[]{expression});
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#addExpressions(org.eclipse.debug.core.model.IExpression[])
- */
- public void addExpressions(IExpression[] expressions) {
- if (fExpressions == null) {
- fExpressions = new Vector(expressions.length);
- }
- boolean addedWatchExpression= false;
- List added = new ArrayList(expressions.length);
- for (int i = 0; i < expressions.length; i++) {
- IExpression expression = expressions[i];
- if (fExpressions.indexOf(expression) == -1) {
- added.add(expression);
- fExpressions.add(expression);
- if (expression instanceof IWatchExpression) {
- addedWatchExpression= true;
- }
- }
- }
- if (!added.isEmpty()) {
- fireUpdate((IExpression[])added.toArray(new IExpression[added.size()]), ADDED);
- }
- if (addedWatchExpression) {
- storeWatchExpressions();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#getExpressions()
- */
- public IExpression[] getExpressions() {
- if (fExpressions == null) {
- return new IExpression[0];
- }
- IExpression[] temp= new IExpression[fExpressions.size()];
- fExpressions.copyInto(temp);
- return temp;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#getExpressions(java.lang.String)
- */
- public IExpression[] getExpressions(String modelIdentifier) {
- if (fExpressions == null) {
- return new IExpression[0];
- }
- ArrayList temp= new ArrayList(fExpressions.size());
- Iterator iter= fExpressions.iterator();
- while (iter.hasNext()) {
- IExpression expression= (IExpression) iter.next();
- String id= expression.getModelIdentifier();
- if (id != null && id.equals(modelIdentifier)) {
- temp.add(expression);
- }
- }
- return (IExpression[]) temp.toArray(new IExpression[temp.size()]);
- }
-
- /**
- * Adds the given expressions to the collection of registered expressions
- * in the workspace and notifies all registered listeners. The expressions
- * are inserted in the same order as the passed array at the index of the
- * specified expressions (before or after it depending on the boolean argument).
- * If no valid insertion location could be found, the expressions are added
- * to the end of the collection. Has no effect on expressions already registered.
- *
- * @param expressions expressions to insert into the collection
- * @param insertionLocation the expression at the location where expressions will be inserted
- * @param insertBefore whether to insert the expressions before or after the given insertion location
- * @since 3.4
- */
- public void insertExpressions(IExpression[] expressions, IExpression insertionLocation, boolean insertBefore){
- if (fExpressions == null) {
- addExpressions(expressions);
- return;
- }
-
- int insertionIndex = fExpressions.indexOf(insertionLocation);
- if (insertionIndex < 0){
- addExpressions(expressions);
- return;
- }
- if (!insertBefore){
- insertionIndex++;
- }
- boolean addedWatchExpression = false;
- List added = new ArrayList(expressions.length);
- for (int i = 0; i < expressions.length; i++) {
- IExpression expression = expressions[i];
- if (fExpressions.indexOf(expression) == -1) {
- //Insert in the same order as the array is passed
- fExpressions.add(insertionIndex+added.size(), expression);
- added.add(expression);
- if (expression instanceof IWatchExpression) {
- addedWatchExpression= true;
- }
- }
- }
-
- if (!added.isEmpty()) {
- fireUpdate((IExpression[])added.toArray(new IExpression[added.size()]), INSERTED, insertionIndex);
- }
- if (addedWatchExpression) {
- storeWatchExpressions();
- }
- }
-
- /**
- * Moves the given expressions from their location in the collection
- * of registered expressions in the workspace to the specified insertion
- * location. Notifies all registered listeners. This method has no effect
- * if an expression does not exist in the collection or if no valid insertion
- * location could be determined.
- *
- * @param expressions expressions to move
- * @param insertionLocation the expression at the location to insert the moved expressions
- * @param insertBefore whether to insert the moved expressions before or after the given insertion location
- * @since 3.4
- */
- public void moveExpressions(IExpression[] expressions, IExpression insertionLocation, boolean insertBefore){
- if (fExpressions == null){
- return;
- }
- int insertionIndex = fExpressions.indexOf(insertionLocation);
- if (insertionIndex < 0){
- return;
- }
- if (!insertBefore){
- insertionIndex++;
- }
-
- List movedExpressions = new ArrayList(expressions.length);
- for (int i = 0; i < expressions.length; i++) {
- int removeIndex = fExpressions.indexOf(expressions[i]);
- if (removeIndex >= 0){
- movedExpressions.add(expressions[i]);
- if (removeIndex < insertionIndex){
- insertionIndex--;
- }
- fExpressions.remove(removeIndex);
- }
- }
- IExpression[] movedExpressionsArray = (IExpression[])movedExpressions.toArray(new IExpression[movedExpressions.size()]);
- for (int i = 0; i < movedExpressionsArray.length; i++) {
- // Insert the expressions in the same order as the passed array
- fExpressions.add(insertionIndex+i,movedExpressionsArray[i]);
- }
-
- if (!movedExpressions.isEmpty()) {
- fireUpdate(movedExpressionsArray, MOVED, insertionIndex);
- storeWatchExpressions();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#removeExpression(org.eclipse.debug.core.model.IExpression)
- */
- public void removeExpression(IExpression expression) {
- removeExpressions(new IExpression[] {expression});
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#removeExpressions(org.eclipse.debug.core.model.IExpression[])
- */
- public void removeExpressions(IExpression[] expressions) {
- if (fExpressions == null) {
- return;
- }
- List removed = new ArrayList(expressions.length);
- for (int i = 0; i < expressions.length; i++) {
- IExpression expression = expressions[i];
- if (fExpressions.remove(expression)) {
- removed.add(expression);
- expression.dispose();
- }
- }
- if (!removed.isEmpty()) {
- fireUpdate((IExpression[])removed.toArray(new IExpression[removed.size()]), REMOVED);
- storeWatchExpressions();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#addExpressionListener(org.eclipse.debug.core.IExpressionListener)
- */
- public void addExpressionListener(IExpressionListener listener) {
- if (fListeners == null) {
- fListeners = new ListenerList();
- }
- fListeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#removeExpressionListener(org.eclipse.debug.core.IExpressionListener)
- */
- public void removeExpressionListener(IExpressionListener listener) {
- if (fListeners == null) {
- return;
- }
- fListeners.remove(listener);
- }
-
- /**
- * The given watch expression has changed. Update the persisted
- * expressions to store this change as indicated
- *
- * @param expression the changed expression
- * @param persist whether to persist the expressions
- */
- protected void watchExpressionChanged(IWatchExpression expression, boolean persist) {
- if (fExpressions != null && fExpressions.contains(expression)) {
- if (persist) {
- storeWatchExpressions();
- }
- fireUpdate(new IExpression[]{expression}, CHANGED);
- }
- }
-
- /**
- * Notifies listeners of the adds/removes/changes
- *
- * @param expressions expressions that were modified
- * @param update update flags
- */
- private void fireUpdate(IExpression[] expressions, int update){
- fireUpdate(expressions, update, -1);
- }
-
- /**
- * Notifies listeners of the adds/removes/changes/insertions/moves
- *
- * @param expressions expressions that were modified
- * @param update update flags
- * @param index index where expressions were inserted/moved to or <code>-1</code>
- */
- private void fireUpdate(IExpression[] expressions, int update, int index){
- // single listeners
- getExpressionNotifier().notify(expressions, update);
-
- // multi listeners
- getExpressionsNotifier().notify(expressions, update, index);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#hasExpressions()
- */
- public boolean hasExpressions() {
- return fExpressions != null && !fExpressions.isEmpty();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#addExpressionListener(org.eclipse.debug.core.IExpressionsListener)
- */
- public void addExpressionListener(IExpressionsListener listener) {
- if (fExpressionsListeners == null) {
- fExpressionsListeners = new ListenerList();
- }
- fExpressionsListeners.add(listener);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IExpressionManager#removeExpressionListener(org.eclipse.debug.core.IExpressionsListener)
- */
- public void removeExpressionListener(IExpressionsListener listener) {
- if (fExpressionsListeners == null) {
- return;
- }
- fExpressionsListeners.remove(listener);
- }
-
- private ExpressionNotifier getExpressionNotifier() {
- return new ExpressionNotifier();
- }
-
- /**
- * Notifies an expression listener (single expression) in a safe runnable to
- * handle exceptions.
- */
- class ExpressionNotifier implements ISafeRunnable {
-
- private IExpressionListener fListener;
- private int fType;
- private IExpression fExpression;
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during expression change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.expressionAdded(fExpression);
- break;
- case REMOVED:
- fListener.expressionRemoved(fExpression);
- break;
- case CHANGED:
- fListener.expressionChanged(fExpression);
- break;
- }
- }
-
- /**
- * Notifies listeners of the add/change/remove
- *
- * @param expressions the expressions that have changed
- * @param update the type of change
- */
- public void notify(IExpression[] expressions, int update) {
- if (fListeners != null) {
- fType = update;
- Object[] copiedListeners= fListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IExpressionListener)copiedListeners[i];
- for (int j = 0; j < expressions.length; j++) {
- fExpression = expressions[j];
- SafeRunner.run(this);
- }
- }
- }
- fListener = null;
- fExpression = null;
- }
- }
-
- /**
- * Returns the expressions notifier
- * @return the expressions notifier
- */
- private ExpressionsNotifier getExpressionsNotifier() {
- return new ExpressionsNotifier();
- }
-
- /**
- * Notifies an expression listener (multiple expressions) in a safe runnable
- * to handle exceptions.
- */
- class ExpressionsNotifier implements ISafeRunnable {
-
- private IExpressionsListener fListener;
- private int fType;
- private int fIndex;
- private IExpression[] fNotifierExpressions;
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during expression change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case MOVED:
- // If the listener doesn't know about moves or the insertion location is unknown, do nothing.
- if (fIndex >= 0 && fListener instanceof IExpressionsListener2){
- ((IExpressionsListener2)fListener).expressionsMoved(fNotifierExpressions, fIndex);
- }
- break;
- case INSERTED:
- // If the listener doesn't know about insertions or the insertion location is unknown, notify of an ADD
- if (fIndex >= 0 && fListener instanceof IExpressionsListener2){
- ((IExpressionsListener2)fListener).expressionsInserted(fNotifierExpressions, fIndex);
- } else {
- fListener.expressionsAdded(fNotifierExpressions);
- }
- break;
- case ADDED:
- fListener.expressionsAdded(fNotifierExpressions);
- break;
- case REMOVED:
- fListener.expressionsRemoved(fNotifierExpressions);
- break;
- case CHANGED:
- fListener.expressionsChanged(fNotifierExpressions);
- break;
- }
- }
-
- /**
- * Notifies listeners of the adds/changes/removes
- *
- * @param expressions the expressions that changed
- * @param update the type of change
- * @param index the index of the first change
- */
- public void notify(IExpression[] expressions, int update, int index) {
- if (fExpressionsListeners != null) {
- fNotifierExpressions = expressions;
- fType = update;
- fIndex = index;
- Object[] copiedListeners = fExpressionsListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IExpressionsListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- }
- fNotifierExpressions = null;
- fListener = null;
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IConfigurationElementConstants.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IConfigurationElementConstants.java
deleted file mode 100644
index 34dbb7eee..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IConfigurationElementConstants.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-/**
- * This interface provides a repository for the names of <code>IConfigurationElement</code> child node ids.
- * @since 3.3
- */
-public interface IConfigurationElementConstants {
-
- /**
- * The id node name for a configuration element.
- * <p>Equal to the word: <code>id</code></p>
- */
- public static final String ID = "id"; //$NON-NLS-1$
-
- /**
- * The name node name for a configuration element.
- * <p>Equal to the word: <code>name</code></p>
- */
- public static final String NAME = "name"; //$NON-NLS-1$
-
- /**
- * The category node name for a configuration element.
- * <p>Equal to the word: <code>category</code></p>
- */
- public static final String CATEGORY = "category"; //$NON-NLS-1$
-
- /**
- * The local node name for a configuration element.
- * <p>Equal to the word: <code>local</code></p>
- */
- public static final String LOCAL = "local"; //$NON-NLS-1$
-
- /**
- * The shortcutId node name for a configuration element.
- * <p>Equal to the word: <code>shortcutID</code></p>
- */
- public static final String LAUNCH_SHORTCUT_ID = "shortcutID"; //$NON-NLS-1$
-
- /**
- * The launchPerspectives node name for a configuration element.
- * <p>Equal to the word: <code>launchPerspectives</code></p>
- */
- public static final String LAUNCH_PERSPECTIVES = "launchPerspectives"; //$NON-NLS-1$
-
- /**
- * The launchPerspective node name for a configuration element.
- * <p>Equal to the word: <code>launchPerspective</code></p>
- */
- public static final String LAUNCH_PERSPECTIVE = "launchPerspective"; //$NON-NLS-1$
-
- /**
- * The markerType node name for a configuration element.
- * <p>Equal to the word: <code>markerType</code></p>
- *
- * @since 3.4
- */
- public static final String MARKER_TYPE = "markerType"; //$NON-NLS-1$
-
- /**
- * The delegateClass node name for a configuration element.
- * <p>Equal to the word: <code>delegateClass</code></p>
- *
- * @since 3.4
- */
- public static final String DELEGATE_CLASS = "delegateClass"; //$NON-NLS-1$
-
- /**
- * The launchConfiguration node name for a configuration element.
- * <p>Equal to the word: <code>launchConfiguration</code></p>
- */
- public static final String LAUNCH_CONFIGURATION = "launchConfiguration"; //$NON-NLS-1$
-
- /**
- * The launchMode node name for a configuration element.
- * <p>Equal to the word: <code>launchMode</code></p>
- */
- public static final String LAUNCH_MODE = "launchMode"; //$NON-NLS-1$
-
- /**
- * The lastLaunch node name for a configuration element.
- * <p>Equal to the word: <code>lastLaunch</code></p>
- */
- public static final String LAST_LAUNCH = "lastLaunch"; //$NON-NLS-1$
-
- /**
- * The launch node name for a configuration element.
- * <p>Equal to the word: <code>launch</code></p>
- */
- public static final String LAUNCH = "launch"; //$NON-NLS-1$
-
- /**
- * The launch as label node name for a configuration element.
- * <p>Equal to the word: <code>launchAsLabel</code></p>
- *
- * @since 3.4
- */
- public static final String LAUNCH_AS_LABEL = "launchAsLabel"; //$NON-NLS-1$
-
- /**
- * The launchHistory node name for a configuration element.
- * <p>Equal to the word: <code>launchHistory</code></p>
- */
- public static final String LAUNCH_HISTORY = "launchHistory"; //$NON-NLS-1$
-
- /**
- * The node name for a launch group configuration element.
- * <p>Equal to the word: <code>launchGroup</code></p>
- */
- public static final String LAUNCH_GROUP = "launchGroup"; //$NON-NLS-1$
-
- /**
- * The node name for a launch history MRU list configuration element.
- * <p>Equal to the word: <code>mruHistory</code></p>
- */
- public static final String MRU_HISTORY = "mruHistory"; //$NON-NLS-1$
-
- /**
- * The node name for a launch favorites list configuration element.
- * <p>Equal to the word: <code>favorites</code></p>
- */
- public static final String FAVORITES = "favorites"; //$NON-NLS-1$
-
- /**
- * The after node name for a configuration element.
- * <p>Equal to the word: <code>after</code></p>
- */
- public static final String AFTER = "after"; //$NON-NLS-1$
-
- /**
- * The path node name for a configuration element.
- * <p>Equal to the word: <code>path</code></p>
- */
- public static final String PATH = "path"; //$NON-NLS-1$
-
- /**
- * The placement node name for a configuration element.
- * <p>Equal to the word: <code>placement</code></p>
- */
- public static final String PLACEMENT = "placement"; //$NON-NLS-1$
-
- /**
- * The associated launch delegate node name for a configuration element
- * <p>Equal to the word: <code>associatedDelegate</code></p>
- */
- public static final String ASSOCIATED_DELEGATE = "associatedDelegate"; //$NON-NLS-1$
-
- /**
- * The label node name for a configuration element.
- * <p>Equal to the word: <code>label</code></p>
- */
- public static final String LABEL = "label"; //$NON-NLS-1$
-
- /**
- * The description node name for a configuration element.
- * <p>Equal to the word: <code>description</code></p>
- */
- public static final String DESCRIPTION = "description"; //$NON-NLS-1$
-
- /**
- * The helpContextId node name for a configuration element.
- * <p>Equal to the word: <code>helpContextId</code></p>
- */
- public static final String HELP_CONTEXT_ID = "helpContextId"; //$NON-NLS-1$
-
- /**
- * The icon node name for a configuration element.
- * <p>Equal to the word: <code>icon</code></p>
- */
- public static final String ICON = "icon"; //$NON-NLS-1$
-
- /**
- * The public node name for a configuration element
- * <p>Equal to the word: <code>public</code></p>
- */
- public static final String PUBLIC = "public"; //$NON-NLS-1$
-
- /**
- * The perspective node name for a configuration element.
- * <p>Equal to the word: <code>perspective</code></p>
- */
- public static final String PERSPECTIVE = "perspective"; //$NON-NLS-1$
-
- /**
- * The preferredDelegates node name for a configuration element.
- * <p>Equal to the word: <code>preferredDelegates</code></p>
- */
- public static final String PREFERRED_DELEGATES = "preferredDelegates"; //$NON-NLS-1$
-
- /**
- * The modes node name for a configuration element.
- * <p>Equal to the word: <code>modes</code></p>
- */
- public static final String MODES = "modes"; //$NON-NLS-1$
-
- /**
- * The modesCombination node name for a configuration element.
- * <p>Equal to the word: <code>modeCombination</code></p>
- */
- public static final String MODE_COMBINATION = "modeCombination"; //$NON-NLS-1$
-
- /**
- * The mode node name for a configuration element.
- * <p>Equal to the word: <code>mode</code></p>
- */
- public static final String MODE = "mode"; //$NON-NLS-1$
-
- /**
- * The type node name for a configuration element.
- * <p>Equal to the word: <code>type</code></p>
- */
- public static final String TYPE = "type"; //$NON-NLS-1$
-
- /**
- * The typeid node name for a configuration element.
- * <p>Equal to the word: <code>typeid</code></p>
- */
- public static final String TYPE_ID = "typeid"; //$NON-NLS-1$
-
- /**
- * The option node name for a configuration element.
- * <p>Equal to the word: <code>options</code></p>
- */
- public static final String OPTIONS = "options"; //$NON-NLS-1$
-
- /**
- * The delegate node name for a configuration element.
- * <p>Equal to the word: <code>delegate</code></p>
- */
- public static final String DELEGATE = "delegate"; //$NON-NLS-1$
-
- /**
- * The participant node name for a configuration element.
- * <p>Equal to the word: <code>participant</code></p>
- */
- public static final String PARTICIPANT = "participant"; //$NON-NLS-1$
-
- /**
- * The defaultShortcut node name for a configuration element.
- * <p>Equal to the word: <code>defaultShortcut</code></p>
- */
- public static final String DEFAULT_LAUNCH_SHORTCUT = "defaultShortcut"; //$NON-NLS-1$
-
- /**
- * The delegateName node name for a configuration element.
- * <p>Equal to the word: <code>delegateName</code></p>
- */
- public static final String DELEGATE_NAME = "delegateName"; //$NON-NLS-1$
-
- /**
- * The group node name for a configuration element.
- * <p>Equal to the word: <code>group</code></p>
- */
- public static final String GROUP = "group"; //$NON-NLS-1$
-
- /**
- * The class node name for a configuration element.
- * <p>Equal to the word: <code>class</code></p>
- */
- public static final String CLASS = "class"; //$NON-NLS-1$
-
- /**
- * The modelIdentifier node name for a configuration element.
- * <p>Equal to the word: <code>modelIdentifier</code></p>
- *
- * @since 3.4
- */
- public static final String MODEL_IDENTIFIER = "modelIdentifier"; //$NON-NLS-1$
-
- /**
- * The configurationTypes node name for a configuration element.
- * <p>Equal to the word: <code>configurationType</code></p>
- */
- public static final String CONFIGURATION_TYPES = "configurationType"; //$NON-NLS-1$
-
- /**
- * The contextLabel node name for a configuration element.
- * <p>Equal to the word: <code>contextLabel</code></p>
- */
- public static final String CONTEXT_LABEL = "contextLabel"; //$NON-NLS-1$
-
- /**
- * The contextualLaunch node name for a configuration element.
- * <p>Equal to the word: <code>contextualLaunch</code></p>
- */
- public static final String CONTEXTUAL_LAUNCH = "contextualLaunch"; //$NON-NLS-1$
-
- /**
- * The sourcePathComputerId node name for a configuration element.
- * <p>Equal to the word: <code>sourcePathComputerId</code></p>
- */
- public static final String SOURCE_PATH_COMPUTER = "sourcePathComputerId"; //$NON-NLS-1$
-
- /**
- * The delegateDescription node name for a configuration element.
- * <p>Equal to the word: <code>delegateDescription</code></p>
- */
- public static final String DELEGATE_DESCRIPTION = "delegateDescription"; //$NON-NLS-1$
-
- /**
- * The sourceLocatorId node name for a configuration element.
- * <p>Equal to the word: <code>sourceLocatorId</code></p>
- */
- public static final String SOURCE_LOCATOR = "sourceLocatorId"; //$NON-NLS-1$
-
- /**
- * The migrationDelegate node name for a configuration element.
- * <p>Equal to the word: <code>migrationDelegate</code></p>
- */
- public static final String MIGRATION_DELEGATE = "migrationDelegate"; //$NON-NLS-1$
-
- /**
- * The memento node name for a configuration element.
- * <p>Equal to the word: <code>memento</code></p>
- */
- public static final String MEMENTO = "memento"; //$NON-NLS-1$
-
- /**
- * The selection node name for a configuration element.
- * <p>Equal to the word: <code>selection</code></p>
- */
- public static final String SELECTION = "selection"; //$NON-NLS-1$
-
- /**
- * The debugContext node name for a configuration element.
- * <p>Equal to the word: <code>debugContext</code></p>
- */
- public static final String DEBUG_CONTEXT = "debugContext"; //$NON-NLS-1$
-
- /**
- * The editorInput node name for a configuration element.
- * <p>Equal to the word: <code>editorInput</code></p>
- */
- public static final String EDITOR_INPUT = "editorInput"; //$NON-NLS-1$
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java
deleted file mode 100644
index a29b28fb2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IExpressionsListener2.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.debug.core.IExpressionsListener;
-import org.eclipse.debug.core.model.IExpression;
-
-/**
- * Provides call-back methods for expressions that have been moved or inserted
- * @since 3.4
- */
-public interface IExpressionsListener2 extends IExpressionsListener {
-
- /**
- * Fires the model delta necessary to update the viewer after one or more
- * expressions have been moved to a different index in the tree. The
- * expression array must be in the same order as they were added. The given index
- * <strong>must</strong> take into account the removal of the expressions to be removed.
- * Therefore, for each of the expressions being moved with indices lower than the expect
- * insertion index, the passed insertion index must be reduced by one.
- *
- * @param expressions array of expressions to be moved
- * @param index the index the expressions will be added to, adjusted for moved expressions
- */
- public void expressionsMoved(IExpression[] expressions, int index);
-
- /**
- * Fires the model delta necessary to update the viewer after one or more
- * expressions have been inserted into a specific index in the tree. The
- * expression array must be in the same order as they were added.
- *
- * @param expressions array of expressions to be moved
- * @param index the index the expressions will be added to
- */
- public void expressionsInserted(IExpression[] expressions, int index);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IInternalDebugCoreConstants.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IInternalDebugCoreConstants.java
deleted file mode 100644
index ec6a7c2f2..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/IInternalDebugCoreConstants.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-/**
- * Contains constants to be used internally in all debug components
- *
- * @since 3.4
- */
-public interface IInternalDebugCoreConstants {
-
- /**
- * Represents the empty string
- */
- public static final String EMPTY_STRING = ""; //$NON-NLS-1$
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/InputStreamMonitor.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/InputStreamMonitor.java
deleted file mode 100644
index d2a5dc93d..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/InputStreamMonitor.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Vector;
-
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * Writes to the input stream of a system process,
- * queueing output if the stream is blocked.
- *
- * The input stream monitor writes to system in via
- * an output stream.
- */
-public class InputStreamMonitor {
-
- /**
- * The stream which is being written to (connected to system in).
- */
- private OutputStream fStream;
- /**
- * The queue of output.
- */
- private Vector fQueue;
- /**
- * The thread which writes to the stream.
- */
- private Thread fThread;
- /**
- * A lock for ensuring that writes to the queue are contiguous
- */
- private Object fLock;
-
- /**
- * Whether the underlying output stream has been closed
- */
- private boolean fClosed = false;
-
- /**
- * Creates an input stream monitor which writes
- * to system in via the given output stream.
- *
- * @param stream output stream
- */
- public InputStreamMonitor(OutputStream stream) {
- fStream= stream;
- fQueue= new Vector();
- fLock= new Object();
- }
-
- /**
- * Appends the given text to the stream, or
- * queues the text to be written at a later time
- * if the stream is blocked.
- *
- * @param text text to append
- */
- public void write(String text) {
- synchronized(fLock) {
- fQueue.add(text);
- fLock.notifyAll();
- }
- }
-
- /**
- * Starts a thread which writes the stream.
- */
- public void startMonitoring() {
- if (fThread == null) {
- fThread= new Thread(new Runnable() {
- public void run() {
- write();
- }
- }, DebugCoreMessages.InputStreamMonitor_label);
- fThread.setDaemon(true);
- fThread.start();
- }
- }
-
- /**
- * Close all communications between this
- * monitor and the underlying stream.
- */
- public void close() {
- if (fThread != null) {
- Thread thread= fThread;
- fThread= null;
- thread.interrupt();
- }
- }
-
- /**
- * Continuously writes to the stream.
- */
- protected void write() {
- while (fThread != null) {
- writeNext();
- }
- if (!fClosed) {
- try {
- fStream.close();
- } catch (IOException e) {
- DebugPlugin.log(e);
- }
- }
- }
-
- /**
- * Write the text in the queue to the stream.
- */
- protected void writeNext() {
- while (!fQueue.isEmpty() && !fClosed) {
- String text = (String)fQueue.firstElement();
- fQueue.removeElementAt(0);
- try {
- fStream.write(text.getBytes());
- fStream.flush();
- } catch (IOException e) {
- DebugPlugin.log(e);
- }
- }
- try {
- synchronized(fLock) {
- fLock.wait();
- }
- } catch (InterruptedException e) {
- }
- }
-
- /**
- * Closes the output stream attached to the standard input stream of this
- * monitor's process.
- *
- * @exception IOException if an exception occurs closing the input stream
- */
- public void closeInputStream() throws IOException {
- if (!fClosed) {
- fClosed = true;
- fStream.close();
- } else {
- throw new IOException();
- }
-
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java
deleted file mode 100644
index 141f43e12..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfiguration.java
+++ /dev/null
@@ -1,955 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sascha Radike - bug 56642
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.File;
-import java.io.IOException;
-import java.io.StringReader;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchDelegate;
-import org.eclipse.debug.core.IStatusHandler;
-import org.eclipse.debug.core.Launch;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate2;
-import org.eclipse.debug.core.model.IPersistableSourceLocator;
-import org.eclipse.debug.core.sourcelookup.IPersistableSourceLocator2;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Launch configuration handle.
- *
- * @see ILaunchConfiguration
- */
-public class LaunchConfiguration extends PlatformObject implements ILaunchConfiguration {
-
- /**
- * Launch configuration attribute that specifies the resources paths mapped to it.
- * Not all launch configurations will have a mapped resource unless migrated.
- * Value is a list of resource paths stored as portable strings, or <code>null</code>
- * if none.
- *
- * @since 3.2
- */
- public static final String ATTR_MAPPED_RESOURCE_PATHS = DebugPlugin.getUniqueIdentifier() + ".MAPPED_RESOURCE_PATHS"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute that specifies the resources types mapped to it.
- * Not all launch configurations will have a mapped resource unless migrated.
- * Value is a list of resource type integers, or <code>null</code> if none.
- *
- * @since 3.2
- */
- public static final String ATTR_MAPPED_RESOURCE_TYPES = DebugPlugin.getUniqueIdentifier() + ".MAPPED_RESOURCE_TYPES"; //$NON-NLS-1$
-
- /**
- * The launch modes set on this configuration.
- *
- * @since 3.3
- */
- public static final String ATTR_LAUNCH_MODES = DebugPlugin.getUniqueIdentifier() + ".LAUNCH_MODES"; //$NON-NLS-1$
-
- /**
- * Launch configuration attribute storing a list
- * of preferred launchers for associated mode sets.
- * This attribute is a list of launchers stored by mode set
- * and relating to the id of the preferred launcher, which happens to be an <code>ILaunchDelegate</code>
- *
- * @since 3.3
- */
- public static final String ATTR_PREFERRED_LAUNCHERS = DebugPlugin.getUniqueIdentifier() + ".preferred_launchers"; //$NON-NLS-1$
-
- /**
- * Status handler to prompt in the UI thread
- *
- * @since 3.3
- */
- protected static final IStatus promptStatus = new Status(IStatus.INFO, "org.eclipse.debug.ui", 200, "", null); //$NON-NLS-1$//$NON-NLS-2$
-
- /**
- * Status handler to prompt the user to resolve the missing launch delegate issue
- * @since 3.3
- */
- protected static final IStatus delegateNotAvailable = new Status(IStatus.INFO, "org.eclipse.debug.core", 226, "", null); //$NON-NLS-1$ //$NON-NLS-2$
-
- /**
- * Status handle to prompt the user to resolve duplicate launch delegates being detected
- *
- * @since 3.3
- */
- protected static final IStatus duplicateDelegates = new Status(IStatus.INFO, "org.eclipse.debug.core", 227, "", null); //$NON-NLS-1$//$NON-NLS-2$
-
- /**
- * This configuration's name
- * @since 3.5
- */
- private String fName;
-
- /**
- * The container this configuration is stored in or <code>null</code> if stored locally
- * with workspace metadata.
- * @since 3.5
- */
- private IContainer fContainer;
-
- /**
- * Constructs a launch configuration with the given name. The configuration
- * is stored in the given container or locally with workspace metadata if
- * the specified container is <code>null</code>.
- *
- * @param name launch configuration name
- * @param container parent container or <code>null</code>
- * @since 3.5
- */
- protected LaunchConfiguration(String name, IContainer container) {
- initialize();
- setName(name);
- setContainer(container);
- }
-
- /**
- * Initialize any state variables - called first in the constructor.
- * Subclasses must override as appropriate.
- */
- protected void initialize() {
- }
-
- /**
- * Constructs a launch configuration on the given workspace file.
- *
- * @param file workspace .launch file
- * @since 3.5
- */
- protected LaunchConfiguration(IFile file) {
- this(getSimpleName(file.getName()), file.getParent());
- }
-
- /**
- * Given a name that ends with .launch, return the simple name of the configuration.
- *
- * @param fileName
- * @return simple name
- * @since 3.5
- */
- protected static String getSimpleName(String fileName) {
- if (fileName.endsWith(ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION)) {
- return fileName.substring(0, fileName.length() - ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION.length() - 1);
- }
- return fileName;
- }
-
- /**
- * Constructs a launch configuration from the given
- * memento.
- *
- * @param memento launch configuration memento
- * @exception CoreException if the memento is invalid or
- * an exception occurs reading the memento
- */
- protected LaunchConfiguration(String memento) throws CoreException {
- Exception ex = null;
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
- StringReader reader = new StringReader(memento);
- InputSource source = new InputSource(reader);
- root = parser.parse(source).getDocumentElement();
-
- String localString = root.getAttribute(IConfigurationElementConstants.LOCAL);
- String path = root.getAttribute(IConfigurationElementConstants.PATH);
-
- String message = null;
- if (path == null || IInternalDebugCoreConstants.EMPTY_STRING.equals(path)) {
- message = DebugCoreMessages.LaunchConfiguration_18;
- } else if (localString == null || IInternalDebugCoreConstants.EMPTY_STRING.equals(localString)) {
- message = DebugCoreMessages.LaunchConfiguration_19;
- }
- if (message != null) {
- throw new CoreException(newStatus(message, DebugException.INTERNAL_ERROR, null));
- }
-
-
- boolean local = (Boolean.valueOf(localString)).booleanValue();
- IPath iPath = new Path(path);
- String name = getSimpleName(iPath.lastSegment());
- IContainer container = null;
- if (!local) {
- container = ResourcesPlugin.getWorkspace().getRoot().getFile(iPath).getParent();
- }
- setName(name);
- setContainer(container);
- return;
- } catch (ParserConfigurationException e) {
- ex = e;
- } catch (SAXException e) {
- ex = e;
- } catch (IOException e) {
- ex = e;
- }
- IStatus s = newStatus(DebugCoreMessages.LaunchConfiguration_17, DebugException.INTERNAL_ERROR, ex);
- throw new CoreException(s);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#contentsEqual(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public boolean contentsEqual(ILaunchConfiguration object) {
- try {
- if (object instanceof LaunchConfiguration) {
- LaunchConfiguration otherConfig = (LaunchConfiguration) object;
- return getName().equals(otherConfig.getName())
- && getType().equals(otherConfig.getType())
- && equalOrNull(getContainer(), otherConfig.getContainer())
- && getInfo().equals(otherConfig.getInfo());
- }
- return false;
- } catch (CoreException ce) {
- return false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#copy(java.lang.String)
- */
- public ILaunchConfigurationWorkingCopy copy(String name) throws CoreException {
- ILaunchConfigurationWorkingCopy copy = new LaunchConfigurationWorkingCopy(this, name);
- return copy;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#delete()
- */
- public void delete() throws CoreException {
- if (exists()) {
- IFile file = getFile();
- if (file == null) {
- IFileStore store = getFileStore();
- if (store != null) {
- store.delete(EFS.NONE, null);
- if ((store.fetchInfo().exists())) {
- throw new DebugException(
- new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfiguration_Failed_to_delete_launch_configuration__1, null)
- );
- }
- // manually update the launch manager cache since there
- // will be no resource delta
- getLaunchManager().launchConfigurationDeleted(this);
- }
- } else {
- // Delete the resource using IFile API such that
- // resource deltas are fired.
- // First do validate edit to ensure the resource is local
- if (file.isReadOnly()) {
- IStatus status = ResourcesPlugin.getWorkspace().validateEdit(new IFile[] {file}, null);
- if (!status.isOK()) {
- throw new CoreException(status);
- }
- }
- file.delete(true, null);
- }
- }
- }
-
- /**
- * Returns whether this configuration is equal to the
- * given configuration. Two configurations are equal if
- * they are stored in the same location (and neither one
- * is a working copy).
- *
- * @return whether this configuration is equal to the
- * given configuration
- * @see Object#equals(Object)
- */
- public boolean equals(Object object) {
- if (object instanceof ILaunchConfiguration) {
- if (isWorkingCopy()) {
- return this == object;
- }
- LaunchConfiguration config = (LaunchConfiguration) object;
- if (!config.isWorkingCopy()) {
- return getName().equals(config.getName()) &&
- equalOrNull(getContainer(), config.getContainer());
- }
- }
- return false;
- }
-
- /**
- * Returns whether the given objects are equal or both <code>null</code>.
- *
- * @param o1
- * @param o2
- * @return whether the given objects are equal or both <code>null</code>
- * @since 3.5
- */
- protected boolean equalOrNull(Object o1, Object o2) {
- if (o1 == null) {
- return o2 == null;
- } else if (o2 != null) {
- return o1.equals(o2);
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#exists()
- */
- public boolean exists() {
- IFile file = getFile();
- if (file != null) {
- return file.exists();
- }
- try {
- IFileStore store = getFileStore();
- if (store != null) {
- return store.fetchInfo().exists();
- }
- } catch (CoreException e) {
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, boolean)
- */
- public boolean getAttribute(String attributeName, boolean defaultValue) throws CoreException {
- return getInfo().getBooleanAttribute(attributeName, defaultValue);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, int)
- */
- public int getAttribute(String attributeName, int defaultValue) throws CoreException {
- return getInfo().getIntAttribute(attributeName, defaultValue);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, java.util.List)
- */
- public List getAttribute(String attributeName, List defaultValue) throws CoreException {
- return getInfo().getListAttribute(attributeName, defaultValue);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, java.util.Set)
- */
- public Set getAttribute(String attributeName, Set defaultValue) throws CoreException {
- return getInfo().getSetAttribute(attributeName, defaultValue);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, java.util.Map)
- */
- public Map getAttribute(String attributeName, Map defaultValue) throws CoreException {
- return getInfo().getMapAttribute(attributeName, defaultValue);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttribute(java.lang.String, java.lang.String)
- */
- public String getAttribute(String attributeName, String defaultValue) throws CoreException {
- return getInfo().getStringAttribute(attributeName, defaultValue);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getAttributes()
- */
- public Map getAttributes() throws CoreException {
- LaunchConfigurationInfo info = getInfo();
- return info.getAttributes();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getCategory()
- */
- public String getCategory() throws CoreException {
- return getType().getCategory();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getFile()
- */
- public IFile getFile() {
- IContainer container = getContainer();
- if (container != null) {
- return container.getFile(new Path(getFileName()));
- }
- return null;
- }
-
- /**
- * Returns the simple file name of this launch configuration.
- *
- * @return the simple file name of this launch configuration - for example
- * "Abc.launch"
- */
- protected String getFileName() {
- StringBuffer buf = new StringBuffer(getName());
- buf.append('.');
- buf.append(ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION);
- return buf.toString();
- }
-
- /**
- * Returns the info object containing the attributes
- * of this configuration
- *
- * @return info for this handle
- * @exception CoreException if unable to retrieve the
- * info object
- */
- protected LaunchConfigurationInfo getInfo() throws CoreException {
- return getLaunchManager().getInfo(this);
- }
-
- /**
- * Returns the launch manager
- *
- * @return launch manager
- */
- protected LaunchManager getLaunchManager() {
- return (LaunchManager)DebugPlugin.getDefault().getLaunchManager();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getLocation()
- */
- public IPath getLocation() {
- try {
- IFileStore store = getFileStore();
- if (store != null) {
- File localFile = store.toLocalFile(EFS.NONE, null);
- if (localFile != null) {
- return new Path(localFile.getAbsolutePath());
- }
- }
- } catch (CoreException e) {
- }
- return null;
- }
-
- /**
- * Returns the file store this configuration is persisted in or <code>null</code> if
- * a file store cannot be derived. The file may or may not exist. If this configuration
- * is in a project that is closed or does not exist, <code>null</code> is returned.
- *
- * @return file store this configuration is persisted in or <code>null</code>
- * @throws CoreException
- * @since 3.5
- */
- public IFileStore getFileStore() throws CoreException {
- if (isLocal()) {
- return EFS.getLocalFileSystem().fromLocalFile(
- LaunchManager.LOCAL_LAUNCH_CONFIGURATION_CONTAINER_PATH.append(getFileName()).toFile());
- }
- URI uri = getFile().getLocationURI();
- if (uri != null) {
- return EFS.getStore(uri);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getResource()
- */
- public IResource[] getMappedResources() throws CoreException {
- List paths = getAttribute(ATTR_MAPPED_RESOURCE_PATHS, (List)null);
- if (paths == null || paths.size() == 0) {
- return null;
- }
- List types = getAttribute(ATTR_MAPPED_RESOURCE_TYPES, (List)null);
- if (types == null || types.size() != paths.size()) {
- throw new CoreException(newStatus(DebugCoreMessages.LaunchConfiguration_0, DebugPlugin.ERROR, null));
- }
- ArrayList list = new ArrayList();
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- for(int i = 0; i < paths.size(); i++) {
- String pathStr = (String) paths.get(i);
- String typeStr= (String) types.get(i);
- int type = -1;
- try {
- type = Integer.decode(typeStr).intValue();
- } catch (NumberFormatException e) {
- throw new CoreException(newStatus(DebugCoreMessages.LaunchConfiguration_0, DebugPlugin.ERROR, e));
- }
- IPath path = Path.fromPortableString(pathStr);
- IResource res = null;
- switch (type) {
- case IResource.FILE:
- res = root.getFile(path);
- break;
- case IResource.PROJECT:
- res = root.getProject(pathStr);
- break;
- case IResource.FOLDER:
- res = root.getFolder(path);
- break;
- case IResource.ROOT:
- res = root;
- break;
- default:
- throw new CoreException(newStatus(DebugCoreMessages.LaunchConfiguration_0, DebugPlugin.ERROR, null));
- }
- if(res != null) {
- list.add(res);
- }
- }
- if (list.isEmpty()) {
- return null;
- }
- return (IResource[])list.toArray(new IResource[list.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getMemento()
- */
- public String getMemento() throws CoreException {
- IPath relativePath = null;
- IFile file = getFile();
- boolean local = true;
- if (file == null) {
- relativePath = new Path(getName());
- } else {
- local = false;
- relativePath = file.getFullPath();
- }
- Exception e= null;
- try {
- Document doc = LaunchManager.getDocument();
- Element node = doc.createElement(IConfigurationElementConstants.LAUNCH_CONFIGURATION);
- doc.appendChild(node);
- node.setAttribute(IConfigurationElementConstants.LOCAL, (Boolean.valueOf(local)).toString());
- node.setAttribute(IConfigurationElementConstants.PATH, relativePath.toString());
- return LaunchManager.serializeDocument(doc);
- } catch (IOException ioe) {
- e= ioe;
- } catch (ParserConfigurationException pce) {
- e= pce;
- } catch (TransformerException te) {
- e= te;
- }
- IStatus status = newStatus(DebugCoreMessages.LaunchConfiguration_16, DebugException.INTERNAL_ERROR, e);
- throw new CoreException(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getName()
- */
- public String getName() {
- return fName;
- }
-
- /**
- * Returns the container this configuration is stored in, or <code>null</code>
- * if this configuration is local.
- *
- * @return the container this configuration is stored in, or <code>null</code>
- * if this configuration is local
- * @since 3.5
- */
- protected IContainer getContainer() {
- return fContainer;
- }
-
- public Set getModes() throws CoreException {
- Set options = getAttribute(ATTR_LAUNCH_MODES, (Set)null);
- return (options != null ? new HashSet(options) : new HashSet(0));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getType()
- */
- public ILaunchConfigurationType getType() throws CoreException {
- return getInfo().getType();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#getWorkingCopy()
- */
- public ILaunchConfigurationWorkingCopy getWorkingCopy() throws CoreException {
- return new LaunchConfigurationWorkingCopy(this);
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- IContainer container = getContainer();
- if (container == null) {
- return getName().hashCode();
- } else {
- return getName().hashCode() + container.hashCode();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#hasAttribute(java.lang.String)
- */
- public boolean hasAttribute(String attributeName) throws CoreException {
- return getInfo().hasAttribute(attributeName);
- }
-
- /**
- * Set the source locator to use with the launch, if specified
- * by this configuration.
- *
- * @param launch the launch on which to set the source locator
- */
- protected void initializeSourceLocator(ILaunch launch) throws CoreException {
- if (launch.getSourceLocator() == null) {
- String type = getAttribute(ATTR_SOURCE_LOCATOR_ID, (String)null);
- if (type == null) {
- type = getType().getSourceLocatorId();
- }
- if (type != null) {
- IPersistableSourceLocator locator = getLaunchManager().newSourceLocator(type);
- String memento = getAttribute(ATTR_SOURCE_LOCATOR_MEMENTO, (String)null);
- if (memento == null) {
- locator.initializeDefaults(this);
- } else {
- if(locator instanceof IPersistableSourceLocator2)
- ((IPersistableSourceLocator2)locator).initializeFromMemento(memento, this);
- else
- locator.initializeFromMemento(memento);
- }
- launch.setSourceLocator(locator);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#isLocal()
- */
- public boolean isLocal() {
- return getContainer() == null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#isMigrationCandidate()
- */
- public boolean isMigrationCandidate() throws CoreException {
- return ((LaunchConfigurationType)getType()).isMigrationCandidate(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#isWorkingCopy()
- */
- public boolean isWorkingCopy() {
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#launch(java.lang.String, org.eclipse.core.runtime.IProgressMonitor)
- */
- public ILaunch launch(String mode, IProgressMonitor monitor) throws CoreException {
- return launch(mode, monitor, false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#launch(java.lang.String, org.eclipse.core.runtime.IProgressMonitor, boolean)
- */
- public ILaunch launch(String mode, IProgressMonitor monitor, boolean build) throws CoreException {
- return launch(mode, monitor, build, true);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#launch(java.lang.String, org.eclipse.core.runtime.IProgressMonitor, boolean, boolean)
- */
- public ILaunch launch(String mode, IProgressMonitor monitor, boolean build, boolean register) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- /* Setup progress monitor
- * - Prepare delegate (0)
- * - Pre-launch check (1)
- * - [Build before launch (7)] if build
- * - [Incremental build before launch (3)] if build
- * - Final launch validation (1)
- * - Initialize source locator (1)
- * - Launch delegate (10) */
- if (build) {
- monitor.beginTask("", 23); //$NON-NLS-1$
- }
- else {
- monitor.beginTask("", 13); //$NON-NLS-1$
- }
- monitor.subTask(DebugCoreMessages.LaunchConfiguration_9);
- try {
- // bug 28245 - force the delegate to load in case it is interested in launch notifications
- Set modes = getModes();
- modes.add(mode);
- ILaunchDelegate[] delegates = getType().getDelegates(modes);
- ILaunchConfigurationDelegate delegate = null;
- if (delegates.length == 1) {
- delegate = delegates[0].getDelegate();
- } else if (delegates.length == 0) {
- IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(promptStatus);
- if (handler != null) {
- handler.handleStatus(delegateNotAvailable, new Object[] {this, mode});
- }
- IStatus status = new Status(IStatus.CANCEL, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LaunchConfiguration_11, null);
- throw new CoreException(status);
- } else {
- ILaunchDelegate del = getPreferredDelegate(modes);
- if(del == null) {
- del = getType().getPreferredDelegate(modes);
- }
- if(del == null) {
- IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(promptStatus);
- IStatus status = null;
- if (handler != null) {
- status = (IStatus) handler.handleStatus(duplicateDelegates, new Object[] {this, mode});
- }
- if(status != null && status.isOK()) {
- del = getPreferredDelegate(modes);
- if(del == null) {
- del = getType().getPreferredDelegate(modes);
- }
- if(del != null) {
- delegate = del.getDelegate();
- }
- else {
- status = new Status(IStatus.CANCEL, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LaunchConfiguration_13, null);
- throw new CoreException(status);
- }
- }
- else {
- status = new Status(IStatus.CANCEL, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LaunchConfiguration_13, null);
- throw new CoreException(status);
- }
- }
- else {
- delegate = del.getDelegate();
- }
- }
-
- ILaunchConfigurationDelegate2 delegate2 = null;
- if (delegate instanceof ILaunchConfigurationDelegate2) {
- delegate2 = (ILaunchConfigurationDelegate2) delegate;
- }
- // allow the delegate to provide a launch implementation
- ILaunch launch = null;
- if (delegate2 != null) {
- launch = delegate2.getLaunch(this, mode);
- }
- if (launch == null) {
- launch = new Launch(this, mode, null);
- } else {
- // ensure the launch mode is valid
- if (!mode.equals(launch.getLaunchMode())) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR,
- MessageFormat.format(DebugCoreMessages.LaunchConfiguration_14, new String[]{mode, launch.getLaunchMode()}), null);
- throw new CoreException(status);
- }
- }
- boolean captureOutput = getAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, true);
- if(!captureOutput) {
- launch.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, "false"); //$NON-NLS-1$
- } else {
- launch.setAttribute(DebugPlugin.ATTR_CAPTURE_OUTPUT, null);
- }
- launch.setAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING, getLaunchManager().getEncoding(this));
-
- // perform initial pre-launch sanity checks
- monitor.subTask(DebugCoreMessages.LaunchConfiguration_8);
-
- if (delegate2 != null) {
- if (!(delegate2.preLaunchCheck(this, mode, new SubProgressMonitor(monitor, 1)))) {
- return launch;
- }
- }
- else {
- monitor.worked(1); /* No pre-launch-check */
- }
- // perform pre-launch build
- if (build) {
- IProgressMonitor buildMonitor = new SubProgressMonitor(monitor, 10, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
- buildMonitor.beginTask(DebugCoreMessages.LaunchConfiguration_7, 10);
- buildMonitor.subTask(DebugCoreMessages.LaunchConfiguration_6);
- if (delegate2 != null) {
- build = delegate2.buildForLaunch(this, mode, new SubProgressMonitor(buildMonitor, 7));
- }
- if (build) {
- buildMonitor.subTask(DebugCoreMessages.LaunchConfiguration_5);
- ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new SubProgressMonitor(buildMonitor, 3));
- }
- else {
- buildMonitor.worked(3); /* No incremental build required */
- }
- }
- // final validation
- monitor.subTask(DebugCoreMessages.LaunchConfiguration_4);
- if (delegate2 != null) {
- if (!(delegate2.finalLaunchCheck(this, mode, new SubProgressMonitor(monitor, 1)))) {
- return launch;
- }
- }
- else {
- monitor.worked(1); /* No validation */
- }
- if (register) {
- getLaunchManager().addLaunch(launch);
- }
-
- try {
- //initialize the source locator
- monitor.subTask(DebugCoreMessages.LaunchConfiguration_3);
- initializeSourceLocator(launch);
- monitor.worked(1);
-
- /* Launch the delegate */
- monitor.subTask(DebugCoreMessages.LaunchConfiguration_2);
- delegate.launch(this, mode, launch, new SubProgressMonitor(monitor, 10));
- } catch (CoreException e) {
- // if there was an exception, and the launch is empty, remove it
- if (!launch.hasChildren()) {
- getLaunchManager().removeLaunch(launch);
- }
- throw e;
- }
- if (monitor.isCanceled()) {
- getLaunchManager().removeLaunch(launch);
- }
- return launch;
- }
- finally {
- monitor.done();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#migrate()
- */
- public void migrate() throws CoreException {
- ((LaunchConfigurationType)getType()).migrate(this);
- }
-
- /**
- * Creates and returns a new error status based on
- * the given message, code, and exception.
- *
- * @param message error message
- * @param code error code
- * @param e exception or <code>null</code>
- * @return status
- */
- protected IStatus newStatus(String message, int code, Throwable e) {
- return new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), code, message, e);
- }
-
- /**
- * Sets the new name for this configuration.
- *
- * @param name the new name for this configuration
- * @since 3.5
- */
- protected void setName(String name) {
- fName = name;
- }
-
- /**
- * Sets this configurations container or <code>null</code> if stored in the
- * local metadata.
- *
- * @param container or <code>null</code>
- * @since 3.5
- */
- protected void setContainer(IContainer container) {
- fContainer = container;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#supportsMode(java.lang.String)
- */
- public boolean supportsMode(String mode) throws CoreException {
- return getType().supportsMode(mode);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfiguration#isReadOnly()
- */
- public boolean isReadOnly() {
- try {
- IFileStore fileStore = getFileStore();
- if (fileStore != null) {
- return fileStore.fetchInfo().getAttribute(EFS.ATTRIBUTE_READ_ONLY);
- }
- } catch (CoreException e) {
- }
- return true;
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfiguration#getPreferredDelegate(java.util.Set)
- */
- public ILaunchDelegate getPreferredDelegate(Set modes) throws CoreException {
- Map delegates = getAttribute(LaunchConfiguration.ATTR_PREFERRED_LAUNCHERS, (Map)null);
- if(delegates != null) {
- String id = (String) delegates.get(modes.toString());
- if(id != null) {
- return getLaunchManager().getLaunchDelegate(id);
- }
- }
- return null;
- }
-
- /**
- * @see java.lang.Object#toString()
- */
- public String toString() {
- return getName();
- }
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationComparator.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationComparator.java
deleted file mode 100644
index 810ffeb31..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationComparator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.util.Comparator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * Proxy to a runtime classpath entry resolver extension.
- *
- * @see IConfigurationElementConstants
- */
-public class LaunchConfigurationComparator implements Comparator {
-
- private IConfigurationElement fConfigurationElement;
-
- private Comparator fDelegate;
-
- /**
- * Constructs a new resolver on the given configuration element
- *
- * @param element configuration element
- */
- public LaunchConfigurationComparator(IConfigurationElement element) {
- fConfigurationElement = element;
- }
-
- /**
- * Returns the resolver delegate (and creates if required)
- */
- protected Comparator getComparator() {
- if (fDelegate == null) {
- try {
- fDelegate = (Comparator)fConfigurationElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- return fDelegate;
- }
-
-
- /**
- * @see Comparator#compare(Object, Object)
- */
- public int compare(Object o1, Object o2) {
- return getComparator().compare(o1, o2);
- }
-
- /**
- * @see Object#equals(Object)
- */
- public boolean equals(Object obj) {
- return getComparator().equals(obj);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java
deleted file mode 100644
index db79a6a4e..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationInfo.java
+++ /dev/null
@@ -1,794 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * The information associated with a launch configuration handle.
- */
-public class LaunchConfigurationInfo {
-
- /**
- * Constants fo XML element names and attrbiutes
- */
- private static final String KEY = "key"; //$NON-NLS-1$
- private static final String VALUE = "value"; //$NON-NLS-1$
- private static final String SET_ENTRY = "setEntry"; //$NON-NLS-1$
- private static final String LAUNCH_CONFIGURATION = "launchConfiguration"; //$NON-NLS-1$
- private static final String MAP_ENTRY = "mapEntry"; //$NON-NLS-1$
- private static final String LIST_ENTRY = "listEntry"; //$NON-NLS-1$
- private static final String SET_ATTRIBUTE = "setAttribute"; //$NON-NLS-1$
- private static final String MAP_ATTRIBUTE = "mapAttribute"; //$NON-NLS-1$
- private static final String LIST_ATTRIBUTE = "listAttribute"; //$NON-NLS-1$
- private static final String BOOLEAN_ATTRIBUTE = "booleanAttribute"; //$NON-NLS-1$
- private static final String INT_ATTRIBUTE = "intAttribute"; //$NON-NLS-1$
- private static final String STRING_ATTRIBUTE = "stringAttribute"; //$NON-NLS-1$
- private static final String TYPE = "type"; //$NON-NLS-1$
-
- /**
- * This configurations attribute table. Keys are <code>String</code>s and
- * values are one of <code>String</code>, <code>Integer</code>, or
- * <code>Boolean</code>.
- */
- private TreeMap fAttributes;
-
- /**
- * This launch configuration's type
- */
- private ILaunchConfigurationType fType;
-
- /**
- * Whether running on Sun 1.4 VM - see bug 110215
- */
- private static boolean fgIsSun14x = false;
-
- static {
- String vendor = System.getProperty("java.vm.vendor"); //$NON-NLS-1$
- if (vendor.startsWith("Sun Microsystems")) { //$NON-NLS-1$
- String version = System.getProperty("java.vm.version"); //$NON-NLS-1$
- if (version.startsWith("1.4")) { //$NON-NLS-1$
- fgIsSun14x = true;
- }
- }
- }
-
- /**
- * Constructs a new empty info
- */
- protected LaunchConfigurationInfo() {
- setAttributeTable(new TreeMap());
- }
-
- /**
- * Returns this configuration's attribute table.
- *
- * @return attribute table
- */
- private TreeMap getAttributeTable() {
- return fAttributes;
- }
-
- /**
- * Sets this configuration's attribute table.
- *
- * @param table
- * attribute table
- */
- private void setAttributeTable(TreeMap table) {
- fAttributes = table;
- }
-
- /**
- * Sets the attributes in this info to those in the given map.
- *
- * @param map
- */
- protected void setAttributes(Map map) {
- if (map == null) {
- setAttributeTable(new TreeMap());
- return;
- }
- setAttributeTable(new TreeMap(map));
- }
-
- /**
- * Returns the <code>String</code> attribute with the given key or the
- * given default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not a
- * <code>String</code>
- */
- protected String getStringAttribute(String key, String defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof String) {
- return (String)attr;
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_lang_String__1, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Returns the <code>int</code> attribute with the given key or the given
- * default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not an
- * <code>int</code>
- */
- protected int getIntAttribute(String key, int defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof Integer) {
- return ((Integer)attr).intValue();
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_Attribute__0__is_not_of_type_int__2, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Returns the <code>boolean</code> attribute with the given key or the
- * given default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not a
- * <code>boolean</code>
- */
- protected boolean getBooleanAttribute(String key, boolean defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof Boolean) {
- return ((Boolean)attr).booleanValue();
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_Attribute__0__is_not_of_type_boolean__3, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Returns the <code>java.util.List</code> attribute with the given key or
- * the given default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not a
- * <code>java.util.List</code>
- */
- protected List getListAttribute(String key, List defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof List) {
- return (List)attr;
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_List__1, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Returns the <code>java.util.Set</code> attribute with the given key or
- * the given default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not a
- * <code>java.util.Set</code>
- *
- * @since 3.3
- */
- protected Set getSetAttribute(String key, Set defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof Set) {
- return (Set)attr;
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_35, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Returns the <code>java.util.Map</code> attribute with the given key or
- * the given default value if undefined.
- *
- * @return attribute specified by given key or the defaultValue if undefined
- * @throws CoreException
- * if the attribute with the given key exists but is not a
- * <code>java.util.Map</code>
- */
- protected Map getMapAttribute(String key, Map defaultValue) throws CoreException {
- Object attr = getAttributeTable().get(key);
- if (attr != null) {
- if (attr instanceof Map) {
- return (Map)attr;
- }
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_Attribute__0__is_not_of_type_java_util_Map__1, new String[] {key}), null
- )
- );
- }
- return defaultValue;
- }
-
- /**
- * Sets this configuration's type.
- *
- * @param type
- * launch configuration type
- */
- protected void setType(ILaunchConfigurationType type) {
- fType = type;
- }
-
- /**
- * Returns this configuration's type.
- *
- * @return launch configuration type
- */
- protected ILaunchConfigurationType getType() {
- return fType;
- }
-
-
- /**
- * Returns a copy of this info object
- *
- * @return copy of this info
- */
- protected LaunchConfigurationInfo getCopy() {
- LaunchConfigurationInfo copy = new LaunchConfigurationInfo();
- copy.setType(getType());
- copy.setAttributeTable(getAttributes());
- return copy;
- }
-
- /**
- * Returns a copy of this info's attribute map.
- *
- * @return a copy of this info's attribute map
- */
- protected TreeMap getAttributes() {
- return (TreeMap)getAttributeTable().clone();
- }
-
- /**
- * Sets the given attribute to the given value. Only working copy's should
- * use this API.
- *
- * @param key
- * attribute key
- * @param value
- * attribute value
- */
- protected void setAttribute(String key, Object value) {
- if (value == null) {
- getAttributeTable().remove(key);
- } else {
- getAttributeTable().put(key, value);
- }
- }
-
- /**
- * Returns the content of this info as XML
- *
- * @return the content of this info as XML
- * @throws CoreException
- * if a attribute has been set with a null key
- * @throws IOException
- * if an exception occurs creating the XML
- * @throws ParserConfigurationException
- * if an exception occurs creating the XML
- * @throws TransformerException
- * if an exception occurs creating the XML
- */
- protected String getAsXML() throws CoreException, IOException, ParserConfigurationException, TransformerException {
-
- Document doc = LaunchManager.getDocument();
- Element configRootElement = doc.createElement(LAUNCH_CONFIGURATION);
- doc.appendChild(configRootElement);
-
- configRootElement.setAttribute(TYPE, getType().getIdentifier());
-
- Iterator keys = getAttributeTable().keySet().iterator();
- while (keys.hasNext()) {
- String key = (String)keys.next();
- if (key == null) {
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationInfo_36, null
- )
- );
- }
- Object value = getAttributeTable().get(key);
- if (value == null) {
- continue;
- }
- Element element = null;
- String valueString = null;
- if (value instanceof String) {
- valueString = (String)value;
- element = createKeyValueElement(doc, STRING_ATTRIBUTE, key, valueString);
- } else if (value instanceof Integer) {
- valueString = ((Integer)value).toString();
- element = createKeyValueElement(doc, INT_ATTRIBUTE, key, valueString);
- } else if (value instanceof Boolean) {
- valueString = ((Boolean)value).toString();
- element = createKeyValueElement(doc, BOOLEAN_ATTRIBUTE, key, valueString);
- } else if (value instanceof List) {
- element = createListElement(doc, LIST_ATTRIBUTE, key, (List)value);
- } else if (value instanceof Map) {
- element = createMapElement(doc, MAP_ATTRIBUTE, key, (Map)value);
- } else if(value instanceof Set) {
- element = createSetElement(doc, SET_ATTRIBUTE, key, (Set)value);
- }
- configRootElement.appendChild(element);
- }
-
- return LaunchManager.serializeDocument(doc);
- }
-
- /**
- * Helper method that creates a 'key value' element of the specified type
- * with the specified attribute values.
- */
- protected Element createKeyValueElement(Document doc, String elementType, String key, String value) {
- Element element = doc.createElement(elementType);
- element.setAttribute(KEY, key);
- element.setAttribute(VALUE, value);
- return element;
- }
-
- /**
- * Creates a new <code>Element</code> for the specified
- * <code>java.util.List</code>
- *
- * @param doc the doc to add the element to
- * @param elementType the type of the element
- * @param setKey the key for the element
- * @param list the list to fill the new element with
- * @return the new element
- */
- protected Element createListElement(Document doc, String elementType, String listKey, List list) {
- Element listElement = doc.createElement(elementType);
- listElement.setAttribute(KEY, listKey);
- Iterator iterator = list.iterator();
- while (iterator.hasNext()) {
- String value = (String) iterator.next();
- Element element = doc.createElement(LIST_ENTRY);
- element.setAttribute(VALUE, value);
- listElement.appendChild(element);
- }
- return listElement;
- }
-
- /**
- * Creates a new <code>Element</code> for the specified
- * <code>java.util.Set</code>
- *
- * @param doc the doc to add the element to
- * @param elementType the type of the element
- * @param setKey the key for the element
- * @param set the set to fill the new element with
- * @return the new element
- *
- * @since 3.3
- */
- protected Element createSetElement(Document doc, String elementType, String setKey, Set set) {
- Element setElement = doc.createElement(elementType);
- setElement.setAttribute(KEY, setKey);
- Element element = null;
- for(Iterator iter = set.iterator(); iter.hasNext();) {
- element = doc.createElement(SET_ENTRY);
- element.setAttribute(VALUE, (String) iter.next());
- setElement.appendChild(element);
- }
- return setElement;
- }
-
- /**
- * Creates a new <code>Element</code> for the specified
- * <code>java.util.Map</code>
- *
- * @param doc the doc to add the element to
- * @param elementType the type of the element
- * @param setKey the key for the element
- * @param map the map to fill the new element with
- * @return the new element
- *
- */
- protected Element createMapElement(Document doc, String elementType, String mapKey, Map map) {
- Element mapElement = doc.createElement(elementType);
- mapElement.setAttribute(KEY, mapKey);
- Iterator iterator = map.keySet().iterator();
- while (iterator.hasNext()) {
- String key = (String) iterator.next();
- String value = (String) map.get(key);
- Element element = doc.createElement(MAP_ENTRY);
- element.setAttribute(KEY, key);
- element.setAttribute(VALUE, value);
- mapElement.appendChild(element);
- }
- return mapElement;
- }
-
- /**
- * Initializes the mapping of attributes from the XML file
- * @param root the root node from the XML document
- * @throws CoreException
- */
- protected void initializeFromXML(Element root) throws CoreException {
- if (!root.getNodeName().equalsIgnoreCase(LAUNCH_CONFIGURATION)) {
- throw getInvalidFormatDebugException();
- }
-
- // read type
- String id = root.getAttribute(TYPE);
- if (id == null) {
- throw getInvalidFormatDebugException();
- }
-
- ILaunchConfigurationType type = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationType(id);
- if (type == null) {
- String message= MessageFormat.format(DebugCoreMessages.LaunchConfigurationInfo_missing_type, new Object[]{id});
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.MISSING_LAUNCH_CONFIGURATION_TYPE, message, null)
- );
- }
- setType(type);
-
- NodeList list = root.getChildNodes();
- Node node = null;
- Element element = null;
- String nodeName = null;
- for (int i = 0; i < list.getLength(); ++i) {
- node = list.item(i);
- short nodeType = node.getNodeType();
- if (nodeType == Node.ELEMENT_NODE) {
- element = (Element) node;
- nodeName = element.getNodeName();
- if (nodeName.equalsIgnoreCase(STRING_ATTRIBUTE)) {
- setStringAttribute(element);
- } else if (nodeName.equalsIgnoreCase(INT_ATTRIBUTE)) {
- setIntegerAttribute(element);
- } else if (nodeName.equalsIgnoreCase(BOOLEAN_ATTRIBUTE)) {
- setBooleanAttribute(element);
- } else if (nodeName.equalsIgnoreCase(LIST_ATTRIBUTE)) {
- setListAttribute(element);
- } else if (nodeName.equalsIgnoreCase(MAP_ATTRIBUTE)) {
- setMapAttribute(element);
- } else if(nodeName.equalsIgnoreCase(SET_ATTRIBUTE)) {
- setSetAttribute(element);
- }
- }
- }
- }
-
- /**
- * Loads a <code>String</code> from the specified element into the local attribute mapping
- * @param element the element to load from
- * @throws CoreException
- */
- protected void setStringAttribute(Element element) throws CoreException {
- setAttribute(getKeyAttribute(element), getValueAttribute(element));
- }
-
- /**
- * Loads an <code>Integer</code> from the specified element into the local attribute mapping
- * @param element the element to load from
- * @throws CoreException
- */
- protected void setIntegerAttribute(Element element) throws CoreException {
- setAttribute(getKeyAttribute(element), new Integer(getValueAttribute(element)));
- }
-
- /**
- * Loads a <code>Boolean</code> from the specified element into the local attribute mapping
- * @param element the element to load from
- * @throws CoreException
- */
- protected void setBooleanAttribute(Element element) throws CoreException {
- setAttribute(getKeyAttribute(element), Boolean.valueOf(getValueAttribute(element)));
- }
-
- /**
- * Reads a <code>List</code> attribute from the specified XML node and
- * loads it into the mapping of attributes
- *
- * @param element the element to read the list attribute from
- * @throws CoreException if the element has an invalid format
- */
- protected void setListAttribute(Element element) throws CoreException {
- String listKey = element.getAttribute(KEY);
- NodeList nodeList = element.getChildNodes();
- int entryCount = nodeList.getLength();
- List list = new ArrayList(entryCount);
- Node node = null;
- Element selement = null;
- for (int i = 0; i < entryCount; i++) {
- node = nodeList.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- selement = (Element) node;
- if (!selement.getNodeName().equalsIgnoreCase(LIST_ENTRY)) {
- throw getInvalidFormatDebugException();
- }
- list.add(getValueAttribute(selement));
- }
- }
- setAttribute(listKey, list);
- }
-
- /**
- * Reads a <code>Set</code> attribute from the specified XML node and
- * loads it into the mapping of attributes
- *
- * @param element the element to read the set attribute from
- * @throws CoreException if the element has an invalid format
- *
- * @since 3.3
- */
- protected void setSetAttribute(Element element) throws CoreException {
- String setKey = element.getAttribute(KEY);
- NodeList nodeList = element.getChildNodes();
- int entryCount = nodeList.getLength();
- Set set = new HashSet(entryCount);
- Node node = null;
- Element selement = null;
- for(int i = 0; i < entryCount; i++) {
- node = nodeList.item(i);
- if(node.getNodeType() == Node.ELEMENT_NODE) {
- selement = (Element)node;
- if(!selement.getNodeName().equalsIgnoreCase(SET_ENTRY)) {
- throw getInvalidFormatDebugException();
- }
- set.add(getValueAttribute(selement));
- }
- }
- setAttribute(setKey, set);
- }
-
- /**
- * Reads a <code>Map</code> attribute from the specified XML node and
- * loads it into the mapping of attributes
- *
- * @param element the element to read the map attribute from
- * @throws CoreException if the element has an invalid format
- */
- protected void setMapAttribute(Element element) throws CoreException {
- String mapKey = element.getAttribute(KEY);
- NodeList nodeList = element.getChildNodes();
- int entryCount = nodeList.getLength();
- Map map = new HashMap(entryCount);
- Node node = null;
- Element selement = null;
- for (int i = 0; i < entryCount; i++) {
- node = nodeList.item(i);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- selement = (Element) node;
- if (!selement.getNodeName().equalsIgnoreCase(MAP_ENTRY)) {
- throw getInvalidFormatDebugException();
- }
- map.put(getKeyAttribute(selement), getValueAttribute(selement));
- }
- }
- setAttribute(mapKey, map);
- }
-
- /**
- * Returns the <code>String</code> representation of the 'key' attribute from the specified element
- * @param element the element to read from
- * @return the value
- * @throws CoreException
- */
- protected String getKeyAttribute(Element element) throws CoreException {
- String key = element.getAttribute(KEY);
- if (key == null) {
- throw getInvalidFormatDebugException();
- }
- return key;
- }
-
- /**
- * Returns the <code>String</code> representation of the 'value' attribute from the specified element
- * @param element the element to read from
- * @return the value
- * @throws CoreException
- */
- protected String getValueAttribute(Element element) throws CoreException {
- String value = element.getAttribute(VALUE);
- if (value == null) {
- throw getInvalidFormatDebugException();
- }
- return value;
- }
-
- /**
- * Returns an invalid format exception for reuse
- * @return an invalid format exception
- */
- protected DebugException getInvalidFormatDebugException() {
- return
- new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationInfo_Invalid_launch_configuration_XML__10, null
- )
- );
- }
-
- /**
- * Two <code>LaunchConfigurationInfo</code> objects are equal if and only
- * if they have the same type and they have the same set of attributes with
- * the same values.
- *
- * @see Object#equals(Object)
- */
- public boolean equals(Object obj) {
-
- // Make sure it's a LaunchConfigurationInfo object
- if (!(obj instanceof LaunchConfigurationInfo)) {
- return false;
- }
-
- // Make sure the types are the same
- LaunchConfigurationInfo other = (LaunchConfigurationInfo) obj;
- if (!fType.getIdentifier().equals(other.getType().getIdentifier())) {
- return false;
- }
-
- // Make sure the attributes are the same
- return compareAttributes(fAttributes, other.getAttributeTable());
- }
-
- /**
- * Returns whether the two attribute maps are equal, consulting registered
- * comparator extensions.
- *
- * @param map1 attribute map
- * @param map2 attribute map
- * @return whether the two attribute maps are equal
- */
- protected boolean compareAttributes(TreeMap map1, TreeMap map2) {
- LaunchManager manager = (LaunchManager)DebugPlugin.getDefault().getLaunchManager();
- if (map1.size() == map2.size()) {
- Iterator attributes = map1.keySet().iterator();
- while (attributes.hasNext()) {
- String key = (String)attributes.next();
- Object attr1 = map1.get(key);
- Object attr2 = map2.get(key);
- if (attr2 == null) {
- return false;
- }
- Comparator comp = manager.getComparator(key);
- if (comp == null) {
- if (fgIsSun14x) {
- if(attr2 instanceof String & attr1 instanceof String) {
- // this is a hack for bug 110215, on SUN 1.4.x, \r
- // is stripped off when the stream is written to the
- // DOM
- // this is not the case for 1.5.x, so to be safe we
- // are stripping \r off all strings before we
- // compare for equality
- attr1 = ((String)attr1).replaceAll("\\r", ""); //$NON-NLS-1$ //$NON-NLS-2$
- attr2 = ((String)attr2).replaceAll("\\r", ""); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- if (!attr1.equals(attr2)) {
- return false;
- }
- } else {
- if (comp.compare(attr1, attr2) != 0) {
- return false;
- }
- }
- }
- return true;
- }
- return false;
- }
-
- /**
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return fType.hashCode() + fAttributes.size();
- }
-
- /**
- * Returns if the attribute map contains the specified key
- * @param attributeName
- * @return true if the attribute map contains the specified key, false otherwise
- *
- * @since 3.4.0
- */
- protected boolean hasAttribute(String attributeName) {
- return fAttributes.containsKey(attributeName);
- }
-
- /**
- * Removes the specified attribute from the mapping and returns
- * its value, or <code>null</code> if none. Does nothing
- * if the attribute name is <code>null</code>
- * @param attributeName
- * @return attribute value or <code>null</code>
- *
- * @since 3.4.0
- */
- protected Object removeAttribute(String attributeName) {
- if(attributeName != null) {
- return fAttributes.remove(attributeName);
- }
- return null;
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java
deleted file mode 100644
index a33a579c6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationType.java
+++ /dev/null
@@ -1,491 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationMigrationDelegate;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.core.ILaunchDelegate;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.ILaunchMode;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * A launch configuration type wrappers a configuration
- * element for a <code>launchConfigurationType</code>
- * extension.
- */
-public class LaunchConfigurationType extends PlatformObject implements ILaunchConfigurationType {
-
- /**
- * The configuration element of the extension.
- */
- private IConfigurationElement fElement;
-
- /**
- * a listing of modes contributed to this launch configuration type
- *
- * @since 3.3
- */
- private Set fModes = null;
-
- /**
- * A set of sets containing all of the supported mode combinations of this type
- *
- * @since 3.3
- */
- private Set fModeCombinations = null;
-
- /**
- * the default source path computer for this config type
- *
- * @since 3.3
- */
- private ISourcePathComputer fSourcePathComputer = null;
-
- /**
- * Cache for the migration delegate
- *
- * @since 3.3
- */
- private ILaunchConfigurationMigrationDelegate fMigrationDelegate = null;
-
- /**
- * The source locator id for this config type
- */
- private String fSourceLocator = null;
-
- /**
- * The delegates for launch configurations of this type.
- * Delegates are instantiated lazily as required. There may
- * be different delegates for different modes (since 3.0).
- * Map of modes (Set of modes) to list of delegates
- */
- private Map fDelegates = null;
-
- /**
- * The source provider cache entry
- */
- private LaunchDelegate fSourceProvider = null;
-
- /**
- * A map of preferred launch delegates for mode combinations
- *
- * @since 3.3
- */
- private Map fPreferredDelegates = null;
-
- /**
- * Constructs a new launch configuration type on the
- * given configuration element.
- *
- * @param element configuration element
- */
- protected LaunchConfigurationType(IConfigurationElement element) {
- fElement = element;
- initializePreferredDelegates();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getAttribute(java.lang.String)
- */
- public String getAttribute(String attributeName) {
- return fElement.getAttribute(attributeName);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getCategory()
- */
- public String getCategory() {
- return fElement.getAttribute(IConfigurationElementConstants.CATEGORY);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getDelegate()
- */
- public ILaunchConfigurationDelegate getDelegate() throws CoreException {
- return getDelegate(ILaunchManager.RUN_MODE);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getDelegate(java.lang.String)
- */
- public ILaunchConfigurationDelegate getDelegate(String mode) throws CoreException {
- Set modes = new HashSet();
- modes.add(mode);
- ILaunchDelegate[] delegates = getDelegates(modes);
- if (delegates.length > 0) {
- return delegates[0].getDelegate();
- }
- IStatus status = null;
- ILaunchMode launchMode = DebugPlugin.getDefault().getLaunchManager().getLaunchMode(mode);
- if (launchMode == null) {
- status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- MessageFormat.format(DebugCoreMessages.LaunchConfigurationType_7,
- new String[]{mode}));
- } else {
- status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- MessageFormat.format(DebugCoreMessages.LaunchConfigurationType_7,
- new String[]{((LaunchManager)DebugPlugin.getDefault().getLaunchManager()).getLaunchModeName(mode)}));
- }
- throw new CoreException(status);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getDelegates(java.util.Set)
- */
- public ILaunchDelegate[] getDelegates(Set modes) throws CoreException {
- initializeDelegates();
- Set delegates = (Set) fDelegates.get(modes);
- if (delegates == null) {
- delegates = Collections.EMPTY_SET;
- }
- return (ILaunchDelegate[]) delegates.toArray(new ILaunchDelegate[delegates.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#setPreferredDelegate(java.util.Set, org.eclipse.debug.core.ILaunchDelegate)
- */
- public void setPreferredDelegate(Set modes, ILaunchDelegate delegate) {
- if(fPreferredDelegates == null) {
- fPreferredDelegates = new HashMap();
- }
- if (delegate == null) {
- fPreferredDelegates.remove(modes);
- } else {
- fPreferredDelegates.put(modes, delegate);
- }
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getPreferredDelegate(java.util.Set)
- */
- public ILaunchDelegate getPreferredDelegate(Set modes) {
- return (ILaunchDelegate) fPreferredDelegates.get(modes);
- }
-
- /**
- * Internal use method to allow access to the listing of preferred delegates. Delegates are stored in the map by their mode set combinations.
- * <p>
- * preferred delegates are stored as:
- * <pre>
- * Map&lt;modeset, delegate&gt;
- * </pre>
- * </p>
- * @return the <code>java.util.Map</code> of preferred delegates or an empty <code>java.util.Map</code> if no preferred delegates are specified, never <code>null</code>
- *
- * @since 3.3
- */
- public Map getPreferredDelegates() {
- return fPreferredDelegates;
- }
-
- /**
- * This method is used to initialize the listing of preferred launch delegates for this type
- *
- * <p>
- * Undecided if this code should live in the launch manager and have it load a listing of all preferred launch
- * delegates that each config type could then query as needed when looking for their preferred delegate.
- * Seems like it would be alot less work...
- * </p>
- * @since 3.3
- */
- private synchronized void initializePreferredDelegates() {
- if(fPreferredDelegates == null) {
- fPreferredDelegates = new HashMap();
- initializeDelegates();
- LaunchManager lm = (LaunchManager) DebugPlugin.getDefault().getLaunchManager();
- ILaunchDelegate delegate = null;
- Set modes = null;
- for(Iterator iter = fDelegates.keySet().iterator(); iter.hasNext();) {
- modes = (Set) iter.next();
- delegate = lm.getPreferredDelegate(getIdentifier(), modes);
- if(delegate != null) {
- fPreferredDelegates.put(modes, delegate);
- }
- }
- }
- }
-
- /**
- * Initializes the listing of launch delegates for this type
- */
- private synchronized void initializeDelegates() {
- if (fDelegates == null) {
- // initialize delegate
- fDelegates = new Hashtable();
- LaunchDelegate[] launchDelegates = getLaunchDelegateExtensions();
- LaunchDelegate delegate = null;
- List modelist = null;
- Set modes = null, tmp = null;
- for (int i = 0; i < launchDelegates.length; i++) {
- delegate = launchDelegates[i];
- modelist = delegate.getModes();
- for(int j = 0; j < modelist.size(); j++) {
- //cache the delegate based on its set of modes and delegate
- modes = (Set) modelist.get(j);
- tmp = (Set) fDelegates.get(modes);
- if (tmp == null) {
- tmp = new HashSet();
- fDelegates.put(modes, tmp);
- }
- tmp.add(delegate);
- }
- }
- }
- }
-
- /**
- * Returns all launch delegate extensions registered for this configuration type.
- *
- * @return all launch delegate extensions
- */
- private LaunchDelegate[] getLaunchDelegateExtensions() {
- return ((LaunchManager) DebugPlugin.getDefault().getLaunchManager()).getLaunchDelegates(getIdentifier());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getIdentifier()
- */
- public String getIdentifier() {
- return fElement.getAttribute(IConfigurationElementConstants.ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getName()
- */
- public String getName() {
- return fElement.getAttribute(IConfigurationElementConstants.NAME);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getPluginId()
- */
- public String getPluginIdentifier() {
- return fElement.getContributor().getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getSourceLocatorId()
- */
- public String getSourceLocatorId() {
- if(fSourceLocator == null) {
- fSourceLocator = getAttribute(IConfigurationElementConstants.SOURCE_LOCATOR);
- //see if the cached source provider knows about it
- if(fSourceProvider != null) {
- fSourceLocator = fSourceProvider.getSourceLocatorId();
- }
- //if not provided check all the applicable delegates for one and record the delegate if found,
- //so it can be reused to try and find the source path computer
- if(fSourceLocator == null) {
- LaunchDelegate[] delegates = getLaunchDelegateExtensions();
- for(int i = 0; i < delegates.length; i++) {
- fSourceLocator = delegates[i].getSourceLocatorId();
- if(fSourceLocator != null) {
- fSourceProvider = delegates[i];
- return fSourceLocator;
- }
- }
- fSourceProvider = null;
- }
- }
- return fSourceLocator;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getSourcePathComputer()
- */
- public ISourcePathComputer getSourcePathComputer() {
- if(fSourcePathComputer == null) {
- //get the id
- String id = fElement.getAttribute(IConfigurationElementConstants.SOURCE_PATH_COMPUTER);
- //ask if the source provider knows about it
- if(fSourceProvider != null) {
- id = fSourceProvider.getSourcePathComputerId();
- }
- if(id != null) {
- fSourcePathComputer = DebugPlugin.getDefault().getLaunchManager().getSourcePathComputer(id);
- }
- else {
- //if not provided check all the applicable delegates for one and record the delegate if found,
- //so it can be reused to try and find the source path computer
- LaunchDelegate[] delegates = getLaunchDelegateExtensions();
- for(int i = 0; i < delegates.length; i++) {
- id = delegates[i].getSourcePathComputerId();
- if(id != null) {
- fSourceProvider = delegates[i];
- fSourcePathComputer = DebugPlugin.getDefault().getLaunchManager().getSourcePathComputer(id);
- if(fSourcePathComputer != null) {
- return fSourcePathComputer;
- }
- }
- }
- fSourceProvider = null;
- }
-
- }
- return fSourcePathComputer;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getSupportedModes()
- */
- public Set getSupportedModes() {
- if(fModes == null) {
- fModes = new HashSet();
- LaunchDelegate[] delegates = getLaunchDelegateExtensions();
- List modesets = null;
- for(int i= 0; i < delegates.length; i++) {
- modesets = delegates[i].getModes();
- for(Iterator iter = modesets.iterator(); iter.hasNext();) {
- fModes.addAll((Set) iter.next());
- }
- }
- }
- return fModes;
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getSupportedModeCombinations()
- */
- public Set getSupportedModeCombinations() {
- if(fModeCombinations == null) {
- initializeDelegates();
- fModeCombinations = new HashSet();
- fModeCombinations = fDelegates.keySet();
- }
- //return a clone or bad things happen
- HashSet set = new HashSet();
- for(Iterator iter = fModeCombinations.iterator(); iter.hasNext();) {
- set.add(new HashSet((Set) iter.next()));
- }
- return set;
- }
-
- /**
- * determines if the specified candidate is suitable for migration by loading its delegate.
- * if we initialize the delegate and it has not been provided, return false instead of failing
- * @param candidate the candidate to inspect for migration suitability
- * @return true if the specified launch configuration is suitable for migration, false otherwise
- * @throws CoreException
- *
- * @since 3.2
- */
- public boolean isMigrationCandidate(ILaunchConfiguration candidate) throws CoreException {
- initializeMigrationDelegate();
- if(fMigrationDelegate != null) {
- return fMigrationDelegate.isCandidate(candidate);
- }
- return false;
- }
-
- /**
- * This method initializes the migration delegate
- * @throws CoreException
- */
- private synchronized void initializeMigrationDelegate() throws CoreException {
- if(fElement.getAttribute(IConfigurationElementConstants.MIGRATION_DELEGATE) != null && fMigrationDelegate == null) {
- fMigrationDelegate = (ILaunchConfigurationMigrationDelegate) fElement.createExecutableExtension(IConfigurationElementConstants.MIGRATION_DELEGATE);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#isPublic()
- */
- public boolean isPublic() {
- String publicString = fElement.getAttribute(IConfigurationElementConstants.PUBLIC);
- if (publicString != null) {
- if (publicString.equalsIgnoreCase("false")) { //$NON-NLS-1$
- return false;
- }
- }
- return true;
- }
-
- /**
- * Migrates the specified launch configuration by loading its delegate.
- * In the event the migration delegate has not been provided do nothing.
- * @param candidate the candidate launch configuration to migrate
- * @throws CoreException
- *
- * @since 3.2
- */
- public void migrate(ILaunchConfiguration candidate) throws CoreException {
- initializeMigrationDelegate();
- if(fMigrationDelegate != null) {
- fMigrationDelegate.migrate(candidate);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#newInstance(org.eclipse.core.resources.IContainer, java.lang.String)
- */
- public ILaunchConfigurationWorkingCopy newInstance(IContainer container, String name) {
- return new LaunchConfigurationWorkingCopy(container, name, this);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationType#supportsMode(java.lang.String)
- */
- public boolean supportsMode(String mode) {
- if(fModeCombinations == null) {
- getSupportedModeCombinations();
- }
- Set modes = null;
- for(Iterator iter = fModeCombinations.iterator(); iter.hasNext();) {
- modes = (Set) iter.next();
- if(modes.size() == 1 && modes.contains(mode)) {
- return true;
- }
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#getContributorName()
- */
- public String getContributorName() {
- return fElement.getContributor().getName();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationType#supportsModeCombination(java.util.Set)
- */
- public boolean supportsModeCombination(Set modes) {
- if(fModeCombinations == null) {
- getSupportedModeCombinations();
- }
- return fModeCombinations.contains(modes);
- }
-
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java
deleted file mode 100644
index a94d406b5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchConfigurationWorkingCopy.java
+++ /dev/null
@@ -1,730 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRunnable;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubMonitor;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * A working copy launch configuration
- */
-public class LaunchConfigurationWorkingCopy extends LaunchConfiguration implements ILaunchConfigurationWorkingCopy {
-
- /**
- * Handle of original launch configuration this
- * working copy is based on
- */
- private LaunchConfiguration fOriginal;
-
- /**
- * Handle to a parent working copy
- * @since 3.3
- */
- private LaunchConfigurationWorkingCopy fParent = null;
-
- /**
- * Working copy of attributes.
- */
- private LaunchConfigurationInfo fInfo;
-
- /**
- * Whether this working copy has been modified since
- * it was created
- */
- private boolean fDirty;
-
- /**
- * Indicates whether this working copy has been explicitly renamed.
- */
- private boolean fRenamed;
-
- /**
- * Suppress change notification until created
- */
- private boolean fSuppressChange ;
-
- /**
- * Constructs a working copy of the specified launch
- * configuration.
- *
- * @param original launch configuration to make
- * a working copy of
- * @exception CoreException if unable to initialize this
- * working copy's attributes based on the original configuration
- */
- protected LaunchConfigurationWorkingCopy(LaunchConfiguration original) throws CoreException {
- super(original.getName(), original.getContainer());
- copyFrom(original);
- setOriginal(original);
- fSuppressChange = false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.LaunchConfiguration#initialize()
- */
- protected void initialize() {
- fDirty = false;
- fRenamed = false;
- fSuppressChange = true;
- super.initialize();
- }
-
- /**
- * Constructs a working copy of the specified launch configuration as its parent.
- *
- * @param parent launch configuration to make
- * a working copy of
- * @exception CoreException if unable to initialize this
- * working copy's attributes based on the original configuration
- */
- protected LaunchConfigurationWorkingCopy(LaunchConfigurationWorkingCopy parent) throws CoreException {
- super(parent.getName(), parent.getContainer());
- copyFrom(parent);
- setOriginal((LaunchConfiguration) parent.getOriginal());
- fParent = parent;
- fSuppressChange = false;
- }
-
- /**
- * Constructs a copy of the specified launch
- * configuration, with the given (new) name.
- *
- * @param original launch configuration to make
- * a working copy of
- * @param name the new name for the copy of the launch
- * configuration
- * @exception CoreException if unable to initialize this
- * working copy's attributes based on the original configuration
- */
- protected LaunchConfigurationWorkingCopy(LaunchConfiguration original, String name) throws CoreException {
- super(name, original.getContainer());
- copyFrom(original);
- fSuppressChange = false;
- }
-
- /**
- * Constructs a new working copy to be created in the specified
- * location.
- *
- * @param container the container that the configuration will be created in
- * or <code>null</code> if to be local
- * @param name the name of the new launch configuration
- * @param type the type of this working copy
- */
- protected LaunchConfigurationWorkingCopy(IContainer container, String name, ILaunchConfigurationType type) {
- super(name, container);
- setInfo(new LaunchConfigurationInfo());
- getInfo().setType(type);
- fSuppressChange = false;
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#isDirty()
- */
- public boolean isDirty() {
- return fDirty;
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#doSave()
- */
- public synchronized ILaunchConfiguration doSave() throws CoreException {
- return doSave(new NullProgressMonitor());
- }
-
- /**
- * Saves with progress.
- *
- * @param monitor
- * @return the saved <code>ILaunchConfiguration</code>
- * @throws CoreException
- *
- * @since 3.3
- */
- public synchronized ILaunchConfiguration doSave(IProgressMonitor monitor) throws CoreException {
- SubMonitor lmonitor = SubMonitor.convert(monitor, 1);
- try {
- if (getParent() != null) {
- // save to parent working copy
- LaunchConfigurationWorkingCopy wc = (LaunchConfigurationWorkingCopy) getParent();
- if(isMoved()) {
- wc.rename(getName());
- wc.setContainer(getContainer());
- }
- wc.setAttributes(getInfo().getAttributes());
- updateMonitor(lmonitor, 1);
- return wc;
- }
- else {
- boolean useRunnable= true;
- if (isLocal()) {
- if (isMoved()) {
- // If this config was moved from a shared location, saving
- // it will delete the original from the workspace. Use runnable.
- useRunnable= !isNew() && !getOriginal().isLocal();
- } else {
- useRunnable= false;
- }
- }
- if (useRunnable) {
- IWorkspaceRunnable wr = new IWorkspaceRunnable() {
- public void run(IProgressMonitor pm) throws CoreException {
- doSave0(pm);
- }
- };
- ResourcesPlugin.getWorkspace().run(wr, null, 0, lmonitor.newChild(1));
- } else {
- //file is persisted in the metadata not the workspace
- doSave0(lmonitor.newChild(1));
- }
- getLaunchManager().setMovedFromTo(null, null);
- }
- }
- finally {
- if(lmonitor != null) {
- lmonitor.done();
- }
- }
- return new LaunchConfiguration(getName(), getContainer());
- }
-
- /**
- * Performs the actual saving of the launch configuration.
- * @throws CoreException
- */
- private void doSave0(IProgressMonitor monitor) throws CoreException {
- SubMonitor lmonitor = SubMonitor.convert(monitor, MessageFormat.format(DebugCoreMessages.LaunchConfigurationWorkingCopy_0, new String[] {getName()}), 2);
- try {
- // set up from/to information if this is a move
- boolean moved = (!isNew() && isMoved());
- if (moved) {
- ILaunchConfiguration to = new LaunchConfiguration(getName(), getContainer());
- ILaunchConfiguration from = getOriginal();
- getLaunchManager().setMovedFromTo(from, to);
- }
- ILaunchConfiguration orig = getOriginal();
- updateMonitor(lmonitor, 1);
- writeNewFile(lmonitor.newChild(1));
- // delete the old file if this is not a new configuration
- // or the file was renamed/moved
- if (moved) {
- orig.delete();
- }
- fDirty = false;
- }
- finally {
- if(lmonitor != null) {
- lmonitor.done();
- }
- }
- }
-
- /**
- * Writes the new configuration information to a file.
- *
- * @exception CoreException if writing the file fails
- */
- protected void writeNewFile(IProgressMonitor monitor) throws CoreException {
- String xml = null;
- Exception e= null;
- try {
- xml = getInfo().getAsXML();
- } catch (IOException ioe) {
- e= ioe;
- } catch (ParserConfigurationException pce) {
- e= pce;
- } catch (TransformerException te) {
- e= te;
- }
- if (e != null) {
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1, new String[]{e.toString()}), null
- )
- );
- }
- SubMonitor lmonitor = SubMonitor.convert(monitor, "", 5); //$NON-NLS-1$
- try {
- if (isLocal()) {
- // use java.io to update configuration file
- try {
- boolean added = false;
- lmonitor.subTask(DebugCoreMessages.LaunchConfigurationWorkingCopy_1);
- IFileStore file = getFileStore();
- if (file == null) {
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationWorkingCopy_4, null
- )
- );
- }
- IFileStore dir = file.getParent();
- dir.mkdir(EFS.SHALLOW, null);
- if (!file.fetchInfo().exists()) {
- added = true;
- updateMonitor(lmonitor, 1);
- }
- BufferedOutputStream stream = null;
- try {
- stream = new BufferedOutputStream(file.openOutputStream(EFS.NONE, null));
- stream.write(xml.getBytes("UTF8")); //$NON-NLS-1$
- }
- finally {
- if(stream != null) {
- stream.close();
- }
- }
- if (added) {
- getLaunchManager().launchConfigurationAdded(new LaunchConfiguration(getName(), getContainer()));
- } else {
- getLaunchManager().launchConfigurationChanged(new LaunchConfiguration(getName(), getContainer()));
- }
- //notify file saved
- updateMonitor(lmonitor, 1);
- } catch (IOException ie) {
- lmonitor.done();
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, MessageFormat.format(DebugCoreMessages.LaunchConfigurationWorkingCopy__0__occurred_generating_launch_configuration_XML__1, new String[]{ie.toString()}), null
- )
- );
- }
- } else {
- // use resource API to update configuration file
- IFile file = getFile();
- if (file == null) {
- lmonitor.done();
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationWorkingCopy_5, null
- ));
- }
- IContainer dir = file.getParent();
- if (!dir.exists()) {
- lmonitor.done();
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationWorkingCopy_Specified_container_for_launch_configuration_does_not_exist_2, null
- )
- );
- }
- ByteArrayInputStream stream = null;
- try {
- stream = new ByteArrayInputStream(xml.getBytes("UTF8")); //$NON-NLS-1$
- } catch (UnsupportedEncodingException ue) {
- lmonitor.done();
- throw new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchConfigurationWorkingCopy_5, ue
- ));
- }
- SubMonitor smonitor = null;
- if (!file.exists()) {
- //create file input stream: work one unit in a sub monitor
- smonitor = lmonitor.newChild(1);
- smonitor.setTaskName(MessageFormat.format(DebugCoreMessages.LaunchConfigurationWorkingCopy_2, new String[] {getName()}));
- file.create(stream, false, smonitor);
- } else {
- // validate edit
- if (file.isReadOnly()) {
- IStatus status = ResourcesPlugin.getWorkspace().validateEdit(new IFile[] {file}, null);
- if (!status.isOK()) {
- lmonitor.done();
- throw new CoreException(status);
- }
- }
- //set the contents of the file: work 1 unit in a sub monitor
- smonitor = lmonitor.newChild(1);
- smonitor.setTaskName(MessageFormat.format(DebugCoreMessages.LaunchConfigurationWorkingCopy_3, new String[] {getName()}));
- file.setContents(stream, true, false, smonitor);
- }
- }
- }
- finally {
- if(lmonitor != null) {
- lmonitor.done();
- }
- }
- }
-
- /**
- * Updates the given monitor with the given tick count and polls for cancellation. If the monitor
- * is cancelled an {@link OperationCanceledException} is thrown
- * @param monitor
- * @param ticks
- * @throws OperationCanceledException
- */
- private void updateMonitor(IProgressMonitor monitor, int ticks) throws OperationCanceledException {
- if(monitor != null) {
- monitor.worked(ticks);
- if (monitor.isCanceled()) {
- throw new OperationCanceledException();
- }
- }
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setAttribute(String, int)
- */
- public void setAttribute(String attributeName, int value) {
- getInfo().setAttribute(attributeName, new Integer(value));
- setDirty();
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setAttribute(String, String)
- */
- public void setAttribute(String attributeName, String value) {
- getInfo().setAttribute(attributeName, value);
- setDirty();
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setAttribute(String, boolean)
- */
- public void setAttribute(String attributeName, boolean value) {
- getInfo().setAttribute(attributeName, Boolean.valueOf(value));
- setDirty();
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setAttribute(String, List)
- */
- public void setAttribute(String attributeName, List value) {
- getInfo().setAttribute(attributeName, value);
- setDirty();
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setAttribute(String, Map)
- */
- public void setAttribute(String attributeName, Map value) {
- getInfo().setAttribute(attributeName, value);
- setDirty();
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#getOriginal()
- */
- public ILaunchConfiguration getOriginal() {
- ILaunchConfiguration config = fOriginal;
- ILaunchConfigurationWorkingCopy parent = fParent;
- while(parent != null) {
- config = parent.getOriginal();
- parent = parent.getParent();
- }
- return config;
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#getParent()
- */
- public ILaunchConfigurationWorkingCopy getParent() {
- return fParent;
- }
-
- /**
- * Sets the launch configuration this working copy
- * is based on. Initializes the attributes of this
- * working copy to the current values of the given
- * configuration.
- *
- * @param original the launch configuration this working
- * copy is based on.
- * @exception CoreException if unable to initialize this
- * working copy based on the original's current attribute
- * set
- */
- private void copyFrom(LaunchConfiguration original) throws CoreException {
- LaunchConfigurationInfo info = original.getInfo();
- setInfo(info.getCopy());
- fDirty = false;
- }
-
- /**
- * Sets the launch configuration this working copy
- * is based on.
- *
- * @param original the launch configuration this working
- * copy is based on.
- */
- private void setOriginal(LaunchConfiguration original) {
- fOriginal = original;
- }
-
- /**
- * Sets the working copy info object for this working copy.
- *
- * @param info a copy of attributes from this working copy's
- * original launch configuration
- */
- protected void setInfo(LaunchConfigurationInfo info) {
- fInfo = info;
- }
-
- /**
- * @see ILaunchConfiguration#isWorkingCopy()
- */
- public boolean isWorkingCopy() {
- return true;
- }
-
- /**
- * A working copy keeps a local info object that is not
- * cached with the launch manager.
- *
- * @see LaunchConfiguration#getInfo()
- */
- protected LaunchConfigurationInfo getInfo() {
- return fInfo;
- }
-
- /**
- * Sets this working copy's state to dirty.
- * Notifies listeners that this working copy has
- * changed.
- */
- private void setDirty() {
- fDirty = true;
- if (!suppressChangeNotification()) {
- getLaunchManager().getConfigurationNotifier().notify(this, LaunchManager.CHANGED);
- }
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#setModes(java.util.Set)
- */
- public void setModes(Set modes) {
- getInfo().setAttribute(ATTR_LAUNCH_MODES, (modes.size() > 0 ? modes : null));
- setDirty();
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#addModes(java.util.Set)
- */
- public void addModes(Set modes) {
- try {
- Set opts = getModes();
- if(opts.addAll(modes)) {
- getInfo().setAttribute(ATTR_LAUNCH_MODES, opts);
- setDirty();
- }
- }
- catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#removeModes(java.util.Set)
- */
- public void removeModes(Set options) {
- try {
- Set opts = getModes();
- if(opts.removeAll(options)) {
- getInfo().setAttribute(ATTR_LAUNCH_MODES, (opts.size() < 1 ? null : opts));
- setDirty();
- }
- }
- catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#rename(String)
- */
- public void rename(String name) {
- if (!getName().equals(name)) {
- setName(name);
- fRenamed = isNew() || !(getOriginal().getName().equals(name));
- }
- }
-
- /**
- * Sets the new name for this configuration.
- *
- * @param name the new name for this configuration
- */
- protected void setName(String name) {
- super.setName(name);
- setDirty();
- }
-
- /**
- * Returns whether this working copy is new, or is a
- * working copy of another launch configuration.
- *
- * @return whether this working copy is new, or is a
- * working copy of another launch configuration
- */
- protected boolean isNew() {
- return getOriginal() == null;
- }
-
- /**
- * Returns whether this working copy is new or if its
- * location has changed from that of its original.
- *
- * @return whether this working copy is new or if its
- * location has changed from that of its original
- */
- protected boolean isMoved() {
- if (isNew() || fRenamed) {
- return true;
- }
- IContainer newContainer = getContainer();
- IContainer originalContainer = ((LaunchConfiguration)getOriginal()).getContainer();
- if (newContainer == originalContainer) {
- return false;
- }
- if (newContainer == null) {
- return !originalContainer.equals(newContainer);
- }
- return !newContainer.equals(originalContainer);
- }
-
- /**
- * A working copy cannot generate a memento.
- *
- * @see ILaunchConfiguration#getMemento()
- */
- public String getMemento() {
- return null;
- }
-
- /**
- * Returns whether change notification should be
- * suppressed
- */
- protected boolean suppressChangeNotification() {
- return fSuppressChange;
- }
-
- /**
- * @see ILaunchConfigurationWorkingCopy#setContainer(IContainer)
- */
- public void setContainer(IContainer container) {
- if (equalOrNull(getContainer(), container)) {
- return;
- }
- super.setContainer(container);
- setDirty();
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#setAttributes(java.util.Map)
- */
- public void setAttributes(Map attributes) {
- getInfo().setAttributes(attributes);
- setDirty();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#setResource(org.eclipse.core.resources.IResource)
- */
- public void setMappedResources(IResource[] resources) {
- ArrayList paths = null;
- ArrayList types = null;
- if(resources != null && resources.length > 0) {
- paths = new ArrayList(resources.length);
- types = new ArrayList(resources.length);
- for (int i = 0; i < resources.length; i++) {
- IResource resource = resources[i];
- if(resource != null) {
- paths.add(resource.getFullPath().toPortableString());
- types.add(new Integer(resource.getType()).toString());
- }
- }
- }
- setAttribute(LaunchConfiguration.ATTR_MAPPED_RESOURCE_PATHS, paths);
- setAttribute(LaunchConfiguration.ATTR_MAPPED_RESOURCE_TYPES, types);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#setPreferredLaunchDelegate(java.util.Set, java.lang.String)
- */
- public void setPreferredLaunchDelegate(Set modes, String delegateId) {
- if(modes != null) {
- try {
- Map delegates = getAttribute(LaunchConfiguration.ATTR_PREFERRED_LAUNCHERS, (Map)null);
- //copy map to avoid pointer issues
- Map map = new HashMap();
- if(delegates != null) {
- map.putAll(delegates);
- }
- if(delegateId == null) {
- map.remove(modes.toString());
- }
- else {
- map.put(modes.toString(), delegateId);
- }
- setAttribute(LaunchConfiguration.ATTR_PREFERRED_LAUNCHERS, map);
- }
- catch (CoreException ce) {DebugPlugin.log(ce);}
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.LaunchConfiguration#getWorkingCopy()
- * CONTEXTLAUNCHING
- */
- public ILaunchConfigurationWorkingCopy getWorkingCopy() throws CoreException {
- return new LaunchConfigurationWorkingCopy(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchConfigurationWorkingCopy#removeAttribute(java.lang.String)
- */
- public Object removeAttribute(String attributeName) {
- return getInfo().removeAttribute(attributeName);
- }
-}
-
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchDelegate.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchDelegate.java
deleted file mode 100644
index 8ec2e22b9..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchDelegate.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchDelegate;
-import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Proxy to a launch delegate extension
- * Clients can contribute launch delegates through the <code>launchDelegates</code> extension point
- *
- * Example contribution of the local java launch delegate
- * <pre>
- * <extension point="org.eclipse.debug.core.launchDelegates">
- <launchDelegate
- delegate="org.eclipse.jdt.launching.JavaLaunchDelegate"
- id="org.eclipse.jdt.launching.localJavaApplicationDelegate"
- modes="run, debug"
- name="%localJavaApplication"
- type="org.eclipse.jdt.launching.localJavaApplication">
- <modeCombination
- modes="run, profile">
- perspective="com.example.Perspective">
- </modeCombination>
- </launchDelegate>
- * </pre>
- *
- * Clients are NOT intended to subclass this class
- *
- * @see IConfigurationElementConstants
- *
- * @since 3.3
- */
-public final class LaunchDelegate implements ILaunchDelegate {
-
- /**
- * The configuration element for this delegate
- */
- private IConfigurationElement fElement = null;
-
- /**
- * The cached delegate. Remains null until asked for, then persisted
- */
- private ILaunchConfigurationDelegate fDelegate = null;
-
- //a listing of sets of
- private List fLaunchModes = null;
- private String fType = null;
- private HashMap fPerspectiveIds = null;
-
- /**
- * Constructor
- * @param element the configuration element to associate with this launch delegate
- */
- public LaunchDelegate(IConfigurationElement element) {
- fElement = element;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchDelegateProxy#getDelegate()
- */
- public ILaunchConfigurationDelegate getDelegate() throws CoreException {
- if(fDelegate == null) {
- Object obj = fElement.createExecutableExtension(IConfigurationElementConstants.DELEGATE);
- if(obj instanceof ILaunchConfigurationDelegate) {
- fDelegate = (ILaunchConfigurationDelegate)obj;
- } else {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, MessageFormat.format(DebugCoreMessages.LaunchDelegate_3, new String[]{getId()}), null));
- }
- }
- return fDelegate;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchDelegateProxy#getId()
- */
- public String getId() {
- return fElement.getAttribute(IConfigurationElementConstants.ID);
- }
-
- /**
- * Returns the id of the associated <code>ILaunchConfigurationType</code> or <code>null</code> if none provided
- * @return the id of the <code>ILaunchConfigurationType</code> associated with this delegate
- */
- public String getLaunchConfigurationTypeId() {
- if(fType == null) {
- //fall back to single association if no appliesTo
- fType = fElement.getAttribute(IConfigurationElementConstants.TYPE);
- if(fType == null) {
- //the case when we have passed a launch configuration type to the launch delegate
- fType = fElement.getAttribute(IConfigurationElementConstants.ID);
- }
- }
- return fType;
- }
-
- /**
- * Simple method to parse mode strings (separated by commas)
- * @param element the config element to read the mode string from
- * @return a set of the parsed strings or an empty collection
- * @since 3.3
- */
- private Set parseModes(IConfigurationElement element) {
- HashSet set = new HashSet();
- String modes = element.getAttribute(IConfigurationElementConstants.MODES);
- if (modes != null) {
- String[] strings = modes.split(","); //$NON-NLS-1$
- for (int i = 0; i < strings.length; i++) {
- set.add(strings[i].trim());
- }
- }
- return set;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchDelegateProxy#getModes()
- */
- public List getModes() {
- if(fLaunchModes == null) {
- fLaunchModes = new ArrayList();
- fPerspectiveIds = new HashMap();
- IConfigurationElement[] children = fElement.getChildren(IConfigurationElementConstants.MODE_COMBINATION);
- Set modeset = null;
- for (int i = 0; i < children.length; i++) {
- modeset = parseModes(children[i]);
- fLaunchModes.add(modeset);
- fPerspectiveIds.put(modeset, children[i].getAttribute(IConfigurationElementConstants.PERSPECTIVE));
- }
- //try to get the modes from the old definition and make each one
- //a separate set of one element
- modeset = null;
- String modes = fElement.getAttribute(IConfigurationElementConstants.MODES);
- if (modes != null) {
- String[] strings = modes.split(","); //$NON-NLS-1$
- for (int i = 0; i < strings.length; i++) {
- modeset = new HashSet();
- modeset.add(strings[i].trim());
- fLaunchModes.add(modeset);
- }
- }
- }
- return fLaunchModes;
- }
-
- /**
- * Returns the human readable name for this launch delegate
- * @return the human readable name for this launch delegate, or <code>null</code> if none
- */
- public String getName() {
- //try a delegateName attribute first, in the event this delegate was made from an ILaunchConfigurationType
- String name = fElement.getAttribute(IConfigurationElementConstants.DELEGATE_NAME);
- if(name == null) {
- name = fElement.getAttribute(IConfigurationElementConstants.NAME);
- if (name == null) {
- name = getContributorName();
- }
- name = name.trim();
- if (Character.isUpperCase(name.charAt(0))) {
- name = MessageFormat.format(DebugCoreMessages.LaunchDelegate_1, new String[]{name});
- } else {
- name = MessageFormat.format(DebugCoreMessages.LaunchDelegate_2, new String[]{name});
- }
- }
- return name;
- }
-
- /**
- * Returns the contributor name of this delegate (plug-in name).
- *
- * @return contributor name
- */
- public String getContributorName() {
- return fElement.getContributor().getName();
- }
-
- /**
- * Returns the associated source locator id or <code>null</code>
- * @return the associated source locator id or <code>null</code> if not provided
- */
- public String getSourceLocatorId() {
- return fElement.getAttribute(IConfigurationElementConstants.SOURCE_LOCATOR);
- }
-
- /**
- * Returns the associated source path computer id or <code>null</code>
- * @return the associated source path computer id or <code>null</code> if not provided
- */
- public String getSourcePathComputerId() {
- return fElement.getAttribute(IConfigurationElementConstants.SOURCE_PATH_COMPUTER);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchDelegate#getDescription()
- */
- public String getDescription() {
- String desc = fElement.getAttribute(IConfigurationElementConstants.DELEGATE_DESCRIPTION);
- if(desc == null) {
- return DebugCoreMessages.LaunchDelegate_0;
- }
- return desc;
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchDelegate#getPluginIdentifier()
- */
- public String getPluginIdentifier() {
- return fElement.getContributor().getName();
- }
-
- /**
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if(obj == null) {
- return false;
- }
- return obj instanceof ILaunchDelegate && getId() != null && getId().equals(((ILaunchDelegate)obj).getId());
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchDelegate#getPerspectiveId(java.util.Set)
- */
- public String getPerspectiveId(Set modes) {
- if(fPerspectiveIds == null) {
- getModes();
- }
- return (String) fPerspectiveIds.get(modes);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
deleted file mode 100644
index e4c901a2b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchManager.java
+++ /dev/null
@@ -1,2604 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sebastian Davids - bug 50567 Eclipse native environment support on Win98
- * Pawel Piech - Bug 82001: When shutting down the IDE, the debugger should first
- * attempt to disconnect debug targets before terminating them
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.Map.Entry;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceDeltaVisitor;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationListener;
-import org.eclipse.debug.core.ILaunchConfigurationType;
-import org.eclipse.debug.core.ILaunchDelegate;
-import org.eclipse.debug.core.ILaunchListener;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.ILaunchMode;
-import org.eclipse.debug.core.ILaunchesListener;
-import org.eclipse.debug.core.ILaunchesListener2;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IDisconnect;
-import org.eclipse.debug.core.model.IPersistableSourceLocator;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceContainerType;
-import org.eclipse.debug.internal.core.sourcelookup.SourcePathComputer;
-import org.eclipse.osgi.service.environment.Constants;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Manages launch configurations, launch configuration types, and registered launches.
- *
- * @see ILaunchManager
- */
-public class LaunchManager extends PlatformObject implements ILaunchManager, IResourceChangeListener {
-
- /**
- * Preferred launch delegate preference name.
- * <p>
- * Prior to 3.5 this preferred launch delegates for all launch
- * configuration types were serialized into a single XML string
- * and stored in this preference.
- * </p>
- * <p>
- * Since 3.5, the preferred launch delegates are stored in a separate
- * preference for each launch configuration type. The name of this
- * preference is composed of the prefix, followed by a slash, followed by
- * the launch configuration type id. The values contain a set of launch
- * delegates, delimited by a semi-colon, and each delegate entry contains
- * the delegate ID, followed by a comma, followed by comma-delimited
- * launch modes.
- *
- * @since 3.3
- */
- protected static final String PREF_PREFERRED_DELEGATES = DebugPlugin.getUniqueIdentifier() + ".PREFERRED_DELEGATES"; //$NON-NLS-1$
-
- /**
- * Boolean preference on whether to delete associated configurations when a project is deleted.
- *
- * @since 3.3
- */
- public static final String PREF_DELETE_CONFIGS_ON_PROJECT_DELETE = DebugPlugin.getUniqueIdentifier() + ".PREF_DELETE_CONFIGS_ON_PROJECT_DELETE"; //$NON-NLS-1$
-
- /**
- * Constant to define debug.ui for the status codes
- *
- * @since 3.2
- */
- private static final String DEBUG_UI = "org.eclipse.debug.ui"; //$NON-NLS-1$
-
- /**
- * Status code for which a UI prompter is registered.
- *
- * @since 3.2
- */
- protected static final IStatus promptStatus = new Status(IStatus.INFO, DEBUG_UI, 200, IInternalDebugCoreConstants.EMPTY_STRING, null);
-
- /**
- * Step filter manager
- */
- private StepFilterManager fStepFilterManager = null;
-
- /**
- * Notifies a launch config listener in a safe runnable to handle
- * exceptions.
- */
- class ConfigurationNotifier implements ISafeRunnable {
-
- private ILaunchConfigurationListener fListener;
- private int fType;
- private ILaunchConfiguration fConfiguration;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during launch configuration change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * Notifies the given listener of the add/change/remove
- *
- * @param configuration the configuration that has changed
- * @param update the type of change
- */
- public void notify(ILaunchConfiguration configuration, int update) {
- fConfiguration = configuration;
- fType = update;
- if (fLaunchConfigurationListeners.size() > 0) {
- Object[] listeners = fLaunchConfigurationListeners.getListeners();
- for (int i = 0; i < listeners.length; i++) {
- fListener = (ILaunchConfigurationListener)listeners[i];
- SafeRunner.run(this);
- }
- }
- fConfiguration = null;
- fListener = null;
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.launchConfigurationAdded(fConfiguration);
- break;
- case REMOVED:
- fListener.launchConfigurationRemoved(fConfiguration);
- break;
- case CHANGED:
- fListener.launchConfigurationChanged(fConfiguration);
- break;
- }
- }
- }
-
- /**
- * Notifies a launch listener (multiple launches) in a safe runnable to
- * handle exceptions.
- */
- class LaunchesNotifier implements ISafeRunnable {
-
- private ILaunchesListener fListener;
- private int fType;
- private ILaunch[] fNotifierLaunches;
- private ILaunch[] fRegistered;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during launch change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * Notifies the given listener of the adds/changes/removes
- *
- * @param launches the launches that changed
- * @param update the type of change
- */
- public void notify(ILaunch[] launches, int update) {
- fNotifierLaunches = launches;
- fType = update;
- fRegistered = null;
- Object[] copiedListeners= fLaunchesListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (ILaunchesListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- fNotifierLaunches = null;
- fRegistered = null;
- fListener = null;
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.launchesAdded(fNotifierLaunches);
- break;
- case REMOVED:
- fListener.launchesRemoved(fNotifierLaunches);
- break;
- case CHANGED:
- case TERMINATE:
- if (fRegistered == null) {
- List registered = null;
- for (int j = 0; j < fNotifierLaunches.length; j++) {
- if (isRegistered(fNotifierLaunches[j])) {
- if (registered != null) {
- registered.add(fNotifierLaunches[j]);
- }
- } else {
- if (registered == null) {
- registered = new ArrayList(fNotifierLaunches.length);
- for (int k = 0; k < j; k++) {
- registered.add(fNotifierLaunches[k]);
- }
- }
- }
- }
- if (registered == null) {
- fRegistered = fNotifierLaunches;
- } else {
- fRegistered = (ILaunch[])registered.toArray(new ILaunch[registered.size()]);
- }
- }
- if (fRegistered.length > 0) {
- if (fType == CHANGED) {
- fListener.launchesChanged(fRegistered);
- }
- if (fType == TERMINATE && fListener instanceof ILaunchesListener2) {
- ((ILaunchesListener2)fListener).launchesTerminated(fRegistered);
- }
- }
- break;
- }
- }
- }
-
- /**
- * Visitor for handling a resource begin deleted, and the need to check mapped configurations
- * for auto-deletion
- * @since 3.4
- */
- class MappedResourceVisitor implements IResourceDeltaVisitor {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta)
- */
- public boolean visit(IResourceDelta delta) throws CoreException {
- if (0 != (delta.getFlags() & IResourceDelta.OPEN)) {
- return false;
- }
- if(delta.getKind() == IResourceDelta.REMOVED && delta.getFlags() != IResourceDelta.MOVED_TO) {
- ArrayList configs = collectAssociatedLaunches(delta.getResource());
- if(configs.size() > 0) {
- for(Iterator iter = configs.iterator(); iter.hasNext();) {
- try {
- ((ILaunchConfiguration)iter.next()).delete();
- } catch (CoreException e) {
- DebugPlugin.log(e.getStatus());
- }
- }
- }
- return false;
- }
- return true;
- }
- }
-
- /**
- * Visitor for handling resource deltas.
- */
- class LaunchManagerVisitor implements IResourceDeltaVisitor {
-
- /**
- * @see IResourceDeltaVisitor#visit(IResourceDelta)
- */
- public boolean visit(IResourceDelta delta) {
- if (delta == null) {
- return false;
- }
- if (0 != (delta.getFlags() & IResourceDelta.OPEN)) {
- if (delta.getResource() instanceof IProject) {
- IProject project = (IProject)delta.getResource();
- if (project.isOpen()) {
- LaunchManager.this.projectOpened(project);
- } else {
- LaunchManager.this.projectClosed(project);
- }
- }
- return false;
- }
- IResource resource = delta.getResource();
- if (resource instanceof IFile) {
- IFile file = (IFile)resource;
- if (ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION.equals(file.getFileExtension())) {
- ILaunchConfiguration handle = new LaunchConfiguration(file);
- switch (delta.getKind()) {
- case IResourceDelta.ADDED :
- LaunchManager.this.launchConfigurationAdded(handle);
- break;
- case IResourceDelta.REMOVED :
- LaunchManager.this.launchConfigurationDeleted(handle);
- break;
- case IResourceDelta.CHANGED :
- LaunchManager.this.launchConfigurationChanged(handle);
- break;
- }
- }
- return false;
- }
- return true;
- }
- }
-
- /**
- * Notifies a launch listener (single launch) in a safe runnable to handle
- * exceptions.
- */
- class LaunchNotifier implements ISafeRunnable {
-
- private ILaunchListener fListener;
- private int fType;
- private ILaunch fLaunch;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, "An exception occurred during launch change notification.", exception); //$NON-NLS-1$
- DebugPlugin.log(status);
- }
-
- /**
- * Notifies listeners of the add/change/remove
- *
- * @param launch the launch that has changed
- * @param update the type of change
- */
- public void notify(ILaunch launch, int update) {
- fLaunch = launch;
- fType = update;
- Object[] copiedListeners= fListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (ILaunchListener)copiedListeners[i];
- SafeRunner.run(this);
- }
- fLaunch = null;
- fListener = null;
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.launchAdded(fLaunch);
- break;
- case REMOVED:
- fListener.launchRemoved(fLaunch);
- break;
- case CHANGED:
- if (isRegistered(fLaunch)) {
- fListener.launchChanged(fLaunch);
- }
- break;
- }
- }
- }
-
- /**
- * Collects files whose extension matches the launch configuration file
- * extension.
- */
- class ResourceProxyVisitor implements IResourceProxyVisitor {
-
- private List fList;
-
- protected ResourceProxyVisitor(List list) {
- fList= list;
- }
- /**
- * @see org.eclipse.core.resources.IResourceProxyVisitor#visit(org.eclipse.core.resources.IResourceProxy)
- */
- public boolean visit(IResourceProxy proxy) {
- if (proxy.getType() == IResource.FILE) {
- if (ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION.equalsIgnoreCase(proxy.requestFullPath().getFileExtension())) {
- fList.add(proxy.requestResource());
- }
- return false;
- }
- return true;
- }
- }
-
- /**
- * Internal class used to hold information about a preferred delegate
- *
- * @since 3.3
- */
- class PreferredDelegate {
- private ILaunchDelegate fDelegate = null;
- private String fTypeid = null;
- private Set fModes = null;
-
- public PreferredDelegate(ILaunchDelegate delegate, String typeid, Set modes) {
- fDelegate = delegate;
- fTypeid = typeid;
- fModes = modes;
- }
-
- public String getTypeId() {
- return fTypeid;
- }
-
- public Set getModes() {
- return fModes;
- }
-
- public ILaunchDelegate getDelegate() {
- return fDelegate;
- }
- }
-
- /**
- * Types of notifications
- */
- public static final int ADDED = 0;
- public static final int REMOVED= 1;
- public static final int CHANGED= 2;
- public static final int TERMINATE= 3;
-
- /**
- * The collection of native environment variables on the user's system. Cached
- * after being computed once as the environment cannot change.
- */
- private static HashMap fgNativeEnv= null;
- private static HashMap fgNativeEnvCasePreserved= null;
-
- /**
- * Path to the local directory where local launch configurations
- * are stored with the workspace.
- */
- public static final IPath LOCAL_LAUNCH_CONFIGURATION_CONTAINER_PATH =
- DebugPlugin.getDefault().getStateLocation().append(".launches"); //$NON-NLS-1$
- /**
- * Returns a Document that can be used to build a DOM tree
- * @return the Document
- * @throws ParserConfigurationException if an exception occurs creating the document builder
- * @since 3.0
- */
- public static Document getDocument() throws ParserConfigurationException {
- DocumentBuilderFactory dfactory= DocumentBuilderFactory.newInstance();
- DocumentBuilder docBuilder= dfactory.newDocumentBuilder();
- Document doc= docBuilder.newDocument();
- return doc;
- }
-
- /**
- * Serializes a XML document into a string - encoded in UTF8 format,
- * with platform line separators.
- *
- * @param doc document to serialize
- * @return the document as a string
- * @throws TransformerException if an unrecoverable error occurs during the serialization
- * @throws IOException if the encoding attempted to be used is not supported
- */
- public static String serializeDocument(Document doc) throws TransformerException, IOException {
- ByteArrayOutputStream s = new ByteArrayOutputStream();
- TransformerFactory factory = TransformerFactory.newInstance();
- Transformer transformer = factory.newTransformer();
- transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
- transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
- DOMSource source = new DOMSource(doc);
- StreamResult outputTarget = new StreamResult(s);
- transformer.transform(source, outputTarget);
- return s.toString("UTF8"); //$NON-NLS-1$
- }
-
- /**
- * Collection of defined launch configuration type
- * extensions.
- */
- private List fLaunchConfigurationTypes = null;
-
- /**
- * Launch configuration cache. Keys are <code>LaunchConfiguration</code>,
- * values are <code>LaunchConfigurationInfo</code>.
- */
- private Map fLaunchConfigurations = new HashMap(10);
-
- /**
- * A cache of launch configuration names currently in the workspace.
- */
- private String[] fSortedConfigNames = null;
-
- /**
- * Collection of all launch configurations in the workspace.
- * <code>List</code> of <code>ILaunchConfiguration</code>.
- */
- private List fLaunchConfigurationIndex = null;
-
- /**
- * Launch configuration comparator extensions,
- * keyed by attribute name.
- */
- private Map fComparators = null;
-
- /**
- * Registered launch modes, or <code>null</code> if not initialized.
- * Keys are mode identifiers, values are <code>ILaunchMode</code>s.
- */
- private Map fLaunchModes = null;
-
- /**
- * A map of LaunchDelegate objects stored by id of delegate, or launch config type
- */
- private HashMap fLaunchDelegates = null;
-
- /**
- * Initial startup cache of preferred delegate so that the debug preferences are only parsed once
- *
- * @since 3.3
- */
- private Set fPreferredDelegates = null;
-
- /**
- * Collection of launches
- */
- private List fLaunches= new ArrayList(10);
- /**
- * Set of launches for efficient 'isRegistered()' check
- */
- private Set fLaunchSet = new HashSet(10);
-
- /**
- * Collection of listeners
- */
- private ListenerList fListeners = new ListenerList();
-
- /**
- * Collection of "plural" listeners.
- * @since 2.1
- */
- private ListenerList fLaunchesListeners = new ListenerList();
-
- /**
- * Visitor used to process resource deltas,
- * to update launch configuration index.
- */
- private LaunchManagerVisitor fgVisitor;
-
- /**
- * Visitor used to process a deleted resource,
- * to remove mapped launch configurations in the event
- * auto-removal of launch configurations is enabled
- *
- * @since 3.4
- */
- private MappedResourceVisitor fgMRVisitor;
-
- /**
- * Whether this manager is listening for resource change events
- */
- private boolean fListening = false;
-
- /**
- * Launch configuration listeners
- */
- private ListenerList fLaunchConfigurationListeners = new ListenerList();
-
- /**
- * Table of source locator extensions. Keys
- * are identifiers, and values are associated
- * configuration elements.
- */
- private Map fSourceLocators = null;
-
- /**
- * The handles of launch configurations being moved, or <code>null</code>
- */
- private ILaunchConfiguration fFrom;
-
- private ILaunchConfiguration fTo;
-
- /**
- * Map of source container type extensions. Keys are extension ids
- * and values are associated configuration elements.
- */
- private Map sourceContainerTypes;
-
- /**
- * Map of source path computer extensions. Keys are extension ids
- * and values are associated configuration elements.
- */
- private Map sourcePathComputers;
-
- private Set fActiveModes;
-
- /**
- * @see ILaunchManager#addLaunch(ILaunch)
- */
- public void addLaunch(ILaunch launch) {
- if (internalAddLaunch(launch)) {
- fireUpdate(launch, ADDED);
- fireUpdate(new ILaunch[] {launch}, ADDED);
- }
- }
-
- /**
- * @see ILaunchManager#addLaunchConfigurationListener(ILaunchConfigurationListener)
- */
- public void addLaunchConfigurationListener(ILaunchConfigurationListener listener) {
- fLaunchConfigurationListeners.add(listener);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#addLaunches(org.eclipse.debug.core.ILaunch[])
- */
- public void addLaunches(ILaunch[] launches) {
- List added = new ArrayList(launches.length);
- for (int i = 0; i < launches.length; i++) {
- if (internalAddLaunch(launches[i])) {
- added.add(launches[i]);
- }
- }
- if (!added.isEmpty()) {
- ILaunch[] addedLaunches = (ILaunch[])added.toArray(new ILaunch[added.size()]);
- fireUpdate(addedLaunches, ADDED);
- for (int i = 0; i < addedLaunches.length; i++) {
- fireUpdate(launches[i], ADDED);
- }
- }
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#addLaunchListener(org.eclipse.debug.core.ILaunchesListener)
- */
- public void addLaunchListener(ILaunchesListener listener) {
- fLaunchesListeners.add(listener);
- }
-
- /**
- * @see ILaunchManager#addLaunchListener(ILaunchListener)
- */
- public void addLaunchListener(ILaunchListener listener) {
- fListeners.add(listener);
- }
-
- /**
- * Computes and caches the native system environment variables as a map of
- * variable names and values (Strings) in the given map.
- * <p>
- * Note that WIN32 system environment preserves
- * the case of variable names but is otherwise case insensitive.
- * Depending on what you intend to do with the environment, the
- * lack of normalization may or may not be create problems. This
- * method preserves mixed-case keys using the variable names
- * recorded by the OS.
- * </p>
- * @since 3.1
- */
- private void cacheNativeEnvironment(Map cache) {
- try {
- String nativeCommand= null;
- boolean isWin9xME= false; //see bug 50567
- String fileName= null;
- if (Platform.getOS().equals(Constants.OS_WIN32)) {
- String osName= System.getProperty("os.name"); //$NON-NLS-1$
- isWin9xME= osName != null && (osName.startsWith("Windows 9") || osName.startsWith("Windows ME")); //$NON-NLS-1$ //$NON-NLS-2$
- if (isWin9xME) {
- // Win 95, 98, and ME
- // SET might not return therefore we pipe into a file
- IPath stateLocation= DebugPlugin.getDefault().getStateLocation();
- fileName= stateLocation.toOSString() + File.separator + "env.txt"; //$NON-NLS-1$
- nativeCommand= "command.com /C set > " + fileName; //$NON-NLS-1$
- } else {
- // Win NT, 2K, XP
- nativeCommand= "cmd.exe /C set"; //$NON-NLS-1$
- }
- } else if (!Platform.getOS().equals(Constants.OS_UNKNOWN)){
- nativeCommand= "env"; //$NON-NLS-1$
- }
- if (nativeCommand == null) {
- return;
- }
- Process process= Runtime.getRuntime().exec(nativeCommand);
- if (isWin9xME) {
- //read piped data on Win 95, 98, and ME
- Properties p= new Properties();
- File file= new File(fileName);
- InputStream stream = new BufferedInputStream(new FileInputStream(file));
- p.load(stream);
- stream.close();
- if (!file.delete()) {
- file.deleteOnExit(); // if delete() fails try again on VM close
- }
- for (Enumeration enumeration = p.keys(); enumeration.hasMoreElements();) {
- // Win32's environment variables are case insensitive. Put everything
- // to uppercase so that (for example) the "PATH" variable will match
- // "pAtH" correctly on Windows.
- String key= (String) enumeration.nextElement();
- //no need to cast value
- cache.put(key, p.get(key));
- }
- } else {
- //read process directly on other platforms
- //we need to parse out matching '{' and '}' for function declarations in .bash environments
- // pattern is [func name]=() { and we must find the '}' on its own line with no trailing ';'
- InputStream stream = process.getInputStream();
- InputStreamReader isreader = new InputStreamReader(stream);
- BufferedReader reader = new BufferedReader(isreader);
- String line = reader.readLine();
- String key = null;
- String value = null;
- while (line != null) {
- int func = line.indexOf("=()"); //$NON-NLS-1$
- if(func > 0) {
- key = line.substring(0, func);
- //scan until we find the closing '}' with no following chars
- value = line.substring(func+1);
- while(line != null && !line.equals("}")) { //$NON-NLS-1$
- line = reader.readLine();
- if(line != null) {
- value += line;
- }
- }
- line = reader.readLine();
- }
- else {
- int separator = line.indexOf('=');
- if (separator > 0) {
- key = line.substring(0, separator);
- value = line.substring(separator + 1);
- line = reader.readLine();
- if(line != null) {
- //this line has a '=' read ahead to check next line for '=', might be broken on more than one line
- separator = line.indexOf('=');
- while(separator < 0) {
- value += line.trim();
- line = reader.readLine();
- if(line == null) {
- //if next line read is the end of the file quit the loop
- break;
- }
- separator = line.indexOf('=');
- }
- }
- }
- }
- if(key != null) {
- cache.put(key, value);
- key = null;
- value = null;
- }
- else {
- line = reader.readLine();
- }
- }
- reader.close();
- }
- } catch (IOException e) {
- // Native environment-fetching code failed.
- // This can easily happen and is not useful to log.
- }
- }
-
- /**
- * Clears all launch configurations (if any have been accessed)
- */
- private void clearAllLaunchConfigurations() {
- if (fLaunchConfigurationTypes != null) {
- fLaunchConfigurationTypes.clear();
- }
- if (fLaunchConfigurationIndex != null) {
- fLaunchConfigurationIndex.clear();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getEncoding(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public String getEncoding(ILaunchConfiguration configuration) throws CoreException {
- String encoding = configuration.getAttribute(DebugPlugin.ATTR_CONSOLE_ENCODING, (String)null);
- if(encoding == null) {
- IResource[] resources = configuration.getMappedResources();
- if(resources != null && resources.length > 0) {
- IResource res = resources[0];
- if(res instanceof IFile) {
- return ((IFile)res).getCharset();
- }
- else if(res instanceof IContainer) {
- return ((IContainer)res).getDefaultCharset();
- }
- }
- else {
- return ResourcesPlugin.getEncoding();
- }
- }
- return encoding;
- }
-
- /**
- * The launch config name cache is cleared when a config is added, deleted or changed.
- */
- protected void clearConfigNameCache() {
- fSortedConfigNames = null;
- }
-
- /**
- * Return an instance of DebugException containing the specified message and Throwable.
- */
- protected DebugException createDebugException(String message, Throwable throwable) {
- return new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, message, throwable
- )
- );
- }
-
- /**
- * Return a LaunchConfigurationInfo object initialized from XML contained in
- * the specified stream. Simply pass out any exceptions encountered so that
- * caller can deal with them. This is important since caller may need access to the
- * actual exception.
- */
- protected LaunchConfigurationInfo createInfoFromXML(InputStream stream) throws CoreException,
- ParserConfigurationException,
- IOException,
- SAXException {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
- root = parser.parse(new InputSource(stream)).getDocumentElement();
- LaunchConfigurationInfo info = new LaunchConfigurationInfo();
- info.initializeFromXML(root);
- return info;
- }
-
- /**
- * Finds and returns all launch configurations in the given
- * container (and sub-containers)
- *
- * @param container the container to search
- * @exception CoreException an exception occurs traversing
- * the container.
- * @return all launch configurations in the given container
- */
- protected List findLaunchConfigurations(IContainer container) {
- List list = new ArrayList(10);
- if (container instanceof IProject && !((IProject)container).isOpen()) {
- return list;
- }
- ResourceProxyVisitor visitor= new ResourceProxyVisitor(list);
- try {
- container.accept(visitor, IResource.NONE);
- } catch (CoreException ce) {
- //Closed project...should not be possible with previous check
- }
- Iterator iter = list.iterator();
- List configs = new ArrayList(list.size());
- ILaunchConfiguration config = null;
- while (iter.hasNext()) {
- config = getLaunchConfiguration((IFile)iter.next());
- if(config != null && config.exists()) {
- configs.add(config);
- }
- }
- return configs;
- }
-
- /**
- * Finds and returns all local launch configurations.
- *
- * @return all local launch configurations
- */
- protected List findLocalLaunchConfigurations() {
- IPath containerPath = LOCAL_LAUNCH_CONFIGURATION_CONTAINER_PATH;
- List configs = new ArrayList(10);
- final File directory = containerPath.toFile();
- if (directory.isDirectory()) {
- FilenameFilter filter = new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return dir.equals(directory) &&
- name.endsWith(ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION);
- }
- };
- File[] files = directory.listFiles(filter);
- LaunchConfiguration config = null;
- for (int i = 0; i < files.length; i++) {
- config = new LaunchConfiguration(LaunchConfiguration.getSimpleName(files[i].getName()), null);
- configs.add(config);
- }
- }
- return configs;
- }
-
- /**
- * Fires notification to (single) listeners that a launch has been
- * added/changed/removed.
- *
- * @param launch launch that has changed
- * @param update type of change
- */
- public void fireUpdate(ILaunch launch, int update) {
- new LaunchNotifier().notify(launch, update);
- }
-
- /**
- * Fires notification to (plural) listeners that a launch has been
- * added/changed/removed.
- *
- * @param launches launches that have changed
- * @param update type of change
- */
- public void fireUpdate(ILaunch[] launches, int update) {
- new LaunchesNotifier().notify(launches, update);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#generateUniqueLaunchConfigurationNameFrom(String)
- */
- public String generateUniqueLaunchConfigurationNameFrom(String baseName) {
- int index = 1;
- int length= baseName.length();
- int copyIndex = baseName.lastIndexOf(" ("); //$NON-NLS-1$
- if (copyIndex > -1 && length > copyIndex + 2 && baseName.charAt(length - 1) == ')') {
- String trailer = baseName.substring(copyIndex + 2, length -1);
- if (isNumber(trailer)) {
- try {
- index = Integer.parseInt(trailer);
- baseName = baseName.substring(0, copyIndex);
- }
- catch (NumberFormatException nfe) {}
- }
- }
- String newName = baseName;
- while (isExistingLaunchConfigurationName(newName)) {
- newName = MessageFormat.format(DebugCoreMessages.LaunchManager_31, new String[] {baseName, Integer.toString(index)});
- index++;
- }
-
- return newName;
- }
-
- /**
- * Return a String that can be used as the name of a launch configuration. The name
- * is guaranteed to be unique (no existing or temporary launch configurations will have this name).
- * The name that is returned uses the <code>basename</code> as a starting point. If
- * there is no existing launch configuration with this name, then <code>basename</code>
- * is returned. Otherwise, the value returned consists of the specified base plus
- * some suffix that guarantees uniqueness. Passing <code>null</code> as the set of reserved names will cause this
- * method to return <code>generateUniqueLaunchConfigurationNameFrom(String baseName)</code>.
- *
- * By specifying a set of reserved names, you can further constrain the name that will be generated
- * by this method. For example you can give a base name of 'test' and a reserved set of [test(1), test(2)],
- * which will result in a name of 'test(3)' being returned iff a configuration with the name 'test' already exists.
- *
- * @return launch configuration name
- * @param basename the String that the returned name must begin with
- * @param reservednames a set of strings that is further used to constrain what names can be generated
- * @since 3.3
- */
- public String generateUniqueLaunchConfigurationNameFrom(String basename, Set reservednames) {
- if(reservednames == null) {
- return generateUniqueLaunchConfigurationNameFrom(basename);
- }
- int index = 1;
- int length= basename.length();
- String base = basename;
- int copyIndex = base.lastIndexOf(" ("); //$NON-NLS-1$
- if (copyIndex > -1 && length > copyIndex + 2 && base.charAt(length - 1) == ')') {
- String trailer = base.substring(copyIndex + 2, length -1);
- if (isNumber(trailer)) {
- try {
- index = Integer.parseInt(trailer);
- base = base.substring(0, copyIndex);
- }
- catch (NumberFormatException nfe) {}
- }
- }
- String newname = base;
- StringBuffer buffer = null;
- while (isExistingLaunchConfigurationName(newname) || reservednames.contains(newname)) {
- buffer = new StringBuffer(base);
- buffer.append(" ("); //$NON-NLS-1$
- buffer.append(String.valueOf(index));
- index++;
- buffer.append(')');
- newname = buffer.toString();
- }
- return newname;
- }
-
- /**
- * Returns a collection of all launch configuration handles in
- * the workspace. This collection is initialized lazily.
- *
- * @return all launch configuration handles
- */
- private synchronized List getAllLaunchConfigurations() {
- if (fLaunchConfigurationIndex == null) {
- try {
- fLaunchConfigurationIndex = new ArrayList(20);
- List configs = findLocalLaunchConfigurations();
- verifyConfigurations(configs, fLaunchConfigurationIndex);
- configs = findLaunchConfigurations(ResourcesPlugin.getWorkspace().getRoot());
- verifyConfigurations(configs, fLaunchConfigurationIndex);
- } finally {
- hookResourceChangeListener();
- }
- }
- return fLaunchConfigurationIndex;
- }
-
- /**
- * Return a sorted array of the names of all <code>ILaunchConfiguration</code>s in
- * the workspace. These are cached, and cache is cleared when a new config is added,
- * deleted or changed.
- */
- protected synchronized String[] getAllSortedConfigNames() {
- if (fSortedConfigNames == null) {
- ILaunchConfiguration[] configs = getLaunchConfigurations();
- fSortedConfigNames = new String[configs.length];
- for (int i = 0; i < configs.length; i++) {
- fSortedConfigNames[i] = configs[i].getName();
- }
- Arrays.sort(fSortedConfigNames);
- }
- return fSortedConfigNames;
- }
-
- /**
- * Returns the comparator registered for the given attribute, or
- * <code>null</code> if none.
- *
- * @param attributeName attribute for which a comparator is required
- * @return comparator, or <code>null</code> if none
- */
- protected Comparator getComparator(String attributeName) {
- Map map = getComparators();
- return (Comparator)map.get(attributeName);
- }
-
- /**
- * Returns comparators, loading if required
- */
- protected Map getComparators() {
- initializeComparators();
- return fComparators;
- }
-
- /**
- * Returns the launch configurations specified by the given
- * XML document.
- *
- * @param root XML document
- * @return list of launch configurations
- * @exception IOException if an exception occurs reading the XML
- */
- protected List getConfigsFromXML(Element root) throws CoreException {
- DebugException invalidFormat =
- new DebugException(
- new Status(
- IStatus.ERROR, DebugPlugin.getUniqueIdentifier(),
- DebugException.REQUEST_FAILED, DebugCoreMessages.LaunchManager_Invalid_launch_configuration_index__18, null
- )
- );
-
- if (!root.getNodeName().equalsIgnoreCase("launchConfigurations")) { //$NON-NLS-1$
- throw invalidFormat;
- }
-
- // read each launch configuration
- List configs = new ArrayList(4);
- NodeList list = root.getChildNodes();
- int length = list.getLength();
- Node node = null;
- Element entry = null;
- String memento = null;
- for (int i = 0; i < length; ++i) {
- node = list.item(i);
- short type = node.getNodeType();
- if (type == Node.ELEMENT_NODE) {
- entry = (Element) node;
- if (!entry.getNodeName().equals("launchConfiguration")) { //$NON-NLS-1$
- throw invalidFormat;
- }
- memento = entry.getAttribute("memento"); //$NON-NLS-1$
- if (memento == null) {
- throw invalidFormat;
- }
- configs.add(getLaunchConfiguration(memento));
- }
- }
- return configs;
- }
-
- protected ConfigurationNotifier getConfigurationNotifier() {
- return new ConfigurationNotifier();
- }
-
- /**
- * @see ILaunchManager#getDebugTargets()
- */
- public IDebugTarget[] getDebugTargets() {
- synchronized (fLaunches) {
- List allTargets= new ArrayList(fLaunches.size());
- if (fLaunches.size() > 0) {
- Iterator e = fLaunches.iterator();
- IDebugTarget[] targets = null;
- while (e.hasNext()) {
- targets = ((ILaunch) e.next()).getDebugTargets();
- for (int i = 0; i < targets.length; i++) {
- allTargets.add(targets[i]);
- }
- }
- }
- return (IDebugTarget[])allTargets.toArray(new IDebugTarget[allTargets.size()]);
- }
- }
-
- /**
- * Returns the resource delta visitor for the launch manager.
- *
- * @return the resource delta visitor for the launch manager
- */
- private LaunchManagerVisitor getDeltaVisitor() {
- if (fgVisitor == null) {
- fgVisitor= new LaunchManagerVisitor();
- }
- return fgVisitor;
- }
-
- /**
- * Returns the resource delta visitor for auto-removal of mapped launch configurations
- * @return the resource delta visitor for auto-removal of mapped launch configurations
- *
- * @since 3.4
- */
- private MappedResourceVisitor getMappedResourceVisitor() {
- if(fgMRVisitor == null) {
- fgMRVisitor = new MappedResourceVisitor();
- }
- return fgMRVisitor;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getEnvironment(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public String[] getEnvironment(ILaunchConfiguration configuration) throws CoreException {
- Map configEnv = configuration.getAttribute(ATTR_ENVIRONMENT_VARIABLES, (Map) null);
- if (configEnv == null) {
- return null;
- }
- Map env = new HashMap();
- // build base environment
- boolean append = configuration.getAttribute(ATTR_APPEND_ENVIRONMENT_VARIABLES, true);
- if (append) {
- env.putAll(getNativeEnvironmentCasePreserved());
- }
-
- // Add variables from config
- Iterator iter= configEnv.entrySet().iterator();
- boolean win32= Platform.getOS().equals(Constants.OS_WIN32);
- Map.Entry entry = null;
- String key = null;
- String value = null;
- Object nativeValue = null;
- Iterator envIter = null;
- Map.Entry nativeEntry = null;
- String nativeKey = null;
- while (iter.hasNext()) {
- entry = (Map.Entry) iter.next();
- key = (String) entry.getKey();
- value = (String) entry.getValue();
- // translate any string substitution variables
- if (value != null) {
- value = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(value);
- }
- boolean added= false;
- if (win32) {
- // First, check if the key is an exact match for an existing key.
- nativeValue = env.get(key);
- if (nativeValue != null) {
- // If an exact match is found, just replace the value
- env.put(key, value);
- } else {
- // Win32 variables are case-insensitive. If an exact match isn't found, iterate to
- // check for a case-insensitive match. We maintain the key's case (see bug 86725),
- // but do a case-insensitive comparison (for example, "pAtH" will still override "PATH").
- envIter = env.entrySet().iterator();
- while (envIter.hasNext()) {
- nativeEntry = (Map.Entry) envIter.next();
- nativeKey = (String) (nativeEntry).getKey();
- if (nativeKey.equalsIgnoreCase(key)) {
- nativeEntry.setValue(value);
- added = true;
- break;
- }
- }
- }
- }
- if (!added) {
- env.put(key, value);
- }
- }
-
- iter = env.entrySet().iterator();
- List strings = new ArrayList(env.size());
- StringBuffer buffer = null;
- while (iter.hasNext()) {
- entry = (Map.Entry) iter.next();
- buffer = new StringBuffer((String) entry.getKey());
- buffer.append('=').append((String) entry.getValue());
- strings.add(buffer.toString());
- }
- return (String[]) strings.toArray(new String[strings.size()]);
- }
-
- /**
- * Returns the info object for the specified launch configuration.
- * If the configuration exists, but is not yet in the cache,
- * an info object is built and added to the cache.
- *
- * @exception CoreException if an exception occurs building
- * the info object
- * @exception DebugException if the config does not exist
- * @since 3.5
- */
- protected LaunchConfigurationInfo getInfo(LaunchConfiguration config) throws CoreException {
- LaunchConfigurationInfo info = (LaunchConfigurationInfo)fLaunchConfigurations.get(config);
- if (info == null) {
- IFileStore store = config.getFileStore();
- if (config.exists()) {
- BufferedInputStream stream = null;
- try {
- stream = new BufferedInputStream(store.openInputStream(EFS.NONE, null));
- info = createInfoFromXML(stream);
- synchronized (this) {
- fLaunchConfigurations.put(config, info);
- }
- } catch (FileNotFoundException e) {
- throwException(config, e);
- } catch (SAXException e) {
- throwException(config, e);
- } catch (ParserConfigurationException e) {
- throwException(config, e);
- } catch (IOException e) {
- throwException(config, e);
- } finally {
- if (stream != null) {
- try {
- stream.close();
- } catch (IOException e) {
- throwException(config, e);
- }
- }
- }
-
- } else {
- if (store != null){
- throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist, new String[]{config.getName(), store.toURI().toString()}), null);
- } else {
- throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager_does_not_exist_no_store_found, new String[]{config.getName()}), null);
- }
- }
- }
- return info;
- }
-
- /**
- * @see ILaunchManager#getLaunchConfiguration(IFile)
- */
- public ILaunchConfiguration getLaunchConfiguration(IFile file) {
- hookResourceChangeListener();
- return new LaunchConfiguration(file);
- }
-
- /**
- * @see ILaunchManager#getLaunchConfiguration(String)
- */
- public ILaunchConfiguration getLaunchConfiguration(String memento) throws CoreException {
- hookResourceChangeListener();
- return new LaunchConfiguration(memento);
- }
-
- /**
- * @see ILaunchManager#getLaunchConfigurations()
- */
- public synchronized ILaunchConfiguration[] getLaunchConfigurations() {
- List allConfigs = getAllLaunchConfigurations();
- return (ILaunchConfiguration[])allConfigs.toArray(new ILaunchConfiguration[allConfigs.size()]);
- }
-
- /**
- * @see ILaunchManager#getLaunchConfigurations(ILaunchConfigurationType)
- */
- public synchronized ILaunchConfiguration[] getLaunchConfigurations(ILaunchConfigurationType type) throws CoreException {
- Iterator iter = getAllLaunchConfigurations().iterator();
- List configs = new ArrayList();
- ILaunchConfiguration config = null;
- while (iter.hasNext()) {
- config = (ILaunchConfiguration)iter.next();
- if (config.getType().equals(type)) {
- configs.add(config);
- }
- }
- return (ILaunchConfiguration[])configs.toArray(new ILaunchConfiguration[configs.size()]);
- }
-
- /**
- * Returns all launch configurations that are stored as resources
- * in the given project.
- *
- * @param project a project
- * @return collection of launch configurations that are stored as resources
- * in the given project
- */
- protected synchronized List getLaunchConfigurations(IProject project) {
- Iterator iter = getAllLaunchConfigurations().iterator();
- List configs = new ArrayList();
- ILaunchConfiguration config = null;
- IFile file = null;
- while (iter.hasNext()) {
- config = (ILaunchConfiguration)iter.next();
- file = config.getFile();
- if (file != null && file.getProject().equals(project)) {
- configs.add(config);
- }
- }
- return configs;
- }
-
- /**
- * @see ILaunchManager#getLaunchConfigurationType(String)
- */
- public ILaunchConfigurationType getLaunchConfigurationType(String id) {
- ILaunchConfigurationType[] types = getLaunchConfigurationTypes();
- for(int i = 0; i < types.length; i++) {
- if (types[i].getIdentifier().equals(id)) {
- return types[i];
- }
- }
- return null;
- }
-
- /**
- * @see ILaunchManager#getLaunchConfigurationTypes()
- */
- public ILaunchConfigurationType[] getLaunchConfigurationTypes() {
- initializeLaunchConfigurationTypes();
- return (ILaunchConfigurationType[])fLaunchConfigurationTypes.toArray(new ILaunchConfigurationType[fLaunchConfigurationTypes.size()]);
- }
-
- /**
- * @see ILaunchManager#getLaunches()
- */
- public ILaunch[] getLaunches() {
- synchronized (fLaunches) {
- return (ILaunch[])fLaunches.toArray(new ILaunch[fLaunches.size()]);
- }
- }
-
- /**)
- * @see org.eclipse.debug.core.ILaunchManager#getLaunchMode(java.lang.String)
- */
- public ILaunchMode getLaunchMode(String mode) {
- initializeLaunchModes();
- return (ILaunchMode) fLaunchModes.get(mode);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#getLaunchModes()
- */
- public ILaunchMode[] getLaunchModes() {
- initializeLaunchModes();
- Collection collection = fLaunchModes.values();
- return (ILaunchMode[]) collection.toArray(new ILaunchMode[collection.size()]);
- }
-
- /**
- * Returns all of the launch delegates. The returned listing of delegates cannot be directly used to launch,
- * instead the method <code>IlaunchDelegate.getDelegate</code> must be used to acquire an executable form of
- * the delegate, allowing us to maintain lazy loading of the delegates themselves.
- * @return all of the launch delegates
- *
- * @since 3.3
- */
- public ILaunchDelegate[] getLaunchDelegates() {
- initializeLaunchDelegates();
- Collection col = fLaunchDelegates.values();
- return (ILaunchDelegate[]) col.toArray(new ILaunchDelegate[col.size()]);
- }
-
- /**
- * Returns the listing of launch delegates that apply to the specified
- * <code>ILaunchConfigurationType</code> id
- * @param typeid the id of the launch configuration type to get delegates for
- * @return An array of <code>LaunchDelegate</code>s that apply to the specified launch configuration
- * type, or an empty array, never <code>null</code>
- *
- * @since 3.3
- */
- public LaunchDelegate[] getLaunchDelegates(String typeid) {
- initializeLaunchDelegates();
- ArrayList list = new ArrayList();
- LaunchDelegate ld = null;
- for(Iterator iter = fLaunchDelegates.keySet().iterator(); iter.hasNext();) {
- ld = (LaunchDelegate) fLaunchDelegates.get(iter.next());
- if(ld.getLaunchConfigurationTypeId().equals(typeid)) {
- list.add(ld);
- }
- }
- return (LaunchDelegate[]) list.toArray(new LaunchDelegate[list.size()]);
- }
-
- /**
- * This method returns the <code>ILaunchDelegate</code> instance corresponding to the id
- * of the launch delegate specified
- * @param id the id of the <code>ILaunchDelegate</code> to find
- * @return the <code>ILaunchDelegate</code> or <code>null</code> if not found
- *
- * @since 3.3
- */
- public ILaunchDelegate getLaunchDelegate(String id) {
- if(id != null) {
- ILaunchDelegate[] delegates = getLaunchDelegates();
- for(int i = 0; i < delegates.length; i++) {
- if(id.equals(delegates[i].getId())) {
- return delegates[i];
- }
- }
- }
- return null;
- }
-
- /**
- * Initializes the listing of delegates available to the launching framework
- *
- * @since 3.3
- */
- private synchronized void initializeLaunchDelegates() {
- if(fLaunchDelegates == null) {
- fLaunchDelegates = new HashMap();
- //get all launch delegate contributions
- IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LAUNCH_DELEGATES);
- IConfigurationElement[] infos = extensionPoint.getConfigurationElements();
- LaunchDelegate delegate = null;
- for(int i = 0; i < infos.length; i++) {
- delegate = new LaunchDelegate(infos[i]);
- fLaunchDelegates.put(delegate.getId(), delegate);
- }
- //get all delegates from launch configuration type contributions
- extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LAUNCH_CONFIGURATION_TYPES);
- infos = extensionPoint.getConfigurationElements();
- for(int i = 0; i < infos.length; i++) {
- //must check to see if delegate is provided in contribution
- if(infos[i].getAttribute(IConfigurationElementConstants.DELEGATE) != null) {
- delegate = new LaunchDelegate(infos[i]);
- fLaunchDelegates.put(delegate.getId(), delegate);
- }
- }
- }
- }
-
- /**
- * This method is used to initialize a simple listing of all preferred delegates, which is then used by each
- * <code>ILaunchConfigurationType</code> to find if they have preferred delegates. Once an <code>ILaunchConfigurationType</code>
- * has used this listing to initialize its preferred delegates it will maintain changes to its preferred delegate, which are
- * then written back to the preference store only when the launch manager shuts down.
- * <p>
- * This cache is not synchronized with the runtime preferred delegates stored in launch configuration types.
- * </p>
- * @since 3.3
- */
- private synchronized void initializePreferredDelegates() {
- if(fPreferredDelegates == null) {
- fPreferredDelegates = new HashSet();
- Preferences prefs = DebugPlugin.getDefault().getPluginPreferences();
- String preferred = prefs.getString(LaunchManager.PREF_PREFERRED_DELEGATES);
- if(!IInternalDebugCoreConstants.EMPTY_STRING.equals(preferred)) {
- try {
- Element root = DebugPlugin.parseDocument(preferred);
- NodeList nodes = root.getElementsByTagName(IConfigurationElementConstants.DELEGATE);
- Element element = null;
- String typeid = null;
- Set modeset = null;
- for(int i = 0; i < nodes.getLength(); i++) {
- element = (Element) nodes.item(i);
- String delegateid = element.getAttribute(IConfigurationElementConstants.ID);
- typeid = element.getAttribute(IConfigurationElementConstants.TYPE_ID);
- String[] modes = element.getAttribute(IConfigurationElementConstants.MODES).split(","); //$NON-NLS-1$
- modeset = new HashSet(Arrays.asList(modes));
- LaunchDelegate delegate = getLaunchDelegateExtension(typeid, delegateid, modeset);
- if (delegate != null) {
- //take type id, modeset, delegate and create entry
- if(!IInternalDebugCoreConstants.EMPTY_STRING.equals(typeid) & modeset != null) {
- fPreferredDelegates.add(new PreferredDelegate(delegate, typeid, modeset));
- }
- }
- }
- }
- catch (CoreException e) {DebugPlugin.log(e);}
- }
- }
- }
-
- /**
- * Allows internal access to a preferred delegate for a given type and mode set
- * @param typeid the id of the <code>ILaunchConfigurationType</code> to find a delegate for
- * @param modes the set of modes for the delegate
- * @return the preferred delegate for the specified type id and mode set, or <code>null</code> if none
- *
- * @since 3.3
- */
- protected ILaunchDelegate getPreferredDelegate(String typeid, Set modes) {
- // Retrieve preferred delegates using legacy mechanism for backward
- // compatibility.
- initializePreferredDelegates();
- PreferredDelegate pd = null;
- for(Iterator iter = fPreferredDelegates.iterator(); iter.hasNext();) {
- pd = (PreferredDelegate) iter.next();
- if(pd.getModes().equals(modes) & pd.getTypeId().equals(typeid)) {
- return pd.getDelegate();
- }
- }
-
- // @since 3.5
- // If the legacy mechanism didn't work, try the new preference name for
- // the given launch type.
- Preferences prefs = DebugPlugin.getDefault().getPluginPreferences();
- String preferred = prefs.getString(LaunchManager.PREF_PREFERRED_DELEGATES + '/' + typeid);
- if (preferred != null && preferred.length() != 0) {
- StringTokenizer tokenizer = new StringTokenizer(preferred, ";"); //$NON-NLS-1$
- while(tokenizer.hasMoreTokens()) {
- StringTokenizer tokenizer2 = new StringTokenizer(tokenizer.nextToken(), ","); //$NON-NLS-1$
- String delegateId = tokenizer2.nextToken();
- HashSet modeset = new HashSet();
- while(tokenizer2.hasMoreTokens()) {
- modeset.add(tokenizer2.nextToken());
- }
- LaunchDelegate delegate = getLaunchDelegateExtension(typeid, delegateId, modeset);
- if (delegate != null && modeset.equals(modes)) {
- return delegate;
- }
- }
-
- }
- return null;
- }
-
- /**
- * Returns the launch delegate extension that matches the given type, delegate ID, and
- * set of modes.
- *
- * @param typeId Launch configuration type.
- * @param id Launch delegate ID.
- * @param modeset Set of modes that the launch delegate applies to.
- * @return The launch delegate matching the specified parameters, or
- * <code>null</code> if not found.
- *
- * @since 3.5
- */
- private LaunchDelegate getLaunchDelegateExtension(String typeId, String id, Set modeset) {
- LaunchDelegate[] extensions = getLaunchDelegates(typeId);
- for(int j = 0; j < extensions.length; j++) {
- if(id.equals(extensions[j].getId())) {
- List modesets = extensions[j].getModes();
- if(modesets.contains(modeset)) {
- return extensions[j];
- }
- }
- }
- return null;
- }
-
- /**
- * Returns all launch configurations that are stored locally.
- *
- * @return collection of launch configurations stored locally
- */
- protected synchronized List getLocalLaunchConfigurations() {
- Iterator iter = getAllLaunchConfigurations().iterator();
- List configs = new ArrayList();
- ILaunchConfiguration config = null;
- while (iter.hasNext()) {
- config = (ILaunchConfiguration)iter.next();
- if (config.isLocal()) {
- configs.add(config);
- }
- }
- return configs;
- }
-
- /**
- * Returns the launch configurations mapping to the specified resource
- * @param resource the resource to collect mapped launch configurations for
- * @return a list of launch configurations if found or an empty list, never null
- * @since 3.2
- */
- public ILaunchConfiguration[] getMappedConfigurations(IResource resource) {
- List configurations = new ArrayList();
- try {
- ILaunchConfiguration[] configs = getLaunchConfigurations();
- IResource[] resources = null;
- for(int i = 0; i < configs.length; i++) {
- resources = configs[i].getMappedResources();
- if(resources != null) {
- for(int j = 0; j < resources.length; j++) {
- if(resources[j].equals(resource)) {
- configurations.add(configs[i]);
- }
- }
- }
- }
- }
- catch(CoreException e) {DebugPlugin.log(e);}
- return (ILaunchConfiguration[])configurations.toArray(new ILaunchConfiguration[configurations.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getMigrationCandidates()
- */
- public ILaunchConfiguration[] getMigrationCandidates() throws CoreException {
- List configs = new ArrayList();
- ILaunchConfiguration[] candidates = getLaunchConfigurations();
- for(int i = 0; i < candidates.length; i++) {
- if(!candidates[i].isReadOnly() && candidates[i].isMigrationCandidate()) {
- configs.add(candidates[i]);
- }
- }
- return (ILaunchConfiguration[])configs.toArray(new ILaunchConfiguration[configs.size()]);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#getMovedFrom(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public ILaunchConfiguration getMovedFrom(ILaunchConfiguration addedConfiguration) {
- if (addedConfiguration.equals(fTo)) {
- return fFrom;
- }
- return null;
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#getMovedTo(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public ILaunchConfiguration getMovedTo(ILaunchConfiguration removedConfiguration) {
- if (removedConfiguration.equals(fFrom)) {
- return fTo;
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getNativeEnvironment()
- */
- public synchronized Map getNativeEnvironment() {
- if (fgNativeEnv == null) {
- Map casePreserved = getNativeEnvironmentCasePreserved();
- if (Platform.getOS().equals(Constants.OS_WIN32)) {
- fgNativeEnv= new HashMap();
- Iterator entries = casePreserved.entrySet().iterator();
- Map.Entry entry = null;
- String key = null;
- while (entries.hasNext()) {
- entry = (Entry) entries.next();
- key = ((String)entry.getKey()).toUpperCase();
- fgNativeEnv.put(key, entry.getValue());
- }
- } else {
- fgNativeEnv = new HashMap(casePreserved);
- }
- }
- return new HashMap(fgNativeEnv);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getNativeEnvironmentCasePreserved()
- */
- public synchronized Map getNativeEnvironmentCasePreserved() {
- if (fgNativeEnvCasePreserved == null) {
- fgNativeEnvCasePreserved= new HashMap();
- cacheNativeEnvironment(fgNativeEnvCasePreserved);
- }
- return new HashMap(fgNativeEnvCasePreserved);
- }
-
- /**
- * @see ILaunchManager#getProcesses()
- */
- public IProcess[] getProcesses() {
- synchronized (fLaunches) {
- List allProcesses = new ArrayList(fLaunches.size());
- Iterator e = fLaunches.iterator();
- IProcess[] processes = null;
- while (e.hasNext()) {
- processes = ((ILaunch) e.next()).getProcesses();
- for (int i= 0; i < processes.length; i++) {
- allProcesses.add(processes[i]);
- }
- }
- return (IProcess[])allProcesses.toArray(new IProcess[allProcesses.size()]);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getSourceContainerType(java.lang.String)
- */
- public ISourceContainerType getSourceContainerType(String id) {
- initializeSourceContainerTypes();
- return (ISourceContainerType) sourceContainerTypes.get(id);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getSourceContainerTypes()
- */
- public ISourceContainerType[] getSourceContainerTypes() {
- initializeSourceContainerTypes();
- Collection containers = sourceContainerTypes.values();
- return (ISourceContainerType[]) containers.toArray(new ISourceContainerType[containers.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#newSourcePathComputer(org.eclipse.debug.core.ILaunchConfiguration)
- */
- public ISourcePathComputer getSourcePathComputer(ILaunchConfiguration configuration) throws CoreException {
- String id = null;
- id = configuration.getAttribute(ISourcePathComputer.ATTR_SOURCE_PATH_COMPUTER_ID, (String)null);
-
- if (id == null) {
- //use default computer for configuration type, if any
- return configuration.getType().getSourcePathComputer();
- }
- return getSourcePathComputer(id);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#getSourcePathComputer(java.lang.String)
- */
- public ISourcePathComputer getSourcePathComputer(String id) {
- initializeSourceContainerTypes();
- return (ISourcePathComputer) sourcePathComputers.get(id);
- }
-
- /**
- * Starts listening for resource change events
- */
- private synchronized void hookResourceChangeListener() {
- if (!fListening) {
- ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE | IResourceChangeEvent.PRE_DELETE);
- fListening = true;
- }
- }
-
- /**
- * Load comparator extensions.
- */
- private synchronized void initializeComparators() {
- if (fComparators == null) {
- IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LAUNCH_CONFIGURATION_COMPARATORS);
- IConfigurationElement[] infos= extensionPoint.getConfigurationElements();
- fComparators = new HashMap(infos.length);
- IConfigurationElement configurationElement = null;
- String attr = null;
- for (int i= 0; i < infos.length; i++) {
- configurationElement = infos[i];
- attr = configurationElement.getAttribute("attribute"); //$NON-NLS-1$
- if (attr != null) {
- fComparators.put(attr, new LaunchConfigurationComparator(configurationElement));
- } else {
- // invalid status handler
- IStatus s = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.INTERNAL_ERROR,
- MessageFormat.format("Invalid launch configuration comparator extension defined by plug-in {0} - attribute not specified.", new String[] {configurationElement.getContributor().getName()}), null); //$NON-NLS-1$
- DebugPlugin.log(s);
- }
- }
- }
- }
-
- /**
- * Initializes the listing of <code>LaunchConfigurationType</code>s.
- */
- private synchronized void initializeLaunchConfigurationTypes() {
- if (fLaunchConfigurationTypes == null) {
- hookResourceChangeListener();
- IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LAUNCH_CONFIGURATION_TYPES);
- IConfigurationElement[] infos = extensionPoint.getConfigurationElements();
- fLaunchConfigurationTypes = new ArrayList(infos.length);
- for (int i= 0; i < infos.length; i++) {
- fLaunchConfigurationTypes.add(new LaunchConfigurationType(infos[i]));
- }
- }
- }
-
- /**
- * Load comparator extensions.
- *
- * @exception CoreException if an exception occurs reading
- * the extensions
- *
- */
- private synchronized void initializeLaunchModes() {
- if (fLaunchModes == null) {
- try {
- IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LAUNCH_MODES);
- IConfigurationElement[] infos= extensionPoint.getConfigurationElements();
- fLaunchModes = new HashMap();
- ILaunchMode mode = null;
- for (int i= 0; i < infos.length; i++) {
- mode = new LaunchMode(infos[i]);
- fLaunchModes.put(mode.getIdentifier(), mode);
- }
- }
- catch (CoreException e) {DebugPlugin.log(e);}
- }
- }
-
- /**
- * Initializes source container type and source path computer extensions.
- */
- private synchronized void initializeSourceContainerTypes() {
- if (sourceContainerTypes == null) {
- IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_SOURCE_CONTAINER_TYPES);
- IConfigurationElement[] extensions = extensionPoint.getConfigurationElements();
- sourceContainerTypes = new HashMap();
- for (int i = 0; i < extensions.length; i++) {
- sourceContainerTypes.put(
- extensions[i].getAttribute(IConfigurationElementConstants.ID),
- new SourceContainerType(extensions[i]));
- }
- extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_SOURCE_PATH_COMPUTERS);
- extensions = extensionPoint.getConfigurationElements();
- sourcePathComputers = new HashMap();
- for (int i = 0; i < extensions.length; i++) {
- sourcePathComputers.put(
- extensions[i].getAttribute(IConfigurationElementConstants.ID),
- new SourcePathComputer(extensions[i]));
- }
- }
- }
-
- /**
- * Register source locators.
- *
- * @exception CoreException if an exception occurs reading
- * the extensions
- */
- private synchronized void initializeSourceLocators() {
- if (fSourceLocators == null) {
- IExtensionPoint extensionPoint= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_SOURCE_LOCATORS);
- IConfigurationElement[] infos= extensionPoint.getConfigurationElements();
- fSourceLocators= new HashMap(infos.length);
- IConfigurationElement configurationElement = null;
- String id = null;
- for (int i= 0; i < infos.length; i++) {
- configurationElement = infos[i];
- id = configurationElement.getAttribute(IConfigurationElementConstants.ID);
- if (id != null) {
- fSourceLocators.put(id,configurationElement);
- } else {
- // invalid status handler
- IStatus s = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.INTERNAL_ERROR,
- MessageFormat.format("Invalid source locator extension defined by plug-in \"{0}\": \"id\" not specified.", new String[] {configurationElement.getContributor().getName()} ), null); //$NON-NLS-1$
- DebugPlugin.log(s);
- }
- }
- }
- }
-
- /**
- * Adds the given launch object to the list of registered launches,
- * and returns whether the launch was added.
- *
- * @param launch launch to register
- * @return whether the launch was added
- */
- protected boolean internalAddLaunch(ILaunch launch) {
- // ensure the step filter manager is created on the first launch
- getStepFilterManager();
- synchronized (fLaunches) {
- if (fLaunches.contains(launch)) {
- return false;
- }
- fLaunches.add(launch);
- fLaunchSet.add(launch);
- return true;
- }
- }
-
- /**
- * Removes the given launch object from the collection of registered
- * launches. Returns whether the launch was removed.
- *
- * @param launch the launch to remove
- * @return whether the launch was removed
- */
- protected boolean internalRemoveLaunch(ILaunch launch) {
- if (launch == null) {
- return false;
- }
- synchronized (fLaunches) {
- fLaunchSet.remove(launch);
- return fLaunches.remove(launch);
- }
- }
- /**
- * @see ILaunchManager#isExistingLaunchConfigurationName(String)
- */
- public boolean isExistingLaunchConfigurationName(String name) {
- String[] sortedConfigNames = getAllSortedConfigNames();
- int index = Arrays.binarySearch(sortedConfigNames, name);
- if (index < 0) {
- return false;
- }
- return true;
- }
-
- /**
- * Returns whether the given String is composed solely of digits
- */
- private boolean isNumber(String string) {
- int numChars= string.length();
- if (numChars == 0) {
- return false;
- }
- for (int i= 0; i < numChars; i++) {
- if (!Character.isDigit(string.charAt(i))) {
- return false;
- }
- }
- return true;
- }
-
- /**
- * Returns whether the user has selected to delete associated configurations when a
- * project is deleted.
- *
- * @return whether to auto-delete configurations
- */
- private boolean isDeleteConfigurations() {
- return DebugPlugin.getDefault().getPluginPreferences().getBoolean(PREF_DELETE_CONFIGS_ON_PROJECT_DELETE);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchManager#isRegistered(org.eclipse.debug.core.ILaunch)
- */
- public boolean isRegistered(ILaunch launch) {
- synchronized (fLaunches) {
- return fLaunchSet.contains(launch);
- }
- }
-
- /**
- * Returns whether the given launch configuration passes a basic
- * integrity test by retrieving its type.
- *
- * @param config the configuration to verify
- * @return whether the config meets basic integrity constraints
- */
- protected boolean isValid(ILaunchConfiguration config) {
- try {
- config.getType();
- } catch (CoreException e) {
- if (e.getStatus().getCode() != DebugException.MISSING_LAUNCH_CONFIGURATION_TYPE) {
- // only log warnings due to something other than a missing
- // launch config type
- DebugPlugin.log(e);
- }
- return false;
- }
- return true;
- }
-
- /**
- * Notifies the launch manager that a launch configuration
- * has been added. The configuration is added to the index of
- * configurations by project, and listeners are notified.
- *
- * @param config the launch configuration that was added
- */
- protected void launchConfigurationAdded(ILaunchConfiguration config) {
- if (config.isWorkingCopy()) {
- return;
- }
- if (isValid(config)) {
- boolean added = false;
- synchronized (this) {
- List allConfigs = getAllLaunchConfigurations();
- if (!allConfigs.contains(config)) {
- allConfigs.add(config);
- added = true;
- }
- }
- if (added) {
- getConfigurationNotifier().notify(config, ADDED);
- clearConfigNameCache();
- }
- } else {
- launchConfigurationDeleted(config);
- }
- }
-
- /**
- * Notifies the launch manager that a launch configuration
- * has been changed. The configuration is removed from the
- * cache of info objects such that the new attributes will
- * be updated on the next access. Listeners are notified of
- * the change.
- *
- * @param config the launch configuration that was changed
- */
- protected void launchConfigurationChanged(ILaunchConfiguration config) {
- synchronized(this) {
- fLaunchConfigurations.remove(config);
- }
- clearConfigNameCache();
- if (isValid(config)) {
- // in case the config has been refreshed and it was removed from the
- // index due to 'out of synch with local file system' (see bug 36147),
- // add it back (will only add if required)
- launchConfigurationAdded(config);
- getConfigurationNotifier().notify(config, CHANGED);
- } else {
- launchConfigurationDeleted(config);
- }
- }
-
- /**
- * Notifies the launch manager that a launch configuration
- * has been deleted. The configuration is removed from the
- * cache of info and from the index of configurations by
- * project, and listeners are notified.
- *
- * @param config the launch configuration that was deleted
- */
- protected void launchConfigurationDeleted(ILaunchConfiguration config) {
- synchronized (this) {
- fLaunchConfigurations.remove(config);
- getAllLaunchConfigurations().remove(config);
- }
- getConfigurationNotifier().notify(config, REMOVED);
- clearConfigNameCache();
- }
-
- /**
- * @see ILaunchManager#newSourceLocator(String)
- */
- public IPersistableSourceLocator newSourceLocator(String identifier) throws CoreException {
- initializeSourceLocators();
- IConfigurationElement config = (IConfigurationElement)fSourceLocators.get(identifier);
- if (config == null) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugException.INTERNAL_ERROR,
- MessageFormat.format(DebugCoreMessages.LaunchManager_Source_locator_does_not_exist___0__13, new String[] {identifier} ), null));
- }
- IPersistableSourceLocator sourceLocator = (IPersistableSourceLocator)config.createExecutableExtension("class"); //$NON-NLS-1$
- if (sourceLocator instanceof AbstractSourceLookupDirector) {
- ((AbstractSourceLookupDirector)sourceLocator).setId(identifier);
- }
- return sourceLocator;
- }
-
- /**
- * The specified project has just closed - remove its
- * launch configurations from the cached index.
- *
- * @param project the project that has been closed
- * @exception CoreException if writing the index fails
- */
- protected void projectClosed(IProject project) {
- List configs = getLaunchConfigurations(project);
- if (!configs.isEmpty()) {
- Iterator iterator = configs.iterator();
- while (iterator.hasNext()) {
- launchConfigurationDeleted((ILaunchConfiguration)iterator.next());
- }
- }
- //bug 12134
- terminateMappedConfigurations(project);
- }
-
- /**
- * The specified project has just opened - add all launch
- * configs in the project to the index of all configs.
- *
- * @param project the project that has been opened
- * @exception CoreException if reading the index fails
- */
- protected void projectOpened(IProject project) {
- List configs = findLaunchConfigurations(project);
- if (!configs.isEmpty()) {
- Iterator iterator = configs.iterator();
- while (iterator.hasNext()) {
- launchConfigurationAdded((ILaunchConfiguration) iterator.next());
- }
- }
- }
-
- /**
- * @see ILaunchManager#removeLaunch(ILaunch)
- */
- public void removeLaunch(final ILaunch launch) {
- if (internalRemoveLaunch(launch)) {
- fireUpdate(launch, REMOVED);
- fireUpdate(new ILaunch[] {launch}, REMOVED);
- }
- }
-
- /**
- * @see ILaunchManager#removeLaunchConfigurationListener(ILaunchConfigurationListener)
- */
- public void removeLaunchConfigurationListener(ILaunchConfigurationListener listener) {
- fLaunchConfigurationListeners.remove(listener);
- }
-
- /**
- * @see org.eclipse.debug.core.ILaunchManager#removeLaunches(org.eclipse.debug.core.ILaunch[])
- */
- public void removeLaunches(ILaunch[] launches) {
- List removed = new ArrayList(launches.length);
- for (int i = 0; i < launches.length; i++) {
- if (internalRemoveLaunch(launches[i])) {
- removed.add(launches[i]);
- }
- }
- if (!removed.isEmpty()) {
- ILaunch[] removedLaunches = (ILaunch[])removed.toArray(new ILaunch[removed.size()]);
- fireUpdate(removedLaunches, REMOVED);
- for (int i = 0; i < removedLaunches.length; i++) {
- fireUpdate(removedLaunches[i], REMOVED);
- }
- }
- }
- /**
- * @see org.eclipse.debug.core.ILaunchManager#removeLaunchListener(org.eclipse.debug.core.ILaunchesListener)
- */
- public void removeLaunchListener(ILaunchesListener listener) {
- fLaunchesListeners.remove(listener);
- }
-
- /**
- * @see ILaunchManager#removeLaunchListener(ILaunchListener)
- */
- public void removeLaunchListener(ILaunchListener listener) {
- fListeners.remove(listener);
- }
-
- /**
- * Traverses the delta looking for added/removed/changed launch
- * configuration files.
- *
- * @see IResourceChangeListener#resourceChanged(IResourceChangeEvent)
- */
- public void resourceChanged(IResourceChangeEvent event) {
- IResourceDelta delta = event.getDelta();
- if (delta != null) {
- LaunchManagerVisitor visitor = getDeltaVisitor();
- MappedResourceVisitor v = null;
- if (isDeleteConfigurations()) {
- v = getMappedResourceVisitor();
- }
- try {
- delta.accept(visitor);
- if (v != null) {
- delta.accept(v);
- }
- } catch (CoreException e) {
- DebugPlugin.log(e.getStatus());
- }
- }
- }
-
- /**
- * Gets the launch configuration associated with the specified <code>IResource</code>.
- * This method relies on the resource mapping existing, if no such mapping
- * exists the launch configuration is ignored.
- *
- * @param resource the resource to collect launch configurations for
- * @return the list of associated launch configurations
- */
- private ArrayList collectAssociatedLaunches(IResource resource) {
- ArrayList list = new ArrayList();
- try {
- ILaunchConfiguration[] configs = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurations();
- IResource[] resources = null;
- for(int i = 0; i < configs.length; i++) {
- if(configs[i].isLocal()) {
- resources = configs[i].getMappedResources();
- if(resources != null) {
- for(int j = 0; j < resources.length; j++){
- if(resource.equals(resources[j]) ||
- resource.getFullPath().isPrefixOf(resources[j].getFullPath())) {
- list.add(configs[i]);
- break;
- }
- }
- }
- }
- }
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- return list;
- }
-
- /**
- * Indicates the given launch configuration is being moved from the given
- * location to the new location.
- *
- * @param from the location a launch configuration is being moved from, or
- * <code>null</code>
- * @param to the location a launch configuration is being moved to,
- * or <code>null</code>
- */
- protected void setMovedFromTo(ILaunchConfiguration from, ILaunchConfiguration to) {
- fFrom = from;
- fTo = to;
- }
- /**
- * Terminates/Disconnects any active debug targets/processes.
- * Clears launch configuration types.
- */
- public void shutdown() {
- fListeners = new ListenerList();
- fLaunchesListeners = new ListenerList();
- fLaunchConfigurationListeners = new ListenerList();
- ILaunch[] launches = getLaunches();
- ILaunch launch = null;
- for (int i= 0; i < launches.length; i++) {
- launch = launches[i];
- try {
- if (launch instanceof IDisconnect) {
- IDisconnect disconnect = (IDisconnect)launch;
- if (disconnect.canDisconnect()) {
- disconnect.disconnect();
- }
- }
- if (launch.canTerminate()) {
- launch.terminate();
- }
- } catch (DebugException e) {
- DebugPlugin.log(e);
- }
- }
-
- persistPreferredLaunchDelegates();
- clearAllLaunchConfigurations();
- fStepFilterManager = null;
- ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
- }
-
- /**
- * Saves the listings of preferred launch delegates from all of the launch configuration types
- *
- * @since 3.3
- */
- private void persistPreferredLaunchDelegates() {
- Preferences prefs = DebugPlugin.getDefault().getPluginPreferences();
- ILaunchConfigurationType[] types = getLaunchConfigurationTypes();
- Map preferred = null;
- ILaunchDelegate delegate = null;
- Set modes = null;
- for(int i = 0; i < types.length; i++) {
- String preferenceName = PREF_PREFERRED_DELEGATES + '/' + types[i].getIdentifier();
- preferred = ((LaunchConfigurationType)types[i]).getPreferredDelegates();
- if(preferred != null && preferred.size() > 0) {
- StringBuffer str = new StringBuffer();
- for(Iterator iter = preferred.keySet().iterator(); iter.hasNext();) {
- modes = (Set) iter.next();
- delegate = (ILaunchDelegate) preferred.get(modes);
- if(delegate != null) {
- str.append(delegate.getId());
- str.append(',');
- for(Iterator iter2 = modes.iterator(); iter2.hasNext();) {
- str.append(iter2.next());
- if(iter2.hasNext()) {
- str.append(',');
- }
- }
- if (iter.hasNext()) {
- str.append(';');
- }
- }
- }
- prefs.setValue(preferenceName, str.toString());
- } else {
- prefs.setToDefault(preferenceName);
- }
- }
-
- // Reset the legacy preference string.
- prefs.setToDefault(PREF_PREFERRED_DELEGATES);
- }
-
- /**
- * finds and terminates any running launch configurations associated with the given resource
- * @param resource the resource to search for launch configurations and hence launches for
- * @since 3.2
- */
- protected void terminateMappedConfigurations(IResource resource) {
- ILaunch[] launches = getLaunches();
- ILaunchConfiguration[] configs = getMappedConfigurations(resource);
- try {
- for(int i = 0; i < launches.length; i++) {
- for(int j = 0; j < configs.length; j++) {
- if(configs[j].equals(launches[i].getLaunchConfiguration()) & launches[i].canTerminate()) {
- launches[i].terminate();
- }
- }
- }
- }
- catch(CoreException e) {DebugPlugin.log(e);}
- }
-
- /**
- * Throws a debug exception with the given throwable that occurred
- * while processing the given configuration.
- * @since 3.5
- */
- private void throwException(LaunchConfiguration config, Throwable e) throws DebugException {
- String uri = config.getName();
- try {
- IFileStore store = config.getFileStore();
- if (store != null) {
- uri = store.toString();
- }
- } catch (CoreException ce) {
- }
- throw createDebugException(MessageFormat.format(DebugCoreMessages.LaunchManager__0__occurred_while_reading_launch_configuration_file__1___1, new String[]{e.toString(), uri}), e);
- }
-
- /**
- * Verify basic integrity of launch configurations in the given list,
- * adding valid configurations to the collection of all launch configurations.
- * Exceptions are logged for invalid configurations.
- *
- * @param verify the list of configurations to verify
- * @param valid the list to place valid configurations in
- */
- protected void verifyConfigurations(List verify, List valid) {
- Iterator configs = verify.iterator();
- ILaunchConfiguration config = null;
- while (configs.hasNext()) {
- config = (ILaunchConfiguration)configs.next();
- if (!valid.contains(config) && isValid(config)) {
- valid.add(config);
- }
- }
- }
-
- /**
- * Returns the name of the given launch mode with accelerators removed,
- * or <code>null</code> if none.
- *
- * @param id launch mode identifier
- * @return launch mode name with accelerators removed or <code>null</code>
- */
- public String getLaunchModeName(String id) {
- ILaunchMode launchMode = getLaunchMode(id);
- if (launchMode != null) {
- return removeAccelerators(launchMode.getLabel());
- }
- return null;
- }
- /**
- * Returns the label with any accelerators removed.
- *
- * @param label label to process
- * @return label without accelerators
- */
- public static String removeAccelerators(String label) {
- String title = label;
- if (title != null) {
- // strip out any '&' (accelerators)
- int index = title.indexOf('&');
- if (index == 0) {
- title = title.substring(1);
- } else if (index > 0) {
- //DBCS languages use "(&X)" format
- if (title.charAt(index - 1) == '(' && title.length() >= index + 3 && title.charAt(index + 2) == ')') {
- String first = title.substring(0, index - 1);
- String last = title.substring(index + 3);
- title = first + last;
- } else if (index < (title.length() - 1)) {
- String first = title.substring(0, index);
- String last = title.substring(index + 1);
- title = first + last;
- }
- }
- }
- return title;
- }
-
- /**
- * Returns the singleton step filter manager.
- *
- * @return the step filter manager
- */
- public synchronized StepFilterManager getStepFilterManager() {
- if (fStepFilterManager == null) {
- fStepFilterManager = new StepFilterManager();
- }
- return fStepFilterManager;
- }
-
- /**
- * Imports launch configurations represented by the given local files, overwriting
- * any existing configurations. Sends launch configuration change notification
- * as required (i.e. added or changed).
- * <p>
- * If a file is imported that has the same name as a configuration in the workspace
- * (i.e. a shared configuration), the shared configuration is deleted (becomes local).
- * </p>
- * @param files files to import
- * @param monitor progress monitor or <code>null</code>
- * @throws CoreException if an exception occurs while importing configurations
- * @since 3.4.0
- */
- public void importConfigurations(File[] files, IProgressMonitor monitor) throws CoreException {
- if (monitor == null) {
- monitor = new NullProgressMonitor();
- }
- Map sharedConfigs = new HashMap();
- List stati = null;
- Iterator iterator = getAllLaunchConfigurations().iterator();
- while (iterator.hasNext()) {
- ILaunchConfiguration config = (ILaunchConfiguration) iterator.next();
- if (!config.isLocal()) {
- StringBuffer buf = new StringBuffer(config.getName());
- buf.append('.');
- buf.append(ILaunchConfiguration.LAUNCH_CONFIGURATION_FILE_EXTENSION);
- sharedConfigs.put(buf.toString(), config);
- }
- }
- monitor.beginTask(DebugCoreMessages.LaunchManager_29, files.length);
- for (int i = 0; i < files.length; i++) {
- if (monitor.isCanceled()) {
- break;
- }
- File source = files[i];
- monitor.subTask(MessageFormat.format(DebugCoreMessages.LaunchManager_28, new String[]{source.getName()}));
- IPath location = new Path(LOCAL_LAUNCH_CONFIGURATION_CONTAINER_PATH.toOSString()).append(source.getName());
- File target = location.toFile();
- IPath locationdir = location.removeLastSegments(1);
- if(!locationdir.toFile().exists()) {
- locationdir.toFile().mkdirs();
- }
- boolean added = !target.exists();
- try {
- copyFile(source, target);
- ILaunchConfiguration configuration = new LaunchConfiguration(LaunchConfiguration.getSimpleName(source.getName()), null);
- ILaunchConfiguration shared = (ILaunchConfiguration) sharedConfigs.get(target.getName());
- if (shared != null) {
- setMovedFromTo(shared, configuration);
- shared.delete();
- launchConfigurationChanged(configuration);
- } else if (added) {
- launchConfigurationAdded(configuration);
- } else {
- launchConfigurationChanged(configuration);
- }
- } catch (IOException e) {
- if (stati == null) {
- stati = new ArrayList();
- }
- stati.add(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR,
- MessageFormat.format(DebugCoreMessages.LaunchManager_27, new String[]{source.getPath()}), e));
- }
- monitor.worked(1);
- }
- if (!monitor.isCanceled()) {
- monitor.done();
- }
- if (stati != null) {
- if (stati.size() > 1) {
- MultiStatus multi = new MultiStatus(DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LaunchManager_26, null);
- Iterator it = stati.iterator();
- while (it.hasNext()) {
- multi.add((IStatus) it.next());
- }
- throw new CoreException(multi);
- } else {
- throw new CoreException((IStatus) stati.get(0));
- }
- }
- }
-
- /**
- * Copies a file from one location to another, replacing any existing file.
- *
- * @param in the file to copy
- * @param out the file to be copied out to
- * @throws IOException
- * @since 3.4.0
- */
- private void copyFile(File in, File out) throws IOException {
- FileInputStream fis = new FileInputStream(in);
- FileOutputStream fos = new FileOutputStream(out);
- byte[] buf = new byte[1024];
- int i = 0;
- while((i = fis.read(buf)) != -1) {
- fos.write(buf, 0, i);
- }
- fis.close();
- fos.close();
- }
-
- /**
- * Returns whether any launch config supports the given mode.
- *
- * @param mode launch mode
- * @return whether any launch config supports the given mode
- */
- public synchronized boolean launchModeAvailable(String mode) {
- if (fActiveModes == null) {
- ILaunchConfigurationType[] types = getLaunchConfigurationTypes();
- ILaunchMode[] modes = getLaunchModes();
- fActiveModes = new HashSet(3);
- for (int i = 0; i < types.length; i++) {
- for (int j = 0; j < modes.length; j++) {
- if (types[i].supportsMode(modes[j].getIdentifier())) {
- fActiveModes.add(modes[j].getIdentifier());
- }
- }
- }
- }
- return fActiveModes.contains(mode);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchMode.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchMode.java
deleted file mode 100644
index 48a25f627..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchMode.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import com.ibm.icu.text.MessageFormat;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchMode;
-
-/**
- * Proxy to a launch mode extension.
- *
- * @see IConfigurationElementConstants
- */
-public class LaunchMode implements ILaunchMode {
-
- private IConfigurationElement fConfigurationElement;
-
- /**
- * Constructs a new launch mode.
- *
- * @param element configuration element
- * @exception CoreException if required attributes are missing
- */
- public LaunchMode(IConfigurationElement element) throws CoreException {
- fConfigurationElement = element;
- verifyAttributes();
- }
-
- /**
- * Verifies required attributes.
- *
- * @exception CoreException if required attributes are missing
- */
- private void verifyAttributes() throws CoreException {
- verifyAttributeExists(IConfigurationElementConstants.MODE);
- verifyAttributeExists(IConfigurationElementConstants.LABEL);
- }
-
- /**
- * Verifies the given attribute exists
- *
- * @exception CoreException if attribute does not exist
- */
- private void verifyAttributeExists(String name) throws CoreException {
- if (fConfigurationElement.getAttribute(name) == null) {
- missingAttribute(name);
- }
- }
-
- /**
- * This method is used to create a new internal error describing that the specified attribute
- * is missing
- * @param attrName the name of the attribute that is missing
- * @throws CoreException
- */
- private void missingAttribute(String attrName) throws CoreException {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, MessageFormat.format(DebugCoreMessages.LaunchMode_1,new String[]{attrName}), null));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchMode#getIdentifier()
- */
- public String getIdentifier() {
- return fConfigurationElement.getAttribute(IConfigurationElementConstants.MODE);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchMode#getLabel()
- */
- public String getLabel() {
- return fConfigurationElement.getAttribute(IConfigurationElementConstants.LABEL);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchMode#getLaunchAsLabel()
- */
- public String getLaunchAsLabel() {
- String label = fConfigurationElement.getAttribute(IConfigurationElementConstants.LAUNCH_AS_LABEL);
- if (label == null) {
- return MessageFormat.format(DebugCoreMessages.LaunchMode_0, new String[]{getLabel()});
- }
- return label;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchablePropertyTester.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchablePropertyTester.java
deleted file mode 100644
index 70175ead8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LaunchablePropertyTester.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.expressions.PropertyTester;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * Tests if an object is launchable.
- */
-public class LaunchablePropertyTester extends PropertyTester {
-
- /**
- * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
- */
- public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
- if ("launchable".equals(property)) { //$NON-NLS-1$
- if (((LaunchManager)(DebugPlugin.getDefault().getLaunchManager())).launchModeAvailable((String)expectedValue)) {
- return Platform.getAdapterManager().hasAdapter(receiver, "org.eclipse.debug.ui.actions.ILaunchable"); //$NON-NLS-1$
- }
- }
- return false;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureManager.java
deleted file mode 100644
index 6f3fd033a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureManager.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.Map.Entry;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILogicalStructureType;
-import org.eclipse.debug.core.model.IValue;
-
-/**
- * Manages logical structure extensions
- *
- * @since 3.0
- */
-public class LogicalStructureManager {
-
- private static LogicalStructureManager fgDefault;
- private List fTypes = null;
- private List fTypeProviders;
-
- /**
- * Map containing the user's selection for each combination of logical
- * structure types.
- * key: String - Comma-separated list of ints representing a combination of structure types.
- * These integers are indeces into the fStructureTypeIds array.
- * value: Integer - One of the ints from the combo key (the one chosen by the user) or -1 if
- * the user has chosen not to display any structures for this combination
- */
- private Map fStructureTypeSelections= null;
- /**
- * List of known type identifiers. An identifier's index in this list is used as
- * its ID number. This list is maintained as a space-saving measure so that the various
- * combinations of structure types can be persisted using indeces instead of storing the
- * full index strings.
- */
- private List fStructureTypeIds= null;
-
- /**
- * Preference key used for storing the user's selected structure for each combination
- * or structures. The preference value is stored in the form:
- * int,int,...,int|int,int,...int|...
- * Where int is an integer index of a structure in the array of known structures.
- */
- public static final String PREF_STRUCTURE_SELECTIONS= "selectedStructures"; //$NON-NLS-1$
- /**
- * Preference key used for storing the array of known structures. The preference
- * value is in the form:
- * string,string,string,...,string,
- * Where string is an identifier of a logical structure.
- */
- public static final String PREF_STRUCTURE_IDS= "allStructures"; //$NON-NLS-1$
-
- public static LogicalStructureManager getDefault() {
- if (fgDefault == null) {
- fgDefault = new LogicalStructureManager();
- }
- return fgDefault;
- }
-
- /**
- * Returns the logical structure types that are applicable to the given value.
- * @param value the value
- * @return the logical structure types that are applicable to the given value
- */
- public ILogicalStructureType[] getLogicalStructureTypes(IValue value) {
- initialize();
- // looks in the logical structure types
- Iterator iterator = fTypes.iterator();
- List select = new ArrayList();
- while (iterator.hasNext()) {
- ILogicalStructureType type = (ILogicalStructureType)iterator.next();
- if (type.providesLogicalStructure(value)) {
- select.add(type);
- }
- }
- // asks the logical structure providers
- for (Iterator iter= fTypeProviders.iterator(); iter.hasNext();) {
- ILogicalStructureType[] logicalStructures= ((LogicalStructureProvider) iter.next()).getLogicalStructures(value);
- for (int i= 0; i < logicalStructures.length; i++) {
- select.add(logicalStructures[i]);
- }
- }
- return (ILogicalStructureType[]) select.toArray(new ILogicalStructureType[select.size()]);
- }
-
- /**
- * Loads the map of structure selections from the preference store.
- */
- private void loadStructureTypeSelections() {
- fStructureTypeSelections= new HashMap();
- String selections= DebugPlugin.getDefault().getPluginPreferences().getString(PREF_STRUCTURE_SELECTIONS);
- // selections are stored in the form:
- // selection|selection|...selection|
- StringTokenizer tokenizer= new StringTokenizer(selections, "|"); //$NON-NLS-1$
- while (tokenizer.hasMoreTokens()) {
- String selection = tokenizer.nextToken();
- // selection string is of the form:
- // id,id,...,selectedid
- int i = selection.lastIndexOf(',');
- if (i > 0 && i < selection.length() - 1) {
- String comboKey= selection.substring(0, i + 1);
- String selected= selection.substring(i + 1, selection.length());
- fStructureTypeSelections.put(comboKey, new Integer(Integer.parseInt(selected)));
- }
- }
- }
-
- /**
- * Stores the map of structure selections to the preference store
- */
- private void storeStructureTypeSelections() {
- StringBuffer buffer= new StringBuffer();
- Iterator iter = fStructureTypeSelections.entrySet().iterator();
- while (iter.hasNext()) {
- Map.Entry entry = (Entry) iter.next();
- buffer.append(entry.getKey());
- buffer.append(entry.getValue());
- buffer.append('|');
- }
- DebugPlugin.getDefault().getPluginPreferences().setValue(PREF_STRUCTURE_SELECTIONS, buffer.toString());
- }
-
- /**
- * Loads the collection of known structures identifiers from the preference store
- */
- private void loadStructureTypeIds() {
- fStructureTypeIds= new ArrayList();
- // Types are stored as a comma-separated, ordered list.
- String types= DebugPlugin.getDefault().getPluginPreferences().getString(PREF_STRUCTURE_IDS);
- StringTokenizer tokenizer= new StringTokenizer(types, ","); //$NON-NLS-1$
- while (tokenizer.hasMoreTokens()) {
- String id= tokenizer.nextToken();
- if (id.length() > 0) {
- fStructureTypeIds.add(id);
- }
- }
- }
-
- /**
- * Stores the collection of known structure identifiers to the preference store
- */
- private void storeStructureTypeIds() {
- StringBuffer buffer= new StringBuffer();
- Iterator iter = fStructureTypeIds.iterator();
- while (iter.hasNext()) {
- buffer.append(iter.next()).append(',');
- }
- DebugPlugin.getDefault().getPluginPreferences().setValue(PREF_STRUCTURE_IDS, buffer.toString());
- }
-
- /**
- * Returns the structure that the user has chosen from among the given
- * collection of structures or <code>null</code> if the user has chosen
- * to display none.
- * @param structureTypes the collection of structures available
- * @return the structure that the user has chosen from among the given collection
- * or <code>null</code> if the user has chosen to display none
- */
- public ILogicalStructureType getSelectedStructureType(ILogicalStructureType[] structureTypes) {
- if (structureTypes.length == 0) {
- return null;
- }
- String combo= getComboString(structureTypes);
- // Lookup the combo
- Integer index = (Integer) fStructureTypeSelections.get(combo);
- if (index == null) {
- // If the user hasn't explicitly chosen anything for this
- // combo yet, just return the first type.
- return structureTypes[0];
- } else if (index.intValue() == -1) {
- // An index of -1 means the user has deselected all structures for this combo
- return null;
- }
- // If an index is stored for this combo, retrieve the id at the index
- String id= (String) fStructureTypeIds.get(index.intValue());
- for (int i = 0; i < structureTypes.length; i++) {
- // Return the type with the retrieved id
- ILogicalStructureType type = structureTypes[i];
- if (type.getId().equals(id)) {
- return type;
- }
- }
- return structureTypes[0];
- }
-
- /**
- *
- * @param types
- * @param selected the type that is selected for the given combo or <code>null</code>
- * if the user has deselected any structure for the given combo
- */
- public void setEnabledType(ILogicalStructureType[] types, ILogicalStructureType selected) {
- String combo= getComboString(types);
- int index= -1; // Initialize to "none selected"
- if (selected != null) {
- index= fStructureTypeIds.indexOf(selected.getId());
- }
- Integer integer= new Integer(index);
- fStructureTypeSelections.put(combo, integer);
- storeStructureTypeSelections();
- storeStructureTypeIds();
- }
-
- /**
- * Returns the string representing the given combination of logical
- * structure types. This string will be a series of comma-separated
- * indeces representing the various types. If any of the given types
- * don't have indeces associated with them, this method will create
- * the appropriate index.
- * @param types the logical structure types
- * @return the string representing the given combination of logical
- * structure types
- */
- protected String getComboString(ILogicalStructureType[] types) {
- StringBuffer comboKey= new StringBuffer();
- for (int i = 0; i < types.length; i++) {
- ILogicalStructureType type = types[i];
- int typeIndex = fStructureTypeIds.indexOf(type.getId());
- if (typeIndex == -1) {
- typeIndex= fStructureTypeIds.size();
- fStructureTypeIds.add(type.getId());
- }
- comboKey.append(typeIndex).append(',');
- }
- return comboKey.toString();
- }
-
- private synchronized void initialize() {
- if (fTypes == null) {
- //get the logical structure types from the extension points
- IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LOGICAL_STRUCTURE_TYPES);
- IConfigurationElement[] extensions = point.getConfigurationElements();
- fTypes = new ArrayList(extensions.length);
- for (int i = 0; i < extensions.length; i++) {
- IConfigurationElement extension = extensions[i];
- LogicalStructureType type;
- try {
- type = new LogicalStructureType(extension);
- fTypes.add(type);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- // get the logical structure providers from the extension point
- point= Platform.getExtensionRegistry().getExtensionPoint(DebugPlugin.getUniqueIdentifier(), DebugPlugin.EXTENSION_POINT_LOGICAL_STRUCTURE_PROVIDERS);
- extensions= point.getConfigurationElements();
- fTypeProviders= new ArrayList(extensions.length);
- for (int i= 0; i < extensions.length; i++) {
- try {
- fTypeProviders.add(new LogicalStructureProvider(extensions[i]));
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- }
- if (fStructureTypeSelections == null) {
- loadStructureTypeSelections();
- }
- if (fStructureTypeIds == null) {
- loadStructureTypeIds();
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureProvider.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureProvider.java
deleted file mode 100644
index 6aea4bea8..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureProvider.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILogicalStructureProvider;
-import org.eclipse.debug.core.ILogicalStructureType;
-import org.eclipse.debug.core.model.IValue;
-
-/**
- * Manage logical structure provider extensions
- *
- * @see IConfigurationElementConstants
- */
-public class LogicalStructureProvider {
-
- private IConfigurationElement fConfigurationElement;
-
- private String fModelIdentifier;
-
- private ILogicalStructureProvider fDelegate;
-
- public LogicalStructureProvider(IConfigurationElement element) throws CoreException {
- fConfigurationElement= element;
- fModelIdentifier= fConfigurationElement.getAttribute(IConfigurationElementConstants.MODEL_IDENTIFIER);
- if (fModelIdentifier == null) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LogicalStructureProvider_0, null));
- }
- String className= fConfigurationElement.getAttribute(IConfigurationElementConstants.CLASS);
- if (className == null) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, DebugCoreMessages.LogicalStructureProvider_1, null));
- }
- }
-
- /**
- * Return the logical structure type able to provide a logical structure for
- * the given value.
- *
- * @param value value for which structure types are requested
- * @return logical structure types
- */
- public ILogicalStructureType[] getLogicalStructures(IValue value) {
- if (fModelIdentifier.equals(value.getModelIdentifier())) {
- return getDelegate().getLogicalStructureTypes(value);
- }
- return new ILogicalStructureType[0];
- }
-
- /**
- * Return the ILogicalStructureProvider for this extension.
- */
- protected ILogicalStructureProvider getDelegate() {
- if (fDelegate == null) {
- try {
- fDelegate = (ILogicalStructureProvider) fConfigurationElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- return fDelegate;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureType.java
deleted file mode 100644
index 95633f5a6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/LogicalStructureType.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import com.ibm.icu.text.MessageFormat;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.*;
-import org.eclipse.debug.core.model.*;
-
-/**
- * Proxy to a logical structure type extension.
- *
- * @see IConfigurationElementConstants
- */
-public class LogicalStructureType implements ILogicalStructureType {
-
- private IConfigurationElement fConfigurationElement;
- private ILogicalStructureTypeDelegate fDelegate;
- private String fModelId;
- // whether the 'description' attribute has been verified to exist: it is only
- // required when the delegate does *not* implement ILogicalStructureTypeDelegate2.
- private boolean fVerifiedDescription = false;
-
- /**
- * Constructs a new logical structure type, and verifies required attributes.
- *
- * @param element configuration element
- * @exception CoreException if required attributes are missing
- */
- public LogicalStructureType(IConfigurationElement element) throws CoreException {
- fConfigurationElement = element;
- verifyAttributes();
- }
-
- /**
- * Verifies required attributes.
- *
- * @exception CoreException if required attributes are missing
- */
- private void verifyAttributes() throws CoreException {
- verifyAttributeExists(IConfigurationElementConstants.ID);
- verifyAttributeExists(IConfigurationElementConstants.CLASS);
- fModelId = fConfigurationElement.getAttribute(IConfigurationElementConstants.MODEL_IDENTIFIER);
- if (fModelId == null) {
- missingAttribute(IConfigurationElementConstants.MODEL_IDENTIFIER);
- }
- }
-
- /**
- * Verifies the given attribute exists
- *
- * @exception CoreException if attribute does not exist
- */
- private void verifyAttributeExists(String name) throws CoreException {
- if (fConfigurationElement.getAttribute(name) == null) {
- missingAttribute(name);
- }
- }
-
- /**
- * Throws a new <code>CoreException</code> about the specified attribute being missing
- * @param attrName the name of the missing attribute
- * @throws CoreException
- */
- private void missingAttribute(String attrName) throws CoreException {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, MessageFormat.format(DebugCoreMessages.LogicalStructureType_1, new String[]{attrName}), null));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.ILogicalStructureType#getDescription()
- */
- public String getDescription() {
- return fConfigurationElement.getAttribute(IConfigurationElementConstants.DESCRIPTION);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.ILogicalStructureType#getId()
- */
- public String getId() {
- return fConfigurationElement.getAttribute(IConfigurationElementConstants.ID);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.ILogicalStructureType#getLogicalStructure(org.eclipse.debug.core.model.IValue)
- */
- public IValue getLogicalStructure(IValue value) throws CoreException {
- return getDelegate().getLogicalStructure(value);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.ILogicalStructureType#providesLogicalStructure(org.eclipse.debug.core.model.IValue)
- */
- public boolean providesLogicalStructure(IValue value) {
- if (value.getModelIdentifier().equals(fModelId)) {
- return getDelegate().providesLogicalStructure(value);
- }
- return false;
- }
-
- /**
- * Returns the <code>ILogicalStructuresTypeDelegate</code> delegate
- * @return the delegate
- */
- protected ILogicalStructureTypeDelegate getDelegate() {
- if (fDelegate == null) {
- try {
- fDelegate = (ILogicalStructureTypeDelegate) fConfigurationElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- return fDelegate;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.ILogicalStructureTypeDelegate2#getDescription(org.eclipse.debug.core.model.IValue)
- */
- public String getDescription(IValue value) {
- ILogicalStructureTypeDelegate delegate = getDelegate();
- if (delegate instanceof ILogicalStructureTypeDelegate2) {
- ILogicalStructureTypeDelegate2 d2 = (ILogicalStructureTypeDelegate2) delegate;
- return d2.getDescription(value);
- }
- if (!fVerifiedDescription) {
- fVerifiedDescription = true;
- try {
- verifyAttributeExists(IConfigurationElementConstants.DESCRIPTION);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- }
- String description = getDescription();
- if (description == null) {
- return DebugCoreMessages.LogicalStructureType_0;
- }
- return description;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/MemoryBlockManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/MemoryBlockManager.java
deleted file mode 100644
index 25a381d84..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/MemoryBlockManager.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * WindRiver - Bug 192028 [Memory View] Memory view does not
- * display memory blocks that do not reference IDebugTarget
- *******************************************************************************/
-
-package org.eclipse.debug.internal.core;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IDebugEventSetListener;
-import org.eclipse.debug.core.IMemoryBlockListener;
-import org.eclipse.debug.core.IMemoryBlockManager;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.core.model.IMemoryBlockExtension;
-import org.eclipse.debug.core.model.IMemoryBlockRetrieval;
-
-
-/**
- * Implementation of IMemoryBlockManager
- * The manager is responsible to manage all memory blocks in the workbench.
- *
- * @since 3.1
- *
- */
-public class MemoryBlockManager implements IMemoryBlockManager, IDebugEventSetListener {
-
- private ArrayList listeners = new ArrayList(); // list of all IMemoryBlockListener
- private ArrayList memoryBlocks = new ArrayList(); // list of all memory blocks
-
- private static final int ADDED = 0;
- private static final int REMOVED = 1;
- /**
- * Notifies a memory block listener in a safe runnable to
- * handle exceptions.
- */
- class MemoryBlockNotifier implements ISafeRunnable {
-
- private IMemoryBlockListener fListener;
- private int fType;
- private IMemoryBlock[] fMemoryBlocks;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- DebugPlugin.log(exception);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- switch (fType) {
- case ADDED:
- fListener.memoryBlocksAdded(fMemoryBlocks);
- break;
- case REMOVED:
- fListener.memoryBlocksRemoved(fMemoryBlocks);
- break;
- }
- }
-
- /**
- * Notify listeners of added/removed memory block events
- *
- * @param memBlocks blocks that have changed
- * @param update type of change
- */
- public void notify(IMemoryBlock[] memBlocks, int update) {
- if (listeners != null) {
- fType = update;
- Object[] copiedListeners= listeners.toArray(new IMemoryBlockListener[listeners.size()]);
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IMemoryBlockListener)copiedListeners[i];
- fMemoryBlocks = memBlocks;
- SafeRunner.run(this);
- }
- }
- fListener = null;
- fMemoryBlocks = null;
- }
- }
-
- /**
- * Returns the <code>MemoryBlockNotifier</code>
- * @return the <code>MemoryBlockNotifier</code>
- *
- * TODO consider using only one of these, and sync where needed,
- * this way we are not creating a new every single time.
- */
- private MemoryBlockNotifier getMemoryBlockNotifier() {
- return new MemoryBlockNotifier();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#addMemoryBlock(org.eclipse.debug.core.model.IMemoryBlock)
- */
- public void addMemoryBlocks(IMemoryBlock[] mem) {
- if (memoryBlocks == null) {
- return;
- }
- if (mem == null) {
- DebugPlugin.logMessage("Null argument passed into IMemoryBlockManager.addMemoryBlock", null); //$NON-NLS-1$
- return;
- }
-
- if(mem.length > 0) {
- ArrayList newMemoryBlocks = new ArrayList();
- for (int i=0; i<mem.length; i++) {
- // do not allow duplicates
- if (!memoryBlocks.contains(mem[i])) {
- newMemoryBlocks.add(mem[i]);
- memoryBlocks.add(mem[i]);
- // add listener for the first memory block added
- if (memoryBlocks.size() == 1) {
- DebugPlugin.getDefault().addDebugEventListener(this);
- }
- }
- }
- notifyListeners((IMemoryBlock[])newMemoryBlocks.toArray(new IMemoryBlock[newMemoryBlocks.size()]), ADDED);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#removeMemoryBlock(org.eclipse.debug.core.model.IMemoryBlock)
- */
- public void removeMemoryBlocks(IMemoryBlock[] memBlocks) {
- if (memoryBlocks == null) {
- return;
- }
- if (memBlocks == null){
- DebugPlugin.logMessage("Null argument passed into IMemoryBlockManager.removeMemoryBlock", null); //$NON-NLS-1$
- return;
- }
-
- if(memBlocks.length > 0) {
- for (int i=0; i<memBlocks.length; i++) {
- memoryBlocks.remove(memBlocks[i]);
- // remove listener after the last memory block has been removed
- if (memoryBlocks.size() == 0) {
- DebugPlugin.getDefault().removeDebugEventListener(this);
- }
- if (memBlocks[i] instanceof IMemoryBlockExtension) {
- try {
- ((IMemoryBlockExtension)memBlocks[i]).dispose();
- } catch (DebugException e) {
- DebugPlugin.log(e);
- }
- }
- }
- notifyListeners(memBlocks, REMOVED);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#addListener(org.eclipse.debug.ui.IMemoryBlockListener)
- */
- public void addListener(IMemoryBlockListener listener) {
-
- if(listeners == null) {
- return;
- }
- if(listener == null) {
- DebugPlugin.logMessage("Null argument passed into IMemoryBlockManager.addListener", null); //$NON-NLS-1$
- return;
- }
- if (!listeners.contains(listener)) {
- listeners.add(listener);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#removeListener(org.eclipse.debug.ui.IMemoryBlockListener)
- */
- public void removeListener(IMemoryBlockListener listener) {
-
- if(listeners == null) {
- return;
- }
- if(listener == null) {
- DebugPlugin.logMessage("Null argument passed into IMemoryBlockManager.removeListener", null); //$NON-NLS-1$
- return;
- }
- if (listeners.contains(listener)) {
- listeners.remove(listener);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IMemoryBlockManager#getMemoryBlocks()
- */
- public IMemoryBlock[] getMemoryBlocks() {
- return (IMemoryBlock[])memoryBlocks.toArray(new IMemoryBlock[memoryBlocks.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#getMemoryBlocks(org.eclipse.debug.core.model.IDebugTarget)
- */
- public IMemoryBlock[] getMemoryBlocks(IDebugTarget debugTarget) {
- IMemoryBlock[] blocks = (IMemoryBlock[])memoryBlocks.toArray(new IMemoryBlock[memoryBlocks.size()]);
- ArrayList memoryBlocksList = new ArrayList();
- for (int i=0; i<blocks.length; i++) {
- if (blocks[i].getDebugTarget() == debugTarget) {
- memoryBlocksList.add(blocks[i]);
- }
- }
- return (IMemoryBlock[])memoryBlocksList.toArray(new IMemoryBlock[memoryBlocksList.size()]);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.ui.IMemoryBlockManager#getMemoryBlocks(org.eclipse.debug.core.model.IMemoryBlockRetrieval)
- */
- public IMemoryBlock[] getMemoryBlocks(IMemoryBlockRetrieval retrieve) {
- IMemoryBlock[] blocks = (IMemoryBlock[])memoryBlocks.toArray(new IMemoryBlock[memoryBlocks.size()]);
- ArrayList memoryBlocksList = new ArrayList(blocks.length);
- for (int i=0; i<blocks.length; i++) {
- if (blocks[i] instanceof IMemoryBlockExtension) {
- if (((IMemoryBlockExtension)blocks[i]).getMemoryBlockRetrieval() == retrieve) {
- memoryBlocksList.add(blocks[i]);
- }
- }
- else {
- IMemoryBlockRetrieval mbRetrieval = (IMemoryBlockRetrieval)blocks[i].getAdapter(IMemoryBlockRetrieval.class);
-
- // standard memory block always uses the debug target as the memory block retrieval
- if (mbRetrieval == null)
- mbRetrieval = blocks[i].getDebugTarget();
-
- if (mbRetrieval == retrieve) {
- memoryBlocksList.add(blocks[i]);
- }
- }
- }
- return (IMemoryBlock[])memoryBlocksList.toArray(new IMemoryBlock[memoryBlocksList.size()]);
- }
-
- /**
- * Notifies the listeners about the given memory blocks and the event to be sent
- * @param memBlocks
- * @param event
- */
- private void notifyListeners(IMemoryBlock[] memBlocks, int event) {
- getMemoryBlockNotifier().notify(memBlocks, event);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.IDebugEventSetListener#handleDebugEvents(org.eclipse.debug.core.DebugEvent[])
- */
- public void handleDebugEvents(DebugEvent[] events) {
- for (int i=0; i < events.length; i++) {
- handleDebugEvent(events[i]);
- }
- }
-
- /**
- * Handles a debug event
- * @param event
- */
- public void handleDebugEvent(DebugEvent event) {
- Object obj = event.getSource();
- IDebugTarget dt = null;
-
- if (event.getKind() == DebugEvent.TERMINATE) {
- // a terminate event could happen from an IThread or IDebugTarget
- // only handle a debug event from the debug target
- if (obj instanceof IDebugTarget) {
- dt = ((IDebugTarget)obj);
-
- // getMemoryBlocks will return an empty array if it is null
- IMemoryBlock[] deletedMemoryBlocks = getMemoryBlocks(dt);
- removeMemoryBlocks(deletedMemoryBlocks);
- }
- }
- }
-
- /**
- * Clean up when the plugin is shut down
- */
- public void shutdown() {
- if (listeners != null) {
- listeners.clear();
- listeners = null;
- }
-
- if (memoryBlocks != null) {
- memoryBlocks.clear();
- memoryBlocks = null;
- }
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/NullStreamsProxy.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/NullStreamsProxy.java
deleted file mode 100644
index 5d0dab378..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/NullStreamsProxy.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.debug.core.IStreamListener;
-import org.eclipse.debug.core.model.IStreamMonitor;
-import org.eclipse.debug.core.model.IStreamsProxy2;
-
-public class NullStreamsProxy implements IStreamsProxy2 {
- private NullStreamMonitor outputStreamMonitor;
- private NullStreamMonitor errorStreamMonitor;
-
- public NullStreamsProxy(Process process) {
- outputStreamMonitor = new NullStreamMonitor(process.getInputStream());
- errorStreamMonitor = new NullStreamMonitor(process.getErrorStream());
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamsProxy2#closeInputStream()
- */
- public void closeInputStream() throws IOException {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamsProxy#getErrorStreamMonitor()
- */
- public IStreamMonitor getErrorStreamMonitor() {
- return errorStreamMonitor;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamsProxy#getOutputStreamMonitor()
- */
- public IStreamMonitor getOutputStreamMonitor() {
- return outputStreamMonitor;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamsProxy#write(java.lang.String)
- */
- public void write(String input) throws IOException {
- }
-
- private class NullStreamMonitor implements IStreamMonitor {
- private InputStream fStream;
-
- public NullStreamMonitor(InputStream stream) {
- fStream = stream;
- startReaderThread();
- }
-
- private void startReaderThread() {
- Thread thread = new Thread(new Runnable() {
- public void run() {
- byte[] bytes = new byte[1024];
- try {
- while(fStream.read(bytes) >= 0) {
- //do nothing
- }
- } catch (IOException e) {
- }
- }
- }, DebugCoreMessages.NullStreamsProxy_0);
- thread.setDaemon(true);
- thread.start();
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#addListener(org.eclipse.debug.core.IStreamListener)
- */
- public void addListener(IStreamListener listener) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#getContents()
- */
- public String getContents() {
- return ""; //$NON-NLS-1$
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#removeListener(org.eclipse.debug.core.IStreamListener)
- */
- public void removeListener(IStreamListener listener) {
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/OutputStreamMonitor.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/OutputStreamMonitor.java
deleted file mode 100644
index c5fa6dae0..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/OutputStreamMonitor.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IStreamListener;
-import org.eclipse.debug.core.model.IFlushableStreamMonitor;
-
-/**
- * Monitors the output stream of a system process and notifies
- * listeners of additions to the stream.
- *
- * The output stream monitor reads system out (or err) via
- * and input stream.
- */
-public class OutputStreamMonitor implements IFlushableStreamMonitor {
- /**
- * The stream being monitored (connected system out or err).
- */
- private InputStream fStream;
-
- /**
- * A collection of listeners
- */
- private ListenerList fListeners= new ListenerList();
-
- /**
- * Whether content is being buffered
- */
- private boolean fBuffered = true;
-
- /**
- * The local copy of the stream contents
- */
- private StringBuffer fContents;
-
- /**
- * The thread which reads from the stream
- */
- private Thread fThread;
-
- /**
- * The size of the read buffer
- */
- private static final int BUFFER_SIZE= 8192;
-
- /**
- * Whether or not this monitor has been killed.
- * When the monitor is killed, it stops reading
- * from the stream immediately.
- */
- private boolean fKilled= false;
-
- private long lastSleep;
-
- private String fEncoding;
-
- /**
- * Creates an output stream monitor on the
- * given stream (connected to system out or err).
- *
- * @param stream input stream to read from
- * @param encoding stream encoding or <code>null</code> for system default
- */
- public OutputStreamMonitor(InputStream stream, String encoding) {
- fStream = new BufferedInputStream(stream, 8192);
- fEncoding = encoding;
- fContents= new StringBuffer();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#addListener(org.eclipse.debug.core.IStreamListener)
- */
- public synchronized void addListener(IStreamListener listener) {
- fListeners.add(listener);
- }
-
- /**
- * Causes the monitor to close all
- * communications between it and the
- * underlying stream by waiting for the thread to terminate.
- */
- protected void close() {
- if (fThread != null) {
- Thread thread= fThread;
- fThread= null;
- try {
- thread.join();
- } catch (InterruptedException ie) {
- }
- fListeners = new ListenerList();
- }
- }
-
- /**
- * Notifies the listeners that text has
- * been appended to the stream.
- */
- private void fireStreamAppended(String text) {
- getNotifier().notifyAppend(text);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#getContents()
- */
- public synchronized String getContents() {
- return fContents.toString();
- }
-
- /**
- * Continually reads from the stream.
- * <p>
- * This method, along with the <code>startReading</code>
- * method is used to allow <code>OutputStreamMonitor</code>
- * to implement <code>Runnable</code> without publicly
- * exposing a <code>run</code> method.
- */
- private void read() {
- lastSleep = System.currentTimeMillis();
- long currentTime = lastSleep;
- byte[] bytes= new byte[BUFFER_SIZE];
- int read = 0;
- while (read >= 0) {
- try {
- if (fKilled) {
- break;
- }
- read= fStream.read(bytes);
- if (read > 0) {
- String text;
- if (fEncoding != null) {
- text = new String(bytes, 0, read, fEncoding);
- } else {
- text = new String(bytes, 0, read);
- }
- synchronized (this) {
- if (isBuffered()) {
- fContents.append(text);
- }
- fireStreamAppended(text);
- }
- }
- } catch (IOException ioe) {
- if (!fKilled) {
- DebugPlugin.log(ioe);
- }
- return;
- } catch (NullPointerException e) {
- // killing the stream monitor while reading can cause an NPE
- // when reading from the stream
- if (!fKilled && fThread != null) {
- DebugPlugin.log(e);
- }
- return;
- }
-
- currentTime = System.currentTimeMillis();
- if (currentTime - lastSleep > 1000) {
- lastSleep = currentTime;
- try {
- Thread.sleep(1); // just give up CPU to maintain UI responsiveness.
- } catch (InterruptedException e) {
- }
- }
- }
- try {
- fStream.close();
- } catch (IOException e) {
- DebugPlugin.log(e);
- }
- }
-
- protected void kill() {
- fKilled= true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamMonitor#removeListener(org.eclipse.debug.core.IStreamListener)
- */
- public synchronized void removeListener(IStreamListener listener) {
- fListeners.remove(listener);
- }
-
- /**
- * Starts a thread which reads from the stream
- */
- protected void startMonitoring() {
- if (fThread == null) {
- fThread= new Thread(new Runnable() {
- public void run() {
- read();
- }
- }, DebugCoreMessages.OutputStreamMonitor_label);
- fThread.setDaemon(true);
- fThread.setPriority(Thread.MIN_PRIORITY);
- fThread.start();
- }
- }
-
- /**
- * @see org.eclipse.debug.core.model.IFlushableStreamMonitor#setBuffered(boolean)
- */
- public synchronized void setBuffered(boolean buffer) {
- fBuffered = buffer;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IFlushableStreamMonitor#flushContents()
- */
- public synchronized void flushContents() {
- fContents.setLength(0);
- }
-
- /**
- * @see IFlushableStreamMonitor#isBuffered()
- */
- public synchronized boolean isBuffered() {
- return fBuffered;
- }
-
- private ContentNotifier getNotifier() {
- return new ContentNotifier();
- }
-
- class ContentNotifier implements ISafeRunnable {
-
- private IStreamListener fListener;
- private String fText;
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#handleException(java.lang.Throwable)
- */
- public void handleException(Throwable exception) {
- DebugPlugin.log(exception);
- }
-
- /**
- * @see org.eclipse.core.runtime.ISafeRunnable#run()
- */
- public void run() throws Exception {
- fListener.streamAppended(fText, OutputStreamMonitor.this);
- }
-
- public void notifyAppend(String text) {
- if (text == null)
- return;
- fText = text;
- Object[] copiedListeners= fListeners.getListeners();
- for (int i= 0; i < copiedListeners.length; i++) {
- fListener = (IStreamListener) copiedListeners[i];
- SafeRunner.run(this);
- }
- fListener = null;
- fText = null;
- }
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StepFilterManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StepFilterManager.java
deleted file mode 100644
index 7723837fc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StepFilterManager.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchListener;
-import org.eclipse.debug.core.commands.IStepFiltersHandler;
-import org.eclipse.debug.internal.core.commands.DebugCommandRequest;
-
-/**
- * As targets are launched, this manager sets its step filter
- * support settings according to the "use step filter" setting.
- *
- * @since 3.0
- */
-public class StepFilterManager implements ILaunchListener {
-
- public static final String PREF_USE_STEP_FILTERS = DebugPlugin.getUniqueIdentifier() + ".USE_STEP_FILTERS"; //$NON-NLS-1$
-
- /**
- * The step filter manager is instantiated by the debug UI plug-in,
- * and should be accessed from the <code>DebugUIPlugin</code> class.
- */
- protected StepFilterManager() {
- DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
- }
-
- /**
- * This method is called by the debug UI plug-in at shutdown.
- */
- public void shutdown() {
- DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(this);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchAdded(org.eclipse.debug.core.ILaunch)
- */
- public void launchAdded(ILaunch launch) {
- launchChanged(launch);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchChanged(org.eclipse.debug.core.ILaunch)
- */
- public void launchChanged(ILaunch launch) {
- IStepFiltersHandler command = (IStepFiltersHandler)launch.getAdapter(IStepFiltersHandler.class);
- if (command != null) {
- command.execute(new DebugCommandRequest(new Object[]{launch}));
- }
- }
-
- /**
- * Returns whether the 'use step filters' preference is on.
- *
- * @return whether to use step filters
- */
- public boolean isUseStepFilters() {
- return DebugPlugin.getDefault().getPluginPreferences().getBoolean(PREF_USE_STEP_FILTERS);
- }
-
- /**
- * Sets whether to use step filters.
- *
- * @param useFilters whether to use step filters
- */
- public void setUseStepFilters(boolean useFilters) {
- DebugPlugin.getDefault().getPluginPreferences().setValue(PREF_USE_STEP_FILTERS, useFilters);
- ILaunch[] launchs = DebugPlugin.getDefault().getLaunchManager().getLaunches();
- for (int i = 0; i < launchs.length; i++) {
- ILaunch launch = launchs[i];
- launchChanged(launch);
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchListener#launchRemoved(org.eclipse.debug.core.ILaunch)
- */
- public void launchRemoved(ILaunch launch) {}
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StreamsProxy.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StreamsProxy.java
deleted file mode 100644
index 8820f682c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/StreamsProxy.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-
-import java.io.IOException;
-
-import org.eclipse.debug.core.model.IStreamMonitor;
-import org.eclipse.debug.core.model.IStreamsProxy;
-import org.eclipse.debug.core.model.IStreamsProxy2;
-
-/**
- * Standard implementation of a streams proxy for s
- * StreamsProxy
- */
-
-public class StreamsProxy implements IStreamsProxy, IStreamsProxy2 {
- /**
- * The monitor for the output stream (connected to standard out of the process)
- */
- private OutputStreamMonitor fOutputMonitor;
- /**
- * The monitor for the error stream (connected to standard error of the process)
- */
- private OutputStreamMonitor fErrorMonitor;
- /**
- * The monitor for the input stream (connected to standard in of the process)
- */
- private InputStreamMonitor fInputMonitor;
- /**
- * Records the open/closed state of communications with
- * the underlying streams.
- */
- private boolean fClosed= false;
- /**
- * Creates a <code>StreamsProxy</code> on the streams
- * of the given system process.
- *
- * @param process system process to create a streams proxy on
- * @param encoding the process's encoding or <code>null</code> if default
- */
- public StreamsProxy(Process process, String encoding) {
- if (process == null) {
- return;
- }
- fOutputMonitor= new OutputStreamMonitor(process.getInputStream(), encoding);
- fErrorMonitor= new OutputStreamMonitor(process.getErrorStream(), encoding);
- fInputMonitor= new InputStreamMonitor(process.getOutputStream());
- fOutputMonitor.startMonitoring();
- fErrorMonitor.startMonitoring();
- fInputMonitor.startMonitoring();
- }
-
- /**
- * Causes the proxy to close all
- * communications between it and the
- * underlying streams after all remaining data
- * in the streams is read.
- */
- public void close() {
- if (!fClosed) {
- fClosed= true;
- fOutputMonitor.close();
- fErrorMonitor.close();
- fInputMonitor.close();
- }
- }
-
- /**
- * Causes the proxy to close all
- * communications between it and the
- * underlying streams immediately.
- * Data remaining in the streams is lost.
- */
- public void kill() {
- fClosed= true;
- fOutputMonitor.kill();
- fErrorMonitor.kill();
- fInputMonitor.close();
- }
-
- /**
- * @see IStreamsProxy#getErrorStreamMonitor()
- */
- public IStreamMonitor getErrorStreamMonitor() {
- return fErrorMonitor;
- }
-
- /**
- * @see IStreamsProxy#getOutputStreamMonitor()
- */
- public IStreamMonitor getOutputStreamMonitor() {
- return fOutputMonitor;
- }
-
- /**
- * @see IStreamsProxy#write(String)
- */
- public void write(String input) throws IOException {
- if (!fClosed) {
- fInputMonitor.write(input);
- } else {
- throw new IOException();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IStreamsProxy2#closeInputStream()
- */
- public void closeInputStream() throws IOException {
- if (!fClosed) {
- fInputMonitor.closeInputStream();
- } else {
- throw new IOException();
- }
-
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemPropertyResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemPropertyResolver.java
deleted file mode 100644
index 01c5d19d5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemPropertyResolver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.debug.core.DebugPlugin;
-
-/**
- * Resolves the value of system properties from the Eclipse SDK runtime.
- */
-public class SystemPropertyResolver implements IDynamicVariableResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- if (argument == null) {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), IStatus.ERROR, DebugCoreMessages.SystemPropertyResolver_0, null));
- }
- return System.getProperty(argument);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemVariableResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemVariableResolver.java
deleted file mode 100644
index da4d5e543..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/SystemVariableResolver.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import java.net.URL;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-
-/**
- * Resolves common system variables. The current set of variables
- * supported (referenced as an argument to this variable) are:
- * <ul>
- * <li>ARCH - value of <code>BootLoader.getOSArch()</code></li>
- * <li>ECLIPSE_HOME - location of the Eclipse installation</li>
- * <li>NL - value of <code>BootLoader.getNL()</code></li>
- * <li>OS - value of <code>BootLoader.getOS()</code></li>
- * <li>WS - value of <code>BootLoader.getWS()</code></li>
- * </ul>
- * @since 3.0
- */
-public class SystemVariableResolver implements IDynamicVariableResolver {
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- if ("ARCH".equals(argument)) { //$NON-NLS-1$
- return Platform.getOSArch();
- } else if ("ECLIPSE_HOME".equals(argument)) { //$NON-NLS-1$
- URL installURL = Platform.getInstallLocation().getURL();
- IPath ppath = new Path(installURL.getFile()).removeTrailingSeparator();
- return getCorrectPath(ppath.toOSString());
- } else if ("NL".equals(argument)) { //$NON-NLS-1$
- return Platform.getNL();
- } else if ("OS".equals(argument)) { //$NON-NLS-1$
- return Platform.getOS();
- } else if ("WS".equals(argument)) { //$NON-NLS-1$
- return Platform.getWS();
- }
- return null;
- }
-
- private static String getCorrectPath(String path) {
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < path.length(); i++) {
- char c = path.charAt(i);
- if (Platform.getOS().equals("win32")) { //$NON-NLS-1$
- if (i == 0 && c == '/')
- continue;
- }
- // Some VMs may return %20 instead of a space
- if (c == '%' && i + 2 < path.length()) {
- char c1 = path.charAt(i + 1);
- char c2 = path.charAt(i + 2);
- if (c1 == '2' && c2 == '0') {
- i += 2;
- buf.append(" "); //$NON-NLS-1$
- continue;
- }
- }
- buf.append(c);
- }
- return buf.toString();
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/WatchExpression.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/WatchExpression.java
deleted file mode 100644
index ed51fc9e6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/WatchExpression.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IWatchExpression;
-import org.eclipse.debug.core.model.IWatchExpressionDelegate;
-import org.eclipse.debug.core.model.IWatchExpressionListener;
-import org.eclipse.debug.core.model.IWatchExpressionResult;
-
-/**
- * Base watch expression implementation.
- *
- * @since 3.0
- */
-public class WatchExpression implements IWatchExpression {
-
- protected String fExpressionText;
- protected IWatchExpressionResult fResult;
- protected IDebugElement fCurrentContext;
- private boolean fEnabled= true;
- private boolean fPending= false;
-
- /**
- * Creates a new watch expression with the given expression
- * text.
- * @param expression the text of the expression to be evaluated.
- */
- public WatchExpression(String expression) {
- fExpressionText= expression;
- }
-
- /**
- * Creates a new watch expression with the given expression
- * and the given enablement;
- *
- * @param expressionText the text of the expression to be evaluated
- * @param enabled whether or not the new expression should be enabled
- */
- public WatchExpression(String expressionText, boolean enabled) {
- this(expressionText);
- fEnabled= enabled;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IWatchExpression#evaluate()
- */
- public void evaluate() {
- IDebugElement context= fCurrentContext;
- if (context == null) {
- return;
- }
-
- IWatchExpressionListener listener= new IWatchExpressionListener() {
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IWatchExpressionListener#watchEvaluationFinished(org.eclipse.debug.core.model.IWatchExpressionResult)
- */
- public void watchEvaluationFinished(IWatchExpressionResult result) {
- setResult(result);
- }
- };
- setPending(true);
- IWatchExpressionDelegate delegate= DebugPlugin.getDefault().getExpressionManager().newWatchExpressionDelegate(context.getModelIdentifier());
- if (delegate != null) {
- delegate.evaluateExpression(getExpressionText(), context, listener);
- } else {
- // No delegate provided
- listener.watchEvaluationFinished(new IWatchExpressionResult() {
- public IValue getValue() {
- return null;
- }
- public boolean hasErrors() {
- return true;
- }
- public String[] getErrorMessages() {
- return new String[] { DebugCoreMessages.WatchExpression_0 };
- }
- public String getExpressionText() {
- return WatchExpression.this.getExpressionText();
- }
- public DebugException getException() {
- return null;
- }
- });
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IWatchExpression#setExpressionContext(org.eclipse.debug.core.model.IDebugElement)
- */
- public void setExpressionContext(IDebugElement context) {
- synchronized (this) {
- fCurrentContext= context;
- }
- if (context == null) {
- setResult(null);
- return;
- }
- if (!isEnabled()) {
- return;
- }
-
- evaluate();
- }
-
- /**
- * Sets the result of the last expression and fires notification that
- * this expression's value has changed.
- *
- * @param result result of a watch expression
- */
- public void setResult(IWatchExpressionResult result) {
- synchronized (this) {
- fResult= result;
- fPending = false;
- }
- fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.STATE)); // pending state
- fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT)); // value change
- }
-
- /**
- * Fires the given debug event
- * @param event
- */
- protected void fireEvent(DebugEvent event) {
- DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[] {event});
- }
-
- /**
- * Notifies the expression manager that this watch expression's
- * values have changed so the manager can update the
- * persisted expression.
- *
- * @param persist whether to persist the expression
- */
- private void watchExpressionChanged(boolean persist) {
- ((ExpressionManager)DebugPlugin.getDefault().getExpressionManager()).watchExpressionChanged(this, persist);
- }
-
- /**
- * @see org.eclipse.debug.core.model.IExpression#getExpressionText()
- */
- public String getExpressionText() {
- return fExpressionText;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IExpression#getValue()
- */
- public synchronized IValue getValue() {
- if (fResult == null) {
- return null;
- }
- return fResult.getValue();
- }
-
- /**
- * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget()
- */
- public IDebugTarget getDebugTarget() {
- IDebugElement element = fCurrentContext;
- if (element != null) {
- return element.getDebugTarget();
- }
- return null;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IExpression#dispose()
- */
- public void dispose() {
- }
-
- /**
- * @see org.eclipse.debug.core.model.IDebugElement#getModelIdentifier()
- */
- public String getModelIdentifier() {
- synchronized (this) {
- IValue value = getValue();
- if (value != null) {
- return value.getModelIdentifier();
- }
- if (fCurrentContext != null) {
- return fCurrentContext.getModelIdentifier();
- }
- }
- return DebugPlugin.getUniqueIdentifier();
- }
-
- /**
- * @see org.eclipse.debug.core.model.IDebugElement#getLaunch()
- */
- public ILaunch getLaunch() {
- IDebugTarget debugTarget = getDebugTarget();
- if (debugTarget != null) {
- return debugTarget.getLaunch();
- }
- return null;
- }
-
- /**
- * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
- */
- public Object getAdapter(Class adapter) {
- //CONTEXTLAUNCHING
- if(adapter.equals(ILaunchConfiguration.class)) {
- ILaunch launch = getLaunch();
- if(launch != null) {
- return launch.getLaunchConfiguration();
- }
- }
- return Platform.getAdapterManager().getAdapter(this, adapter);
- }
-
- /**
- * @param enabled
- */
- public void setEnabled(boolean enabled) {
- fEnabled= enabled;
- watchExpressionChanged(true);
- evaluate();
- }
-
- /**
- * @param expression
- */
- public void setExpressionText(String expression) {
- fExpressionText= expression;
- watchExpressionChanged(true);
- evaluate();
- }
-
- /**
- * @return Whether or not this watch expression is currently enabled.
- * Enabled watch expressions will continue to update their value
- * automatically. Disabled expressions require a manual update.
- */
- public boolean isEnabled() {
- return fEnabled;
- }
-
- /**
- * @see org.eclipse.debug.core.model.IWatchExpression#isPending()
- */
- public synchronized boolean isPending() {
- return fPending;
- }
-
- /**
- * Sets the pending state of this expression.
- *
- * @param pending whether or not this expression should be
- * flagged as pending
- */
- protected void setPending(boolean pending) {
- synchronized (this) {
- fPending= pending;
- }
- fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.STATE));
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IErrorReportingExpression#hasErrors()
- */
- public boolean hasErrors() {
- return fResult != null && fResult.hasErrors();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.model.IErrorReportingExpression#getErrorMessages()
- */
- public String[] getErrorMessages() {
- if (fResult == null) {
- return new String[0];
- }
- return fResult.getErrorMessages();
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/CommandAdapterFactory.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/CommandAdapterFactory.java
deleted file mode 100644
index 5d47e7b30..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/CommandAdapterFactory.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.IAdapterFactory;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.commands.IDisconnectHandler;
-import org.eclipse.debug.core.commands.IDropToFrameHandler;
-import org.eclipse.debug.core.commands.IResumeHandler;
-import org.eclipse.debug.core.commands.IStepFiltersHandler;
-import org.eclipse.debug.core.commands.IStepIntoHandler;
-import org.eclipse.debug.core.commands.IStepOverHandler;
-import org.eclipse.debug.core.commands.IStepReturnHandler;
-import org.eclipse.debug.core.commands.ISuspendHandler;
-import org.eclipse.debug.core.commands.ITerminateHandler;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IDisconnect;
-import org.eclipse.debug.core.model.IDropToFrame;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStep;
-import org.eclipse.debug.core.model.ISuspendResume;
-import org.eclipse.debug.core.model.ITerminate;
-
-/**
- * Adapter factory for debug commands.
- *
- * @since 3.3
- *
- */
-public class CommandAdapterFactory implements IAdapterFactory {
-
-
- private static ITerminateHandler fgTerminateCommand = new TerminateCommand();
- private static IStepOverHandler fgStepOverCommand = new StepOverCommand();
- private static IStepIntoHandler fgStepIntoCommand = new StepIntoCommand();
- private static IStepReturnHandler fgStepReturnCommand = new StepReturnCommand();
- private static IDropToFrameHandler fgDropToFrameCommand = new DropToFrameCommand();
- private static IDisconnectHandler fgDisconnectCommand = new DisconnectCommand();
- private static ISuspendHandler fgSuspendCommand = new SuspendCommand();
- private static IResumeHandler fgResumeCommand = new ResumeCommand();
- private static IStepFiltersHandler fgStepFiltersCommand = new StepFiltersCommand();
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class)
- */
- public Object getAdapter(Object adaptableObject, Class adapterType) {
- if (IStepFiltersHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IDebugElement ||
- adaptableObject instanceof ILaunch ||
- adaptableObject instanceof IProcess) {
- return fgStepFiltersCommand;
- }
- }
-
- if (ITerminateHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof ITerminate) {
- return fgTerminateCommand;
- }
- }
- if (IStepOverHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IStep) {
- return fgStepOverCommand;
- }
- }
- if (IStepIntoHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IStep) {
- return fgStepIntoCommand;
- }
- }
- if (IStepReturnHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IStep) {
- return fgStepReturnCommand;
- }
- }
- if (ISuspendHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof ISuspendResume) {
- return fgSuspendCommand;
- }
- }
- if (IResumeHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof ISuspendResume) {
- return fgResumeCommand;
- }
- }
- if (IDisconnectHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IDisconnect) {
- return fgDisconnectCommand;
- }
- }
- if (IDropToFrameHandler.class.equals(adapterType)) {
- if (adaptableObject instanceof IDropToFrame) {
- return fgDropToFrameCommand;
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
- */
- public Class[] getAdapterList() {
- return new Class[]{
- ITerminateHandler.class,
- IStepOverHandler.class,
- IStepIntoHandler.class,
- IStepReturnHandler.class,
- ISuspendHandler.class,
- IResumeHandler.class,
- IDropToFrameHandler.class,
- IDisconnectHandler.class,
- IStepFiltersHandler.class};
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommand.java
deleted file mode 100644
index c3ad9c263..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommand.java
+++ /dev/null
@@ -1,324 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import java.util.LinkedHashSet;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.IRequest;
-import org.eclipse.debug.core.commands.IDebugCommandHandler;
-import org.eclipse.debug.core.commands.IDebugCommandRequest;
-import org.eclipse.debug.core.commands.IEnabledStateRequest;
-import org.eclipse.debug.internal.core.DebugOptions;
-
-/**
- * Common function for standard debug commands.
- *
- * @since 3.3
- *
- */
-public abstract class DebugCommand implements IDebugCommandHandler {
-
- /**
- * Job to update enabled state of action.
- */
- class UpdateJob extends Job implements IJobChangeListener {
-
- /**
- * The request to update
- */
- private IEnabledStateRequest request;
-
- /**
- * Whether this job has been run
- */
- private boolean run = false;
-
- /**
- * Creates a new job to update the specified request
- *
- * @param stateRequest
- */
- UpdateJob(IEnabledStateRequest stateRequest) {
- super(getEnablementTaskName());
- request = stateRequest;
- setSystem(true);
- setRule(createUpdateSchedulingRule(request));
- getJobManager().addJobChangeListener(this);
- }
-
- protected IStatus run(IProgressMonitor monitor) {
- run = true;
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.print("can execute command: " + DebugCommand.this); //$NON-NLS-1$
- }
- if (monitor.isCanceled()) {
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println(" >> *CANCELED* <<"); //$NON-NLS-1$
- }
- request.cancel();
- }
- Object[] elements = request.getElements();
- Object[] targets = new Object[elements.length];
- if (!request.isCanceled()) {
- for (int i = 0; i < elements.length; i++) {
- targets[i] = getTarget(elements[i]);
- if (targets[i] == null) {
- request.setEnabled(false);
- request.cancel();
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println(" >> false (no adapter)"); //$NON-NLS-1$
- }
- }
- }
- if (monitor.isCanceled()) {
- request.cancel();
- }
- }
- if (!request.isCanceled()) {
- targets = coalesce(targets);
- monitor.beginTask(getEnablementTaskName(), targets.length);
- try {
- boolean executable = isExecutable(targets, monitor, request);
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println(" >> " + executable); //$NON-NLS-1$
- }
- request.setEnabled(executable);
- } catch (CoreException e) {
- request.setStatus(e.getStatus());
- request.setEnabled(false);
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println(" >> ABORTED"); //$NON-NLS-1$
- System.out.println("\t" + e.getStatus().getMessage()); //$NON-NLS-1$
- }
- }
- }
- monitor.setCanceled(request.isCanceled());
- request.done();
- monitor.done();
- return Status.OK_STATUS;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.runtime.jobs.Job#belongsTo(java.lang.Object)
- */
- public boolean belongsTo(Object family) {
- return getUpdateJobFamily().equals(family);
- }
-
- public void aboutToRun(IJobChangeEvent event) {
- }
-
- public void awake(IJobChangeEvent event) {
- }
-
- public void done(IJobChangeEvent event) {
- if (event.getJob() == this) {
- if (!run) {
- request.cancel();
- request.done();
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println(" >> *CANCELED* <<" + DebugCommand.this); //$NON-NLS-1$
- }
- }
- getJobManager().removeJobChangeListener(this);
- }
- }
-
- public void running(IJobChangeEvent event) {
- }
-
- public void scheduled(IJobChangeEvent event) {
- }
-
- public void sleeping(IJobChangeEvent event) {
- }
-
- }
-
- /**
- * Scheduling rule to serialize commands on an object
- */
- class SerialPerObjectRule implements ISchedulingRule {
-
- private Object fObject = null;
-
- public SerialPerObjectRule(Object lock) {
- fObject = lock;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule)
- */
- public boolean contains(ISchedulingRule rule) {
- return rule == this;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.core.runtime.jobs.ISchedulingRule#isConflicting(org.eclipse.core.runtime.jobs.ISchedulingRule)
- */
- public boolean isConflicting(ISchedulingRule rule) {
- if (rule instanceof SerialPerObjectRule) {
- SerialPerObjectRule vup = (SerialPerObjectRule) rule;
- return fObject == vup.fObject;
- }
- return false;
- }
-
- }
-
- public boolean execute(final IDebugCommandRequest request) {
- Job job = new Job(getExecuteTaskName()) {
- protected IStatus run(IProgressMonitor monitor) {
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println("execute: " + DebugCommand.this); //$NON-NLS-1$
- }
- Object[] elements = request.getElements();
- Object[] targets = new Object[elements.length];
- for (int i = 0; i < elements.length; i++) {
- targets[i]= getTarget(elements[i]);
- }
- targets = coalesce(targets);
- monitor.beginTask(getExecuteTaskName(), targets.length);
- try {
- doExecute(targets, monitor, request);
- } catch (CoreException e) {
- request.setStatus(e.getStatus());
- if (DebugOptions.DEBUG_COMMANDS) {
- System.out.println("\t" + e.getStatus().getMessage()); //$NON-NLS-1$
- }
- }
- request.done();
- monitor.setCanceled(request.isCanceled());
- monitor.done();
- return Status.OK_STATUS;
- }
- };
- job.setSystem(true);
- job.schedule();
- return isRemainEnabled();
- }
-
- /**
- * Returns whether this command should remain enabled after execution is invoked.
- *
- * @return whether to remain enabled
- */
- protected boolean isRemainEnabled() {
- return false;
- }
-
- public void canExecute(final IEnabledStateRequest request) {
- Job job = new UpdateJob(request);
- job.schedule();
- }
-
- /**
- * Returns the name to use for jobs and progress monitor task names when checking
- * enabled state.
- *
- * @return task name
- */
- protected String getEnablementTaskName() {
- // this is a system job name and does not need to be NLS'd
- return "Check Debug Command"; //$NON-NLS-1$
- }
-
- /**
- * Returns the name to use for jobs and progress monitor task names when executing
- * a debug command
- *
- * @return task name
- */
- protected String getExecuteTaskName() {
- // this is a system job name and does not need to be NLS'd
- return "Execute Debug Command"; //$NON-NLS-1$
- }
-
- /**
- * Executes the actual operation.
- *
- * @param targets objects to perform on
- * @param request request
- */
- protected abstract void doExecute(Object[] targets, IProgressMonitor monitor, IRequest request) throws CoreException;
-
- /**
- * Returns whether this command is executable.
- *
- * @param targets objects to check command for
- * @param monitor progress monitor
- * @param request request
- * @return whether this command can be executed
- */
- protected abstract boolean isExecutable(Object[] targets, IProgressMonitor monitor, IEnabledStateRequest request) throws CoreException;
-
- /**
- * Returns the appropriate command adapter from the given object.
- *
- * @param element object to obtain adapter from
- * @return adapter
- */
- protected abstract Object getTarget(Object element);
-
- /**
- * Returns an adapter of the specified type for the given object or <code>null</code>
- * if none. The object itself is returned if it is an instance of the specified type.
- *
- * @param element element to retrieve adapter for
- * @param type adapter type
- * @return adapter or <code>null</code>
- */
- protected Object getAdapter(Object element, Class type) {
- return DebugPlugin.getAdapter(element, type);
- }
-
- /**
- * Scheduling rule for updating command enabled state.
- *
- * @return scheduling rule or <code>null</code>
- */
- protected ISchedulingRule createUpdateSchedulingRule(IDebugCommandRequest request) {
- return new SerialPerObjectRule(request.getElements()[0]);
- }
-
- private Object[] coalesce(Object[] objects) {
- if (objects.length == 1) {
- return objects;
- } else {
- LinkedHashSet set = new LinkedHashSet(objects.length);
- for (int i = 0; i < objects.length; i++) {
- set.add(objects[i]);
- }
- return set.toArray();
- }
- }
-
- /**
- * Returns the job family for this command's "can execute" job.
- *
- * @return the job family for this command's "can execute" job
- */
- protected abstract Object getUpdateJobFamily();
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommandRequest.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommandRequest.java
deleted file mode 100644
index 5d447e5df..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DebugCommandRequest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.debug.core.commands.IDebugCommandRequest;
-
-/**
- * @since 3.3
- */
-public class DebugCommandRequest extends Request implements IDebugCommandRequest {
-
- private Object[] fElements;
-
- public DebugCommandRequest(Object[] elements) {
- fElements = elements;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IDebugCommandRequest#getElements()
- */
- public Object[] getElements() {
- return fElements;
- }
-
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DisconnectCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DisconnectCommand.java
deleted file mode 100644
index 8540df1ba..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DisconnectCommand.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IDisconnectHandler;
-import org.eclipse.debug.core.model.IDisconnect;
-
-/**
- * Default disconnect command for the standard debug model.
- *
- * @since 3.3
- */
-public class DisconnectCommand extends ForEachCommand implements IDisconnectHandler {
-
- protected Object getTarget(Object element) {
- return getAdapter(element, IDisconnect.class);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.ForEachCommand#execute(java.lang.Object)
- */
- protected void execute(Object target) throws CoreException {
- ((IDisconnect)target).disconnect();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.ForEachCommand#isExecutable(java.lang.Object)
- */
- protected boolean isExecutable(Object target) {
- return ((IDisconnect)target).canDisconnect();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IDisconnectHandler.class;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DropToFrameCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DropToFrameCommand.java
deleted file mode 100644
index 692cf3080..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/DropToFrameCommand.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IDropToFrameHandler;
-import org.eclipse.debug.core.model.IDropToFrame;
-
-/**
- * Default drop to frame command for the standard debug model.
- *
- * @since 3.3
- */
-public class DropToFrameCommand extends StepCommand implements IDropToFrameHandler {
-
- protected Object getTarget(Object element) {
- return getAdapter(element, IDropToFrame.class);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.StepCommand#isSteppable(java.lang.Object)
- */
- protected boolean isSteppable(Object target) throws CoreException {
- return ((IDropToFrame)target).canDropToFrame();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.StepCommand#step(java.lang.Object)
- */
- protected void step(Object target) throws CoreException {
- ((IDropToFrame)target).dropToFrame();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IDropToFrameHandler.class;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ForEachCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ForEachCommand.java
deleted file mode 100644
index f536d904a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ForEachCommand.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.IRequest;
-import org.eclipse.debug.core.commands.IEnabledStateRequest;
-
-/**
- * A command that operates on each element individually.
- *
- * @since 3.3
- */
-public abstract class ForEachCommand extends DebugCommand {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#doExecute(java.lang.Object[], org.eclipse.core.runtime.IProgressMonitor, org.eclipse.debug.core.IRequest)
- */
- protected void doExecute(Object[] targets, IProgressMonitor monitor, IRequest request) throws CoreException {
- for (int i = 0; i < targets.length; i++) {
- execute(targets[i]);
- monitor.worked(1);
- }
- }
-
- protected abstract void execute(Object target) throws CoreException;
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#isExecutable(java.lang.Object[], org.eclipse.core.runtime.IProgressMonitor, org.eclipse.debug.core.commands.IEnabledStateRequest)
- */
- protected boolean isExecutable(Object[] targets, IProgressMonitor monitor, IEnabledStateRequest request) throws CoreException {
- for (int i = 0; i < targets.length; i++) {
- if (!isExecutable(targets[i])) {
- return false;
- }
- monitor.worked(1);
- }
- return true;
- }
-
- protected abstract boolean isExecutable(Object target);
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/Request.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/Request.java
deleted file mode 100644
index 29ac7b7ca..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/Request.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.debug.core.IRequest;
-
-/**
- * @since 3.3
- */
-public class Request implements IRequest {
-
- private IStatus fStatus;
- private boolean fCanceled = false;
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IStatusCollector#done()
- */
- public void done() {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IStatusCollector#getStatus()
- */
- public IStatus getStatus() {
- return fStatus;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IStatusCollector#setStatus(org.eclipse.core.runtime.IStatus)
- */
- public void setStatus(IStatus status) {
- fStatus = status;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IRequest#cancel()
- */
- public synchronized void cancel() {
- fCanceled = true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.commands.IRequest#isCanceled()
- */
- public synchronized boolean isCanceled() {
- return fCanceled;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ResumeCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ResumeCommand.java
deleted file mode 100644
index 6a9ea43dc..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/ResumeCommand.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IResumeHandler;
-import org.eclipse.debug.core.model.ISuspendResume;
-
-/**
- * Default resume command for the standard debug model.
- *
- * @since 3.3
- */
-public class ResumeCommand extends SuspendCommand implements IResumeHandler {
-
- protected void execute(Object target) throws CoreException {
- ((ISuspendResume)target).resume();
- }
-
- protected boolean isExecutable(Object target) {
- return ((ISuspendResume)target).canResume();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.SuspendCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IResumeHandler.class;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepCommand.java
deleted file mode 100644
index 5b560a366..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepCommand.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.IRequest;
-import org.eclipse.debug.core.commands.IEnabledStateRequest;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IStep;
-
-/**
- * Common function for step commands.
- *
- * @since 3.3
- */
-public abstract class StepCommand extends DebugCommand {
-
- protected void doExecute(Object[] targets, IProgressMonitor monitor, IRequest request) throws CoreException {
- for (int i = 0; i < targets.length; i++) {
- step(targets[i]);
- }
- }
-
- protected abstract void step(Object target) throws CoreException ;
-
- protected boolean isExecutable(Object[] targets, IProgressMonitor monitor, IEnabledStateRequest collector) throws CoreException {
- if (isThreadCompatible(targets)) {
- for (int i = 0; i < targets.length; i++) {
- if (!isSteppable(targets[i])) {
- return false;
- }
- }
- return true;
- } else {
- return false;
- }
- }
-
- protected abstract boolean isSteppable(Object target) throws CoreException;
-
- protected boolean isThreadCompatible(Object[] targets) {
- if (targets.length == 1) {
- return true;
- }
- // check if frames from same thread
- Set threads = new HashSet(targets.length);
- for (int i = 0; i < targets.length; i++) {
- Object object = targets[i];
- IStackFrame frame = null;
- if (object instanceof IStackFrame) {
- frame = (IStackFrame) object;
- } else if (object instanceof IAdaptable) {
- frame = (IStackFrame)((IAdaptable)object).getAdapter(IStackFrame.class);
- }
- if (frame != null) {
- if (!threads.add(frame.getThread())) {
- return false;
- }
- }
- }
- return true;
- }
-
- protected Object getTarget(Object element) {
- return getAdapter(element, IStep.class);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepFiltersCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepFiltersCommand.java
deleted file mode 100644
index df01527e3..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepFiltersCommand.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.commands.IStepFiltersHandler;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IDebugTarget;
-import org.eclipse.debug.core.model.IProcess;
-import org.eclipse.debug.core.model.IStepFilters;
-
-/**
- * Default toggle step filters command for the standard debug model.
- *
- * @since 3.3
- */
-public class StepFiltersCommand extends ForEachCommand implements IStepFiltersHandler {
-
- protected Object getTarget(Object element) {
- IDebugTarget[] targets = getDebugTargets(element);
- if (targets.length > 0) {
- IStepFilters[] filters = new IStepFilters[targets.length];
- for (int i = 0; i < targets.length; i++) {
- IDebugTarget target = targets[i];
- if (target instanceof IStepFilters) {
- filters[i] = (IStepFilters) target;
- } else {
- filters[i] = (IStepFilters) getAdapter(element, IStepFilters.class);
- }
- if (filters[i] == null) {
- return null;
- }
- }
- return filters;
- }
- return null;
- }
-
- private IDebugTarget[] getDebugTargets(Object element) {
- if (element instanceof IDebugElement) {
- IDebugElement debugElement = (IDebugElement) element;
- return new IDebugTarget[] { debugElement.getDebugTarget() };
- } else if (element instanceof ILaunch) {
- ILaunch launch = (ILaunch) element;
- return launch.getDebugTargets();
- } else if (element instanceof IProcess) {
- IProcess process = (IProcess) element;
- return process.getLaunch().getDebugTargets();
- } else {
- return new IDebugTarget[0];
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.ForEachCommand#execute(java.lang.Object)
- */
- protected void execute(Object target) throws CoreException {
- if (target == null) {
- return;
- }
- IStepFilters[] filters = (IStepFilters[]) target;
- for (int i = 0; i < filters.length; i++) {
- IStepFilters filter = filters[i];
- filter.setStepFiltersEnabled(DebugPlugin.isUseStepFilters());
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.ForEachCommand#isExecutable(java.lang.Object)
- */
- protected boolean isExecutable(Object target) {
- IStepFilters[] filters = (IStepFilters[]) target;
- for (int i = 0; i < filters.length; i++) {
- IStepFilters filter = filters[i];
- if (filter == null || !filter.supportsStepFilters()) {
- return false;
- }
- }
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IStepFiltersHandler.class;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepIntoCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepIntoCommand.java
deleted file mode 100644
index 368ad65ac..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepIntoCommand.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IStepIntoHandler;
-import org.eclipse.debug.core.model.IStep;
-
-/**
- * Default step into command for the standard debug model.
- *
- * @since 3.3
- */
-public class StepIntoCommand extends StepCommand implements IStepIntoHandler {
-
- protected boolean isSteppable(Object target) {
- return ((IStep)target).canStepInto();
- }
-
- protected void step(Object target) throws CoreException {
- ((IStep)target).stepInto();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IStepIntoHandler.class;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepOverCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepOverCommand.java
deleted file mode 100644
index 2535a2b38..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepOverCommand.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IStepOverHandler;
-import org.eclipse.debug.core.model.IStep;
-
-/**
- * Default step over command for the standard debug model.
- *
- * @since 3.3
- */
-public class StepOverCommand extends StepCommand implements IStepOverHandler {
-
-
- protected void step(Object target) throws CoreException {
- ((IStep)target).stepOver();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.StepCommand#isSteppable(java.lang.Object)
- */
- protected boolean isSteppable(Object target) {
- return ((IStep)target).canStepOver();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IStepOverHandler.class;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepReturnCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepReturnCommand.java
deleted file mode 100644
index f8ade6827..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/StepReturnCommand.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.IStepReturnHandler;
-import org.eclipse.debug.core.model.IStep;
-
-/**
- * Default step return command for the standard debug model.
- *
- * @since 3.3
- */
-public class StepReturnCommand extends StepCommand implements IStepReturnHandler {
-
- protected boolean isSteppable(Object target) {
- return ((IStep)target).canStepReturn();
- }
-
- protected void step(Object target) throws CoreException {
- ((IStep)target).stepReturn();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return IStepReturnHandler.class;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/SuspendCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/SuspendCommand.java
deleted file mode 100644
index ef99bff4b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/SuspendCommand.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.ISuspendHandler;
-import org.eclipse.debug.core.model.ISuspendResume;
-
-/**
- * Default suspend command for the standard debug model.
- *
- * @since 3.3
- */
-public class SuspendCommand extends ForEachCommand implements ISuspendHandler {
-
- protected Object getTarget(Object element) {
- return getAdapter(element, ISuspendResume.class);
- }
-
- protected void execute(Object target) throws CoreException {
- ((ISuspendResume)target).suspend();
- }
-
- protected boolean isExecutable(Object target) {
- return ((ISuspendResume)target).canSuspend();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return ISuspendHandler.class;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/TerminateCommand.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/TerminateCommand.java
deleted file mode 100644
index 85bc34ce7..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/commands/TerminateCommand.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.commands;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.commands.ITerminateHandler;
-import org.eclipse.debug.core.model.ITerminate;
-
-/**
- * Default terminate command for the standard debug model.
- *
- * @since 3.3
- */
-public class TerminateCommand extends ForEachCommand implements ITerminateHandler {
-
- protected Object getTarget(Object element) {
- return getAdapter(element, ITerminate.class);
- }
-
- protected void execute(Object target) throws CoreException {
- ((ITerminate)target).terminate();
- }
-
- protected boolean isExecutable(Object target) {
- return ((ITerminate)target).canTerminate();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.commands.DebugCommand#getUpdateJobFamily()
- */
- protected Object getUpdateJobFamily() {
- return ITerminateHandler.class;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceContainerType.java
deleted file mode 100644
index 935d11532..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceContainerType.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
-import org.eclipse.debug.core.sourcelookup.ISourceContainerTypeDelegate;
-import org.eclipse.debug.internal.core.IConfigurationElementConstants;
-
-/**
- * Proxy to contributed source container type extension.
- *
- * @see IConfigurationElementConstants
- *
- * @since 3.0
- */
-public class SourceContainerType implements ISourceContainerType {
-
- // lazily instantiated delegate
- private ISourceContainerTypeDelegate fDelegate = null;
-
- // extension definition
- private IConfigurationElement fElement = null;
-
- /**
- * Constructs a source container type on the given extension.
- *
- * @param element extension definition
- */
- public SourceContainerType(IConfigurationElement element) {
- fElement = element;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- return getDelegate().createSourceContainer(memento);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- if (this.equals(container.getType())) {
- return getDelegate().getMemento(container);
- }
- IStatus status = new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, SourceLookupMessages.SourceContainerType_0, null);
- throw new CoreException(status);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getName()
- */
- public String getName() {
- return fElement.getAttribute(IConfigurationElementConstants.NAME);
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getId()
- */
- public String getId() {
- return fElement.getAttribute(IConfigurationElementConstants.ID);
- }
-
- /**
- * Lazily instantiates and returns the underlying source container type.
- *
- * @exception CoreException if unable to instantiate
- */
- private ISourceContainerTypeDelegate getDelegate() throws CoreException {
- if (fDelegate == null) {
- fDelegate = (ISourceContainerTypeDelegate) fElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- }
- return fDelegate;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getDescription()
- */
- public String getDescription() {
- return fElement.getAttribute(IConfigurationElementConstants.DESCRIPTION);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLocatorMementoComparator.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLocatorMementoComparator.java
deleted file mode 100644
index 159b81698..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLocatorMementoComparator.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup;
-
-import java.util.Comparator;
-
-/**
- * Comparator for source locator mementors. Ignores whitespace differences.
- *
- * @since 3.0
- */
-public class SourceLocatorMementoComparator implements Comparator {
- /* (non-Javadoc)
- * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
- */
- public int compare(Object o1, Object o2) {
- String m1 = (String)o1;
- String m2 = (String)o2;
- int i1 = 0, i2 = 0;
- while (i1 < m1.length()) {
- i1 = skipWhitespace(m1, i1);
- i2 = skipWhitespace(m2, i2);
- if (i1 < m1.length() && i2 < m2.length()) {
- if (m1.charAt(i1) != m2.charAt(i2)) {
- return -1;
- }
- i1++;
- i2++;
- } else {
- if (i2 < m2.length()) {
- return -1;
- }
- return 0;
- }
- }
- return 0;
- }
-
- private int skipWhitespace(String string, int offset) {
- while (offset < string.length() && Character.isWhitespace(string.charAt(offset))) {
- offset++;
- }
- return offset;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.java
deleted file mode 100644
index e63731cf4..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup;
-
-import org.eclipse.osgi.util.NLS;
-
-public class SourceLookupMessages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages";//$NON-NLS-1$
-
- public static String AbstractSourceLookupDirector_11;
- public static String AbstractSourceLookupDirector_12;
- public static String AbstractSourceLookupDirector_13;
- public static String AbstractSourceLookupDirector_14;
-
- public static String Source_Lookup_Error;
-
- public static String ExternalArchiveSourceContainer_1;
-
- public static String ExternalArchiveSourceContainer_2;
-
- public static String ExternalArchiveSourceContainerType_10;
- public static String ExternalArchiveSourceContainerType_11;
- public static String ExternalArchiveSourceContainerType_12;
-
- public static String DefaultSourceContainer_0;
- public static String DefaultSourceContainerType_6;
- public static String DefaultSourceContainerType_7;
-
- public static String DirectorySourceContainerType_10;
- public static String DirectorySourceContainerType_11;
- public static String DirectorySourceContainerType_12;
-
- public static String FolderSourceContainerType_10;
- public static String FolderSourceContainerType_11;
- public static String FolderSourceContainerType_12;
-
- public static String LocalFileStorage_0;
-
- public static String ProjectSourceContainerType_10;
- public static String ProjectSourceContainerType_11;
- public static String ProjectSourceContainerType_12;
-
- public static String SourceContainerType_0;
-
- public static String WorkspaceSourceContainer_0;
-
- public static String WorkspaceSourceContainerType_3;
- public static String WorkspaceSourceContainerType_4;
-
- public static String ZipEntryStorage_0;
-
- static {
- // load message values from bundle file
- NLS.initializeMessages(BUNDLE_NAME, SourceLookupMessages.class);
- }
-
- public static String AbstractSourceLookupDirector_10;
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.properties b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.properties
deleted file mode 100644
index 429f05e6a..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupMessages.properties
+++ /dev/null
@@ -1,50 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-AbstractSourceLookupDirector_11=Unable to restore source lookup path - expecting typeId attribute.
-AbstractSourceLookupDirector_12=Unable to restore source lookup path - unknown type source container type specified: {0}
-AbstractSourceLookupDirector_13=Unable to restore source lookup path - expecting memento attribute.
-AbstractSourceLookupDirector_14=Unable to read source lookup path - expecting sourceLookupDirector node.
-AbstractSourceLookupDirector_10=Exception occurred during source lookup
-
-ExternalArchiveSourceContainer_2=Unable to access archive {0}
-ExternalArchiveSourceContainer_1=Archive does not exist: {0}
-
-ExternalArchiveSourceContainerType_10=Invalid or missing <path> attribute in archive memento.
-ExternalArchiveSourceContainerType_11=Missing <archive> node in archive memento.
-ExternalArchiveSourceContainerType_12=Invalid archive memento
-
-DefaultSourceContainer_0=Default
-DefaultSourceContainerType_6=Unable to restore default source lookup path - expecting default element.
-DefaultSourceContainerType_7=Unable to restore default source lookup path - invalid memento.
-
-DirectorySourceContainerType_10=Unable to restore directory source lookup entry - missing path attribute.
-DirectorySourceContainerType_11=Unable to restore directory source lookup entry - expecting directory element.
-DirectorySourceContainerType_12=Unable to restore directory source lookup entry - invalid memento.
-
-FolderSourceContainerType_10=Unable to restore source lookup folder - missing path attribute.
-FolderSourceContainerType_11=Unable to restore source lookup folder - expecting folder element.
-FolderSourceContainerType_12=Unable to restore source lookup folder - invalid memento.
-
-LocalFileStorage_0=Exception occurred retrieving file contents.
-
-ProjectSourceContainerType_10=Unable to restore project source lookup entry - missing name attribute.
-ProjectSourceContainerType_11=Unable to restore project source lookup entry - expecting project element.
-ProjectSourceContainerType_12=Unable to restore project source lookup entry - invalid memento.
-
-WorkspaceSourceContainer_0=Workspace
-
-WorkspaceSourceContainerType_3=Unable to restore workspace source lookup entry - expecting workspace element.
-WorkspaceSourceContainerType_4=Unable to restore workspace source lookup entry - invalid memento.
-
-ZipEntryStorage_0=Unable to read ZipEntry contents
-Source_Lookup_Error=Source lookup error
-SourceContainerType_0=Unable to persist source lookup path.
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupUtils.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupUtils.java
deleted file mode 100644
index 67b2bb831..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourceLookupUtils.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.zip.ZipFile;
-
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunch;
-import org.eclipse.debug.core.ILaunchesListener2;
-
-/**
- * Utility and supporting methods for source location. Most of these
- * utilities should be migrated to the DebugPlugin and LanuchManager
- * when this facility becomes public API.
- *
- * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector
- * @since 3.0
- */
-public class SourceLookupUtils {
-
- /**
- * Cache of shared zip files. Zip files are closed
- * when this class's plug-in is shutdown, when a project
- * is about to be closed or deleted, when a launch is
- * removed, and when a debug target or process terminates.
- */
- private static HashMap fgZipFileCache = new HashMap(5);
- private static ArchiveCleaner fgCleaner = null;
-
- /**
- * Returns a zip file with the given name
- *
- * @param name zip file name
- * @return The zip file with the given name
- * @exception IOException if unable to create the specified zip
- * file
- */
- public static ZipFile getZipFile(String name) throws IOException {
- synchronized (fgZipFileCache) {
- if (fgCleaner == null) {
- fgCleaner = new ArchiveCleaner();
- DebugPlugin.getDefault().getLaunchManager().addLaunchListener(fgCleaner);
- ResourcesPlugin.getWorkspace().addResourceChangeListener(fgCleaner, IResourceChangeEvent.PRE_DELETE | IResourceChangeEvent.PRE_CLOSE);
- }
- ZipFile zip = (ZipFile)fgZipFileCache.get(name);
- if (zip == null) {
- zip = new ZipFile(name);
- fgZipFileCache.put(name, zip);
- }
- return zip;
- }
- }
-
- /**
- * Closes all zip files that have been opened,
- * and removes them from the zip file cache.
- * This method is only to be called by the debug
- * plug-in.
- */
- public static void closeArchives() {
- synchronized (fgZipFileCache) {
- Iterator iter = fgZipFileCache.values().iterator();
- while (iter.hasNext()) {
- ZipFile file = (ZipFile)iter.next();
- synchronized (file) {
- try {
- file.close();
- } catch (IOException e) {
- DebugPlugin.log(e);
- }
- }
- }
- fgZipFileCache.clear();
- }
- }
-
- /**
- * Called when the debug plug-in shuts down.
- */
- public static void shutdown() {
- closeArchives();
- if (fgCleaner != null) {
- DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(fgCleaner);
- ResourcesPlugin.getWorkspace().removeResourceChangeListener(fgCleaner);
- }
- }
-
- /**
- * Clears the cache of open zip files when a launch terminates,
- * is removed, or when a project is about to be deleted or closed.
- */
- static class ArchiveCleaner implements IResourceChangeListener, ILaunchesListener2 {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesRemoved(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesRemoved(ILaunch[] launches) {
- for (int i = 0; i < launches.length; i++) {
- ILaunch launch = launches[i];
- if (!launch.isTerminated()) {
- SourceLookupUtils.closeArchives();
- return;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesAdded(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesAdded(ILaunch[] launches) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener#launchesChanged(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesChanged(ILaunch[] launches) {
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)
- */
- public void resourceChanged(IResourceChangeEvent event) {
- SourceLookupUtils.closeArchives();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.ILaunchesListener2#launchesTerminated(org.eclipse.debug.core.ILaunch[])
- */
- public void launchesTerminated(ILaunch[] launches) {
- SourceLookupUtils.closeArchives();
- }
-
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourcePathComputer.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourcePathComputer.java
deleted file mode 100644
index 21bc87d27..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/SourcePathComputer.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.debug.core.DebugPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputer;
-import org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate;
-import org.eclipse.debug.internal.core.IConfigurationElementConstants;
-
-/**
- * Proxy to contributed source path computer extension.
- *
- * @see IConfigurationElementConstants
- */
-public class SourcePathComputer implements ISourcePathComputer {
-
- // lazily instantiated delegate
- private ISourcePathComputerDelegate fDelegate = null;
-
- // extension definition
- private IConfigurationElement fElement = null;
-
- /**
- * Constructs a source path computer on the given extension.
- *
- * @param element extension definition
- */
- public SourcePathComputer(IConfigurationElement element) {
- fElement = element;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputer#getId()
- */
- public String getId() {
- return fElement.getAttribute(IConfigurationElementConstants.ID);
- }
-
- /**
- * Lazily instantiates and returns the underlying source container type.
- *
- * @exception CoreException if unable to instantiate
- */
- private ISourcePathComputerDelegate getDelegate() throws CoreException {
- if (fDelegate == null) {
- fDelegate = (ISourcePathComputerDelegate) fElement.createExecutableExtension(IConfigurationElementConstants.CLASS);
- }
- return fDelegate;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.core.sourcelookup.ISourcePathComputerDelegate#computeSourceContainers(org.eclipse.debug.core.ILaunchConfiguration, org.eclipse.core.runtime.IProgressMonitor)
- */
- public ISourceContainer[] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) {
- try {
- return getDelegate().computeSourceContainers(configuration, monitor);
- } catch (CoreException e) {
- DebugPlugin.log(e);
- }
- return new ISourceContainer[0];
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ArchiveSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ArchiveSourceContainerType.java
deleted file mode 100644
index 27c6d768f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ArchiveSourceContainerType.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.ArchiveSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * Archive source container type for archives in the workspace.
- *
- * @since 3.0
- */
-public class ArchiveSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("archive".equals(element.getNodeName())) { //$NON-NLS-1$
- String string = element.getAttribute("path"); //$NON-NLS-1$
- if (string == null || string.length() == 0) {
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_10, null);
- }
- String detect = element.getAttribute("detectRoot"); //$NON-NLS-1$
- boolean auto = "true".equals(detect); //$NON-NLS-1$
- IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(string));
- return new ArchiveSourceContainer(file, auto);
- }
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_11, null);
- }
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_12, null);
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- ArchiveSourceContainer archive = (ArchiveSourceContainer) container;
- Document document = newDocument();
- Element element = document.createElement("archive"); //$NON-NLS-1$
- element.setAttribute("path", archive.getFile().getFullPath().toString()); //$NON-NLS-1$
- String detectRoot = "false"; //$NON-NLS-1$
- if (archive.isDetectRoot()) {
- detectRoot = "true"; //$NON-NLS-1$
- }
- element.setAttribute("detectRoot", detectRoot); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DefaultSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DefaultSourceContainerType.java
deleted file mode 100644
index bea44536c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DefaultSourceContainerType.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.DefaultSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * A default source lookup path. The default path is computed by a
- * source path computer.
- *
- * @since 3.0
- */
-public class DefaultSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- Document document = newDocument();
- Element element = document.createElement("default"); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento)throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("default".equals(element.getNodeName())) { //$NON-NLS-1$
- return new DefaultSourceContainer();
- }
- abort(SourceLookupMessages.DefaultSourceContainerType_6, null);
- }
- abort(SourceLookupMessages.DefaultSourceContainerType_7, null);
- return null;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DirectorySourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DirectorySourceContainerType.java
deleted file mode 100644
index d25a0ff66..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/DirectorySourceContainerType.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.DirectorySourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * A folder in the local file system.
- *
- * @since 3.0
- */
-public class DirectorySourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("directory".equals(element.getNodeName())) { //$NON-NLS-1$
- String string = element.getAttribute("path"); //$NON-NLS-1$
- if (string == null || string.length() == 0) {
- abort(SourceLookupMessages.DirectorySourceContainerType_10, null);
- }
- String nest = element.getAttribute("nest"); //$NON-NLS-1$
- boolean nested = "true".equals(nest); //$NON-NLS-1$
- return new DirectorySourceContainer(new Path(string), nested);
- }
- abort(SourceLookupMessages.DirectorySourceContainerType_11, null);
- }
- abort(SourceLookupMessages.DirectorySourceContainerType_12, null);
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- DirectorySourceContainer folder = (DirectorySourceContainer) container;
- Document document = newDocument();
- Element element = document.createElement("directory"); //$NON-NLS-1$
- element.setAttribute("path", folder.getDirectory().getAbsolutePath()); //$NON-NLS-1$
- String nest = "false"; //$NON-NLS-1$
- if (folder.isComposite()) {
- nest = "true"; //$NON-NLS-1$
- }
- element.setAttribute("nest", nest); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ExternalArchiveSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ExternalArchiveSourceContainerType.java
deleted file mode 100644
index 43f295ac5..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ExternalArchiveSourceContainerType.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.ExternalArchiveSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * External archive source container type.
- *
- * @since 3.0
- */
-public class ExternalArchiveSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("archive".equals(element.getNodeName())) { //$NON-NLS-1$
- String string = element.getAttribute("path"); //$NON-NLS-1$
- if (string == null || string.length() == 0) {
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_10, null);
- }
- String detect = element.getAttribute("detectRoot"); //$NON-NLS-1$
- boolean auto = "true".equals(detect); //$NON-NLS-1$
- return new ExternalArchiveSourceContainer(string, auto);
- }
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_11, null);
- }
- abort(SourceLookupMessages.ExternalArchiveSourceContainerType_12, null);
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- ExternalArchiveSourceContainer archive = (ExternalArchiveSourceContainer) container;
- Document document = newDocument();
- Element element = document.createElement("archive"); //$NON-NLS-1$
- element.setAttribute("path", archive.getName()); //$NON-NLS-1$
- String detectRoot = "false"; //$NON-NLS-1$
- if (archive.isDetectRoot()) {
- detectRoot = "true"; //$NON-NLS-1$
- }
- element.setAttribute("detectRoot", detectRoot); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/FolderSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/FolderSourceContainerType.java
deleted file mode 100644
index ce9ea0899..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/FolderSourceContainerType.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * A folder in the workspace.
- *
- * @since 3.0
- */
-public class FolderSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- FolderSourceContainer folderSourceContainer = (FolderSourceContainer)container;
- Document document = newDocument();
- Element element = document.createElement("folder"); //$NON-NLS-1$
- element.setAttribute("path", folderSourceContainer.getContainer().getFullPath().toString()); //$NON-NLS-1$
- String nest = "false"; //$NON-NLS-1$
- if (folderSourceContainer.isComposite()) {
- nest = "true"; //$NON-NLS-1$
- }
- element.setAttribute("nest", nest); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("folder".equals(element.getNodeName())) { //$NON-NLS-1$
- String string = element.getAttribute("path"); //$NON-NLS-1$
- if (string == null || string.length() == 0) {
- abort(SourceLookupMessages.FolderSourceContainerType_10, null);
- }
- String nest = element.getAttribute("nest"); //$NON-NLS-1$
- boolean nested = "true".equals(nest); //$NON-NLS-1$
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IFolder folder = workspace.getRoot().getFolder(new Path(string));
- return new FolderSourceContainer(folder, nested);
- }
- abort(SourceLookupMessages.FolderSourceContainerType_11, null);
- }
- abort(SourceLookupMessages.FolderSourceContainerType_12, null);
- return null;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ProjectSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ProjectSourceContainerType.java
deleted file mode 100644
index 7dfbb6c40..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/ProjectSourceContainerType.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.ProjectSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * The type for creating/restoring a project source container.
- *
- * @since 3.0
- */
-public class ProjectSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- ProjectSourceContainer project = (ProjectSourceContainer) container;
- Document document = newDocument();
- Element element = document.createElement("project"); //$NON-NLS-1$
- element.setAttribute("name", project.getContainer().getName()); //$NON-NLS-1$
- String referenced = "false"; //$NON-NLS-1$
- if (project.isSearchReferencedProjects()) {
- referenced = "true"; //$NON-NLS-1$
- }
- element.setAttribute("referencedProjects", referenced); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("project".equals(element.getNodeName())) { //$NON-NLS-1$
- String string = element.getAttribute("name"); //$NON-NLS-1$
- if (string == null || string.length() == 0) {
- abort(SourceLookupMessages.ProjectSourceContainerType_10, null);
- }
- String nest = element.getAttribute("referencedProjects"); //$NON-NLS-1$
- boolean ref = "true".equals(nest); //$NON-NLS-1$
- IWorkspace workspace = ResourcesPlugin.getWorkspace();
- IProject project = workspace.getRoot().getProject(string);
- return new ProjectSourceContainer(project, ref);
- }
- abort(SourceLookupMessages.ProjectSourceContainerType_11, null);
- }
- abort(SourceLookupMessages.ProjectSourceContainerType_12, null);
- return null;
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/WorkspaceSourceContainerType.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/WorkspaceSourceContainerType.java
deleted file mode 100644
index 460fadd1f..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/sourcelookup/containers/WorkspaceSourceContainerType.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.sourcelookup.containers;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.ISourceContainer;
-import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
-import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
-import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * The type for creating/restoring workspace source containers.
- *
- * @since 3.0
- */
-public class WorkspaceSourceContainerType extends AbstractSourceContainerTypeDelegate {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#createSourceContainer(java.lang.String)
- */
- public ISourceContainer createSourceContainer(String memento) throws CoreException {
- Node node = parseDocument(memento);
- if (node.getNodeType() == Node.ELEMENT_NODE) {
- Element element = (Element)node;
- if ("workspace".equals(element.getNodeName())) { //$NON-NLS-1$
- return new WorkspaceSourceContainer();
- }
- abort(SourceLookupMessages.WorkspaceSourceContainerType_3, null);
- }
- abort(SourceLookupMessages.WorkspaceSourceContainerType_4, null);
- return null;
- }
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerTypeDelegate#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
- */
- public String getMemento(ISourceContainer container) throws CoreException {
- Document document = newDocument();
- Element element = document.createElement("workspace"); //$NON-NLS-1$
- document.appendChild(element);
- return serializeDocument(document);
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ContainerResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ContainerResolver.java
deleted file mode 100644
index b01601c03..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ContainerResolver.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.variables;
-
-import org.eclipse.core.resources.IResource;
-
-/**
- * Resolver for the <code>${container_*}</code> variables. Accepts an optional
- * argument that is interpretted as a full path to a container in the workspace.
- * <p>
- * Moved to debug core in 3.5, existed in debug.iu since 3.0.
- * </p>
- * @since 3.5
- */
-public class ContainerResolver extends ResourceResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.stringsubstitution.ResourceResolver#translateSelectedResource(org.eclipse.core.resources.IResource)
- */
- protected IResource translateSelectedResource(IResource resource) {
- return resource.getParent();
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.java
deleted file mode 100644
index 739cdb48c..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.variables;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Messages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.debug.internal.core.variables.Messages"; //$NON-NLS-1$
- public static String ResourceResolver_0;
- public static String ResourceResolver_1;
- public static String ResourceResolver_2;
- public static String WorkspaceResolver_0;
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, Messages.class);
- }
-
- private Messages() {
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.properties b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.properties
deleted file mode 100644
index 9029703b6..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/Messages.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2008, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-ResourceResolver_0=Variable references non-existent resource : {0}
-ResourceResolver_1=Variable references empty selection: {0}
-ResourceResolver_2=Variable not recognized: {0}
-WorkspaceResolver_0=Variable references non-existent resource : {0}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ProjectResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ProjectResolver.java
deleted file mode 100644
index ad7b0a8a0..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ProjectResolver.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.variables;
-
-import org.eclipse.core.resources.IResource;
-
-/**
- * Resolver for the <code>${project_*}</code> variables. Accepts an optional argument
- * that is interpretted as the name of a project.
- * <p>
- * Moved to debug core in 3.5, existed in debug.iu since 3.0.
- * </p>
- * @since 3.5
- */
-public class ProjectResolver extends ResourceResolver {
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.ui.stringsubstitution.ResourceResolver#translateSelectedResource(org.eclipse.core.resources.IResource)
- */
- protected IResource translateSelectedResource(IResource resource) {
- return resource.getProject();
- }
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ResourceResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ResourceResolver.java
deleted file mode 100644
index 91c9bc45b..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/ResourceResolver.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.variables;
-
-import java.io.File;
-import java.net.URI;
-
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IDynamicVariable;
-import org.eclipse.core.variables.IDynamicVariableResolver;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.DebugPlugin;
-
-import com.ibm.icu.text.MessageFormat;
-
-/**
- * Common function of variable resolvers.
- * Moved to debug core in 3.5, existed in debug.iu since 3.0.
- *
- * @since 3.5
- */
-public class ResourceResolver implements IDynamicVariableResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.debug.internal.core.stringsubstitution.IContextVariableResolver#resolveValue(org.eclipse.debug.internal.core.stringsubstitution.IContextVariable, java.lang.String)
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- IResource resource = null;
- if (argument == null) {
- resource = getSelectedResource(variable);
- } else {
- resource = getWorkspaceRoot().findMember(new Path(argument));
- }
- if (resource != null && resource.exists()) {
- resource = translateSelectedResource(resource);
- if (resource != null && resource.exists()) {
- return translateToValue(resource, variable);
- }
- }
- abort(MessageFormat.format(Messages.ResourceResolver_0, new String[]{getReferenceExpression(variable, argument)}), null);
- return null;
- }
-
- /**
- * Returns the resource applicable to this resolver, relative to the selected
- * resource. This method is called when no argument is present in a variable
- * expression. For, example, this method might return the project for the
- * selected resource.
- *
- * @param resource selected resource
- * @return resource applicable to this variable resolver
- */
- protected IResource translateSelectedResource(IResource resource) {
- return resource;
- }
-
- /**
- * Returns the workspace root
- *
- * @return workspace root
- */
- protected IWorkspaceRoot getWorkspaceRoot() {
- return ResourcesPlugin.getWorkspace().getRoot();
- }
-
- /**
- * Returns an expression used to reference the given variable and optional argument.
- * For example, <code>${var_name:arg}</code>.
- *
- * @param variable referenced variable
- * @param argument referenced argument or <code>null</code>
- * @return variable reference expression
- */
- protected String getReferenceExpression(IDynamicVariable variable, String argument) {
- StringBuffer reference = new StringBuffer();
- reference.append("${"); //$NON-NLS-1$
- reference.append(variable.getName());
- if (argument != null) {
- reference.append(":"); //$NON-NLS-1$
- reference.append(argument);
- }
- reference.append("}"); //$NON-NLS-1$
- return reference.toString();
- }
-
- /**
- * Throws an exception with the given message and underlying exception.
- *
- * @param message exception message
- * @param exception underlying exception or <code>null</code>
- * @throws CoreException
- */
- protected void abort(String message, Throwable exception) throws CoreException {
- throw new CoreException(new Status(IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.INTERNAL_ERROR, message, exception));
- }
-
- /**
- * Returns the selected resource. Uses the ${selected_resource_path} variable
- * to determine the selected resource. This variable is provided by the debug.ui
- * plug-in. Selected resource resolution is only available when the debug.ui
- * plug-in is present.
- *
- * @param variable variable referencing a resource
- * @return selected resource
- * @throws CoreException if there is no selection
- */
- protected IResource getSelectedResource(IDynamicVariable variable) throws CoreException {
- IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
- try {
- String pathString = manager.performStringSubstitution("${selected_resource_path}"); //$NON-NLS-1$
- return ResourcesPlugin.getWorkspace().getRoot().findMember(new Path(pathString));
- } catch (CoreException e) {
- // unable to resolve a selection
- }
- abort(MessageFormat.format(Messages.ResourceResolver_1, new String[]{getReferenceExpression(variable, null)}), null);
- return null;
- }
-
- /**
- * Translates the given resource into a value for this variable resolver.
- *
- * @param resource the resource applicable to this resolver's variable
- * @param variable the variable being resolved
- * @return variable value
- * @throws CoreException if the variable name is not recognized
- */
- protected String translateToValue(IResource resource, IDynamicVariable variable) throws CoreException {
- String name = variable.getName();
- IPath path = null;
- URI uri = null;
- if (name.endsWith("_loc")) { //$NON-NLS-1$
- uri = resource.getLocationURI();
- if(uri != null) {
- File file = EFS.getStore(uri).toLocalFile(0, null);
- if(file != null) {
- return file.getAbsolutePath();
- }
- }
- } else if (name.endsWith("_path")) { //$NON-NLS-1$
- path = resource.getFullPath();
- if(path != null) {
- return path.toOSString();
- }
- } else if (name.endsWith("_name")) { //$NON-NLS-1$
- return resource.getName();
- }
- abort(MessageFormat.format(Messages.ResourceResolver_2, new String[]{getReferenceExpression(variable, null)}), null);
- return null;
- }
-
-}
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/WorkspaceResolver.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/WorkspaceResolver.java
deleted file mode 100644
index 86abb50f1..000000000
--- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/variables/WorkspaceResolver.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.debug.internal.core.variables;
-
-import java.io.File;
-import java.net.URI;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.core.variables.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Resolves the <code>${workspace_loc}</code> variable. The variable resolves to the
- * location of the workspace. If an argument is provided, it is interpreted as a
- * workspace relative path to a specific resource.
- */
-public final class WorkspaceResolver implements IDynamicVariableResolver {
-
- /* (non-Javadoc)
- * @see org.eclipse.core.variables.IDynamicVariableResolver#resolveValue(org.eclipse.core.variables.IDynamicVariable, java.lang.String)
- */
- public String resolveValue(IDynamicVariable variable, String argument) throws CoreException {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IResource resource;
-
- if (argument == null) {
- resource = root;
- } else {
- resource = root.findMember(new Path(argument));
- }
-
- if (resource != null && resource.exists()) {
- URI uri = resource.getLocationURI();
-
- if (uri != null) {
- File file = EFS.getStore(uri).toLocalFile(EFS.NONE, null);
-
- if (file != null) {
- return file.getAbsolutePath();
- }
- }
- }
-
- String expression = VariablesPlugin.getDefault().getStringVariableManager().generateVariableExpression(variable.getName(), argument);
- String message = NLS.bind(Messages.WorkspaceResolver_0, expression);
-
- throw new CoreException(new Status(IStatus.ERROR, ResourcesPlugin.PI_RESOURCES, IResourceStatus.RESOURCE_NOT_FOUND, message, null));
- }
-}
diff --git a/org.eclipse.debug.core/doc/.cvsignore b/org.eclipse.debug.core/doc/.cvsignore
deleted file mode 100644
index af3f463c2..000000000
--- a/org.eclipse.debug.core/doc/.cvsignore
+++ /dev/null
@@ -1,15 +0,0 @@
-book.css
-org_eclipse_debug_core_breakpoints.html
-org_eclipse_debug_core_launchConfigurationComparators.html
-org_eclipse_debug_core_launchConfigurationTypes.html
-org_eclipse_debug_core_launchDelegates.html
-org_eclipse_debug_core_launchers.html
-org_eclipse_debug_core_launchModes.html
-org_eclipse_debug_core_logicalStructureTypes.html
-org_eclipse_debug_core_processFactories.html
-org_eclipse_debug_core_sourceContainerTypes.html
-org_eclipse_debug_core_sourceLocators.html
-org_eclipse_debug_core_sourcePathComputers.html
-org_eclipse_debug_core_statusHandlers.html
-org_eclipse_debug_core_watchExpressionDelegates.html
-schema.css
diff --git a/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourceContainerTypes.html b/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourceContainerTypes.html
deleted file mode 100644
index 98981aa52..000000000
--- a/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourceContainerTypes.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<!-- default platform documentation stylesheets -->
-<style>@import url("book.css");</style>
-<!-- default schema documentation stylesheets -->
-<style>@import url("schema.css");</style>
-</HEAD>
-<HTML>
-<BODY>
-<H1><CENTER>Source Container Types</CENTER></H1>
-<p></p>
-<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.debug.core.sourceContainerTypes<p></p>
-<h6 class=CaptionFigColumn id=header>Since: </h6>3.0
-<p></p>
-
-<p>
-<h6 class=CaptionFigColumn id=header>Description: </h6>This extension point allows for an extensible set of source container types to be contributed by the debug platform
- source lookup facilities.</p>
-<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
-<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.sourceContainerType">sourceContainerType</a>*)&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST extension</p>
-<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
-<p></p>
-<ul class=ConfigMarkup id=attlistDesc>
-<li><b>point</b> - a fully qualified identifier of the target extension point</li>
-<li><b>id</b> - an optional identifier of the extension instance</li>
-<li><b>name</b> - an optional name of the extension instance</li>
-</ul>
-<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.sourceContainerType">sourceContainerType</a> EMPTY&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST sourceContainerType</p>
-<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>class&nbsp;CDATA #REQUIRED&gt;</p>
-<p></p>
-<ul class=ConfigMarkup id=attlistDesc>
-<li><b>id</b> - The unique id used to refer to this type</li>
-<li><b>name</b> - The name of this source container type use for presentation purposes.</li>
-<li><b>class</b> - A class that implements ISourceContainerType</li>
-</ul>
-<br><h6 class=CaptionFigColumn id=header>API Information: </h6>Value of the attribute <b>class</b> must be a fully qualified name of a Java class that implements the interface <b>ISourceContainerType</b>.
-<p></p>
-
-<br>
-<p class=note id=copyright>
-<p>
- <a href="hglegal.htm">
- <img SRC="ngibmcpy.gif"
- ALT="Copyright (c) 2003 IBM Corporation and others. All Rights Reserved."
- BORDER=0 height=14 width=324></a>
- </p>
-<p></p>
-
-</p>
-</BODY>
-</HTML>
diff --git a/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourcePathComputers.html b/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourcePathComputers.html
deleted file mode 100644
index 930540395..000000000
--- a/org.eclipse.debug.core/doc/org_eclipse_debug_core_sourcePathComputers.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<!-- default platform documentation stylesheets -->
-<style>@import url("book.css");</style>
-<!-- default schema documentation stylesheets -->
-<style>@import url("schema.css");</style>
-</HEAD>
-<HTML>
-<BODY>
-<H1><CENTER>Source Path Computers</CENTER></H1>
-<p></p>
-<h6 class=CaptionFigColumn id=header>Identifier: </h6>org.eclipse.debug.core.sourcePathComputers<p></p>
-<h6 class=CaptionFigColumn id=header>Since: </h6>3.0
-<p></p>
-
-<p>
-<h6 class=CaptionFigColumn id=header>Description: </h6>Defines an extension point to register a computer that can describe a default source lookup path for
- a launch configuration. Source path computers are associated with launch configuration types via the
- launchConfigurationTypes extension point. As well, a source path computer can be associated with a
- specific launch configuration via the launch configuration attribute ATTR_SOURCE_PATH_COMPUTER_ID.</p>
-<p><h6 class=CaptionFigColumn id=header>Configuration Markup:</h6></p>
-<p class=code id=dtd>&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.sourcePathComputer">sourcePathComputer</a>*)&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST extension</p>
-<p class=code id=dtdAttlist>point&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class=code id=dtdAttlist>name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
-<p></p>
-<ul class=ConfigMarkup id=attlistDesc>
-<li><b>point</b> - a fully qualified identifier of the target extension point</li>
-<li><b>id</b> - an optional identifier of the extension instance</li>
-<li><b>name</b> - an optional name of the extension instance</li>
-</ul>
-<br><p class=code id=dtd>&lt;!ELEMENT <a name="e.sourcePathComputer">sourcePathComputer</a> EMPTY&gt;</p>
-<p class=code id=dtd>&lt;!ATTLIST sourcePathComputer</p>
-<p class=code id=dtdAttlist>id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class=code id=dtdAttlist>class&nbsp;CDATA #REQUIRED&gt;</p>
-<p></p>
-<p class=ConfigMarkup id=elementDesc>
-Defines an extension point to register a computer that can describe a default source lookup path
- for a launch configuration.</p>
-<br>
-<ul class=ConfigMarkup id=attlistDesc>
-<li><b>id</b> - The unique id used to refer to this computer.</li>
-<li><b>class</b> - A class that implements ISourcePathComputer.</li>
-</ul>
-<br><h6 class=CaptionFigColumn id=header>API Information: </h6>Value of the attribute <b>class</b> must be a fully qualified name of a Java class that implements the interface <b>ISourcePathComputer</b>.
-<p></p>
-
-<br>
-<p class=note id=copyright>
-<p>
- <a href="hglegal.htm">
- <img SRC="ngibmcpy.gif"
- ALT="Copyright (c) 2003 IBM Corporation and others. All Rights Reserved."
- BORDER=0 height=14 width=324></a>
- </p>
-<p></p>
-
-</p>
-</BODY>
-</HTML>
diff --git a/org.eclipse.debug.core/hglegal2003.htm b/org.eclipse.debug.core/hglegal2003.htm
deleted file mode 100644
index 47c8540c8..000000000
--- a/org.eclipse.debug.core/hglegal2003.htm
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <LINK REL="stylesheet" HREF="book.css" CHARSET="ISO-8859-1" TYPE="text/css">
- <title>Legal Notices</title>
-</head>
-<body>
-
-<h3>
-<a NAME="Notices"></a>Notices</h3>
-(c) Copyright (c) 2000, 2003 IBM Corporation and others. All Rights Reserved.
-</body>
-</html>
diff --git a/org.eclipse.debug.core/ngibmcpy2003.gif b/org.eclipse.debug.core/ngibmcpy2003.gif
deleted file mode 100644
index c786e43e1..000000000
--- a/org.eclipse.debug.core/ngibmcpy2003.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.debug.core/plugin.properties b/org.eclipse.debug.core/plugin.properties
deleted file mode 100644
index 62739c182..000000000
--- a/org.eclipse.debug.core/plugin.properties
+++ /dev/null
@@ -1,68 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-
-pluginName=Debug Core
-providerName=Eclipse.org
-launcherExtensionPointName=Launcher
-breakpointExtensionPointName=Breakpoint
-launchConfigurationTypeNameExtensionPointName=Launch Configuration Type
-launchConfigurationComparatorsExtensionPointName=Launch Configuration Comparators
-statusHandlerExtensionPointName=Status Handler
-sourceLocatorsExtensionPointName=Source Locator
-launchModesExtensionPointName=Launch Modes
-launchDelegatesExtensionPointName=Launch Delegates
-breakpointImportParticipantsExtensionPoint.name = Breakpoint Import Participant
-watchExpressionDelegatesName= Watch Expression Delegates
-processFactoriesExtensionPointName=Process Factories
-logicalStructureTypesExtensionPointName=Logical Structure Types
-logicalStructureProvidersExtensionPointName=Logical Structure Providers
-sourceContainerTypesName = Source Container Types
-sourcePathComputersName = Source Path Computers
-
-run=&Run
-debug=&Debug
-profile=&Profile
-runAs.label=&Run As
-debugAs.label=&Debug As
-profileAs.label=&Profile As
-
-env_var.description=Returns the value of an environment variable. An environment variable name must be specified as an argument.
-system_var.description=Returns the value of an Eclipse system variable. A variable name must be specified as an argument - one of ARCH, ECLIPSE_HOME, NL, OS, or WS.
-system_property.description=Returns the value of a system property from the Eclipse runtime. A system property name must be specified as an argument.
-
-containerName.archive = Archive
-containerDescription.archive = A jar or zip in the workspace containing source files
-containerName.externalArchive = External Archive
-containerDescription.externalArchive = A jar or zip in the local file system containing source files
-containerName.project = Project
-containerDescription.project = A project in the workspace
-containerName.folder = Workspace Folder
-containerDescription.folder = A folder in the workspace
-containerName.directory = File System Directory
-containerDescription.directory = A directory in the local file system
-containerName.workspace = Workspace
-containerDescription.workspace = All projects in the workspace
-containerName.default = Default
-containerDescription.default = Default source lookup path
-
-workspace_loc.description=Returns the absolute file system path of the workspace root. When an argument is specified, the absolute file system path of the resource identified by a workspace relative path is returned.
-container_loc.description=Returns the absolute file system path of a resource's container. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-container_path.description=Returns the workspace relative path of a resource's container. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-container_name.description=Returns the name of a resource's container. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-project_loc.description=Returns the absolute file system path of a resource's project. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-project_path.description=Returns the workspace relative path of a resource's project. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-project_name.description=Returns the name of a resource's project. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-resource_loc.description=Returns the absolute file system path of a resource. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-resource_path.description=Returns the workspace relative path of a resource. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-resource_name.description=Returns the name of a resource. The target resource is the selected resource when no argument is specified, or the resource identified by a workspace relative path.
-
-LineBreakpoint.name = Line Breakpoint
-Breakpoint.name = Breakpoint
diff --git a/org.eclipse.debug.core/plugin.xml b/org.eclipse.debug.core/plugin.xml
deleted file mode 100644
index 211a3ea25..000000000
--- a/org.eclipse.debug.core/plugin.xml
+++ /dev/null
@@ -1,245 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?> <!--
- Copyright (c) 2005, 2009 IBM Corporation and others.
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v1.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html
-
- Contributors:
- IBM Corporation - initial API and implementation
- -->
-
-<plugin>
-
-
-<!-- Extension points -->
- <extension-point id="breakpoints" name="%breakpointExtensionPointName" schema="schema/breakpoints.exsd"/>
- <extension-point id="launchConfigurationComparators" name="%launchConfigurationComparatorsExtensionPointName" schema="schema/launchConfigurationComparators.exsd"/>
- <extension-point id="launchConfigurationTypes" name="%launchConfigurationTypeNameExtensionPointName" schema="schema/launchConfigurationTypes.exsd"/>
- <extension-point id="launchModes" name="%launchModesExtensionPointName" schema="schema/launchModes.exsd"/>
- <extension-point id="launchDelegates" name="%launchDelegatesExtensionPointName" schema="schema/launchDelegates.exsd"/>
- <extension-point id="launchers" name="%launcherExtensionPointName" schema="schema/launchers.exsd"/>
- <extension-point id="sourceLocators" name="%sourceLocatorsExtensionPointName" schema="schema/sourceLocators.exsd"/>
- <extension-point id="statusHandlers" name="%statusHandlerExtensionPointName" schema="schema/statusHandlers.exsd"/>
- <extension-point id="watchExpressionDelegates" name="%watchExpressionDelegatesName" schema="schema/watchExpressionDelegates.exsd"/>
- <extension-point id="processFactories" name="%processFactoriesExtensionPointName" schema="schema/processFactories.exsd"/>
- <extension-point id="logicalStructureTypes" name="%logicalStructureTypesExtensionPointName" schema="schema/logicalStructureTypes.exsd"/>
- <extension-point id="sourceContainerTypes" name="%sourceContainerTypesName" schema="schema/sourceContainerTypes.exsd"/>
- <extension-point id="sourcePathComputers" name="%sourcePathComputersName" schema="schema/sourcePathComputers.exsd"/>
- <extension-point id="logicalStructureProviders" name="%logicalStructureProvidersExtensionPointName" schema="schema/logicalStructureProviders.exsd"/>
- <extension-point id="breakpointImportParticipants" name="%breakpointImportParticipantsExtensionPoint.name" schema="schema/breakpointImportParticipants.exsd"/>
-
-<!-- Extensions -->
- <extension
- id="breakpointMarker"
- name="%Breakpoint.name"
- point="org.eclipse.core.resources.markers">
- <super
- type="org.eclipse.core.resources.marker">
- </super>
- <persistent
- value="true">
- </persistent>
- <attribute
- name="org.eclipse.debug.core.modelIdentifier">
- </attribute>
- <attribute
- name="org.eclipse.debug.core.enabled">
- </attribute>
- <attribute
- name="org.eclipse.debug.core.registered">
- </attribute>
- <attribute
- name="org.eclipse.debug.core.persisted">
- </attribute>
- </extension>
- <extension
- id="lineBreakpointMarker"
- name="%LineBreakpoint.name"
- point="org.eclipse.core.resources.markers">
- <super
- type="org.eclipse.debug.core.breakpointMarker">
- </super>
- <super
- type="org.eclipse.core.resources.textmarker">
- </super>
- <persistent
- value="true">
- </persistent>
- </extension>
- <extension
- point="org.eclipse.team.core.fileTypes">
- <fileTypes
- type="text"
- extension="launch">
- </fileTypes>
- </extension>
- <extension
- point="org.eclipse.debug.core.launchModes">
- <launchMode
- label="%run"
- launchAsLabel="%runAs.label"
- mode="run">
- </launchMode>
- <launchMode
- label="%debug"
- launchAsLabel="%debugAs.label"
- mode="debug">
- </launchMode>
- <launchMode
- label="%profile"
- launchAsLabel="%profileAs.label"
- mode="profile">
- </launchMode>
- </extension>
-<!-- Dynamic (String Substitution) Variables -->
- <extension
- point="org.eclipse.core.variables.dynamicVariables">
- <variable
- name="env_var"
- resolver="org.eclipse.debug.internal.core.EnvironmentVariableResolver"
- description="%env_var.description">
- </variable>
- <variable
- name="system"
- resolver="org.eclipse.debug.internal.core.SystemVariableResolver"
- description="%system_var.description">
- </variable>
- <variable
- name="system_property"
- resolver="org.eclipse.debug.internal.core.SystemPropertyResolver"
- description="%system_property.description">
- </variable>
- <variable
- description="%workspace_loc.description"
- name="workspace_loc"
- resolver="org.eclipse.debug.internal.core.variables.WorkspaceResolver">
- </variable>
- <variable
- name="project_loc"
- description="%project_loc.description"
- resolver="org.eclipse.debug.internal.core.variables.ProjectResolver">
- </variable>
- <variable
- name="project_path"
- description="%project_path.description"
- resolver="org.eclipse.debug.internal.core.variables.ProjectResolver">
- </variable>
- <variable
- name="project_name"
- description="%project_name.description"
- resolver="org.eclipse.debug.internal.core.variables.ProjectResolver">
- </variable>
- <variable
- name="resource_loc"
- description="%resource_loc.description"
- resolver="org.eclipse.debug.internal.core.variables.ResourceResolver">
- </variable>
- <variable
- name="resource_path"
- description="%resource_path.description"
- resolver="org.eclipse.debug.internal.core.variables.ResourceResolver">
- </variable>
- <variable
- name="resource_name"
- description="%resource_name.description"
- resolver="org.eclipse.debug.internal.core.variables.ResourceResolver">
- </variable>
- <variable
- name="container_loc"
- description="%container_loc.description"
- resolver="org.eclipse.debug.internal.core.variables.ContainerResolver">
- </variable>
- <variable
- name="container_path"
- description="%container_path.description"
- resolver="org.eclipse.debug.internal.core.variables.ContainerResolver">
- </variable>
- <variable
- name="container_name"
- description="%container_name.description"
- resolver="org.eclipse.debug.internal.core.variables.ContainerResolver">
- </variable>
- </extension>
-
-<!-- ====================== -->
-<!-- source containers -->
-<!-- ====================== -->
- <extension
- point="org.eclipse.debug.core.sourceContainerTypes">
- <sourceContainerType
- name="%containerName.project"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.ProjectSourceContainerType"
- id="org.eclipse.debug.core.containerType.project"
- description="%containerDescription.project">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.folder"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.FolderSourceContainerType"
- id="org.eclipse.debug.core.containerType.folder"
- description="%containerDescription.folder">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.directory"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.DirectorySourceContainerType"
- id="org.eclipse.debug.core.containerType.directory"
- description="%containerDescription.directory">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.workspace"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.WorkspaceSourceContainerType"
- id="org.eclipse.debug.core.containerType.workspace"
- description="%containerDescription.workspace">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.default"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.DefaultSourceContainerType"
- id="org.eclipse.debug.core.containerType.default"
- description="%containerDescription.default">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.archive"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.ArchiveSourceContainerType"
- id="org.eclipse.debug.core.containerType.archive"
- description="%containerDescription.archive">
- </sourceContainerType>
- <sourceContainerType
- name="%containerName.externalArchive"
- class="org.eclipse.debug.internal.core.sourcelookup.containers.ExternalArchiveSourceContainerType"
- id="org.eclipse.debug.core.containerType.externalArchive"
- description="%containerDescription.externalArchive">
- </sourceContainerType>
- </extension>
-
-<!-- ===================================== -->
-<!-- launch configuration comparators -->
-<!-- ===================================== -->
- <extension
- point="org.eclipse.debug.core.launchConfigurationComparators">
- <launchConfigurationComparator
- attribute="org.eclipse.debug.core.source_locator_memento"
- class="org.eclipse.debug.internal.core.sourcelookup.SourceLocatorMementoComparator"
- id="org.eclipse.debug.core.sourceLocatorMementoComparator">
- </launchConfigurationComparator>
- </extension>
- <extension
- point="org.eclipse.core.runtime.preferences">
- <initializer
- class="org.eclipse.debug.internal.core.DebugPreferenceInitializer">
- </initializer>
- </extension>
-
-<!-- ===================================== -->
-<!-- property testers -->
-<!-- ===================================== -->
- <extension point="org.eclipse.core.expressions.propertyTesters">
- <propertyTester
- namespace="org.eclipse.debug.core"
- properties="launchable"
- type="java.lang.Object"
- class="org.eclipse.debug.internal.core.LaunchablePropertyTester"
- id="org.eclipse.debug.core.propertyTesters.launchable">
- </propertyTester>
- </extension>
-</plugin>
diff --git a/org.eclipse.debug.core/r2_0_buildnotes_platform-debug.html b/org.eclipse.debug.core/r2_0_buildnotes_platform-debug.html
deleted file mode 100644
index 90f26fd52..000000000
--- a/org.eclipse.debug.core/r2_0_buildnotes_platform-debug.html
+++ /dev/null
@@ -1,1102 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="Author" content="IBM">
- <meta name="GENERATOR" content="Mozilla/4.75 [en] (WinNT; U) [Netscape]">
- <title>Platform Debug Release Notes for the 2.0 release</title>
-</head>
-<body>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 20, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20365">20365</a>: Bidi - NPE when closing Eclipse<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 19, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20492">20492</a>: Extra separator in run/debug history menus<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19878">19878</a>: Collapse/expand symbol (+/-) dissappears in inspect window<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19998">19998</a>: NullPointerException when launching rsource that has no extension<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20066">20066</a>: TVT2: Hardcoded "None" in debug preferences<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=20594">20594</a>: Preference listeners should use equals, not ==<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 12, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19928">19928</a>: Run/Debug menu ordering<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 11, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17462">17462</a>: IllegalArgumentException when printing long stack to console<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19375">19375</a>: Duplicate launch config naming problem<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19170">19170</a>: LaunchConfigurationDialog etc leakage when last launched is Runtime<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19740">19740</a>: Content assist is now retargetable<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 10, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19613">19613</a>: LaunchConfig marked PRIVATE shows in Console View<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19338">19338</a>: Missing copyrights<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 7, 2002
-<h3>
-What's new in this drop</h3>
-<li>API change - a spelling mistake was fixed in the name of a method in IPersistableSourceLocator</li>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18789">18789</a>: Source editor not given focus on suspend<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19170">19170</a>: LaunchConfigurationDialog etc leakage when last launched is<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18772">18772</a>: Launch Configurations: Table is cut off on motif<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19379">19379</a>: Debug remembers selected state of toolbar entry even if it is no longer enabled<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19443">19443</a>: IPersistableSourceLocator has misspelled method<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=19489">19489</a>: References to IDebugViewAdapter (DOC)<br>
-
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-June 1, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18209">18209</a>: Unable to run a program on first attempt<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 31, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15671">15671</a>: Strange behavior of the console view<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17017">17017</a>: Not always prompted to find source location<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18334">18334</a>: Launch view holding onto Objects longer than necessary<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18153">18153</a>: launch last and run/debug buttons<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18385">18385</a>: NPE during launching after removing the launch info<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16946">16946</a>: several Eclipse buttons are too short<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18474">18474</a>: Empty group in history menus<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16764">16764</a>: Debug Perspective leaks actions<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=10383">10383</a>: Help pass for 2.0<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16152">16152</a>: NLS pass<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16379">16379</a>: Launch configs tree is missing label and is not wide enough<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 30, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17087">17087</a>: Launch view, source lookup and closed projects<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17029">17029</a>: DCR: Please let me specify a launch history size of 20<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16378">16378</a>: Missing icons in launch config creation tabs<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18156">18156</a>: Debug/Run As cascade menu should be sorted<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16462">16462</a>: Not all tabs visible in Run-time Workbench config<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18154">18154</a>: Launch shortcuts menu labels<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16685">16685</a>: Internal error changing launch history preference<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16963">16963</a>: Mneumonic missing on table label for Select Launch Configuration<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16975">16975</a>: Up/down button on launch history page not working correctly<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17512">17512</a>: Missing mneumonics in Console Preference page<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18222">18222</a>: All XML written using platform line delimiters/UTF8<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16955">16955</a>: NPE opening java perspective.<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17633">17633</a>: ActionDelegateHelper should nullify fTextEditor when it does not need it<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17380">17380</a>: Launch history maintains duplicate entries<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14406">14406</a>: Debug menu items becoming disabled inappropriately<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17794">17794</a>: Disabled actions in the context menu of the Launch config dialog viewer<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17358">17358</a>: Revert button not enabled after changes<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17116">17116</a>: Launch related walkbacks in .log<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 29, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18099">18099</a>: Change provider name<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17490">17490</a>: F1 help for launch config tabs<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18121">18121</a>: Static menus items should be at the top<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17649">17649</a>: ObjectCollectedException written to console<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16838">16838</a>: Over zealous error logging when config has been deleted<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17105">17105</a>: Attempt to save shared launch configs in closed projects<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=18122">18122</a>: Scrapbook configs show up in list for Launch history pref page<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16970">16970</a>: ClassCastException out of Launch history preference page<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16492">16492</a>: CommonTab Switch to String<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16956">16956</a>: NPE opening java perspective<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17100">17100</a>: Launch Config name with underscore is truncated<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16638">16638</a>: Missing menmonic on Debug Action Groups page<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17072">17072</a>: "Show Supported Breakpoints" has just one calorie, not meaningful enough<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17946">17946</a>: Generalize launch shortcuts/convenience actions<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 28, 2002
-<h3>
-What's new in this drop</h3>
-<li>New/replaced extension point. The extension point "org.eclipse.debug.ui.launchConfigurationShortcuts" has
- been replaced with "org.eclipse.debug.ui.launchShortcuts". Please see extension point documentation
- for details.</li>
-
-<h3>
-Problem Reports Fixed</h3>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 27, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16757">16757</a>: Launch.removeDebugTarget does not work<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17534">17534</a>: Two huge bugs in Launch class<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17676">17676</a>: Run menu history menus not updated after organize favorites<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=17069">17069</a>: NPE deleting project with shared config<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16655">16655</a>: Streams are not closed when a java program is finished<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 21, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16185">16185</a>: Show/hide package names button in doesn't work in debug view<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15964">15964</a>: Updates to preference pages<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16476">16476</a>: TextViewerGotoLineAction$NumberValidator<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 19, 2002
-<h3>
-What's new in this drop</h3>
-<li>API change - deprecated method was removed - ILaunchConfigurationTab.isValid()</li>
-<li>New extension point - org.eclipse.debug.core.launchConfigurationComparator. This
- extension point is for launch configuration attributes that require a custom
- equality implementation. See documentation for extension point.</li>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15704">15704</a>: Default "Maximum launch history size" should be at least 10<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15560">15560</a>: Cancel button on edit Configurations is much smaller than others<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15952">15952</a>: Remove deprecated method<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15953">15953</a>: No longer expanding debug target to show threads<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15988">15988</a>: ArrayIndexOutOfBoundsException in config reselection<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16107">16107</a>: NPE opening editor<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16063">16063</a>: Preference pages now re-size<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16060">16060</a>: Re-sizable launch config dialog<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15850">15850</a>: LaunchView changes required from platform ui changes<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16143">16143</a>: Multiple *.launch filters<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12032">12032</a>: Debug Constants should include value in javadoc<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6485">6485</a>: Extension & Package documentation<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16217">16217</a>: launch config "revert" causes flicker<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16325">16325</a>: Content assist action icon<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16356">16356</a>: NPE out of ConsoleDocumentManager<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16148">16148</a>: IProcess should support an exit value<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14927">14927</a>: Cancel button in progress monitor of launch configuration dialog<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15775">15775</a>: Deleting launch config should select the next config<br>
-
-<h3>
-Problem Reports Closed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16113">16113</a>: Execution arguments gets lost if starting a class file of a jar library<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 14, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13766">13766</a>: Error recovery on failed launch - need to bring up dialog<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11540">11540</a>: Misc Debugger source lookup dialog<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15506">15506</a>: Switching launch configs should show busy cursor<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15618">15618</a>: DebugDropDownAction missing resource string<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15375">15375</a>: ClassCastException trying to resume<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15720">15720</a>: Debug perspective should define place holders for standard views<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12316">12316</a>: Message (stack trace) silently written to console when trying to run small java example<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=4130">4130</a>: Eclipse Debugger: Setting Breakpoints via keyboard not possilbe (1GITILH)<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15449">15449</a>: 'show detail pane' toolbar button behaves differently than other buttons<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12904">12904</a>: Creating shard Launch Configuration fails<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15748">15748</a>: Duplicate action in launch config dialog<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=16848">15848</a>: Change Debug Menu id<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15533">15533</a>: DebugAction contains redundant cascade menu<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14922">14922</a>: Config created by double clicking on launch type; delete not enabled<br>
-
-<h3>
-Problem Reports Closed</h3>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-May 08, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9034">9034</a>: Variables view should scroll to display new variables<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12001">12001</a>: Plug-in startup<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14412">14412</a>: Launch configuration XML should be written to file immediately<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15246">15246</a>: Allow private launch configs to perspective switch<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15325">15325</a>: Remove 'Configuration' from debug action labels<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=1636">1636</a>: Copy/paste across console docs (1GF61GB)<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13457">13457</a>: Should expose launch history length as user preference<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15024">15024</a>: Launch configuration dialog doesn't display "favorite" option<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15180">15180</a>: DND.ERROR_CANNOT_SET_CLIPBOARD must be handled<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14657">14657</a>: LaunchDropDownAction and coolbar support<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14897">14897</a>: many missing '...' on buttons in launch configs<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15362">15362</a>: Standard out not always hooked to console<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=15446">15446</a>: first click in the debug/launch history preference page results in exception<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11894">11894</a>: Mneumonic collision in the debug menu<br>
-
-<h3>
-Problem Reports Closed</h3>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-April 30, 2002
-<h3>
-What's new in this drop</h3>
-<li>Changes in the launch configuration dialog:
- <ul>
- <li>To free up screen real estate for editing launch configurations, the tree of launch
- configurations has been made more narrow by removing the "copy" button from the
- dialog. The "new" button copies a configuration when a configuration is selected, and
- creates a new configuration (based on the workbench selection) when a configuration
- type is selected.</li>
- <li>The "Cancel" button has been replaced with a "Close" button (closing the dialog
- does not cancel changes). You will be prompted to save unsaved changes.</li>
- <li>A "Revert" button has been added to the edit area to revert changes on the
- currently selected launch configuration (under edit).</li>
- </ul>
-</li>
-<li>Changes to launch behavior
- <ul>
- <li>Pressing the run or debug toolbar buttons launches the configuration that was last launched
- (in the workspace), in the appropriate mode (run or debug).</li>
- <li>To create a new launch configuration, use the cascading menu items on the run or debug
- menu. For example "New Configuration -> Local Java Application" - this will create a new
- configuration based on the selection in the workbench (or active editor).</li>
- <li>"Single-click launching" preference has been removed. It was determined that a preference
- which changes the behavior of a toolbar button is disorienting to the user.</li>
- </ul>
-</li>
-<li>Changes to ILaunchManager
- <ul>
- <li>API for setting default launch configuration types has been removed.</li>
- </ul>
-</li>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13537">13537</a>: DebugActionGroups: Clearer wording in preference page<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13909">13909</a>: Inconsistent margins on preference pages<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11889">11889</a>: Buttons too small in the Console and Launch Configuration Preference pages<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13513">13513</a>: Running a debug view in a Java perspective has several problems<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13536">13536</a>: DebugActionGroups: Collision on ID wipes out both action groups<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13317">13317</a>: New Configuration menu empty<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14560">14560</a>: Deleting breakpoint selects another breakpoint in the wrong direction<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14143">14143</a>: Breakpoints View appears with "Go to file" button enabled regardless of breakpoints<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=9834">9834</a>: Views do not remember package visibility filter settings<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11904">11904</a>: Debug menu mneumonics<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14797">14797</a>: NumberFormatException if cancel Go to line in console<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13440">13440</a>: menu reorganization<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14550">14550</a>: Need to be able to make launch configuration type invisible<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=6388">6388</a>: Variables view's static and field buttons are backwards<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14495">14495</a>: clipboards must be disposed<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13665">13665</a>: Debug preference page looks cluttered<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14485">14485</a>: Cannot delete a launch config using the Delete key<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14486">14486</a>: Default perspective for Run should not be Debug<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=11697">11697</a>: Debug Preference Page needs group box<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14540">14540</a>: Relaunch action not enabled correctly<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14556">14556</a>: Enable breakpoint action using old selection<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14520">14520</a>: Debug plugins should provide consistent unique identifier access<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12577">12577</a>: Launch configurations wizard - usability<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13555">13555</a>: Edit configuration dialog UI confusing<br>
-
-<h3>
-Problem Reports Closed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12292">12292</a>: Unable to suspend a running thread to see stack frames<br>
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-April 23, 2002
-<h3>
-What's new in this drop</h3>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13836">13836</a>: Missing and duplicated extensions in debug plugin.xml<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12125">12125</a>: NLS debug projects<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14111">14111</a>: Console terminate button not enabled<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13041">13041</a>: Remove all terminated action incorrectly enabled<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13372">13372</a>: Strange UI feedback when breakpoint hit during evaluation<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13430">13430</a>: Open on Type in console can work better; less beep<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12184">12184</a>: IncompatibleThreadStateException on launchAdded<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14190">14190</a>: Stack dumps noticed in log<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=14125">14125</a>: Debug view "Resume" always jumps to source - menu item does not<br>
-<h3>
-Problem Reports Closed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12132">12132</a>: Can't launch debugger if proxy set.<br>
-
-
-<h1>
-Eclipse Platform Build Notes&nbsp;<br>
-Platform Debug</h1>
-April 18, 2002
-<h3>
-What's new in this drop</h3>
-<ul>
-<li>Support for old launchers has been removed (ILauncher, ILauncherDelegate, ILaunchWizard).
- Launch configruations now rule the launching world.</li>
-<li>The extension point "org.eclipse.debug.ui.launchTabs" has been removed and replaced with
- a new extension point "org.eclipse.debug.ui.launchTabGroups".</li>
-<li>The constants IDebugUIConstants.PREF_AUTO_SHOW_DEBUG_VIEW & IDebugUIConstants.PREF_AUTO_SHOW_PROCESS_VIEW
- have been removed. Users can now set a default perspective for each of Run & Debug which may be
- overridden in a launch configuration.</li>
-</ul>
-
-<h3>
-Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=13385">13385</a>: Showing detail should be disabled when multi-select in var view<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=12788">12788</a>: Cut, copy, paste actions don't work in details pane<br>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=8590">8590</a>: Allow position of "step debug" in step tools<br>